cert-manager 1.0 objavljen

Ako pitate iskusnog, mudrog inženjera šta misli o cert-manageru i zašto ga svi koriste, onda će specijalist uzdahnuti, zagrliti ga u povjerenju i umorno reći: „Svi ga koriste, jer nema razumnih alternativa. Naši miševi plaču, kuckaju, ali nastavljaju da žive sa ovim kaktusom. Zašto volimo? Jer radi. Zašto se ne volimo? Zato što stalno izlaze nove verzije koje koriste nove funkcije. I morate ažurirati klaster iznova i iznova. I stare verzije prestaju da rade, jer postoji zavera i veliki misteriozni šamanizam.

Ali programeri tvrde da sa cert-manager 1.0 sve će se promijeniti.

Hoćemo li vjerovati?

cert-manager 1.0 objavljen

Cert-manager je domaći Kubernetes kontroler upravljanja certifikatima. Može se koristiti za izdavanje certifikata iz različitih izvora: Let's Encrypt, HashiCorp Vault, Venafi, potpisni i samopotpisani parovi ključeva. Takođe vam omogućava da održavate ključeve ažurnim do datuma isteka, a takođe pokušava da automatski obnovi sertifikate u određeno vreme pre nego što isteknu. Cert-manager je baziran na kube-lego, a koristio je i neke trikove iz drugih sličnih projekata kao što je kube-cert-manager.

Bilješke o izdanju

Sa verzijom 1.0, stavili smo znak povjerenja za tri godine razvoja projekta cert-manager. Za to vrijeme značajno je evoluirao u funkcionalnosti i stabilnosti, ali najviše u zajednici. Danas vidimo da ga mnogi ljudi koriste kako bi osigurali svoje Kubernetes klastere, kao i da ga koriste u različitim dijelovima ekosistema. Puno grešaka je ispravljeno u posljednjih 16 izdanja. A ono što je trebalo razbiti je slomljeno. Nekoliko posjeta radi rada s API-jem poboljšalo je njegovu interakciju s korisnicima. Riješili smo 1500 problema na GitHubu s više zahtjeva za povlačenjem od 253 člana zajednice.

Sa izdanjem 1.0, zvanično izjavljujemo da je cert-manager zreo projekat. Također obećavamo da ćemo zadržati naš API kompatibilan v1.

Veliko hvala svima koji su nam pomogli da postanemo cert-manager sve ove tri godine! Neka verzija 1.0 bude prva od mnogih velikih stvari koje dolaze.

Izdanje 1.0 je stabilno izdanje s nekoliko prioritetnih područja:

  • v1 API;

  • tim kubectl cert-manager status, za pomoć pri analizi problema;

  • Korištenje najnovijih stabilnih Kubernetes API-ja;

  • Poboljšano evidentiranje;

  • ACME poboljšanja.

Obavezno pročitajte napomene o ažuriranju prije nadogradnje.

API v1

Verzija v0.16 radila je s API-jem v1beta1. Ovo je dodalo neke strukturne promjene i također poboljšalo dokumentaciju API polja. Verzija 1.0 se nadovezuje na ovo sa API-jem v1. Ovaj API je naš prvi stabilan, u isto vrijeme smo već dali garancije kompatibilnosti, ali sa API-jem v1 obećavamo da ćemo održati kompatibilnost u godinama koje dolaze.

Izvršene promjene (napomena: naši alati za konverziju će se pobrinuti za sve za vas):

Certifikat:

  • emailSANs sada zove emailAddresses

  • uriSANs - uris

Ove promjene dodaju kompatibilnost s drugim SAN-ovima (nazivi subjekata, cca. prevodilac), kao i sa Go API-jem. Uklanjamo ovaj termin iz našeg API-ja.

Ažuriraj

Ako koristite Kubernetes 1.16+, pretvaranje web-hukvica omogućit će vam da istovremeno i neprimetno radite s verzijama API-ja v1alpha2, v1alpha3, v1beta1 и v1. Uz njih, možete koristiti novu verziju API-ja bez promjene ili ponovnog raspoređivanja starih resursa. Toplo preporučujemo nadogradnju vaših manifesta na API v1, jer će prethodne verzije uskoro biti zastarjele. Korisnici legacy verzije cert-manager će i dalje imati pristup samo v1, koraci nadogradnje se mogu pronaći ovdje.

naredba statusa kubectl cert-manager

Uz nova poboljšanja u našem proširenju za kubectl postalo je lakše istražiti probleme vezane za neizdavanje potvrda. kubectl cert-manager status sada daje mnogo više informacija o tome šta se dešava sa sertifikatima i takođe pokazuje fazu izdavanja sertifikata.

Nakon instaliranja ekstenzije, možete pokrenuti kubectl cert-manager status certificate <имя-сертификата>, koji će tražiti certifikat sa navedenim imenom i svim povezanim resursima, kao što su CertificateRequest, Secret, Issuer i Order and Challenges u slučaju certifikata od ACME.

Primjer otklanjanja grešaka u certifikatu koji još nije spreman:

$ 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

Naredba vam također može pomoći da saznate više o sadržaju certifikata. Detaljan primjer certifikata koji izdaje 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
[...]

Korištenje najnovijih stabilnih Kubernetes API-ja

Cert-manager je bio jedan od prvih koji je implementirao Kubernetes CRD. Ovo, i naša podrška za Kubernetes verzije do 1.11, značile su da trebamo podržati naslijeđe apiextensions.k8s.io/v1beta1 i za naše CRD-ove admissionregistration.k8s.io/v1beta1 za naše webhookove. Oni su sada zastarjeli i bit će uklonjeni u Kubernetesu iz verzije 1.22. Sa našom 1.0 sada nudimo punu podršku apiextensions.k8s.io/v1 и admissionregistration.k8s.io/v1 za Kubernetes 1.16 (gdje su dodani) i novije. Za korisnike prethodnih verzija, nastavljamo da nudimo podršku v1beta1 u našem legacy verzije.

Poboljšano evidentiranje

U ovom izdanju ažurirali smo biblioteku evidentiranja na klog/v2, koji se koristi u Kubernetesu 1.19. Također pregledavamo svaki časopis koji pišemo kako bismo bili sigurni da mu je dodijeljen odgovarajući nivo. Ovim smo se rukovodili uputstva Kubernetesa. Ima ih pet (u stvari šest, cca. prevodilac) nivoi evidentiranja počevši od Error (nivo 0), koji ispisuje samo važne greške i završava sa Trace (nivo 5) koji će vam pomoći da tačno znate šta se dešava. Ovom promjenom smo smanjili broj dnevnika ako vam nisu potrebne informacije o otklanjanju grešaka kada pokrećete cert-manager.

Savjet: cert-manager radi na nivou 2 prema zadanim postavkama (Info), ovo možete nadjačati koristeći global.logLevel Helmchart.

Napomena: Pregled dnevnika je posljednje sredstvo prilikom rješavanja problema. Za više informacija pogledajte našu vođstvo.

Urednička n.b.: Da biste saznali više o tome kako sve to funkcionira pod haubom Kubernetes-a, dobili vrijedne savjete od nastavnika praktičara, kao i kvalitetnu tehničku podršku, možete sudjelovati u online intenzivima Kubernetes Base, koji će se održati od 28. do 30. septembra, i Kubernetes Megakoji će se održati od 14. do 16. oktobra.

ACME poboljšanja

Najčešća upotreba cert-managera je vjerovatno povezana sa izdavanjem certifikata iz Let's Encrypt koristeći ACME. Verzija 1.0 je značajna po korištenju povratnih informacija zajednice za dodavanje dva mala, ali važna poboljšanja našem ACME izdavatelju.

Onemogućite generiranje ključeva računa

Ako koristite ACME certifikate u velikim količinama, vjerovatno ćete koristiti isti račun na više klastera, tako da će se ograničenja izdavanja certifikata primjenjivati ​​na sve njih. Ovo je već bilo moguće u cert-manageru prilikom kopiranja tajne navedene u privateKeySecretRef. Ovaj slučaj upotrebe je bio prilično pogrešan, jer je cert-manager pokušao biti od pomoći i sretno je kreirao novi ključ računa ako ga nije pronašao. Zato smo dodali disableAccountKeyGenerationda vas zaštiti od ovakvog ponašanja ako ovu opciju postavite na true - cert-manager neće generirati ključ i upozorit će vas da mu nije dostavljen ključ računa.

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    privateKeySecretRef:
      name: example-issuer-account-key
    disableAccountKeyGeneration: false

Preferred Chain

29. septembar Hajde da šifrujemo proći će na vaš vlastiti korijenski CA ISRG Root. Unakrsno potpisani certifikati bit će zamijenjeni sa Identrust. Ova promjena ne zahtijeva promjene postavki upravitelja certifikata, svi ažurirani ili novi certifikati izdani nakon ovog datuma će koristiti novi korijenski CA.

Let's Encrypt već potpisuje certifikate sa ovim CA i nudi ih kao "alternatni lanac certifikata" putem ACME-a. U ovoj verziji cert-managera moguće je podesiti pristup ovim lancima u postavkama izdavaoca. U parametru preferredChain možete odrediti naziv CA koji se koristi, s kojim će se izdati certifikat. Ako je CA certifikat koji odgovara zahtjevu dostupan, izdat će vam certifikat. Imajte na umu da je ovo poželjna opcija, ako se ništa ne pronađe, izdat će se standardni certifikat. Ovo će osigurati da ćete i dalje obnoviti svoj certifikat nakon brisanja alternativnog lanca na strani ACME izdavaoca.

Već danas možete dobiti certifikate potpisane od strane ISRG Root, Dakle:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    preferredChain: "ISRG Root X1"

Ako želite da napustite lanac IdenTrust - postavite ovu opciju 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"

Imajte na umu da će ovaj korijenski CA uskoro biti zastario, Let's Encrypt će zadržati ovaj lanac aktivnim do 29. septembra 2021.

izvor: www.habr.com

Dodajte komentar