Cert-manager 1.0 ir izlaists

Ja pajautāsi pieredzējuÅ”am, gudram inženierim, ko viņŔ domā par sert-menedžeri un kāpēc visi to lieto, tad speciālists nopÅ«tÄ«sies, pārliecÄ«bā apskauj un noguruÅ”i teiks: ā€œLieto visi, jo prātÄ«gu alternatÄ«vu nav. MÅ«su peles raud, dur, bet turpina dzÄ«vot kopā ar Å”o kaktusu. Kāpēc mēs mÄ«lam? Jo tas darbojas. Kāpēc mēs nemÄ«lam? Tā kā nepārtraukti iznāk jaunas versijas, kurās tiek izmantotas jaunas funkcijas. Un jums ir jāatjaunina klasteris atkal un atkal. Un vecās versijas pārstāj darboties, jo ir sazvērestÄ«ba un liels noslēpumains Å”amanisms.

Bet izstrādātāji to apgalvo Cert-Manager 1.0 viss mainīsies.

Vai mēs ticēsim?

Cert-manager 1.0 ir izlaists

Cert-manager ir vietējais Kubernetes sertifikātu pārvaldÄ«bas kontrolieris. To var izmantot sertifikātu izsniegÅ”anai no dažādiem avotiem: Let's Encrypt, HashiCorp Vault, Venafi, parakstÄ«Å”anas un paÅ”parakstÄ«tiem atslēgu pāriem. Tas arÄ« ļauj jums atjaunināt atslēgas pēc derÄ«guma termiņa beigām, kā arÄ« mēģina automātiski atjaunot sertifikātus noteiktā laikā pirms to derÄ«guma termiņa beigām. Cert-manager pamatā ir kube-lego, un tas ir izmantojis arÄ« dažus trikus no citiem lÄ«dzÄ«giem projektiem, piemēram, kube-cert-manager.

Izlaiduma piezīmes

Ar versiju 1.0 mēs uzliekam uzticÄ«bas zÄ«mi trÄ«s gadus ilgam sertifikātu pārvaldnieka projekta izstrādei. Å ajā laikā tas ir bÅ«tiski attÄ«stÄ«jies funkcionalitātes un stabilitātes ziņā, bet galvenokārt sabiedrÄ«bā. MÅ«sdienās mēs redzam, ka daudzi cilvēki to izmanto, lai nodroÅ”inātu savas Kubernetes kopas, kā arÄ« izvieto to dažādās ekosistēmas daļās. Pēdējos 16 laidienos ir novērstas daudzas kļūdas. Un tas, kas bija jāsalauž, ir salauzts. Vairāki apmeklējumi darbam ar API ir uzlabojuÅ”i tā mijiedarbÄ«bu ar lietotājiem. Mēs esam atrisinājuÅ”i 1500 problēmu vietnē GitHub, saņemot papildu pieprasÄ«jumus no 253 kopienas dalÄ«bniekiem.

Izlaižot versiju 1.0, mēs oficiāli paziņojam, ka sertifikātu pārvaldnieks ir nobriedis projekts. Mēs arÄ« apsolām, ka mÅ«su API bÅ«s saderÄ«ga v1.

Liels paldies visiem, kas visus Å”os trÄ«s gadus mums palÄ«dzēja kļūt par sertifikātu menedžeri! Lai versija 1.0 ir pirmā no daudzajām lielajām lietām, kas gaidāma.

Izlaidums 1.0 ir stabils laidiens ar vairākām prioritārajām jomām:

  • v1 API;

  • Komanda kubectl cert-manager status, palÄ«dzēt ar problēmu analÄ«zi;

  • Izmantojot jaunākās stabilās Kubernetes API;

  • Uzlabota mežizstrāde;

  • ACME uzlabojumi.

Pirms jaunināŔanas noteikti izlasiet jaunināŔanas piezīmes.

API v1

Versija v0.16 darbojās ar API v1beta1. Tas pievienoja dažas strukturālas izmaiņas, kā arÄ« uzlaboja API lauka dokumentāciju. Versija 1.0 ir balstÄ«ta uz to, izmantojot API v1. Å is API ir mÅ«su pirmais stabilais, tajā paŔā laikā mēs jau esam devuÅ”i saderÄ«bas garantijas, bet ar API v1 mēs apsolām saglabāt saderÄ«bu turpmākajos gados.

Veiktās izmaiņas (piezÄ«me: mÅ«su konvertÄ“Å”anas rÄ«ki visu parÅ«pēsies jÅ«su vietā):

Sertifikāts:

  • emailSANs tagad sauc emailAddresses

  • uriSANs Sākot no uris

Å Ä«s izmaiņas palielina saderÄ«bu ar citiem SAN (subject alternatÄ«vajiem nosaukumiem, apm. tulkotājs), kā arÄ« ar Go API. Mēs noņemam Å”o terminu no mÅ«su API.

Modernizēt

Ja izmantojat Kubernetes 1.16+, tÄ«mekļa aizÄ·eru konvertÄ“Å”ana ļaus vienlaikus un nemanāmi strādāt ar API versijām v1alpha2, v1alpha3, v1beta1 Šø v1. Izmantojot tos, jÅ«s varēsiet izmantot jauno API versiju, nemainot vai atkārtoti neizvietojot vecos resursus. Mēs ļoti iesakām jaunināt savus manifestus uz API v1, jo iepriekŔējās versijas drÄ«zumā tiks pārtrauktas. Lietotāji legacy Cert-Manager versijām joprojām bÅ«s piekļuve tikai v1, var atrast jaunināŔanas darbÄ«bas Å”eit.

kubectl cert-manager statusa komanda

Ar jauniem uzlabojumiem mÅ«su paplaÅ”inājumā uz kubectl kļuva vieglāk izmeklēt problēmas, kas saistÄ«tas 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ātu izsniegÅ”anas stadiju.

Pēc paplaÅ”inājuma instalÄ“Å”anas varat palaist kubectl cert-manager status certificate <ŠøŠ¼Ń-сŠµŃ€Ń‚ŠøфŠøŠŗŠ°Ń‚Š°>, kas meklēs sertifikātu ar norādÄ«to vārdu un visus saistÄ«tos resursus, piemēram, CertificateRequest, Secret, Issuer un Order and Challenges, ja tiek izmantoti ACME sertifikāti.

Sertifikāta, kas vēl nav gatavs, atkļūdoÅ”anas piemērs:

$ 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

Komanda var arī palīdzēt uzzināt vairāk par sertifikāta saturu. Detalizēts Letsencrypt izsniegtā sertifikāta piemērs:

$ 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
[...]

Izmantojot jaunākās stabilās Kubernetes API

Cert-manager bija viens no pirmajiem, kas ieviesa Kubernetes CRD. Tas un mÅ«su atbalsts Kubernetes versijām lÄ«dz 1.11 nozÄ«mēja, ka mums ir jāatbalsta mantojums apiextensions.k8s.io/v1beta1 arÄ« mÅ«su CRD admissionregistration.k8s.io/v1beta1 mÅ«su tÄ«mekļa aizÄ·erēm. Tagad tie ir novecojuÅ”i un tiks noņemti no Kubernetes versijas 1.22. Ar mÅ«su 1.0 mēs tagad piedāvājam pilnu atbalstu apiextensions.k8s.io/v1 Šø admissionregistration.k8s.io/v1 Kubernetes 1.16 (kur tie tika pievienoti) un jaunākiem. IepriekŔējo versiju lietotājiem mēs turpinām piedāvāt atbalstu v1beta1 mÅ«su legacy versijas.

Uzlabota mežizstrāde

Å ajā laidienā mēs esam atjauninājuÅ”i reÄ£istrÄ“Å”anas bibliotēku uz klog/v2, ko izmanto Kubernetes 1.19. Mēs arÄ« pārskatām katru žurnālu, ko rakstām, lai pārliecinātos, ka tam ir pieŔķirts atbilstoÅ”s lÄ«menis. Mēs vadÄ«jāmies pēc tā norādÄ«jumi no Kubernetes. Ir pieci (faktiski seÅ”i, apm. tulkotājs) reÄ£istrÄ“Å”anas lÄ«meņi, sākot no Error (0. lÄ«menis), kas drukā tikai svarÄ«gas kļūdas un beidzas ar Trace (5. lÄ«menis), kas palÄ«dzēs jums precÄ«zi zināt, kas notiek. Izmantojot Ŕīs izmaiņas, esam samazinājuÅ”i žurnālu skaitu, ja jums nav nepiecieÅ”ama atkļūdoÅ”anas informācija, palaižot sertifikātu pārvaldnieku.

Padoms: sertifikātu pārvaldnieks pēc noklusējuma darbojas 2. līmenī (Info), varat to ignorēt, izmantojot global.logLevel in Helmchart.

PiezÄ«me. Žurnālu skatÄ«Å”ana ir pēdējais lÄ«dzeklis problēmu novērÅ”anai. Lai iegÅ«tu vairāk informācijas, skatiet mÅ«su vadÄ«ba.

Redaktora n.b.: lai uzzinātu vairāk par to, kā tas viss darbojas zem Kubernetes pārsega, saņemtu vērtÄ«gus padomus no praktizējoÅ”iem skolotājiem, kā arÄ« kvalitatÄ«vu tehniskā atbalsta palÄ«dzÄ«bu, varat piedalÄ«ties tieÅ”saistes intensÄ«vajos pasākumos. Kubernetes bāze, kas notiks no 28. lÄ«dz 30. septembrim, un Kubernetes Megakas notiks no 14. lÄ«dz 16. oktobrim.

ACME uzlabojumi

VisizplatÄ«tākā sertifikātu pārvaldnieka izmantoÅ”ana, iespējams, ir saistÄ«ta ar sertifikātu izsniegÅ”anu no Let's Encrypt, izmantojot ACME. Versija 1.0 ir ievērojama ar kopienas atsauksmju izmantoÅ”anu, lai pievienotu divus mazus, bet svarÄ«gus uzlabojumus mÅ«su ACME izdevējam.

Atspējot konta atslēgu Ä£enerÄ“Å”anu

Ja izmantojat ACME sertifikātus lielos apjomos, jÅ«s, visticamāk, izmantosit vienu un to paÅ”u kontu vairākos klasteros, tāpēc sertifikātu izsniegÅ”anas ierobežojumi attieksies uz tiem visiem. Tas jau bija iespējams sertifikātu pārvaldniekā, kopējot sadaļā norādÄ«to noslēpumu privateKeySecretRef. Å is lietoÅ”anas gadÄ«jums bija diezgan kļūdains, jo sertifikātu pārvaldnieks centās bÅ«t izpalÄ«dzÄ«gs un ar prieku izveidoja jaunu konta atslēgu, ja to neatrada. Tāpēc mēs pievienojām disableAccountKeyGenerationlai pasargātu jÅ«s no Ŕīs darbÄ«bas, ja iestatāt Å”o opciju uz true - Cert-manager neÄ£enerēs atslēgu un brÄ«dinās, ka tam nav nodroÅ”ināta 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. septembris Å ifrēsim pāries uz savu saknes CA ISRG Root. Savstarpēji parakstÄ«ti sertifikāti tiks aizstāti ar Identrust. Å Ä«m izmaiņām nav nepiecieÅ”amas izmaiņas sertifikātu pārvaldnieka iestatÄ«jumos, visi atjauninātie vai jaunie sertifikāti, kas izdoti pēc Ŕī datuma, izmantos jauno saknes CA.

Let's Encrypt jau paraksta sertifikātus ar Å”o CA un piedāvā tos kā "alternatÄ«vu sertifikātu ķēdi", izmantojot ACME. Å ajā sertifikātu pārvaldnieka versijā ir iespējams iestatÄ«t piekļuvi Ŕīm ķēdēm izdevēja iestatÄ«jumos. Parametrā preferredChain var norādÄ«t izmantotās CA nosaukumu, ar kuru tiks izsniegts sertifikāts. Ja ir pieejams pieprasÄ«jumam atbilstoÅ”s CA sertifikāts, tas jums izsniegs sertifikātu. LÅ«dzu, ņemiet vērā, ka Ŕī ir vēlamā iespēja, ja nekas netiks atrasts, tiks izsniegts noklusējuma sertifikāts. Tas nodroÅ”inās, ka jÅ«s joprojām atjaunosit savu sertifikātu pēc alternatÄ«vās ķēdes dzÄ“Å”anas ACME izdevēja pusē.

Jau Å”odien var saņemt sertifikātus, ko parakstÄ«juÅ”i ISRG Root, Tātad:

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 vēlaties pamest ķēdi IdenTrust - iestatiet Å”o opciju 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 Ŕī saknes CA darbÄ«ba drÄ«zumā tiks pārtraukta. Let's Encrypt saglabās Å”o ķēdi aktÄ«vu lÄ«dz 29. gada 2021. septembrim.

Avots: www.habr.com

Pievieno komentāru