Եթե փորձառու, իմաստուն ինժեներին հարցնես, թե ինչ է նա մտածում սերտի մենեջերի մասին և ինչու են բոլորն օգտագործում այն, ապա մասնագետը կհառաչի, վստահորեն կգրկի նրան և հոգնած կասի. Մեր մկները լաց են լինում, ծակում, բայց շարունակում են ապրել այս կակտուսով։ Ինչու՞ ենք մենք սիրում: Քանի որ այն աշխատում է: Ինչու՞ չենք սիրում: Քանի որ անընդհատ նոր տարբերակներ են դուրս գալիս, որոնք օգտագործում են նոր հնարավորություններ: Եվ դուք պետք է թարմացնեք կլաստերը նորից ու նորից: Իսկ հին տարբերակները դադարում են գործել, քանի որ կա դավադրություն և մեծ առեղծվածային շամանիզմ։
Սակայն մշակողները պնդում են դա վկայական-մենեջեր 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-ում։ Մենք նաև վերանայում ենք մեր գրած յուրաքանչյուր ամսագիրը՝ համոզվելու համար, որ այն նշանակված է համապատասխան մակարդակով: Մենք առաջնորդվել ենք սրանով Error
(մակարդակ 0), որը տպում է միայն կարևոր սխալները և ավարտվում է Trace
(մակարդակ 5), որը կօգնի ձեզ հստակ իմանալ, թե ինչ է կատարվում: Այս փոփոխությամբ մենք կրճատել ենք տեղեկամատյանների քանակը, եթե cert-manager-ը գործարկելիս վրիպազերծման տեղեկությունների կարիք չունենաք:
Հուշում. վկայագրի մենեջերը լռելյայն աշխատում է 2-րդ մակարդակում (Info
), դուք կարող եք վերացնել սա՝ օգտագործելով global.logLevel
Հելմչարտում։
Նշում. տեղեկամատյանների դիտումը վերջին միջոցն է անսարքությունների վերացման ժամանակ: Լրացուցիչ տեղեկությունների համար այցելեք մեր
Խմբագրի հ.բ.Ավելի շատ իմանալու համար, թե ինչպես է այդ ամենը աշխատում Kubernetes-ի գլխարկի տակ, ստանալ արժեքավոր խորհուրդներ գործող ուսուցիչներից, ինչպես նաև որակյալ տեխնիկական աջակցության օգնություն, կարող եք մասնակցել առցանց ինտենսիվներին:
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 Եկեք ծածկագրենք 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