Deneyimli, bilge bir mühendise sertifika yöneticisi hakkında ne düşündüğünü ve neden herkesin onu kullandığını sorarsanız, uzman iç çeker, ona güvenle sarılır ve yorgun bir şekilde şöyle der: “Herkes kullanıyor, çünkü aklı başında başka alternatif yok. Farelerimiz ağlar, batar ama bu kaktüsle yaşamaya devam eder. Neden seviyoruz? Çünkü işe yarıyor. Neden sevmiyoruz? Çünkü sürekli olarak yeni özellikler kullanan yeni sürümler çıkıyor. Ve kümeyi tekrar tekrar güncellemeniz gerekir. Ve eski versiyonlar çalışmayı bırakıyor çünkü bir komplo ve büyük bir gizemli şamanizm var.
Ancak geliştiriciler iddia ediyor ki sertifika yöneticisi 1.0 herşey değişecek.
Buna inan?

Cert-manager, yerel Kubernetes sertifika yönetimi denetleyicisidir. Çeşitli kaynaklardan sertifika vermek için kullanılabilir: Let's Encrypt, HashiCorp Vault, Venafi, imzalama ve kendinden imzalı anahtar çiftleri. Ayrıca, anahtarları son kullanma tarihine göre güncel tutmanıza olanak tanır ve ayrıca sertifikaları, süreleri dolmadan önce belirli bir zamanda otomatik olarak yenilemeye çalışır. Cert-manager, kube-lego'ya dayanmaktadır ve ayrıca kube-cert-manager gibi diğer benzer projelerden bazı hileler kullanmıştır.
Sürüm notları
1.0 sürümüyle, sertifika yöneticisi projesinin üç yıllık gelişimine güveniyoruz. Bu süre zarfında, işlevsellik ve kararlılık açısından, ancak en önemlisi toplulukta önemli ölçüde gelişti. Bugün, birçok kişinin onu Kubernetes kümelerini güvence altına almak ve ekosistemin çeşitli bölümlerine dağıtmak için kullandığını görüyoruz. Son 16 sürümde birçok hata düzeltildi. Ve kırılması gereken kırıldı. API ile çalışmak için yapılan birkaç ziyaret, API'nin kullanıcılarla etkileşimini iyileştirdi. 1500 topluluk üyesinden gelen daha fazla çekme talebiyle GitHub'da 253 sorunu çözdük.
1.0'ın piyasaya sürülmesiyle, cert-manager'ın olgun bir proje olduğunu resmen ilan ediyoruz. API'mizi uyumlu tutacağımıza da söz veriyoruz v1.
Bu üç yıl boyunca sertifika yöneticisi olmamıza yardımcı olan herkese çok teşekkürler! Versiyon 1.0 gelecek birçok büyük şeyin ilki olsun.
Sürüm 1.0, birkaç öncelik alanına sahip kararlı bir sürümdür:
-
v1ATEŞ; -
Ekip
kubectl cert-manager status, problem analizine yardımcı olmak için; -
En son kararlı Kubernetes API'lerini kullanma;
-
Geliştirilmiş günlük kaydı;
-
ACME iyileştirmeleri.
Yükseltmeden önce yükseltme notlarını okuduğunuzdan emin olun.
API v1
Sürüm v0.16, API ile çalıştı v1beta1. Bu, bazı yapısal değişiklikler ekledi ve ayrıca API alan belgelerini geliştirdi. Sürüm 1.0, bir API ile bunun üzerine kuruludur v1. Bu API bizim ilk kararlı API'mizdir, aynı zamanda zaten uyumluluk garantileri verdik, ancak API ile v1 uyumluluğu önümüzdeki yıllarda da koruyacağımıza söz veriyoruz.
Yapılan değişiklikler (not: dönüştürme araçlarımız sizin için her şeyi halleder):
Sertifika:
-
emailSANsŞimdi çağırdıemailAddresses -
uriSANs-uris
Bu değişiklikler, diğer SAN'larla (konu alternatif adları, yakl. çevirmen), hem de Go API ile. Bu terimi API'mizden kaldırıyoruz.
Güncelleştirmek
Kubernetes 1.16+ kullanıyorsanız web kancalarını dönüştürmek, API sürümleriyle aynı anda ve sorunsuz bir şekilde çalışmanıza olanak tanır. v1alpha2, v1alpha3, v1beta1 и v1. Bunlarla, eski kaynaklarınızı değiştirmeden veya yeniden dağıtmadan API'nin yeni sürümünü kullanabileceksiniz. Bildirimlerinizi API'ye yükseltmenizi kesinlikle öneririz v1, çünkü önceki sürümler yakında kullanımdan kaldırılacaktır. Kullanıcılar legacy cert-manager sürümleri hala yalnızca şunlara erişebilir: v1, yükseltme adımları bulunabilir .
kubectl sertifika yöneticisi durum komutu
Uzantımızdaki yeni iyileştirmelerle kubectl sertifikaların verilmemesine ilişkin sorunları araştırmak daha kolay hale geldi. kubectl cert-manager status artık sertifikalarda neler olup bittiği hakkında çok daha fazla bilgi veriyor ve ayrıca sertifika verme aşamasını gösteriyor.
Uzantıyı yükledikten sonra çalıştırabilirsiniz kubectl cert-manager status certificate <имя-сертификата>ACME'den alınan sertifikalar kullanılıyorsa verilen ada sahip sertifikayı ve CertificateRequest, Secret, Issuer ve Order and Challenges gibi ilgili kaynakları arayacaktır.
Henüz hazır olmayan bir sertifikada hata ayıklama örneği:
$ 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
Komut, sertifikanın içeriği hakkında daha fazla bilgi edinmenize de yardımcı olabilir. Letsencrypt tarafından yayınlanan bir sertifika için ayrıntılı örnek:
$ 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
[...]
En son kararlı Kubernetes API'lerini kullanma
Cert-manager, Kubernetes CRD'lerini ilk uygulayanlardan biriydi. Bu ve 1.11'e kadar Kubernetes sürümlerine verdiğimiz destek, eski sürümü desteklememiz gerektiği anlamına geliyordu. apiextensions.k8s.io/v1beta1 CRD'lerimiz için de admissionregistration.k8s.io/v1beta1 web kancalarımız için. Artık kullanımdan kaldırıldılar ve Kubernetes'te 1.22 sürümünden kaldırılacaklar. 1.0 sürümümüzle artık tam destek sunuyoruz apiextensions.k8s.io/v1 и admissionregistration.k8s.io/v1 Kubernetes 1.16 (eklendikleri yer) ve daha yeni sürümler için. Önceki sürümlerin kullanıcıları için destek sunmaya devam ediyoruz v1beta1 bizim legacy sürümleri.
Geliştirilmiş günlük kaydı
Bu sürümde, günlük kitaplığını şu şekilde güncelledik: klog/v2, Kubernetes 1.19'da kullanılır. Ayrıca, uygun seviyeye atandığından emin olmak için yazdığımız her dergiyi gözden geçiririz. Biz buna rehberlik ettik . Beş tane var (aslında altı, yakl. çevirmen) başlayarak günlük seviyeleri Error (seviye 0), yalnızca önemli hataları yazdırır ve Trace (seviye 5) tam olarak neler olup bittiğini bilmenize yardımcı olacaktır. Bu değişiklikle, cert-manager çalıştırırken hata ayıklama bilgilerine ihtiyacınız yoksa günlük sayısını azalttık.
İpucu: sertifika yöneticisi varsayılan olarak 2. seviyede çalışır (Info), kullanarak bunu geçersiz kılabilirsiniz. global.logLevel Helmchart'ta.
Not: Günlükleri görüntülemek, sorun giderirken son çaredir. Daha fazla bilgi için .
Editörün n.b.: Kubernetes çatısı altında her şeyin nasıl çalıştığı hakkında daha fazla bilgi edinmek, deneyimli öğretmenlerden değerli tavsiyeler almak ve kaliteli teknik destek yardımı almak için çevrimiçi yoğun etkinliklere katılabilirsiniz. 28-30 Eylül tarihlerinde gerçekleştirilecek olan ve 14-16 Ekim tarihlerinde yapılacak.
ACME İyileştirmeleri
Cert-manager'ın en yaygın kullanımı muhtemelen Let's Encrypt'ten ACME kullanarak sertifika vermekle ilgilidir. Sürüm 1.0, ACME düzenleyicimize iki küçük ama önemli iyileştirme eklemek için topluluk geri bildirimlerini kullanması açısından dikkate değerdir.
Hesap anahtarı oluşturmayı devre dışı bırak
ACME sertifikalarını büyük hacimlerde kullanıyorsanız, aynı hesabı birden çok kümede kullanmanız muhtemeldir, bu nedenle sertifika verme kısıtlamalarınız hepsi için geçerli olacaktır. Bu, içinde belirtilen sırrı kopyalarken sertifika yöneticisinde zaten mümkündü. privateKeySecretRef. Sertifika yöneticisi yardımcı olmaya çalıştığından ve bulamazsa mutlu bir şekilde yeni bir hesap anahtarı oluşturduğundan, bu kullanım durumu oldukça sorunluydu. Bu yüzden ekledik disableAccountKeyGenerationBu seçeneği şu şekilde ayarlarsanız sizi bu davranıştan korumak için true - cert-manager bir anahtar üretmeyecek ve kendisine bir hesap anahtarı sağlanmadığı konusunda sizi uyaracaktır.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
privateKeySecretRef:
name: example-issuer-account-key
disableAccountKeyGeneration: false
Tercih Zinciri
29 Eylül Haydi Şifreleyelim kendi kök CA'nıza ISRG Root. Çapraz imzalı sertifikalar şu şekilde değiştirilecektir: Identrust. Bu değişiklik, sertifika yöneticisi ayarlarında değişiklik yapılmasını gerektirmez, bu tarihten sonra yayınlanan tüm güncellenmiş veya yeni sertifikalar yeni kök CA'yı kullanacaktır.
Let's Encrypt zaten sertifikaları bu CA ile imzalıyor ve bunları ACME aracılığıyla "alternatif sertifika zinciri" olarak sunuyor. Cert-manager'ın bu versiyonunda, veren ayarlarında bu zincirlere erişim ayarlamak mümkündür. parametrede preferredChain sertifikanın birlikte verileceği kullanımda olan CA'nın adını belirtebilirsiniz. İstekle eşleşen bir CA sertifikası varsa, size bir sertifika verir. Lütfen bunun tercih edilen seçenek olduğunu unutmayın, hiçbir şey bulunmazsa varsayılan bir sertifika verilecektir. Bu, ACME veren taraf üzerindeki alternatif zinciri sildikten sonra da sertifikanızı yenilemenizi sağlayacaktır.
Bugünden imzalı sertifikalar alabilirsiniz. ISRG Root, Yani:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
preferredChain: "ISRG Root X1"
Zincirden ayrılmayı tercih ederseniz IdenTrust - bu seçeneği şu şekilde ayarlayın: 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ütfen bu kök CA'nın yakında kullanımdan kaldırılacağını unutmayın, Let's Encrypt bu zinciri 29 Eylül 2021'e kadar aktif tutacaktır.
Kaynak: habr.com
