Ir iznācis cert-manager 1.0.

Ja, ja jautājiet pieredzējušam inženierim, ko viņš domā par cert-manager un kāpēc visi to izmanto, viņš nopūšas, uzticīgi apņemas un noguris saka: „Visi to izmanto, jo nav saprātīgas alternatīvas. Mūsu peles raud, duras, bet joprojām dzīvo ar šo kaktusu. Kāpēc mēs to mīlam? Jo tas strādā. Kāpēc ne? Jo pastāvīgi iznāk jaunas versijas, kas izmanto jaunās funkcijas. Un katru reizi ir jāatjaunina klasteri. Un vecās versijas pārstāj darboties, jo ir sazvērestība un lieliska noslēpumainā šamanizma.”

Bet izstrādātāji apgalvo, ka ar cert-manager 1.0 viss mainīsies.

Vai mēs ticēsim?

Ir iznācis cert-manager 1.0.

Cert-manager ir „tīkla” Kubernetes sertifikātu kontrolleris. Ar tā palīdzību var izsniegt sertifikātus no dažādiem avotiem: Let’s Encrypt, HashiCorp Vault, Venafi, pāri taustiņiem parakstīšanai un pašparakstītiem. Tas arī ļauj uzturēt atslēgas aktuālas atbilstoši to darbības laikam un cenšas automātiski atjaunināt sertifikātus noteiktā laikā pirms to derīguma termiņa beigām. Cert-manager balstās uz kube-lego un izmanto dažus paņēmienus no citiem līdzīgiem projektiem, piemēram, kube-cert-manager.

Izdošanas piezīmes

Ar 1.0 versiju mēs apliecinām uzticību trīs gadu cert-manager projekta izstrādei. Šajā laikā tas ir ievērojami attīstījies funkcionalitātes un stabilitātes ziņā, bet visvairāk - sabiedrībā. Šodien mēs redzam, kā daudzi cilvēki to izmanto, lai aizsargātu savus Kubernetes klasterus un īstenotu to dažādās ekosistēmas daļās. Pēdējās 16 izlaidumos ir labotas daudzas kļūdas. Un tas, kas bija jāsalauž - ir salauzts. Dažas API uzlabojumu pieejas uzlaboja mijiedarbību ar lietotājiem. Mēs esam atrisinājuši 1500 problēmas GitHub, ar vēl lielāku skaitu pieprasījumu apvienošanai no 253 kopienas dalībniekiem.

Izlaist 1.0 mēs oficiāli paziņojam, ka cert-manager ir nobriedis projekts. Mēs arī solām atbalstīt mūsu API saderību. v1.

Liels paldies visiem, kas mums palīdzēja padarīt cert-manager labāku šos trīs gadus! Lai 1.0 versija kļūst par pirmo no daudziem nākotnes lielajiem sasniegumiem.

Izlaižot 1.0, tas ir stabils izlaidums ar vairākiem prioritāriem virzieniem:

  • v1 API;

  • Komanda kubectl cert-manager status, lai palīdzētu problēmu analīzē;

  • Jaunāko stabilo Kubernetes API izmantošana;

  • Uzlabota žurnālu reģistrēšana;

  • ACME uzlabojumi.

Pirms atjauninājuma noteikti izlasiet atjauninājuma piezīmes.

API v1

Versija v0.16 darbojās ar API v1beta1. Tas pievienoja dažus strukturālus uzlabojumus, kā arī uzlaboja API lauku dokumentāciju. Versija 1.0 balstās uz to visu, izmantojot API v1. Šis API ir mūsu pirmais stabilais, tajā pašā laikā mēs jau esam snieguši saderības garantijas, bet ar API v1 mēs solām atbalstīt saderību uz gadiem uz priekšu.

Veiktās izmaiņas (piezīme: mūsu konvertēšanas rīki parūpēsies par visu jūsu vietā):

Sertifikāts:

  • emailSANs tagad saucās emailAddresses

  • uriSANs — uris

Šīs izmaiņas nodrošina saderību ar citiem SAN (subject alt names, piezīme tulkotājam), kā arī ar Go API. Mēs izņemam šo terminu no mūsu API.

Atjauninājums

Ja jūs izmantojat Kubernetes 1.16+ — konvertējošie webhooks ļaus jums tajā pašā laikā un bezšuvju veidā strādāt ar API versijām v1alpha2, v1alpha3, v1beta1 un v1. Ar to palīdzību jūs varēsiet izmantot jauno API versiju bez jūsu veco resursu izmaiņām vai atkārtotas izvietošanas. Mēs stingri rekomendējam atjaunināt manifestus uz API v1, jo iepriekšējās versijas drīz tiks pasludinātas par novecojušām. Lietotāji legacy cert-manager versijas joprojām būs piekļuve tikai v1, atjaunināšanas soļus var atrast šeit.

Komanda kubectl cert-manager status

Ar jauniem uzlabojumiem mūsu paplašinājumā kubectl ir kļūdis vieglāk izpētīt jautājumus, kas saistīti ar sertifikātu neizsniegšanu. kubectl cert-manager status tagad sniedz daudz vairāk informācijas par to, kas notiek ar sertifikātiem, kā arī parāda sertifikāta izsniegšanas posmu.

Pēc paplašinājuma uzstādīšanas jūs varat palaist kubectl cert-manager status certificate, kas meklēs sertifikātu ar norādīto nosaukumu un jebkuriem saistītiem resursiem, piemēram, CertificateRequest, Secret, Issuer, kā arī Order un Challenges, ja tiek izmantoti sertifikāti no ACME.

Piemērs nevaldītā sertifikāta atkļūdošanai:

$ kubectl cert-manager status certificate acme-certificate

Nosaukums: acme-certificate
Nosaukums: default
Izveidots: 2020-08-21T16:44:13+02:00
Nosacījumi:
  Gatavs: False, Iemesls: DoesNotExist, Ziņa: Izsniegšana sertifikāta kā sekretu neeksistē
  Izsniegšana: True, Iemesls: DoesNotExist, Ziņa: Izsniegšana sertifikāta kā sekretu neeksistē
DNS Vārdi:
- example.com
Notikumi:
  Veids    Iemesls     Vecums   No         Ziņa
  ----    ------     ----  ----          -------
  Normāls  Izsniegšana    18m   cert-manager  Izsniegšana sertifikāta kā sekretu neeksistē
  Normāls  Generēts  18m   cert-manager  Jauns privātais atslēgs uzglabāts pagaidu sekretu resursā "acme-certificate-tr8b2"
  Normāls  Pieprasīts  18m   cert-manager  Jauna CertificateRequest resursa "acme-certificate-qp5dm" izveide
Izdavējs:
  Nosaukums: acme-issuer
  Veids: Izdavējs
  Nosacījumi:
    Gatavs: True, Iemesls: ACMEAccountRegistered, Ziņa: ACME konts tika reģistrēts ar ACME serveri
kļūda, meklējot sekretu "acme-tls": sekretu "acme-tls" nav atrasts
Nav pirms: 
Nav pēc: 
Atjaunošanas laiks: 
CertificateRequest:
  Nosaukums: acme-certificate-qp5dm
  Nosaukums: default
  Nosacījumi:
    Gatavs: False, Iemesls: Pending, Ziņa: Gaidām sertifikāta izsniegšanu no pasūtījuma default/acme-certificate-qp5dm-1319513028: "pending"
  Notikumi:
    Veids    Iemesls         Vecums   No          Ziņa
    ----    ------         ----  ----          -------
    Normāls  Pasūtījuma Izveide  18m   cert-manager  Izveidots Pasūtījuma resurss default/acme-certificate-qp5dm-1319513028
Pasūtījums:
  Nosaukums: acme-certificate-qp5dm-1319513028
  Stāvoklis: pending, Iemesls:
  Autorizācijas:
    URL: https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/97777571, Identifikators: example.com, Sākotnējais stāvoklis: pending, Nikus: false
Izaicinājumi:
- Nosaukums: acme-certificate-qp5dm-1319513028-1825664779, Veids: DNS-01, Token: J-lOZ39yNDQLZTtP_ZyrYojDqjutMAJOxCL1AkOEZWw, Atslēga: U_W3gGV2KWgIUonlO2me3rvvEOTrfTb-L5s0V1TJMCw, Stāvoklis: pending, Iemesls: kļūda, iegūstot clouddns pakalpojuma kontu: sekrets "clouddns-accoun" nav atrasts, Apstrāde: true, Prezentēts: false

Komanda var arī palīdzēt uzzināt vairāk par sertifikāta saturu. Piemērs detalizācijai sertifikātam, ko izsniedz Letsencrypt:

$ kubectl cert-manager status certificate example
Nosaukums: example
[...]
Sekrets:
  Nosaukums: example
  Izdavēja valsts: ASV
  Izdavēja organizācija: Let's Encrypt
  Izdavēja kopējo nosaukums: Let's Encrypt Authority X3
  Atslēgas lietojums: Digitālā parakstīšana, Atslēgas šifrēšana
  Paplašinātie atslēgas lietojumi: Servera autentifikācija, Klienta autentifikācija
  Publiskās atslēgas algoritms: RSA
  Paraksta algoritms: SHA256-RSA
  Subjekta atslēgas ID: 65081d98a9870764590829b88c53240571997862
  Apliecinājuma atslēgas ID: a84a6a63047dddbae6d139b7a64565eff3a8eca1
  Sērijas numurs: 0462ffaa887ea17797e0057ca81d7ba2a6fb
  Notikumi:  
Nav pirms: 2020-06-02T04:29:56+02:00
Nav pēc: 2020-08-31T04:29:56+02:00
Atjaunošanas laiks: 2020-08-01T04:29:56+02:00
[...]

Jaunāko stabilo Kubernetes API izmantošana

Cert-manager bija viens no pirmajiem, kas ieviesa Kubernetes CRDs. Tas, kā arī mūsu atbalsts Kubernetes versijām līdz pat 1.11, lika mums uzturēt novecojušos apiextensions.k8s.io/v1beta1 mūsu CRD, kā arī admissionregistration.k8s.io/v1beta1 mūsu tīmekļa aicinājumiem. Tagad tie ir novecojuši un tiks noņemti Kubernetes versijā 1.22. Ar mūsu 1.0 mēs tagad piedāvājam pilnīgu atbalstu apiextensions.k8s.io/v1 un admissionregistration.k8s.io/v1 Kubernetes 1.16 (kur tie tika pievienoti) un jaunāk. Lietotājiem vecākās versijās mēs turpinām piedāvāt atbalstu v1beta1 mūsu legacy versijā.

Uzlabota žurnālu vākošana

Šajā versijā mēs atjauninājām žurnālu vākošanas bibliotēku uz klog/v2, ko izmanto Kubernetes 1.19. Mēs arī pārbaudām katru žurnālu, ko rakstām, lai piešķirtu tam atbilstošu līmeni. Mēs vadījāmies pēc Kubernetes vadlīnijas.Ir pieci (patiesībā — seši, piezīme tulkotājam) žurnālu līmeņi, sākot no Error (līmenis 0), kas izvada tikai svarīgas kļūdas, līdz Trace (līmenis 5), kas palīdzēs precīzi noskaidrot, kas notiek. Šī izmaiņa samazināja žurnālu skaitu, ja jums nav nepieciešama atkļūdošanas informācija, strādājot ar cert-manager.

Padoms: pēc noklusējuma cert-manager darbojas līmenī 2 (Info), jūs varat pārrakstīt to, izmantojot global.logLevel Helm chart.

Piezīme: žurnālu skatīšana ir pēdējais līdzeklis, novēršot problēmas. Lai iegūtu papildu informāciju, iepazīstieties ar mūsu rokasgrāmatu.

N.B. redaktoru: Lai uzzinātu vairāk par to, kā tas viss darbojas Kubernetes iekšienē, gūtu vērtīgus padomus no praktiķiem-mācībniekiem, kā arī kvalitatīvu tehnisko atbalstu, jūs varat piedalīties tiešsaistes intensīvās apmācībās, Kubernetes Bāze, kas notiks no 28. līdz 30. septembrim, un Kubernetes Mega, kas notiks no 14. līdz 16. oktobrim.

Uzlabojumi ACME

Visbiežāk cert-manager tiek izmantots, lai izsniegtu sertifikātus no Let’s Encrypt, izmantojot ACME. Versija 1.0 ir ievērojama ar kopienas atsauksmju izmantošanu, lai pievienotu divus nelielus, taču svarīgus uzlabojumus mūsu ACME izdevējam.

Kontu atslēgas izveidošanas atslēgšana

Ja jūs izmantojat ACME sertifikātus lielos apjomos, visdrīzāk jūs izmantojat vienu un to pašu kontu vairākos klasteros, tāpēc jūsu sertifikātu izsniegšanas ierobežojumi būs attiecināmi uz visiem. Tas jau bija iespējams cert-manager, kopējot slepeno, kas norādīts privateKeySecretRef. Šāds izmantojums bija diezgan kļūdains, jo cert-manager centās būt noderīgs un priecīgi radīja jaunu kontu atslēgu, ja to neatrada. Tāpēc mēs pievienojām disableAccountKeyGeneration, lai pasargātu jūs no šādas uzvedības. Ja šis parametrs ir iestatīts uz true — cert-manager neizveidos atslēgu un brīdinās, ka tam nav sniegta konta atslēga.

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

Vēlamā ķēde

29. septembrī Let’s Encrypt pāries uz savu pašu saknes sertifikācijas centru ISRG Root. Sertifikāti ar savstarpējām parakstīšanām tiks aizstāti ar Identrust. Šīs izmaiņas nepieprasa izmaiņas cert-manager iestatījumos, visi atjauninātie vai jaunie sertifikāti, kas tiks izsniegti pēc šīs datuma, izmantos jauno saknes CA.

Let’s Encrypt jau paraksta sertifikātus, izmantojot šo CA, un piedāvā tos kā "alternatīvo sertifikātu ķēdi" caur ACME. Šajā cert-manager versijā ir iespējams pievienot piekļuvi šīm ķēdēm izdevēja iestatījumos. Parametrā preferredChain varat norādīt izmantotā CA nosaukumu, ar kuru tiks izdots sertifikāts. Ja būs pieejams sertifikāts CA, kas atbilst pieprasījumam, tas izsniegs jums sertifikātu. Lūdzu, ņemiet vērā, ka šī ir priekšroka, un ja nekas netiks atrasts, tiks izsniegts noklusējuma sertifikāts. Tas garantēs, ka jūs joprojām atjaunināsiet savu sertifikātu pēc alternatīvās ķēdes izņemšanas no ACME izdevēja puses.

Jau šodien varat saņemt sertifikātus, ko paraksta ISRG Root, šādi:

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

Ja dodat priekšroku palikt ķēdei IdenTrust — iestatiet šo parametrus uz 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"

Lūdzu, ņemiet vērā, ka šis saknes sertifikācijas centrs drīz būs novecojis, Let’s Encrypt uzturēs šo ķēdi aktīvu līdz 29. septembrim 2021. gadā.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster