Κυκλοφόρησε το cert-manager 1.0

Αν ρωτήσετε έναν έμπειρο, σοφό μηχανικό τι πιστεύει για το cert-manager και γιατί το χρησιμοποιούν όλοι, τότε ο ειδικός θα αναστενάσει, θα τον αγκαλιάσει με σιγουριά και θα πει κουρασμένα: «Όλοι το χρησιμοποιούν, γιατί δεν υπάρχουν λογικές εναλλακτικές. Τα ποντίκια μας κλαίνε, τσιμπάνε, αλλά συνεχίζουν να ζουν με αυτόν τον κάκτο. Γιατί αγαπάμε; Επειδή λειτουργεί. Γιατί δεν αγαπάμε; Γιατί συνεχώς βγαίνουν νέες εκδόσεις που χρησιμοποιούν νέες δυνατότητες. Και πρέπει να ενημερώνετε το σύμπλεγμα ξανά και ξανά. Και οι παλιές εκδόσεις σταματούν να λειτουργούν, γιατί υπάρχει μια συνωμοσία και ένας μεγάλος μυστηριώδης σαμανισμός.

Αλλά οι προγραμματιστές το ισχυρίζονται αυτό cert-manager 1.0 όλα θα αλλάξουν.

Θα πιστέψουμε;

Κυκλοφόρησε το cert-manager 1.0

Το Cert-manager είναι ο εγγενής ελεγκτής διαχείρισης πιστοποιητικών Kubernetes. Μπορεί να χρησιμοποιηθεί για την έκδοση πιστοποιητικών από διάφορες πηγές: Let's Encrypt, HashiCorp Vault, Venafi, ζεύγη κλειδιών υπογραφής και αυτουπογραφής. Σας επιτρέπει επίσης να διατηρείτε τα κλειδιά ενημερωμένα κατά την ημερομηνία λήξης και επίσης προσπαθεί να ανανεώσει αυτόματα τα πιστοποιητικά σε καθορισμένο χρόνο πριν λήξουν. Το Cert-manager βασίζεται στο kube-lego και έχει χρησιμοποιήσει επίσης κάποια κόλπα από άλλα παρόμοια έργα όπως το kube-cert-manager.

Σημειώσεις έκδοσης

Με την έκδοση 1.0, δίνουμε σήμα εμπιστοσύνης για τρία χρόνια ανάπτυξης του έργου cert-manager. Κατά τη διάρκεια αυτής της περιόδου, έχει εξελιχθεί σημαντικά στη λειτουργικότητα και τη σταθερότητα, αλλά κυρίως στην κοινότητα. Σήμερα, βλέπουμε πολλούς ανθρώπους να το χρησιμοποιούν για να ασφαλίσουν τα συμπλέγματά τους Kubernetes καθώς και να το αναπτύξουν σε διάφορα μέρη του οικοσυστήματος. Πολλά σφάλματα έχουν διορθωθεί στις τελευταίες 16 εκδόσεις. Και αυτό που έπρεπε να σπάσει είναι σπασμένο. Πολλές επισκέψεις για εργασία με το API έχουν βελτιώσει την αλληλεπίδρασή του με τους χρήστες. Επιλύσαμε 1500 ζητήματα στο GitHub με περισσότερα αιτήματα έλξης από 253 μέλη της κοινότητας.

Με την κυκλοφορία του 1.0, δηλώνουμε επίσημα ότι το cert-manager είναι ένα ώριμο έργο. Υποσχόμαστε επίσης να διατηρήσουμε το API μας συμβατό v1.

Ευχαριστούμε πολύ όλους όσους μας βοήθησαν να κάνουμε cert-manager όλα αυτά τα τρία χρόνια! Αφήστε την έκδοση 1.0 να είναι η πρώτη από πολλά μεγάλα πράγματα που θα ακολουθήσουν.

Η έκδοση 1.0 είναι μια σταθερή έκδοση με πολλούς τομείς προτεραιότητας:

  • v1 ΦΩΤΙΑ;

  • Ομάδα kubectl cert-manager status, για να βοηθήσει στην ανάλυση προβλημάτων.

  • Χρήση των πιο πρόσφατων σταθερών API του Kubernetes.

  • Βελτιωμένη καταγραφή.

  • Βελτιώσεις ACME.

Βεβαιωθείτε ότι έχετε διαβάσει τις σημειώσεις αναβάθμισης πριν από την αναβάθμιση.

API v1

Η έκδοση 0.16 λειτουργούσε με το API v1beta1. Αυτό πρόσθεσε ορισμένες δομικές αλλαγές και βελτίωσε επίσης την τεκμηρίωση πεδίου API. Η έκδοση 1.0 βασίζεται σε αυτό με ένα API v1. Αυτό το API είναι το πρώτο μας σταθερό, ταυτόχρονα έχουμε ήδη δώσει εγγυήσεις συμβατότητας, αλλά με το API v1 υποσχόμαστε να διατηρήσουμε τη συμβατότητα για τα επόμενα χρόνια.

Πραγματοποιήθηκαν αλλαγές (σημείωση: τα εργαλεία μετατροπής μας φροντίζουν τα πάντα για εσάς):

Πιστοποιητικό:

  • emailSANs τώρα καλείται emailAddresses

  • uriSANs - uris

Αυτές οι αλλαγές προσθέτουν συμβατότητα με άλλα SAN (ονόματα εναλλακτικών θεμάτων, περίπου. μεταφράστης), καθώς και με το Go API. Καταργούμε αυτόν τον όρο από το API μας.

Ενημέρωση

Εάν χρησιμοποιείτε Kubernetes 1.16+, η μετατροπή webhook θα σας επιτρέψει να εργάζεστε ταυτόχρονα και απρόσκοπτα με εκδόσεις API v1alpha2, v1alpha3, v1beta1 и v1. Με αυτά, θα μπορείτε να χρησιμοποιήσετε τη νέα έκδοση του API χωρίς να αλλάξετε ή να ανακατανείμετε τους παλιούς σας πόρους. Συνιστούμε ανεπιφύλακτα να αναβαθμίσετε τις δηλώσεις σας στο API v1, καθώς οι προηγούμενες εκδόσεις θα καταργηθούν σύντομα. Χρήστες legacy οι εκδόσεις του cert-manager θα εξακολουθούν να έχουν πρόσβαση μόνο σε v1, μπορείτε να βρείτε τα βήματα αναβάθμισης εδώ.

εντολή κατάστασης kubectl cert-manager

Με νέες βελτιώσεις στην επέκτασή μας σε kubectl έγινε ευκολότερη η διερεύνηση των προβλημάτων που σχετίζονται με τη μη έκδοση πιστοποιητικών. kubectl cert-manager status τώρα δίνει πολλές περισσότερες πληροφορίες για το τι συμβαίνει με τα πιστοποιητικά και δείχνει επίσης το στάδιο έκδοσης πιστοποιητικών.

Μετά την εγκατάσταση της επέκτασης, μπορείτε να εκτελέσετε kubectl cert-manager status certificate <имя-сертификата>, το οποίο θα αναζητήσει το πιστοποιητικό με το συγκεκριμένο όνομα και τυχόν σχετικούς πόρους, όπως CertificateRequest, Secret, Issuer και Order and Challenges, εάν χρησιμοποιείτε πιστοποιητικά από το ACME.

Ένα παράδειγμα εντοπισμού σφαλμάτων ενός πιστοποιητικού που δεν είναι ακόμη έτοιμο:

$ 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

Η εντολή μπορεί επίσης να σας βοηθήσει να μάθετε περισσότερα σχετικά με τα περιεχόμενα του πιστοποιητικού. Λεπτομερές παράδειγμα για ένα πιστοποιητικό που εκδόθηκε από τη 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
[...]

Χρησιμοποιώντας τα πιο πρόσφατα σταθερά Kubernetes API

Το Cert-manager ήταν ένας από τους πρώτους που εφάρμοσε τα ΚΑΔ της Kubernetes. Αυτό, και η υποστήριξή μας για τις εκδόσεις Kubernetes έως την 1.11, σήμαινε ότι έπρεπε να υποστηρίξουμε το κληροδότημα apiextensions.k8s.io/v1beta1 και για τα ΚΑΔ μας admissionregistration.k8s.io/v1beta1 για τα webhook μας. Έχουν πλέον καταργηθεί και θα αφαιρεθούν στο Kubernetes από την έκδοση 1.22. Με το 1.0 μας προσφέρουμε τώρα πλήρη υποστήριξη apiextensions.k8s.io/v1 и admissionregistration.k8s.io/v1 για Kubernetes 1.16 (όπου προστέθηκαν) και νεότερο. Για χρήστες προηγούμενων εκδόσεων, συνεχίζουμε να προσφέρουμε υποστήριξη v1beta1 στο δικό μας legacy εκδόσεις.

Βελτιωμένη καταγραφή

Σε αυτήν την έκδοση, έχουμε ενημερώσει τη βιβλιοθήκη καταγραφής σε klog/v2, που χρησιμοποιείται στο Kubernetes 1.19. Εξετάζουμε επίσης κάθε περιοδικό που γράφουμε για να βεβαιωθούμε ότι του έχει εκχωρηθεί το κατάλληλο επίπεδο. Καθοδηγηθήκαμε από αυτό καθοδήγηση από την Kubernetes. Υπάρχουν πέντε (στην πραγματικότητα έξι, περίπου. μεταφράστης) επίπεδα καταγραφής ξεκινώντας από Error (επίπεδο 0), το οποίο εκτυπώνει μόνο σημαντικά σφάλματα και τελειώνει με Trace (επίπεδο 5) που θα σας βοηθήσει να γνωρίζετε ακριβώς τι συμβαίνει. Με αυτήν την αλλαγή, μειώσαμε τον αριθμό των αρχείων καταγραφής εάν δεν χρειάζεστε πληροφορίες εντοπισμού σφαλμάτων κατά την εκτέλεση του cert-manager.

Συμβουλή: το cert-manager εκτελείται στο επίπεδο 2 από προεπιλογή (Info), μπορείτε να το παρακάμψετε χρησιμοποιώντας global.logLevel στο Helmchart.

Σημείωση: Η προβολή των αρχείων καταγραφής είναι η τελευταία λύση κατά την αντιμετώπιση προβλημάτων. Για περισσότερες πληροφορίες ανατρέξτε στο δικό μας ηγεσία.

Συντάκτης n.b.: Για να μάθετε περισσότερα σχετικά με το πώς λειτουργούν όλα κάτω από την κουκούλα του Kubernetes, να λάβετε πολύτιμες συμβουλές από εκπαιδευτικούς, καθώς και ποιοτική βοήθεια τεχνικής υποστήριξης, μπορείτε να λάβετε μέρος σε διαδικτυακές εντατικές Βάση Kubernetes, που θα διεξαχθεί 28-30 Σεπτεμβρίου, και Kubernetes Megaπου θα διεξαχθεί 14-16 Οκτωβρίου.

Βελτιώσεις ACME

Η πιο κοινή χρήση του cert-manager πιθανώς σχετίζεται με την έκδοση πιστοποιητικών από το Let's Encrypt χρησιμοποιώντας το ACME. Η έκδοση 1.0 είναι αξιοσημείωτη για τη χρήση σχολίων της κοινότητας για την προσθήκη δύο μικρών αλλά σημαντικών βελτιώσεων στον εκδότη ACME.

Απενεργοποιήστε τη δημιουργία κλειδιού λογαριασμού

Εάν χρησιμοποιείτε πιστοποιητικά ACME σε μεγάλους όγκους, είναι πιθανό να χρησιμοποιήσετε τον ίδιο λογαριασμό σε πολλαπλά συμπλέγματα, επομένως οι περιορισμοί έκδοσης πιστοποιητικών θα ισχύουν για όλα αυτά. Αυτό ήταν ήδη δυνατό στο cert-manager κατά την αντιγραφή του μυστικού που καθορίζεται στο privateKeySecretRef. Αυτή η περίπτωση χρήσης ήταν αρκετά προβληματική, καθώς ο διαχειριστής πιστοποίησης προσπάθησε να είναι χρήσιμος και ευτυχώς δημιούργησε ένα νέο κλειδί λογαριασμού εάν δεν έβρισκε. Γι' αυτό προσθέσαμε disableAccountKeyGenerationγια να σας προστατεύσει από αυτήν τη συμπεριφορά, εάν ορίσετε αυτήν την επιλογή σε true - Το cert-manager δεν θα δημιουργήσει κλειδί και θα σας προειδοποιήσει ότι δεν του έχει παρασχεθεί κλειδί λογαριασμού.

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

Προτιμώμενη αλυσίδα

29 Σεπτεμβρίου Ας κρυπτογραφήσουμε θα περάσει στη δική σας CA root ISRG Root. Τα διασταυρούμενα πιστοποιητικά θα αντικατασταθούν από Identrust. Αυτή η αλλαγή δεν απαιτεί αλλαγές στις ρυθμίσεις διαχείρισης πιστοποιητικών, όλα τα ενημερωμένα ή νέα πιστοποιητικά που εκδίδονται μετά από αυτήν την ημερομηνία θα χρησιμοποιούν τη νέα αρχή έκδοσης πιστοποιητικών ρίζας.

Το Let's Encrypt ήδη υπογράφει πιστοποιητικά με αυτήν την ΑΠ και τα προσφέρει ως "εναλλακτική αλυσίδα πιστοποιητικών" μέσω ACME. Σε αυτήν την έκδοση του cert-manager, είναι δυνατό να ορίσετε την πρόσβαση σε αυτές τις αλυσίδες στις ρυθμίσεις του εκδότη. Στην παράμετρο preferredChain μπορείτε να καθορίσετε το όνομα της ΑΠ που χρησιμοποιείται, με την οποία θα εκδοθεί το πιστοποιητικό. Εάν υπάρχει διαθέσιμο πιστοποιητικό ΑΠ που αντιστοιχεί στο αίτημα, θα σας εκδώσει ένα πιστοποιητικό. Λάβετε υπόψη ότι αυτή είναι η προτιμώμενη επιλογή, εάν δεν βρεθεί τίποτα, θα εκδοθεί ένα προεπιλεγμένο πιστοποιητικό. Αυτό θα διασφαλίσει ότι θα συνεχίσετε να ανανεώνετε το πιστοποιητικό σας μετά τη διαγραφή της εναλλακτικής αλυσίδας από την πλευρά του εκδότη ACME.

Ήδη σήμερα μπορείτε να λάβετε πιστοποιητικά υπογεγραμμένα από ISRG Root, Ετσι:

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

Αν προτιμάτε να αφήσετε την αλυσίδα IdenTrust - ορίστε αυτήν την επιλογή σε 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"

Λάβετε υπόψη ότι αυτή η CA ρίζας θα καταργηθεί σύντομα, το Let's Encrypt θα διατηρήσει ενεργή αυτήν την αλυσίδα μέχρι τις 29 Σεπτεμβρίου 2021.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο