Cert-Manager 1.0 on välja antud

Kui küsida kogenud, targalt insenerilt, mida ta arvab serdihaldurist ja miks kõik seda kasutavad, siis spetsialist ohkab, kallistab teda enesekindlalt ja ütleb väsinult: „Kõik kasutavad, sest mõistlikke alternatiive pole. Meie hiired nutavad, torgivad, aga elavad selle kaktusega edasi. Miks me armastame? Sest see töötab. Miks me ei armasta? Sest pidevalt tuleb välja uusi versioone, mis kasutavad uusi funktsioone. Ja peate klastrit ikka ja jälle värskendama. Ja vanad versioonid lakkavad töötamast, sest seal on vandenõu ja suur salapärane šamanism.

Kuid arendajad väidavad seda serdihaldur 1.0 kõik muutub.

Kas me usume?

Cert-Manager 1.0 on välja antud

Serdihaldur on Kubernetese sertifikaatide haldamise kontroller. Sellega saab väljastada sertifikaate erinevatest allikatest: Let's Encrypt, HashiCorp Vault, Venafi, allkirjastamise ja ise allkirjastatud võtmepaarid. Samuti võimaldab see hoida võtmeid aegumiskuupäeva järgi ajakohasena ning samuti proovib sertifikaate automaatselt uuendada määratud ajal enne nende aegumist. Cert-manager põhineb kube-legol ja on kasutanud ka mõningaid nippe teistest sarnastest projektidest, näiteks kube-cert-manager.

Väljalaskemärkmed

Versiooniga 1.0 paneme sertifikaadihalduri projekti kolmeaastasele arendustööle usaldusmärgi. Selle aja jooksul on selle funktsionaalsus ja stabiilsus oluliselt arenenud, kuid kõige enam kogukonnas. Tänapäeval näeme, et paljud inimesed kasutavad seda nii oma Kubernetese klastrite turvamiseks kui ka ökosüsteemi erinevatesse osadesse juurutamiseks. Viimase 16 versiooniga on parandatud palju vigu. Ja see, mida oli vaja murda, on katki. Mitmed API-ga töötamise külastused on parandanud selle suhtlust kasutajatega. Oleme GitHubis lahendanud 1500 probleemi, lisades 253 kogukonna liikme tõmbetaotlusi.

Versiooni 1.0 väljalaskmisega kinnitame ametlikult, et serdihaldur on täiskasvanud projekt. Samuti lubame hoida oma API ühilduvana v1.

Suur tänu kõigile, kes aitasid meil kõik need kolm aastat serdihalduriks saada! Olgu versioon 1.0 esimene paljudest suurtest asjadest, mis tulevad.

Väljalase 1.0 on stabiilne väljalase, millel on mitu prioriteetset valdkonda:

  • v1 API;

  • Meeskond kubectl cert-manager status, abistada probleemi analüüsimisel;

  • Kasutades uusimaid stabiilseid Kubernetes API-sid;

  • Täiustatud metsaraie;

  • ACME täiustused.

Enne täiendamist lugege kindlasti uuenduste märkmeid.

API v1

Versioon v0.16 töötas koos API-ga v1beta1. See lisas mõned struktuurimuudatused ja täiustas ka API välja dokumentatsiooni. Versioon 1.0 põhineb sellel API-ga v1. See API on meie esimene stabiilne, samal ajal oleme juba andnud ühilduvusgarantiid, kuid API-ga v1 lubame säilitada ühilduvuse veel aastaid.

Tehtud muudatused (märkus: meie teisendustööriistad hoolitsevad teie eest kõige eest):

Sertifikaat:

  • emailSANs nüüd kutsutakse emailAddresses

  • uriSANs - uris

Need muudatused lisavad ühilduvust teiste SAN-idega (subject alt nimed, u. tõlkija), aga ka Go API-ga. Eemaldame selle termini oma API-st.

Ajakohastama

Kui kasutate versiooni Kubernetes 1.16+, võimaldab veebihaagide teisendamine API versioonidega samaaegselt ja sujuvalt töötada v1alpha2, v1alpha3, v1beta1 и v1. Nende abil saate kasutada API uut versiooni ilma oma vanu ressursse muutmata või ümber paigutamata. Soovitame tungivalt uuendada oma manifestid API-le v1, kuna varasemad versioonid katkestatakse peagi. Kasutajad legacy Cert-manageri versioonidel on endiselt juurdepääs ainult v1, leiate uuendusetapid siin.

kubectl cert-manager staatuse käsk

Meie laienduse uute täiustustega kubectl sertifikaatide väljastamata jätmisega seotud probleemide uurimine muutus lihtsamaks. kubectl cert-manager status annab nüüd palju rohkem teavet sertifikaatidega toimuva kohta ja näitab ka sertifikaatide väljastamise etappi.

Pärast laienduse installimist saate käivitada kubectl cert-manager status certificate <имя-сертификата>, mis otsib ACME sertifikaatide kasutamisel üles eesnimega sertifikaadi ja kõik seotud ressursid, nagu Certificate Request, Secret, Issuer ning Order and Challenges.

Näide sertifikaadi silumisest, mis pole veel 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

Käsk võib aidata teil ka sertifikaadi sisu kohta rohkem teada saada. Letsencrypti väljastatud sertifikaadi üksikasjalik näide:

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

Kasutades uusimaid stabiilseid Kubernetes API-sid

Cert-manager oli üks esimesi, kes võttis kasutusele Kubernetes CRD-d. See ja meie toetus Kubernetese versioonidele kuni 1.11 tähendas, et peame toetama pärandit apiextensions.k8s.io/v1beta1 ka meie CRD-de jaoks admissionregistration.k8s.io/v1beta1 meie veebihaagide jaoks. Need on nüüd aegunud ja eemaldatakse Kubernetes versioonist 1.22. Oma versiooniga 1.0 pakume nüüd täielikku tuge apiextensions.k8s.io/v1 и admissionregistration.k8s.io/v1 Kubernetes 1.16 (kuhu need lisati) ja uuemate jaoks. Varasemate versioonide kasutajatele pakume jätkuvalt tuge v1beta1 meie legacy versioonid.

Täiustatud metsaraie

Selles versioonis oleme logimise teeki värskendanud klog/v2, mida kasutatakse Kubernetes 1.19-s. Samuti vaatame üle iga kirjutatava ajakirja, veendumaks, et sellele on määratud sobiv tase. Sellest lähtusime Kubernetesi juhised. Neid on viis (tegelikult kuus, u. tõlkija) logimise tasemed alates Error (tase 0), mis prindib ainult olulised vead ja lõpeb Trace (tase 5), mis aitab teil täpselt teada, mis toimub. Selle muudatusega oleme vähendanud logide arvu, kui te ei vaja serdihalduri käitamisel silumisinfot.

Nõuanne: serdihaldur töötab vaikimisi tasemel 2 (Info), saate selle alistada kasutades global.logLevel Helmchartis.

Märkus. Logide vaatamine on tõrkeotsingu viimane võimalus. Lisateabe saamiseks vaadake meie juhtimine.

Toimetaja nr.: Kui soovite saada lisateavet selle kohta, kuidas see kõik Kubernetese kapoti all töötab, saada väärtuslikke nõuandeid praktiseerivatelt õpetajatelt ja kvaliteetset tehnilist abi, võite osaleda veebipõhistel intensiivkursustel. Kubernetese baas, mis toimub 28-30 september ja Kubernetes Megamis toimub 14.-16.oktoober.

ACME täiustused

Kõige tavalisem serdihalduri kasutamine on ilmselt seotud Let's Encrypti sertifikaatide väljastamisega ACME abil. Versioon 1.0 on tähelepanuväärne selle poolest, et kasutab kogukonna tagasisidet, et lisada meie ACME väljaandjale kaks väikest, kuid olulist täiustust.

Keela konto võtme genereerimine

Kui kasutate ACME sertifikaate suurtes kogustes, kasutate tõenäoliselt sama kontot mitmes klastris, nii et teie sertifikaatide väljastamise piirangud kehtivad neile kõigile. See oli võimalik juba sertifikaadihalduris, kui kopeeriti jaotises määratud saladust privateKeySecretRef. See kasutusjuhtum oli üsna lollakas, kuna serdihaldur püüdis olla abivalmis ja lõi hea meelega uue kontovõtme, kui seda ei leidnud. Sellepärast lisasime disableAccountKeyGenerationet kaitsta teid selle käitumise eest, kui selle valiku määrate true - sertifikaadihaldur ei genereeri võtit ja hoiatab teid, et talle pole antud kontovõtit.

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

Eelistatud kett

29. september Krüpteerime läheb mööda teie enda juur-CA-sse ISRG Root. Ristallkirjastatud sertifikaadid asendatakse Identrust. See muudatus ei nõua serdihalduri sätete muutmist, kõik pärast seda kuupäeva välja antud värskendatud või uued sertifikaadid kasutavad uut juur-CA-d.

Let's Encrypt allkirjastab juba selle CA-ga sertifikaate ja pakub neid ACME kaudu "alternatiivse sertifikaadiahelana". Selles serdihalduri versioonis on väljaandja seadetes võimalik neile kettidele juurdepääsu määrata. Parameetris preferredChain saate määrata kasutatava CA nime, millega sertifikaat väljastatakse. Kui päringule vastav CA-sertifikaat on saadaval, väljastab see teile sertifikaadi. Pange tähele, et see on eelistatud valik. Kui midagi ei leita, väljastatakse vaikesertifikaat. See tagab, et uuendate oma sertifikaati ka pärast ACME väljaandja poolel oleva alternatiivse ahela kustutamist.

Juba täna on võimalik saada sertifikaate, mille on allkirjastanud ISRG Root, Niisiis:

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

Kui eelistate ketist lahkuda IdenTrust - määrake see valik 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"

Pange tähele, et selle juur-CA tugi katkestatakse peagi. Let's Encrypt hoiab selle ahela aktiivsena kuni 29. septembrini 2021.

Allikas: www.habr.com

Lisa kommentaar