cert-manager 1.0 թողարկվել է

Եթե ​​փորձառու, իմաստուն ինժեներին հարցնես, թե ինչ է նա մտածում սերտի մենեջերի մասին և ինչու են բոլորն օգտագործում այն, ապա մասնագետը կհառաչի, վստահորեն կգրկի նրան և հոգնած կասի. Մեր մկները լաց են լինում, ծակում, բայց շարունակում են ապրել այս կակտուսով։ Ինչու՞ ենք մենք սիրում: Քանի որ այն աշխատում է: Ինչու՞ չենք սիրում: Քանի որ անընդհատ նոր տարբերակներ են դուրս գալիս, որոնք օգտագործում են նոր հնարավորություններ: Եվ դուք պետք է թարմացնեք կլաստերը նորից ու նորից: Իսկ հին տարբերակները դադարում են գործել, քանի որ կա դավադրություն և մեծ առեղծվածային շամանիզմ։

Սակայն մշակողները պնդում են դա վկայական-մենեջեր 1.0 ամեն ինչ կփոխվի.

Կհավատա՞նք։

cert-manager 1.0 թողարկվել է

Cert-manager-ը հայրենի Kubernetes վկայագրի կառավարման վերահսկիչն է: Այն կարող է օգտագործվել տարբեր աղբյուրներից վկայականներ տրամադրելու համար՝ Let's Encrypt, HashiCorp Vault, Venafi, ստորագրման և ինքնուրույն ստորագրված բանալիների զույգեր: Այն նաև թույլ է տալիս թարմացնել բանալիները՝ ըստ ժամկետի ավարտի, ինչպես նաև փորձում է ավտոմատ կերպով թարմացնել վկայագրերը սահմանված ժամկետում՝ մինչև դրանց ժամկետի ավարտը: Cert-manager-ը հիմնված է kube-lego-ի վրա և նաև օգտագործել է որոշ հնարքներ այլ նմանատիպ նախագծերից, ինչպիսիք են kube-cert-manager-ը:

Թողարկման նշումներ

1.0 տարբերակով մենք վստահության նշան ենք դնում cert-manager նախագծի երեք տարվա զարգացման համար: Այս ընթացքում այն ​​զգալիորեն զարգացել է ֆունկցիոնալության և կայունության առումով, բայց ամենաշատը համայնքում: Այսօր մենք տեսնում ենք, որ շատ մարդիկ օգտագործում են այն իրենց Kubernetes կլաստերներն ապահովելու, ինչպես նաև այն էկոհամակարգի տարբեր մասերում տեղակայելու համար: Վերջին 16 թողարկումներում շտկվել են բազմաթիվ սխալներ: Իսկ այն, ինչ պետք էր կոտրել, կոտրվել է։ API-ի հետ աշխատելու մի քանի այցելությունները բարելավել են նրա փոխգործակցությունը օգտատերերի հետ: Մենք լուծել ենք 1500 խնդիր GitHub-ում` համայնքի 253 անդամներից ավելի շատ պահանջներով:

1.0-ի թողարկմամբ մենք պաշտոնապես հայտարարում ենք, որ cert-manager-ը հասուն նախագիծ է: Մենք նաև խոստանում ենք պահպանել մեր API-ն համատեղելի v1.

Շատ շնորհակալություն բոլորին, ովքեր օգնեցին մեզ այս երեք տարիների ընթացքում դառնալ սերտի մենեջեր: Թող 1.0 տարբերակը լինի առաջինը գալիք շատ մեծ բաներից:

Release 1.0-ը կայուն թողարկում է մի քանի առաջնահերթ ոլորտներով.

  • v1 ՀՐԴԵՀ;

  • Թիմ kubectl cert-manager status, օգնելու խնդրի վերլուծությանը;

  • Օգտագործելով վերջին կայուն Kubernetes API-ները;

  • Բարելավված անտառահատումներ;

  • ACME բարելավումներ.

Համոզվեք, որ կարդացեք արդիականացման նշումները թարմացումից առաջ:

API v1

v0.16 տարբերակը աշխատել է API-ի հետ v1beta1. Սա ավելացրեց որոշ կառուցվածքային փոփոխություններ և նաև բարելավեց API-ի դաշտային փաստաթղթերը: 1.0 տարբերակը հիմնված է դրա վրա API-ով v1. Այս API-ն մեր առաջին կայունն է, միևնույն ժամանակ մենք արդեն տվել ենք համատեղելիության երաշխիքներ, բայց API-ի հետ v1 մենք խոստանում ենք պահպանել համատեղելիությունը գալիք տարիների ընթացքում:

Կատարված փոփոխություններ (նշում. մեր փոխակերպման գործիքները հոգում են ամեն ինչ ձեզ համար).

Ատեստատ:

  • emailSANs այժմ կանչված emailAddresses

  • uriSANs - uris

Այս փոփոխությունները համատեղելիություն են ավելացնում այլ SAN-ների հետ (առարկայական alt անուններ, մոտ. թարգմանիչ), ինչպես նաև Go API-ի հետ: Մենք հեռացնում ենք այս տերմինը մեր API-ից:

Թարմացնել

Եթե ​​դուք օգտագործում եք Kubernetes 1.16+, ապա վեբ-կեռիկներ փոխարկելը թույլ կտա ձեզ միաժամանակ և անխափան աշխատել API տարբերակների հետ: v1alpha2, v1alpha3, v1beta1 и v1. Դրանց օգնությամբ դուք կկարողանաք օգտագործել API-ի նոր տարբերակը՝ առանց ձեր հին ռեսուրսները փոխելու կամ վերաբաշխելու: Մենք բարձր խորհուրդ ենք տալիս թարմացնել ձեր մանիֆեստները API-ի v1, քանի որ նախկին տարբերակները շուտով կհեռանան։ Օգտատերեր legacy cert-manager-ի տարբերակները դեռ հասանելի կլինեն միայն v1, թարմացման քայլերը կարելի է գտնել այստեղ.

kubectl cert-manager կարգավիճակի հրաման

Մեր ընդլայնման նոր բարելավումներով kubectl ավելի դյուրին դարձավ վկայականներ չտրամադրելու հետ կապված խնդիրների ուսումնասիրությունը։ kubectl cert-manager status այժմ շատ ավելի շատ տեղեկություններ է տալիս այն մասին, թե ինչ է կատարվում վկայականների հետ, ինչպես նաև ցույց է տալիս վկայականի տրամադրման փուլը:

Ընդլայնումը տեղադրելուց հետո կարող եք գործարկել kubectl cert-manager status certificate <имя-сертификата>, որը կփնտրի տվյալ անունով վկայագիրը և ցանկացած հարակից ռեսուրս, ինչպիսիք են CertificateRequest, Secret, Issuer և Order and Challenges, եթե օգտագործում են վկայագրեր ACME-ից:

Վկայագրի վրիպազերծման օրինակ, որը դեռ պատրաստ չէ.

$ kubectl cert-manager status certificate acme-certificate

Name: acme-certificate
Namespace: default
Created at: 2020-08-21T16:44:13+02:00
Conditions:
  Ready: False, Reason: DoesNotExist, Message: Issuing certificate as Secret does not exist
  Issuing: True, Reason: DoesNotExist, Message: Issuing certificate as Secret does not exist
DNS Names:
- example.com
Events:
  Type    Reason     Age   From          Message
  ----    ------     ----  ----          -------
  Normal  Issuing    18m   cert-manager  Issuing certificate as Secret does not exist
  Normal  Generated  18m   cert-manager  Stored new private key in temporary Secret resource "acme-certificate-tr8b2"
  Normal  Requested  18m   cert-manager  Created new CertificateRequest resource "acme-certificate-qp5dm"
Issuer:
  Name: acme-issuer
  Kind: Issuer
  Conditions:
    Ready: True, Reason: ACMEAccountRegistered, Message: The ACME account was registered with the ACME server
error when finding Secret "acme-tls": secrets "acme-tls" not found
Not Before: <none>
Not After: <none>
Renewal Time: <none>
CertificateRequest:
  Name: acme-certificate-qp5dm
  Namespace: default
  Conditions:
    Ready: False, Reason: Pending, Message: Waiting on certificate issuance from order default/acme-certificate-qp5dm-1319513028: "pending"
  Events:
    Type    Reason        Age   From          Message
    ----    ------        ----  ----          -------
    Normal  OrderCreated  18m   cert-manager  Created Order resource default/acme-certificate-qp5dm-1319513028
Order:
  Name: acme-certificate-qp5dm-1319513028
  State: pending, Reason:
  Authorizations:
    URL: https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/97777571, Identifier: example.com, Initial State: pending, Wildcard: false
Challenges:
- Name: acme-certificate-qp5dm-1319513028-1825664779, Type: DNS-01, Token: J-lOZ39yNDQLZTtP_ZyrYojDqjutMAJOxCL1AkOEZWw, Key: U_W3gGV2KWgIUonlO2me3rvvEOTrfTb-L5s0V1TJMCw, State: pending, Reason: error getting clouddns service account: secret "clouddns-accoun" not found, Processing: true, Presented: false

Հրամանը կարող է նաև օգնել ձեզ ավելին իմանալ վկայագրի բովանդակության մասին: Letsencrypt-ի կողմից տրված վկայագրի մանրամասն օրինակ.

$ kubectl cert-manager status certificate example
Name: example
[...]
Secret:
  Name: example
  Issuer Country: US
  Issuer Organisation: Let's Encrypt
  Issuer Common Name: Let's Encrypt Authority X3
  Key Usage: Digital Signature, Key Encipherment
  Extended Key Usages: Server Authentication, Client Authentication
  Public Key Algorithm: RSA
  Signature Algorithm: SHA256-RSA
  Subject Key ID: 65081d98a9870764590829b88c53240571997862
  Authority Key ID: a84a6a63047dddbae6d139b7a64565eff3a8eca1
  Serial Number: 0462ffaa887ea17797e0057ca81d7ba2a6fb
  Events:  <none>
Not Before: 2020-06-02T04:29:56+02:00
Not After: 2020-08-31T04:29:56+02:00
Renewal Time: 2020-08-01T04:29:56+02:00
[...]

Օգտագործելով վերջին կայուն Kubernetes API-ները

Cert-manager-ը առաջիններից էր, ով ներդրեց Kubernetes CRD-ները: Սա, և մեր աջակցությունը Kubernetes-ի մինչև 1.11 տարբերակներին, նշանակում էր, որ մենք պետք է աջակցեինք ժառանգությանը: apiextensions.k8s.io/v1beta1 մեր CRD-ների համար նույնպես admissionregistration.k8s.io/v1beta1 մեր վեբ-կեռիկների համար: Դրանք այժմ հնացած են և կհեռացվեն Kubernetes-ում 1.22 տարբերակից: Մեր 1.0-ով մենք այժմ առաջարկում ենք լիարժեք աջակցություն apiextensions.k8s.io/v1 и admissionregistration.k8s.io/v1 Kubernetes 1.16-ի համար (որտեղ դրանք ավելացվել են) և ավելի նոր: Նախորդ տարբերակների օգտվողների համար մենք շարունակում ենք աջակցություն առաջարկել v1beta1 մեր մեջ legacy տարբերակները։

Բարելավված անտառահատումներ

Այս թողարկումում մենք թարմացրել ենք գրանցման գրադարանը klog/v2, օգտագործվում է Kubernetes 1.19-ում։ Մենք նաև վերանայում ենք մեր գրած յուրաքանչյուր ամսագիրը՝ համոզվելու համար, որ այն նշանակված է համապատասխան մակարդակով: Մենք առաջնորդվել ենք սրանով ուղեցույց Kubernetes-ից. Կան հինգ (իրականում վեց, մոտ. թարգմանիչ) հատումների մակարդակները սկսած Error (մակարդակ 0), որը տպում է միայն կարևոր սխալները և ավարտվում է Trace (մակարդակ 5), որը կօգնի ձեզ հստակ իմանալ, թե ինչ է կատարվում: Այս փոփոխությամբ մենք կրճատել ենք տեղեկամատյանների քանակը, եթե cert-manager-ը գործարկելիս վրիպազերծման տեղեկությունների կարիք չունենաք:

Հուշում. վկայագրի մենեջերը լռելյայն աշխատում է 2-րդ մակարդակում (Info), դուք կարող եք վերացնել սա՝ օգտագործելով global.logLevel Հելմչարտում։

Նշում. տեղեկամատյանների դիտումը վերջին միջոցն է անսարքությունների վերացման ժամանակ: Լրացուցիչ տեղեկությունների համար այցելեք մեր առաջնորդություն.

Խմբագրի հ.բ.Ավելի շատ իմանալու համար, թե ինչպես է այդ ամենը աշխատում Kubernetes-ի գլխարկի տակ, ստանալ արժեքավոր խորհուրդներ գործող ուսուցիչներից, ինչպես նաև որակյալ տեխնիկական աջակցության օգնություն, կարող եք մասնակցել առցանց ինտենսիվներին: Կուբերնետես բազա, որը կանցկացվի սեպտեմբերի 28-30-ը, և Kubernetes Megaորը կանցկացվի հոկտեմբերի 14-16-ը։

ACME բարելավումներ

Cert-manager-ի ամենատարածված օգտագործումը, հավանաբար, կապված է Let's Encrypt-ից ACME-ի միջոցով վկայագրեր տրամադրելու հետ: Տարբերակ 1.0-ն աչքի է ընկնում համայնքի հետադարձ կապի միջոցով մեր ACME թողարկողին երկու փոքր, բայց կարևոր բարելավումներ ավելացնելու համար:

Անջատել հաշվի բանալիների ստեղծումը

Եթե ​​դուք օգտագործում եք ACME սերտիֆիկատները մեծ ծավալներով, դուք, ամենայն հավանականությամբ, կօգտագործեք նույն հաշիվը բազմաթիվ կլաստերների վրա, ուստի ձեր վկայականի թողարկման սահմանափակումները կկիրառվեն բոլորի վրա: Դա արդեն հնարավոր էր cert-manager-ում նշված գաղտնիքը պատճենելիս privateKeySecretRef. Օգտագործման այս դեպքը բավականին խելագարված էր, քանի որ վկայագրի մենեջերը փորձում էր օգտակար լինել և ուրախությամբ ստեղծեց նոր հաշվի բանալի, եթե այն չգտավ: Դրա համար ավելացրեցինք disableAccountKeyGenerationպաշտպանել ձեզ այս պահվածքից, եթե դուք սահմանել եք այս տարբերակը true - cert-manager-ը բանալի չի գեներացնի և կզգուշացնի ձեզ, որ նրան չի տրամադրվել հաշվի բանալի:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    privateKeySecretRef:
      name: example-issuer-account-key
    disableAccountKeyGeneration: false

Նախընտրելի շղթա

Սեպտեմբերի 29 Եկեք ծածկագրենք կանցնի ձեր սեփական արմատային CA-ին ISRG Root. Խաչակրագրված վկայականները կփոխարինվեն Identrust. Այս փոփոխությունը չի պահանջում cert-manager-ի կարգավորումներում փոփոխություններ, այս ամսաթվից հետո թողարկված բոլոր թարմացված կամ նոր վկայագրերը կօգտագործեն նոր արմատային CA:

Եկեք Encrypt-ն արդեն ստորագրում է վկայագրերը այս CA-ի հետ և առաջարկում դրանք որպես «այլընտրանքային վկայագրերի շղթա» ACME-ի միջոցով: Cert-manager-ի այս տարբերակում հնարավոր է մուտք գործել այս շղթաներ թողարկողի կարգավորումներում: Պարամետրով preferredChain կարող եք նշել օգտագործվող CA-ի անվանումը, որով կտրվի վկայականը: Եթե ​​առկա է հարցմանը համապատասխանող CA վկայական, այն ձեզ վկայական կտա: Խնդրում ենք նկատի ունենալ, որ սա նախընտրելի տարբերակ է, եթե ոչինչ չգտնվի, կտրվի լռելյայն վկայագիր: Սա կապահովի, որ դուք դեռ կթարմացնեք ձեր վկայականը ACME թողարկողի կողմից այլընտրանքային շղթան ջնջելուց հետո:

Արդեն այսօր կարող եք ստանալ վկայականներ՝ ստորագրված ISRG Root, Այսպիսով.

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    preferredChain: "ISRG Root X1"

Եթե ​​նախընտրում եք լքել շղթան IdenTrust - սահմանել այս տարբերակը DST Root CA X3:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    preferredChain: "DST Root CA X3"

Խնդրում ենք նկատի ունենալ, որ այս արմատային CA-ն շուտով կհնացվի, Let's Encrypt-ը կպահի այս շղթան ակտիվ մինչև 29 թվականի սեպտեմբերի 2021-ը:

Source: www.habr.com

Добавить комментарий