Om du frÄgar en erfaren och klipsk ingenjör vad han tycker om cert-manager och varför alla anvÀnder det, kommer han att sucka, ge dig en förtroendefull klapp pÄ axeln och trögt sÀga: "Alla anvÀnder det eftersom det inte finns nÄgra rimliga alternativ. VÄra möss grÄter, de stÄr ut med detta kaktus, men fortsÀtter att leva med det. Varför Àlskar vi det? För att det fungerar. Varför gillar vi det inte? För att det stÀndigt kommer nya versioner som introducerar nya funktioner. Och vi tvingas gÄng pÄ gÄng uppdatera klustret. De gamla versionerna slutar fungera, för det finns en konspiration och stort mystiskt schamaneri."
Men utvecklarna försÀkrar att med cert-manager 1.0 kommer allt att förÀndras.
Ska vi tro pÄ det?

Cert-manager Ă€r den "inbyggda" kontrolleraren för hantering av certifikat i Kubernetes. Det anvĂ€nds för att utfĂ€rda certifikat frĂ„n olika kĂ€llor: Letâs Encrypt, HashiCorp Vault, Venafi, signeringsnyckelpĂ€rlor och sjĂ€lvsignerade certifikat. Det hĂ„ller ocksĂ„ nycklarna aktuella i förhĂ„llande till giltighetstid och försöker automatiskt uppdatera certifikaten nĂ€r de nĂ€rmar sig utgĂ„ngsdatumet. Cert-manager bygger pĂ„ kube-lego och har Ă€ven anvĂ€nt vissa tekniker frĂ„n andra liknande projekt, sĂ„som kube-cert-manager.
Uppdateringsanteckningar
Med version 1.0 sÀtter vi ett betyg pÄ tre Ärs utveckling av cert-manager-projektet. Under denna tid har det utvecklats avsevÀrt bÄde nÀr det gÀller funktionalitet och stabilitet, men mest av allt - inom gemenskapen. Idag ser vi hur mÄnga mÀnniskor anvÀnder det för att skydda sina Kubernetes-kluster samt integrerar det i olika delar av ekosystemet. I de senaste 16 slÀppen har en mÀngd buggfixar genomförts. Det som behövde brytas har brutits. Flera förbÀttringar av API:et har stÀrkt dess interaktion med anvÀndarna. Vi har löst 1500 problem pÄ GitHub med Ànnu fler pull-requests frÄn 253 medlemmar i gemenskapen.
Med lanseringen av 1.0 meddelar vi officiellt att cert-manager Àr ett moget projekt. Vi lovar ocksÄ att stödja kompatibilitet för vÄrt API. v1.
Stort tack till alla som har hjÀlpt oss göra cert-manager under dessa tre Är! MÄ version 1.0 bli första av mÄnga kommande stora prestationer.
SlÀppningen av 1.0 Àr en stabil release med flera prioriterade fokuspunkter:
v1API;Team
kubectl cert-manager status, för att hjÀlpa till med problemanalys;AnvÀndning av de senaste stabila API:erna i Kubernetes;
FörbÀttrad loggning;
FörbÀttringar av ACME.
Innan du uppdaterar, se till att lÀsa uppdateringsanteckningarna.
API v1
Version v0.16 fungerade med API v1beta1. Det hÀr medförde vissa strukturella förÀndringar samt förbÀttrade dokumentationen för API-fÀlten. Version 1.0 bygger helt pÄ detta via API v1. Detta API Àr vÄr första stabila version, samtidigt som vi redan har utfÀrdat garantier för kompatibilitet, men med API v1 lovar vi att upprÀtthÄlla kompatibilitet i mÄnga Är framöver.
De Àndringar som gjorts (notera: vÄra omvandlingsverktyg kommer att ta hand om allt Ät dig):
Certifikat:
emailSANsheter nuemailAddressesuriSANsâuris
Dessa Àndringar ger kompatibilitet med andra SAN (subject alt names, översÀttarens anm.), samt med Go API. Vi tar bort denna term frÄn vÄrt API.
Uppdatering
Om du anvÀnder Kubernetes 1.16+ - kommer de konverterande webbhaken att lÄta dig arbeta med bÄde v1alpha2, v1alpha3, v1beta1 och v1. Med dem kan du anvÀnda den nya API-versionen utan att behöva Àndra eller distribuera om dina gamla resurser. Vi rekommenderar starkt att du uppdaterar manifest till API v1, eftersom tidigare versioner snart kommer att avskrivas. AnvÀndare legacy av cert-manager-versionen kommer fortfarande ha tillgÄng till v1, uppdateringsstegen kan hittas .
Teamet kubectl cert-manager status
Med de nya förbÀttringarna i vÄrt tillÀgg till kubectl har det blivit enklare att utforska problem relaterade till att inte utfÀrda certifikat. kubectl cert-manager status ger nu mycket mer information om vad som hÀnder med certifikaten, samt visar steget för certifikatutfÀrdande.
Efter installation av tillÀgget kan du köra kubectl cert-manager status certificate, vilket kommer att söka efter certifikatet med det angivna namnet och eventuella relaterade resurser, som CertificateRequest, Secret, Issuer, samt Order och Challenges vid anvÀndning av certifikat frÄn ACME.
Exempel pÄ felsökning av ett certifikat som inte Àr klart:
$ kubectl cert-manager status certificate acme-certificate
Namn: acme-certificate
Namespace: default
Skapad: 2020-08-21T16:44:13+02:00
Villkor:
Klar: False, Orsak: DoesNotExist, Meddelande: UtfÀrdar certifikat eftersom hemligheten inte finns
UtfÀrdar: True, Orsak: DoesNotExist, Meddelande: UtfÀrdar certifikat eftersom hemligheten inte finns
DNS-namn:
- example.com
HĂ€ndelser:
Typ Orsak Ă
lder FrÄn Meddelande
---- ------ ---- ---- -------
Normal UtfÀrdar 18m cert-manager UtfÀrdar certifikat eftersom hemligheten inte finns
Normal Genererad 18m cert-manager Sparade ny privat nyckel i temporÀr hemlighet "acme-certificate-tr8b2"
Normal BegÀrd 18m cert-manager Skapade ny CertificateRequest-resurs "acme-certificate-qp5dm"
UtfÀrdare:
Namn: acme-issuer
Typ: UtfÀrdare
Villkor:
Klar: True, Orsak: ACMEAccountRegistered, Meddelande: ACME-kontot registrerades hos ACME-servern
fel vid sökande efter hemlighet "acme-tls": hemligheter "acme-tls" hittades inte
GÀller inte före:
GĂ€ller inte efter:
Förnyelsetid:
CertificateRequest:
Namn: acme-certificate-qp5dm
Namespace: default
Villkor:
Klar: False, Orsak: Pending, Meddelande: VÀntar pÄ certifikatutfÀrdande frÄn bestÀllning default/acme-certificate-qp5dm-1319513028: "pending"
HĂ€ndelser:
Typ Orsak Ă
lder FrÄn Meddelande
---- ------ ---- ---- -------
Normal BestÀllningSkapad 18m cert-manager Skapade bestÀllningsresurs default/acme-certificate-qp5dm-1319513028
BestÀllning:
Namn: acme-certificate-qp5dm-1319513028
TillstÄnd: pending, Orsak:
Auktoriseringar:
URL: https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/97777571, Identifierare: example.com, Inledande tillstÄnd: pending, Wildcard: false
Utmaningar:
- Namn: acme-certificate-qp5dm-1319513028-1825664779, Typ: DNS-01, Token: J-lOZ39yNDQLZTtP_ZyrYojDqjutMAJOxCL1AkOEZWw, Nyckel: U_W3gGV2KWgIUonlO2me3rvvEOTrfTb-L5s0V1TJMCw, TillstÄnd: pending, Orsak: fel vid hÀmtning av clouddns-tjÀnstekontot: hemlighet "clouddns-accoun" hittades inte, Bearbetning: true, Presentation: false
Kommandot kan ocksÄ hjÀlpa till att ta reda pÄ mer om certifikatets innehÄll. Exempel pÄ detaljer för ett certifikat utfÀrdat av Letsencrypt:
$ kubectl cert-manager status certificate example
Namn: example
[...]
Hemlighet:
Namn: example
UtfÀrdare Land: US
UtfÀrdare Organisation: Let's Encrypt
UtfÀrdare AllmÀnt namn: Let's Encrypt Authority X3
NyckelanvÀndning: Digital Signatur, Nyckel Kryptering
Utökade NyckelanvÀndningar: Serverautentisering, Klientautentisering
Offentlig Nyckel Algoritm: RSA
Signatur Algoritm: SHA256-RSA
Ămnesnyckel-ID: 65081d98a9870764590829b88c53240571997862
Myndighetsnyckel-ID: a84a6a63047dddbae6d139b7a64565eff3a8eca1
Serienummer: 0462ffaa887ea17797e0057ca81d7ba2a6fb
HĂ€ndelser:
GÀller inte före: 2020-06-02T04:29:56+02:00
GĂ€ller inte efter: 2020-08-31T04:29:56+02:00
Förnyelsetid: 2020-08-01T04:29:56+02:00
[...]
AnvÀndningen av de senaste stabila API:erna för Kubernetes
Cert-manager var en av de första som implementerade Kubernetes CRDs. Detta, tillsammans med vÄrt stöd för versioner av Kubernetes Ànda upp till 1.11, har lett till att vi behövde stödja förÄldrad apiextensions.k8s.io/v1beta1 för vÄra CRD, samt admissionregistration.k8s.io/v1beta1 för vÄra webhooks. Nu har de förÄldrats och kommer att tas bort i Kubernetes frÄn version 1.22. Med vÄr 1.0 erbjuder vi nu fullstÀndigt stöd apiextensions.k8s.io/v1 och admissionregistration.k8s.io/v1 för Kubernetes 1.16 (dÀr de lades till) och nyare. För anvÀndare av tidigare versioner fortsÀtter vi att erbjuda stöd v1beta1 i vÄr legacy version.
FörbÀttrad loggning
I denna version har vi uppdaterat biblioteken för loggning till klog/v2, som anvĂ€nds i Kubernetes 1.19. Vi kontrollerar ocksĂ„ varje logg vi skriver för att tilldela rĂ€tt nivĂ„. Vi har utgĂ„tt ifrĂ„n . Det finns fem (faktiskt â sex, översĂ€ttarens anm.) loggnivĂ„er, som börjar med Error (nivĂ„ 0), som bara visar viktiga fel, och slutar med Trace (nivĂ„ 5), som hjĂ€lper dig att ta reda pĂ„ exakt vad som hĂ€nder. Med denna Ă€ndring har vi minskat antalet loggar nĂ€r du inte behöver felsökningsinformation vid anvĂ€ndning av cert-manager.
Tips: som standard kör cert-manager pÄ nivÄ 2 (Info), du kan ÄsidosÀtta detta genom att anvÀnda global.logLevel i Helm-diagrammet.
Obs: att titta pÄ loggar Àr sista utvÀgen vid felsökning. För mer information, se vÄr .
N.B. redaktör: För att fĂ„ mer information om hur allt detta fungerar under huven pĂ„ Kubernetes, fĂ„ vĂ€rdefulla tips frĂ„n praktiker och lĂ€rarna, samt kvalificerad hjĂ€lp frĂ„n supporten, kan du delta i online-intensiven , som Ă€ger rum den 28â30 september, och , som Ă€ger rum den 14â16 oktober.
FörbÀttringar av ACME
Den vanligaste anvĂ€ndningen av cert-manager Ă€r för att utfĂ€rda certifikat frĂ„n Letâs Encrypt med hjĂ€lp av ACME. Version 1.0 Ă€r anmĂ€rkningsvĂ€rd för att den inkluderar feedback frĂ„n gemenskapen för att lĂ€gga till tvĂ„ smĂ„, men viktiga förbĂ€ttringar i vĂ„r ACME-utgivare.
Inaktivering av skapande av kontonyckel
Om du anvĂ€nder ACME-certifikat i stor skala anvĂ€nder du förmodligen samma konto pĂ„ flera kluster, sĂ„ dina begrĂ€nsningar för utfĂ€rdande av certifikat gĂ€ller för alla. Detta har tidigare varit möjligt i cert-manager genom att kopiera hemligheten som anges i privateKeySecretRef. Denna anvĂ€ndning har varit ganska buggig eftersom cert-manager försökte vara anvĂ€ndbar och glatt skapade en ny kontonyckel om den inte kunde hitta en. DĂ€rför har vi lagt till disableAccountKeyGeneration, för att skydda dig frĂ„n detta beteende; om denna parameter sĂ€tts till true â kommer cert-manager inte att skapa en ny nyckel och varna dig om att ingen kontonyckel tillhandahölls.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
privateKeySecretRef:
name: example-issuer-account-key
disableAccountKeyGeneration: false
Föredragen kedja
29 september Letâs Encrypt till egen root certifikatmyndighet ISRG Root. Certifikaten med korssigneringar kommer att bytas ut mot Identrust. Denna Ă€ndring krĂ€ver inga justeringar i instĂ€llningarna för cert-manager, alla uppdaterade eller nya certifikat som utfĂ€rdas efter detta datum kommer att anvĂ€nda den nya rot CA.
Letâs Encrypt signerade redan certifikat med denna CA och erbjuder dem som "alternativ certifikatkedja" via ACME. I denna version av cert-manager finns det möjlighet att ange Ă„tkomst till dessa kedjor i utgivarinstĂ€llningarna. I parametern preferredChain kan namnet pĂ„ den anvĂ€nda CA anges varifrĂ„n certifikatet kommer att utfĂ€rdas. Om det finns ett CA-certifikat som matchar begĂ€ran kommer det att utfĂ€rda dig ett certifikat. Observera att detta Ă€r den föredragna metoden; om inget hittas kommer ett standardcertifikat att utfĂ€rdas. Detta sĂ€kerstĂ€ller att du Ă€ndĂ„ kommer att fĂ„ en uppdatering av ditt certifikat efter att den alternativa kedjan har tagits bort pĂ„ ACME-utgivarens sida.
Idag kan certifikat signeras av ISRG Root, sÄ hÀr:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
preferredChain: "ISRG Root X1"
Om du föredrar att behĂ„lla kedjan IdenTrust â stĂ€ll in denna parameter pĂ„ 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"
Observera att denna root certifikatmyndighet snart kommer att förĂ„ldras, Letâs Encrypt kommer att hĂ„lla denna kedja aktiv fram till 29 september 2021.
KĂ€lla: habr.com
