Jos kysyt kokeneelta, viisaalta insinööriltä, mitä hän ajattelee sertifikaattipäälliköstä ja miksi kaikki käyttävät sitä, niin asiantuntija huokaa, halaa häntä luottamuksella ja sanoo väsyneesti: "Kaikki käyttävät sitä, koska järkeviä vaihtoehtoja ei ole. Hiiremme itkevät, pistävät, mutta jatkavat elämäänsä tämän kaktuksen kanssa. Miksi me rakastamme? Koska se toimii. Miksi emme rakasta? Koska uusia versioita tulee jatkuvasti, jotka käyttävät uusia ominaisuuksia. Ja sinun on päivitettävä klusteri yhä uudelleen ja uudelleen. Ja vanhat versiot lakkaavat toimimasta, koska siellä on salaliitto ja suuri salaperäinen shamanismi.
Mutta kehittäjät väittävät niin Cert-Manager 1.0 kaikki muuttuu.
Uskommeko?
Cert-manager on alkuperäinen Kubernetes-varmenteiden hallintaohjain. Sen avulla voidaan myöntää varmenteita eri lähteistä: Let's Encrypt, HashiCorp Vault, Venafi, allekirjoitus ja itse allekirjoitetut avainparit. Sen avulla voit myös pitää avaimet ajan tasalla vanhentumispäivän mukaan ja yrittää myös uusia varmenteet automaattisesti tiettyyn aikaan ennen niiden vanhenemista. Cert-manager perustuu kube-legoon ja on myös käyttänyt temppuja muista vastaavista projekteista, kuten kube-cert-manager.
Julkaisutiedot
Versiolla 1.0 annoimme luottamuksen kolmen vuoden varmenteiden hallintaprojektin kehittämiselle. Tänä aikana sen toimivuus ja vakaus on kehittynyt merkittävästi, mutta ennen kaikkea yhteisössä. Nykyään monet ihmiset käyttävät sitä Kubernetes-klusteriensa turvaamiseen sekä ottavan sitä käyttöön ekosysteemin eri osiin. Viimeisten 16 julkaisun aikana on korjattu paljon bugeja. Ja se mikä piti rikkoa, on rikki. Useat vierailut API:n parissa ovat parantaneet sen vuorovaikutusta käyttäjien kanssa. Olemme ratkaisseet GitHubissa 1500 253 ongelmaa XNUMX yhteisön jäsenen lisäveloituspyynnöillä.
1.0:n julkaisun myötä julistamme virallisesti, että Cert-Manager on kypsä projekti. Lupaamme myös pitää API-yhteensopivana v1
.
Suuri kiitos kaikille, jotka auttoivat meitä tekemään sert-managerin kaikki nämä kolme vuotta! Olkoon versio 1.0 ensimmäinen monista tulevista suurista asioista.
Julkaisu 1.0 on vakaa julkaisu, jossa on useita prioriteettialueita:
-
v1
API; -
Joukkue
kubectl cert-manager status
, auttaa ongelma-analyysissä; -
Uusimpien vakaiden Kubernetes-sovellusliittymien käyttäminen;
-
Parannettu puunkorjuu;
-
ACME:n parannuksia.
Muista lukea päivitystiedot ennen päivitystä.
API v1
Versio v0.16 toimi API:n kanssa v1beta1
. Tämä lisäsi joitain rakenteellisia muutoksia ja paransi myös API-kenttädokumentaatiota. Versio 1.0 perustuu tähän API:lla v1
. Tämä API on ensimmäinen vakaa sovellusliittymämme, samalla olemme jo antaneet yhteensopivuustakuun, mutta API:n kanssa v1
lupaamme ylläpitää yhteensopivuutta tulevina vuosina.
Tehdyt muutokset (huomaa: muunnostyökalumme huolehtivat kaikesta puolestasi):
Todistus:
-
emailSANs
nyt kutsutaanemailAddresses
-
uriSANs
-uris
Nämä muutokset lisäävät yhteensopivuutta muiden SAN-verkkojen (subject alt names, noin kääntäjä), sekä Go API:lla. Poistamme tämän termin API:stamme.
Päivittää
Jos käytät Kubernetes 1.16+ -versiota, webhookien muuntaminen antaa sinun työskennellä samanaikaisesti ja saumattomasti API-versioiden kanssa v1alpha2
, v1alpha3
, v1beta1
и v1
. Näiden avulla voit käyttää API:n uutta versiota muuttamatta tai asentamatta uudelleen vanhoja resursseja. Suosittelemme päivittämään luettelosi API:ksi v1
, koska aiemmat versiot poistetaan pian käytöstä. Käyttäjät legacy
Cert-Managerin versioilla on edelleen pääsy vain v1
, päivitysvaiheet löytyvät
kubectl cert-manager status -komento
Laajennuksessamme on uusia parannuksia kubectl
todistusten myöntämättä jättämiseen liittyvien ongelmien selvittäminen helpottui. kubectl cert-manager status
antaa nyt paljon enemmän tietoa siitä, mitä varmenteille tapahtuu ja näyttää myös varmenteen myöntämisvaiheen.
Kun olet asentanut laajennuksen, voit suorittaa sen kubectl cert-manager status certificate <имя-сертификата>
, joka etsii varmenteen, jossa on annettu nimi, ja kaikki siihen liittyvät resurssit, kuten CertificateRequest, Secret, Issuer ja Order and Challenges, jos käytetään ACME:n varmenteita.
Esimerkki sellaisen varmenteen virheenkorjauksesta, joka ei ole vielä valmis:
$ 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
Komento voi myös auttaa sinua oppimaan lisää varmenteen sisällöstä. Yksityiskohtainen esimerkki Letsencryptin myöntämästä sertifikaatista:
$ 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
[...]
Käyttämällä uusimpia vakaita Kubernetes-sovellusliittymiä
Cert-manager oli yksi ensimmäisistä, joka otti käyttöön Kubernetes CRD:t. Tämä ja tukemme Kubernetes-versioille 1.11 asti tarkoittivat, että meidän oli tuettava perintöä apiextensions.k8s.io/v1beta1
myös CRD-asiakirjoissamme admissionregistration.k8s.io/v1beta1
webhookeihimme. Ne ovat nyt vanhentuneita ja poistetaan Kubernetesista versiosta 1.22. Tarjoamme nyt täyden tuen 1.0:lla apiextensions.k8s.io/v1
и admissionregistration.k8s.io/v1
Kubernetes 1.16:lle (johon ne lisättiin) ja uudemmille. Aiempien versioiden käyttäjille tarjoamme edelleen tukea v1beta1
meidän legacy
versiot.
Parannettu kirjaus
Tässä julkaisussa olemme päivittäneet lokikirjaston muotoon klog/v2
, käytetty Kubernetes 1.19:ssä. Tarkistamme myös jokaisen kirjoittamamme lehden varmistaaksemme, että sille on määritetty oikea taso. Tästä meitä ohjattiin Error
(taso 0), joka tulostaa vain tärkeät virheet ja päättyy Trace
(taso 5), joka auttaa sinua tietämään tarkalleen, mitä tapahtuu. Tämän muutoksen myötä olemme vähentäneet lokien määrää, jos et tarvitse virheenkorjaustietoja suorittaessasi varmenteiden hallintaa.
Vinkki: Cert-manager toimii oletuksena tasolla 2 (Info
), voit ohittaa tämän käyttämällä global.logLevel
Helmchartissa.
Huomautus: Lokien tarkasteleminen on viimeinen keino vianmäärityksen aikana. Lisätietoja saat tutustumalla meidän
Toimittajan n.b.: Jos haluat oppia lisää siitä, miten se kaikki toimii Kubernetesin konepellin alla, saada arvokkaita neuvoja opettajilta sekä laadukasta teknistä tukea, voit osallistua online-intensiivikursseihin.
ACME:n parannukset
Yleisin sertifikaattien hallinnan käyttö liittyy luultavasti sertifikaattien myöntämiseen Let's Encryptistä ACME:n avulla. Versio 1.0 on tunnettu siitä, että se käyttää yhteisön palautetta kahden pienen mutta tärkeän parannuksen lisäämiseksi ACME-myöntäjäämme.
Poista tiliavaimen luominen käytöstä
Jos käytät ACME-varmenteita suuria määriä, käytät todennäköisesti samaa tiliä useissa klustereissa, joten varmenteen myöntämisrajoitukset koskevat kaikkia. Tämä oli mahdollista jo varmenteiden hallinnassa, kun kopioitiin kohdassa määritetty salaisuus privateKeySecretRef
. Tämä käyttötapaus oli varsin buginen, sillä varmenteiden johtaja yritti olla avulias ja loi mielellään uuden tiliavaimen, jos se ei löytänyt sitä. Siksi lisäsimme disableAccountKeyGeneration
suojataksesi sinua tältä käytökseltä, jos asetat tämän asetuksen päälle true
- Cert-manager ei luo avainta ja varoittaa, että sille ei ole toimitettu tiliavainta.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
privateKeySecretRef:
name: example-issuer-account-key
disableAccountKeyGeneration: false
Ensisijainen ketju
29. syyskuuta salataan ISRG Root
. Ristiallekirjoitetut todistukset korvataan Identrust
. Tämä muutos ei vaadi muutoksia varmenteiden hallintaohjelman asetuksiin, kaikki tämän päivämäärän jälkeen annetut päivitetyt tai uudet varmenteet käyttävät uutta juurivarmentajaa.
Let's Encrypt allekirjoittaa jo varmenteita tämän CA:n kanssa ja tarjoaa ne "vaihtoehtoisena sertifikaattiketjuna" ACME:n kautta. Tässä Cert-Manager-versiossa on mahdollista määrittää pääsy näihin ketjuihin myöntäjän asetuksissa. Parametrissa preferredChain
voit määrittää käytössä olevan varmentajan nimen, jonka kanssa varmenne myönnetään. Jos pyyntöä vastaava CA-varmenne on saatavilla, se myöntää sinulle varmenteen. Huomaa, että tämä on ensisijainen vaihtoehto. Jos mitään ei löydy, oletussertifikaatti myönnetään. Tämä varmistaa, että uusit sertifikaattisi myös sen jälkeen, kun olet poistanut vaihtoehtoisen ketjun ACME:n myöntäjän puolelta.
Jo tänään voit vastaanottaa allekirjoittamia todistuksia ISRG Root
, Joten:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
preferredChain: "ISRG Root X1"
Jos haluat jättää ketjun IdenTrust
- aseta tämä vaihtoehto 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"
Huomaa, että tämä juuri-CA poistetaan pian käytöstä. Let's Encrypt pitää tämän ketjun aktiivisena 29 asti.
Lähde: will.com