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?
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ıremailAddresses
-
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
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 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
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.
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 disableAccountKeyGeneration
bu 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 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