Če vprašate izkušenega, modrega inženirja, kaj si misli o cert-managerju in zakaj ga vsi uporabljajo, potem bo strokovnjak zavzdihnil, ga zaupno objel in naveličano dejal: »Vsi ga uporabljajo, ker ni nobene pametne alternative. Naše miši jokajo, pikajo, a še naprej živijo s tem kaktusom. Zakaj ljubimo? Ker deluje. Zakaj se ne ljubimo? Ker nenehno prihajajo nove različice, ki uporabljajo nove funkcije. In gručo morate znova in znova posodabljati. In stare različice prenehajo delovati, ker obstaja zarota in velik skrivnostni šamanizem.
Toda razvijalci trdijo, da cert-manager 1.0 vse se bo spremenilo.
Bomo verjeli?
Cert-manager je izvorni krmilnik upravljanja potrdil Kubernetes. Uporablja se lahko za izdajanje potrdil iz različnih virov: Let's Encrypt, HashiCorp Vault, Venafi, podpisovanje in samopodpisani pari ključev. Omogoča vam tudi, da ključe posodabljate glede na čas poteka, poleg tega pa poskuša samodejno obnoviti potrdila ob določenem času, preden potečejo. Cert-manager temelji na kube-lego in je uporabil tudi nekaj trikov iz drugih podobnih projektov, kot je kube-cert-manager.
Opombe ob izdaji
Z verzijo 1.0 smo postavili znak zaupanja za tri leta razvoja projekta cert-manager. V tem času se je močno razvil v funkcionalnosti in stabilnosti, predvsem pa v skupnosti. Danes vidimo, da ga veliko ljudi uporablja za zavarovanje svojih gruč Kubernetes in za uvajanje v različne dele ekosistema. V zadnjih 16 izdajah je bilo odpravljenih veliko napak. In kar je bilo treba zlomiti, se je zlomilo. Več obiskov pri delu z API-jem je izboljšalo njegovo interakcijo z uporabniki. Razrešili smo 1500 težav na GitHubu z več zahtevami za vleko od 253 članov skupnosti.
Z izdajo 1.0 uradno izjavljamo, da je cert-manager zrel projekt. Obljubljamo tudi, da bomo ohranili združljivost našega API-ja v1
.
Najlepša hvala vsem, ki ste nam vsa ta tri leta pomagali izdelovati cert-managerja! Naj bo različica 1.0 prva od mnogih velikih stvari, ki prihajajo.
Izdaja 1.0 je stabilna izdaja z več prednostnimi področji:
-
v1
API; -
Ekipa
kubectl cert-manager status
, za pomoč pri analizi problema; -
Uporaba najnovejših stabilnih API-jev Kubernetes;
-
Izboljšano beleženje;
-
Izboljšave ACME.
Pred nadgradnjo obvezno preberite opombe o nadgradnji.
API v1
Različica v0.16 je delovala z API-jem v1beta1
. To je dodalo nekaj strukturnih sprememb in tudi izboljšalo dokumentacijo polja API. Različica 1.0 gradi na tem z API-jem v1
. Ta API je naš prvi stabilen, hkrati pa smo že dali jamstva za združljivost, vendar z API-jem v1
obljubljamo, da bomo ohranili združljivost v prihodnjih letih.
Izvedene spremembe (opomba: naša orodja za pretvorbo poskrbijo za vse namesto vas):
potrdilo:
-
emailSANs
zdaj poklicanemailAddresses
-
uriSANs
-uris
Te spremembe dodajo združljivost z drugimi SAN-ji (nadomestna imena subjektov, pribl. prevajalec), kot tudi z Go API. Ta izraz bomo odstranili iz našega API-ja.
Posodobiti
Če uporabljate Kubernetes 1.16+, vam bo pretvorba webhookov omogočila sočasno in nemoteno delo z različicami API-ja v1alpha2
, v1alpha3
, v1beta1
и v1
. S temi boste lahko uporabljali novo različico API-ja, ne da bi spremenili ali prerazporedili stare vire. Zelo priporočamo, da svoje manifeste nadgradite na API v1
, saj bodo prejšnje različice kmalu opuščene. Uporabniki legacy
različice programa cert-manager bodo še vedno imele dostop samo do v1
, najdete korake nadgradnje
ukaz kubectl cert-manager status
Z novimi izboljšavami v naši razširitvi za kubectl
postalo je lažje preiskovati probleme, povezane z neizdajanjem certifikatov. kubectl cert-manager status
zdaj ponuja veliko več informacij o tem, kaj se dogaja s certifikati, in prikazuje tudi stopnjo izdaje certifikata.
Po namestitvi razširitve lahko zaženete kubectl cert-manager status certificate <имя-сертификата>
, ki bo poiskal potrdilo z danim imenom in vse povezane vire, kot so CertificateRequest, Secret, Issuer ter Order and Challenges, če uporabljate potrdila ACME.
Primer odpravljanja napak v potrdilu, ki še ni pripravljeno:
$ 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
Ukaz vam lahko tudi pomaga izvedeti več o vsebini potrdila. Podroben primer potrdila, ki ga izda 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
[...]
Uporaba najnovejših stabilnih API-jev Kubernetes
Cert-manager je bil eden prvih, ki je implementiral Kubernetes CRD. To in naša podpora za različice Kubernetes do 1.11 je pomenilo, da moramo podpreti zapuščino apiextensions.k8s.io/v1beta1
tudi za naše CRD admissionregistration.k8s.io/v1beta1
za naše webhooke. Zdaj so zastareli in bodo odstranjeni v Kubernetesu od različice 1.22. Z našim 1.0 zdaj nudimo popolno podporo apiextensions.k8s.io/v1
и admissionregistration.k8s.io/v1
za Kubernetes 1.16 (kamor so bili dodani) in novejše. Za uporabnike prejšnjih različic še naprej nudimo podporo v1beta1
v našem legacy
različice.
Izboljšano beleženje
V tej izdaji smo knjižnico beleženja posodobili na klog/v2
, ki se uporablja v Kubernetes 1.19. Prav tako pregledamo vsako revijo, ki jo pišemo, da se prepričamo, da ji je dodeljena ustrezna raven. To nas je vodilo Error
(raven 0), ki izpiše samo pomembne napake in se konča z Trace
(raven 5), ki vam bo pomagal natančno vedeti, kaj se dogaja. S to spremembo smo zmanjšali število dnevnikov, če ne potrebujete informacij o odpravljanju napak, ko izvajate cert-manager.
Namig: cert-manager se privzeto izvaja na ravni 2 (Info
), lahko to preglasite z global.logLevel
v Helmchartu.
Opomba: ogled dnevnikov je zadnja možnost pri odpravljanju težav. Za več informacij si oglejte našo
Opomba urednika: Če želite izvedeti več o tem, kako vse deluje pod pokrovom Kubernetesa, pridobiti dragocene nasvete učiteljev v praksi in kakovostno tehnično pomoč, se lahko udeležite spletnih intenzivov.
Izboljšave ACME
Najpogostejša uporaba cert-managerja je verjetno povezana z izdajanjem potrdil Let's Encrypt z uporabo ACME. Različica 1.0 je znana po uporabi povratnih informacij skupnosti za dodajanje dveh majhnih, a pomembnih izboljšav našemu izdajatelju ACME.
Onemogoči ustvarjanje ključa računa
Če uporabljate potrdila ACME v velikih količinah, boste verjetno uporabljali isti račun v več gručih, zato bodo vaše omejitve izdajanja potrdil veljale za vse. To je bilo že mogoče v cert-managerju pri kopiranju skrivnosti, navedene v privateKeySecretRef
. Ta primer uporabe je bil precej hrošč, saj je cert-manager poskušal pomagati in z veseljem ustvaril nov ključ računa, če ga ni našel. Zato smo dodali disableAccountKeyGeneration
da vas zaščiti pred tem vedenjem, če to možnost nastavite na true
- cert-manager ne bo ustvaril ključa in vas bo opozoril, da ni prejel ključa računa.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
privateKeySecretRef:
name: example-issuer-account-key
disableAccountKeyGeneration: false
Prednostna veriga
29. september Let's Encrypt ISRG Root
. Navzkrižno podpisana potrdila bodo zamenjana z Identrust
. Ta sprememba ne zahteva sprememb nastavitev upravitelja potrdil, vsa posodobljena ali nova potrdila, izdana po tem datumu, bodo uporabljala novo korensko CA.
Let's Encrypt že podpisuje potrdila s tem CA in jih ponuja kot "nadomestno verigo potrdil" prek ACME. V tej različici cert-managerja je možno nastaviti dostop do teh verig v nastavitvah izdajatelja. V parametru preferredChain
lahko določite ime CA v uporabi, s katerim bo izdano potrdilo. Če je na voljo potrdilo CA, ki ustreza zahtevi, vam bo izdalo potrdilo. Upoštevajte, da je to prednostna možnost, če ne najdete ničesar, bo izdano privzeto potrdilo. To bo zagotovilo, da boste še vedno obnovili svoje potrdilo po izbrisu nadomestne verige na strani izdajatelja ACME.
Že danes lahko prejmete potrdila s podpisom ISRG Root
, torej:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
preferredChain: "ISRG Root X1"
Če raje zapustite verigo IdenTrust
- nastavite to možnost na 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"
Upoštevajte, da bo ta korenski CA kmalu opuščen, Let's Encrypt bo to verigo ohranil aktivno do 29. septembra 2021.
Vir: www.habr.com