Izdana je verzija cert-manager 1.0

Ako pitate iskusnog inženjera što misli o cert-manageru i zašto ga svi koriste, on će uzdahnuti, sa poverenjem vas zagrliti i umorno reći: „Svi ga koriste jer nemamo razumne alternative. Naše miševi plaču, ubodeni su, ali i dalje žive s ovim kaktusom. Zašto ga volimo? Zato što funkcioniše. Zašto ga ne volimo? Zato što stalno izlaze nove verzije koje donose nove funkcije. I potrebno je iznova ažurirati klaster. A stare verzije prestaju da funkcionišu jer postoji zavera i veliko misteriozno šamanstvo.

Ali razvojni tim tvrdi da će sa cert-manager 1.0 sve to da se promeni.

Da verujemo?

Izdana je verzija cert-manager 1.0

Cert-manager je „nativni“ kontroler za upravljanje sertifikatima u Kubernetesu. Njime možete izdati sertifikate iz različitih izvora: Let’s Encrypt, HashiCorp Vault, Venafi, parova ključeva za potpisivanje i samopotpisane sertifikate. Takođe omogućava održavanje ključeva aktuelnim prema vremenu važenja, kao i automatsko obnavljanje sertifikata u unapred zadatom vremenu pre isteka. Cert-manager se oslanja na kube-lego, a boravište su korišćene i neke tehnike iz drugih sličnih projekata, kao što je kube-cert-manager.

Opombe k izdaji

Verzija 1.0 je znak poverenja nakon tri godine razvoja projekta cert-manager. Tokom tog vremena značajno se razvila u funkcionalnosti i stabilnosti, ali najviše - u zajednici. Danas vidimo kako mnogi ljudi koriste njegovu zaštitu za svoje Kubernetes klastere, kao i implementiraju ga u različite delove ekosistema. U poslednjih 16 izdanja ispravljeno je mnogo grešaka. A ono što je trebalo da se pokvari - pokvareno je. Nekoliko pristupa radu s API-jem poboljšalo je njegovo interakciju s korisnicima. Rešili smo 1500 problema na GitHubu, uz još veći broj zahteva za uklapanje od 253 učesnika zajednice.

Izdavanjem verzije 1.0 zvanično izjavljujemo da je cert-manager zreo projekat. Takođe obećavamo da ćemo održavati kompatibilnost našeg API-a v1.

Ogromna zahvalnost svima koji su nam pomogli da cert-manager učinimo boljim tokom ovih tri godine! Neka verzija 1.0 postane prva od mnogih budućih velikih dostignuća.

Izdanje 1.0 je stabilno izdanje sa nekoliko prioritetnih pravaca:

  • v1 API;

  • Komanda kubectl cert-manager status, za pomoć u analizi problema;

  • Korišćenje najnovijih stabilnih Kubernetes API-ja;

  • Poboljšano logovanje;

  • Poboljšanja ACME.

Preden izvedete nadgradnjo, obvezno preberite opombe o nadgradnji.

API v1

Različica v0.16 je delovala z API-jem v1beta1. To je prineslo nekatere strukturne spremembe ter izboljšalo dokumentacijo o poljih API-ja. Različica 1.0 temelji na tem vse skupaj preko API-ja v1. Ta API je naš prvi stabilni, hkrati smo že dali zagotovila o združljivosti, vendar z API-jem v1 obljubljamo, da bomo ohranjali združljivost še leta naprej.

Opravljene spremembe (opomba: naši pripomočki za pretvorbo bodo poskrbeli za vse za vas):

Certifikat:

  • emailSANs zdaj se imenuje emailAddresses

  • uriSANs — uris

Te spremembe dodajajo združljivost z drugimi SAN (subject alt names, translator's note), prav tako tudi z Go API-jem. Ta izraz odstranjujemo iz našega API-ja.

Posodobitev

Če uporabljate Kubernetes 1.16+ — pretvorbeni webhooks vam omogočajo, da hkrati in brez težav delate z različicami API-ja v1alpha2, v1alpha3, v1beta1 in v1. Z njimi boste lahko uporabili novo različico API-ja brez sprememb ali ponovnega uvajanja vaših starejših virov. Toplo priporočamo, da posodobite manifeste na API v1, saj bodo prejšnje različice kmalu razglašene za zastarele. Uporabniki legacy različice cert-manager bodo še vedno imeli dostop le do v1, korake za nadgradnjo lahko najdete ovde.

Ekipa kubectl cert-manager status

Z novimi izboljšavami v našem razširjenju k kubectl je postalo lažje raziskovati težave, povezane s podeljevanjem certifikatov. kubectl cert-manager status zdaj daje mnogo več informacij o tem, kaj se dogaja s certifikati, ter prikazuje fazo podeljevanja certifikata.

Po namestitvi razširitve lahko zaženete kubectl cert-manager status certificate, kar bo pripeljalo do iskanja certifikata z danim imenom in vseh povezanih virov, kot so CertificateRequest, Secret, Issuer ter Order in Challenges v primeru uporabe certifikatov iz ACME.

Primer odpravljanja težav s še ne končanim certifikatom:

$ 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: 
Not After: 
Renewal Time: 
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

Ukazatelj također može pomoći za saznanje više o sadržaju certifikata. Primjer detalja za certifikat izdan od 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:  
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 API-ja Kubernetes

Cert-manager je bio jedan od prvih koji je implementirao Kubernetes CRD-ove. To, zajedno sa našom podrškom za verzije Kubernetes do 1.11, rezultiralo je potrebom da podržavamo zastarjeli apiextensions.k8s.io/v1beta1 za naše CRD-ove, kao i admissionregistration.k8s.io/v1beta1 za naše webhooks. Sada su zastarjeli i bit će uklonjeni u Kubernetes verziji 1.22. S našom verzijom 1.0 sada nudimo punu podršku apiextensions.k8s.io/v1 in admissionregistration.k8s.io/v1 za Kubernetes 1.16 (gdje su dodani) i novije. Za korisnike ranijih verzija nastavljamo pružati podršku v1beta1 v naši legacy izvedbi.

Izboljšano beleženje

V tej izvedbi smo posodobili knjižnico za beleženje na klog/v2, ki se uporablja v Kubernetes 1.19. Prav tako preverjamo vsak zapis, ki ga pišemo, da mu dodelimo ustrezno raven. Sledili smo navodilom Kubernetes. Obstaja pet (v resnici – šest, translator's note) ravni beleženja, ki se začnejo z Napaka (ravni 0), ki izpiše le pomembne napake, in končajo z Trace (ravni 5), ki pomaga natančno ugotoviti, kaj se dogaja. S to spremembo smo zmanjšali število zapisov, kadar niste potrebovali informacij za odpravljanje težav pri delovanju cert-manager.

Nasvet: privzeto cert-manager deluje na ravni 2 (Informacija), kar lahko prekličete z uporabo global.logLevel v Helm chart.

Opomba: pregledovanje zapisov je zadnja možnost pri odpravljanju napak. Za dodatne informacije si oglejte našo navodilo.

N.B. uredniška: Da bi podrobneje izvedeli, kako to deluje v ozadju Kubernetesa, dobili dragocene nasvete od praktičnih učiteljev in tudi kakovostno podporo, se lahko udeležite spletnih intenzivov Kubernetes Osnova, ki bo potekal od 28. do 30. septembra, in Kubernetes Mega, ki bo potekal od 14. do 16. oktobra.

Izboljšave ACME

Najpogostejša uporaba cert-managerja je morda povezana z izdajo potrdil od Let’s Encrypt z uporabo ACME. Različica 1.0 je posebna po tem, da uporablja povratne informacije skupnosti za dodajanje dveh manjših, a pomembnih izboljšav v naš ACME izdajatelj.

Onemogočanje ustvarjanja ključa računa

Če v velikem obsegu uporabljate potrdila ACME, verjetno uporabljate isti račun na več delovnih oblakih, zato se bodo vaše omejitve za izdajo potrdil nanašale na vse njih. To je bilo že možno v cert-managerju, ko ste kopirali skrivnost, navedeno v privateKeySecretRef. Ta način uporabe je bil dovolj okoren, saj je cert-manager poskušal biti koristen in je veselo ustvarjal nov ključ računa, ko ga ni našel. Zato smo dodali disableAccountKeyGeneration, da vas zaščitimo pred takim vedenjem; če to nastavite na true — cert-manager ne bo ustvaril ključa in vas opozoril, da mu ključ računa ni bil posredovan.

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

Preferirana zaklada

29. septembra Let’s Encrypt će preći na vlastiti korenski centar sertifikacije ISRG Root. Sertifikati sa međusobnim potpisima biće zamenjeni sa Identrust. Ova promena ne zahteva izmene u podešavanjima cert-manager-a, svi ažurirani ili novi sertifikati izdani nakon ovog datuma koristiće novi korenski CA.

Let’s Encrypt već potpisuje sertifikate koristeći ovaj CA i nudi ih kao "alternativnu zakladu sertifikata" putem ACME-a. U ovoj verziji cert-manager-a postoji mogućnost postavljanja pristupa ovim zakladama u podešavanjima izdavača. U parametru preferredChain možete navesti ime korišćenog CA, pomoću kojeg će sertifikat biti izdat. Ako bude dostupan sertifikat CA koji odgovara zahtevu, izdaće vam sertifikat. Imajte na umu da je ovo preferirana opcija, ako ništa ne bude pronađeno — izdaće se sertifikat prema zadatku. To će garantovati da ćete i dalje ažurirati svoj sertifikat nakon uklanjanja alternativne zaklade na strani ACME izdavača.

Već danas možete dobiti sertifikate potpisane ISRG Root, ovako:

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 zadržite zakladu 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 korenski centar sertifikacije uskoro biti zastareo, Let’s Encrypt će podržavati ovu zakladu aktivnom do 29. septembra 2021. godine.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster