cert-manager 1.0 julkaistu

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 1.0 julkaistu

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 kutsutaan emailAddresses

  • 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 täällä.

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 ohje Kubernetesilta. Niitä on viisi (itse asiassa kuusi, noin kääntäjä) kirjaustasot alkaen 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 johtajuutta.

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. Kubernetesin tukikohta, joka järjestetään 28.-30. ja Kubernetes Megajoka järjestetään 14.-16.

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 disableAccountKeyGenerationsuojataksesi 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 menee ohi omaan juurivarmentajaasi 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

Lisää kommentti