cert-manager 1.0 buraxıldı

Təcrübəli, müdrik mühəndisdən cert-menecer haqqında nə düşündüyünü və niyə hamının ondan istifadə etdiyini soruşsanız, o zaman mütəxəssis ah çəkəcək, inamla onu qucaqlayacaq və yorğun-yorğun deyəcək: “Hamı istifadə edir, çünki sağlam alternativ yoxdur. Siçanlarımız ağlayır, sancır, amma bu kaktusla yaşamağa davam edir. Niyə sevirik? Çünki işləyir. Niyə sevmirik? Çünki daim yeni funksiyalardan istifadə edən yeni versiyalar çıxır. Və klasteri təkrar-təkrar yeniləməlisiniz. Köhnə versiyalar isə fəaliyyətini dayandırır, çünki bir sui-qəsd və böyük sirli şamanizm var.

Lakin tərtibatçılar bunu iddia edirlər sertifikat meneceri 1.0 hər şey dəyişəcək.

İnanırsan?

cert-manager 1.0 buraxıldı

Sertifikat meneceri yerli Kubernetes sertifikat idarəetmə nəzarətçisidir. O, müxtəlif mənbələrdən sertifikatlar vermək üçün istifadə edilə bilər: Let's Encrypt, HashiCorp Vault, Venafi, imzalama və özünü imzalayan açar cütləri. O, həmçinin açarları son istifadə tarixinə qədər yeni saxlamağa imkan verir və həmçinin sertifikatların müddəti bitməzdən əvvəl müəyyən edilmiş vaxtda avtomatik yeniləməyə çalışır. Sertifikat meneceri kube-leqoya əsaslanır və kube-cert-manager kimi digər oxşar layihələrin bəzi fəndlərindən də istifadə etmişdir.

Buraxılış qeydləri

1.0 versiyası ilə biz sertifikat meneceri layihəsinin üç illik inkişafı üçün etibar nişanı qoyduq. Bu müddət ərzində, o, funksionallıq və sabitlik baxımından əhəmiyyətli dərəcədə inkişaf etdi, lakin ən çox cəmiyyətdə. Bu gün biz bir çox insanın Kubernetes klasterlərini qorumaq üçün ondan istifadə etdiyini və onu ekosistemin müxtəlif hissələrinə yerləşdirdiyini görürük. Son 16 buraxılışda bir çox səhvlər düzəldildi. Və qırılmalı olan şey qırılır. API ilə işləmək üçün bir neçə səfər onun istifadəçilərlə qarşılıqlı əlaqəsini yaxşılaşdırdı. 1500 icma üzvünün daha çox cəlbetmə sorğusu ilə GitHub-da 253 məsələni həll etdik.

1.0 versiyasının buraxılması ilə biz rəsmi olaraq elan edirik ki, sertifikat meneceri yetkin bir layihədir. Biz həmçinin API-mizi uyğun saxlamağa söz veririk v1.

Bu üç il ərzində sertifikat meneceri olmağımıza kömək edən hər kəsə çox təşəkkür edirik! 1.0 versiyası gələcək bir çox böyük şeylərdən birincisi olsun.

Release 1.0 bir neçə prioritet sahəyə malik stabil buraxılışdır:

  • v1 API;

  • Komanda kubectl cert-manager status, problemin təhlilinə kömək etmək;

  • Ən son sabit Kubernetes API-lərindən istifadə;

  • Təkmilləşdirilmiş giriş;

  • ACME təkmilləşdirmələri.

Təkmilləşdirmədən əvvəl təkmilləşdirmə qeydlərini oxumağınızdan əmin olun.

API v1

Versiya v0.16 API ilə işləyirdi v1beta1. Bu, bəzi struktur dəyişiklikləri əlavə etdi və həmçinin API sahə sənədlərini təkmilləşdirdi. Versiya 1.0 API ilə bunun üzərində qurulur v1. Bu API bizim ilk stabilimizdir, eyni zamanda biz artıq uyğunluq zəmanəti vermişik, lakin API ilə v1 biz gələcək illər üçün uyğunluğu qorumağa söz veririk.

Dəyişikliklər edildi (qeyd: bizim çevirmə alətlərimiz sizin üçün hər şeylə maraqlanır):

Sertifikat:

  • emailSANs indi çağırılır emailAddresses

  • uriSANs - uris

Bu dəyişikliklər digər SAN-larla uyğunluq əlavə edir (mövzu alternativ adları, təqribən. tərcüməçi), həmçinin Go API ilə. Bu termini API-dən silirik.

Update

Kubernetes 1.16+ istifadə edirsinizsə, veb-qancaların konvertasiyası sizə API versiyaları ilə eyni vaxtda və problemsiz işləməyə imkan verəcək v1alpha2, v1alpha3, v1beta1 и v1. Bunlarla siz köhnə resurslarınızı dəyişdirmədən və ya yenidən yerləşdirmədən API-nin yeni versiyasından istifadə edə biləcəksiniz. Manifestlərinizi API-yə təkmilləşdirməyi çox tövsiyə edirik v1, çünki əvvəlki versiyalar tezliklə köhnələcək. İstifadəçilər legacy cert-manager versiyalarının hələ də yalnız girişi olacaq v1, təkmilləşdirmə addımları tapıla bilər burada.

kubectl sertifikat meneceri statusu əmri

Genişləndirməmizdə yeni təkmilləşdirmələrlə kubectl sertifikatların verilməməsi ilə bağlı problemlərin araşdırılması asanlaşdı. kubectl cert-manager status indi sertifikatlarla baş verənlər haqqında daha çox məlumat verir və həmçinin sertifikatın verilməsi mərhələsini göstərir.

Uzatmanı quraşdırdıqdan sonra işə düşə bilərsiniz kubectl cert-manager status certificate <имя-сертификата>ACME-nin sertifikatlarından istifadə edirsinizsə, bu, verilmiş adla sertifikatı və Sertifikat Sorğusu, Gizli, Emitent və Sifariş və Çağırışlar kimi əlaqəli resursları axtaracaq.

Hələ hazır olmayan sertifikatın sazlanmasına bir nümunə:

$ 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 həmçinin sertifikatın məzmunu haqqında daha çox məlumat əldə etməyə kömək edə bilər. Letsencrypt tərəfindən verilmiş sertifikat üçün ətraflı nümunə:

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

Ən son sabit Kubernetes API-lərindən istifadə

Sertifikat meneceri Kubernetes CRD-lərini ilk tətbiq edənlərdən biri idi. Bu və 1.11-ə qədər Kubernetes versiyaları üçün dəstəyimiz o demək idi ki, mirası dəstəkləməliyik apiextensions.k8s.io/v1beta1 CRD-lərimiz üçün də admissionregistration.k8s.io/v1beta1 webhooklarımız üçün. Onlar indi köhnəlib və 1.22 versiyasından Kubernetesdə silinəcək. 1.0 ilə biz indi tam dəstək təklif edirik apiextensions.k8s.io/v1 и admissionregistration.k8s.io/v1 Kubernetes 1.16 (əlavə olunduğu yer) və daha yenisi üçün. Əvvəlki versiyaların istifadəçiləri üçün dəstək təklif etməyə davam edirik v1beta1 bizim legacy versiyaları.

Təkmilləşdirilmiş giriş

Bu buraxılışda biz giriş kitabxanasını yenilədik klog/v2, Kubernetes 1.19-da istifadə olunur. Biz həmçinin yazdığımız hər bir jurnala müvafiq səviyyənin təyin olunduğuna əmin olmaq üçün nəzərdən keçiririk. Biz bunu rəhbər tutduq Kubernetesdən təlimat. Beş var (əslində altı, təqribən. tərcüməçi) dən başlayaraq giriş səviyyələri Error (səviyyə 0), yalnız mühüm səhvləri çap edir və ilə bitir Trace (səviyyə 5) nə baş verdiyini dəqiq bilməyə kömək edəcək. Bu dəyişikliklə, cert-manager-i işlədərkən sazlama məlumatına ehtiyacınız yoxdursa, qeydlərin sayını azaldırıq.

İpucu: sertifikat meneceri standart olaraq 2-ci səviyyədə işləyir (Info), istifadə edərək bunu ləğv edə bilərsiniz global.logLevel Helmchart-da.

Qeyd: Problemləri həll edərkən qeydlərə baxmaq son çarədir. Ətraflı məlumat üçün bizimlə tanış olun rəhbərlik.

Redaktor n.b.: Bütün bunların Kubernetesin başlığı altında necə işlədiyi haqqında daha çox öyrənmək, praktiki müəllimlərdən dəyərli məsləhətlər almaq, həmçinin keyfiyyətli texniki dəstək yardımı almaq üçün onlayn intensiv təlimlərdə iştirak edə bilərsiniz. Kubernetes bazası28-30 sentyabr tarixlərində keçiriləcək və Kubernetes Mega14-16 oktyabrda keçiriləcək.

ACME Təkmilləşdirmələri

Sertifikat menecerinin ən ümumi istifadəsi, ehtimal ki, ACME-dən istifadə edərək Let's Encrypt-dən sertifikatların verilməsi ilə bağlıdır. Versiya 1.0 ACME emitentimizə iki kiçik, lakin vacib təkmilləşdirmə əlavə etmək üçün icma rəyindən istifadə etməklə diqqət çəkir.

Hesab açarının yaradılmasını deaktiv edin

Əgər siz ACME sertifikatlarını böyük həcmdə istifadə edirsinizsə, çox güman ki, eyni hesabı birdən çox klasterdə istifadə edəcəksiniz, buna görə də sertifikatın verilməsinə məhdudiyyətlər onların hamısına şamil olunacaq. Göstərilən sirri köçürərkən bu artıq cert-menecerdə mümkün idi privateKeySecretRef. Sertifikat meneceri faydalı olmağa çalışdığı üçün bu istifadə halı olduqca çətin idi və tapmadıqda xoşbəxtliklə yeni hesab açarı yaratdı. Ona görə də əlavə etdik disableAccountKeyGenerationbu seçimi təyin etsəniz, sizi bu davranışdan qorumaq üçün true - sertifikat meneceri açar yaratmayacaq və onun hesab açarı ilə təmin olunmadığı barədə xəbərdarlıq edəcək.

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

Üstünlük Zəncir

29 sentyabr Gəlin Şifrələyək keçəcək öz kök CA-ya ISRG Root. Çapraz imzalanmış sertifikatlar ilə əvəz olunacaq Identrust. Bu dəyişiklik sertifikat meneceri parametrlərində dəyişiklik tələb etmir, bu tarixdən sonra buraxılmış bütün yenilənmiş və ya yeni sertifikatlar yeni kök CA-dan istifadə edəcək.

Let's Encrypt artıq bu CA ilə sertifikatlar imzalayır və onları ACME vasitəsilə "alternativ sertifikat zənciri" kimi təklif edir. Sertifikat menecerinin bu versiyasında emitent parametrlərində bu zəncirlərə girişi təyin etmək mümkündür. Parametrdə preferredChain sertifikatın veriləcəyi istifadə olunan CA-nın adını göstərə bilərsiniz. Əgər sorğuya uyğun gələn CA sertifikatı varsa, o sizə sertifikat verəcək. Nəzərə alın ki, bu, üstünlük verilən seçimdir, heç nə tapılmadıqda, standart sertifikat veriləcək. Bu, ACME emitent tərəfindəki alternativ zənciri sildikdən sonra sertifikatınızı hələ də yeniləməyinizi təmin edəcək.

Artıq bu gün imzalanmış sertifikatları ala bilərsiniz ISRG Root, Belə ki:

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

Əgər zənciri tərk etməyi üstün tutursansa IdenTrust - bu seçimi təyin edin 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"

Nəzərə alın ki, bu kök CA tezliklə köhnələcək, Let's Encrypt bu zənciri 29 sentyabr 2021-ci ilə qədər aktiv saxlayacaq.

Mənbə: www.habr.com

Добавить комментарий