sertifika yöneticisi 1.0 yayınlandı

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?

sertifika yöneticisi 1.0 yayınlandı

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:

  • v1 ATEŞ;

  • 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 burada.

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 Kubernetes'ten rehberlik. 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 liderlik.

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. Kubernetes Üssü28-30 Eylül tarihlerinde gerçekleştirilecek olan ve Kubernetes Mega14-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 üzerinden geçecek 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

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster