Jika anda bertanya kepada jurutera yang berpengalaman dan bijak tentang pendapatnya tentang pengurus sijil dan mengapa semua orang menggunakannya, maka pakar itu akan mengeluh, memeluknya dengan penuh keyakinan dan berkata dengan letih: βSemua orang menggunakannya, kerana tiada alternatif yang waras. Tikus kami menangis, mencucuk, tetapi terus hidup dengan kaktus ini. Kenapa kita sayang? Kerana ia berfungsi. Kenapa kita tidak sayang? Kerana versi baharu sentiasa keluar yang menggunakan ciri baharu. Dan anda perlu mengemas kini kluster berulang kali. Dan versi lama berhenti berfungsi, kerana terdapat konspirasi dan dukun misteri yang hebat.
Tetapi pemaju mendakwa bahawa pengurus sijil 1.0 segalanya akan berubah.
Adakah kita akan percaya?
Pengurus sijil ialah pengawal pengurusan sijil Kubernetes asli. Ia boleh digunakan untuk mengeluarkan sijil daripada pelbagai sumber: Let's Encrypt, HashiCorp Vault, Venafi, tandatangan dan pasangan kunci yang ditandatangani sendiri. Ia juga membolehkan anda memastikan kunci dikemas kini mengikut tarikh tamat tempoh, dan juga cuba memperbaharui sijil secara automatik pada masa tertentu sebelum ia tamat tempoh. Cert-manager adalah berdasarkan kube-lego dan juga telah menggunakan beberapa helah daripada projek lain yang serupa seperti kube-cert-manager.
Nota Keluaran
Dengan versi 1.0, kami meletakkan tanda kepercayaan selama tiga tahun pembangunan projek pengurus sijil. Pada masa ini, ia telah berkembang dengan ketara dalam kefungsian dan kestabilan, tetapi kebanyakannya dalam komuniti. Hari ini, kami melihat ramai orang menggunakannya untuk menjamin kluster Kubernetes mereka serta mengerahkannya ke pelbagai bahagian ekosistem. Banyak pepijat telah diperbaiki dalam 16 keluaran terakhir. Dan apa yang perlu dipecahkan adalah rosak. Beberapa lawatan untuk bekerja dengan API telah meningkatkan interaksinya dengan pengguna. Kami telah menyelesaikan 1500 isu di GitHub dengan lebih banyak permintaan tarik daripada 253 ahli komuniti.
Dengan keluaran 1.0, kami secara rasmi mengisytiharkan bahawa pengurus sijil ialah projek matang. Kami juga berjanji untuk memastikan API kami serasi v1
.
Terima kasih banyak kepada semua orang yang membantu kami menjadi pengurus sijil sepanjang tiga tahun ini! Biarkan versi 1.0 menjadi yang pertama daripada banyak perkara besar yang akan datang.
Keluaran 1.0 ialah keluaran stabil dengan beberapa bidang keutamaan:
-
v1
KEBAKARAN; -
Pasukan
kubectl cert-manager status
, untuk membantu dengan analisis masalah; -
Menggunakan API Kubernetes stabil terkini;
-
Pembalakan yang lebih baik;
-
Penambahbaikan ACME.
Pastikan anda membaca nota naik taraf sebelum menaik taraf.
API v1
Versi v0.16 berfungsi dengan API v1beta1
. Ini menambah beberapa perubahan struktur dan juga menambah baik dokumentasi medan API. Versi 1.0 dibina atas ini dengan API v1
. API ini ialah API pertama kami yang stabil, pada masa yang sama kami telah memberikan jaminan keserasian, tetapi dengan API v1
kami berjanji untuk mengekalkan keserasian untuk tahun-tahun akan datang.
Perubahan yang dibuat (nota: alatan penukaran kami menguruskan segala-galanya untuk anda):
Sijil:
-
emailSANs
kini dipanggilemailAddresses
-
uriSANs
-uris
Perubahan ini menambah keserasian dengan SAN lain (nama alt subjek, lebih kurang penterjemah), serta dengan Go API. Kami sedang mengalih keluar istilah ini daripada API kami.
Kemas kini
Jika anda menggunakan Kubernetes 1.16+, penukaran webhooks akan membolehkan anda bekerja secara serentak dan lancar dengan versi API v1alpha2
, v1alpha3
, v1beta1
ΠΈ v1
. Dengan ini, anda akan dapat menggunakan versi baharu API tanpa mengubah atau mengatur semula sumber lama anda. Kami amat mengesyorkan anda meningkatkan manifes anda kepada API v1
, kerana versi sebelumnya akan ditamatkan tidak lama lagi. Pengguna legacy
versi pengurus sijil masih hanya mempunyai akses kepada v1
, langkah naik taraf boleh didapati
perintah status pengurus sijil kubectl
Dengan penambahbaikan baharu dalam sambungan kami kepada kubectl
ia menjadi lebih mudah untuk menyiasat masalah yang berkaitan dengan tidak pengeluaran sijil. kubectl cert-manager status
kini memberikan lebih banyak maklumat tentang perkara yang berlaku dengan sijil dan juga menunjukkan peringkat pengeluaran sijil.
Selepas memasang sambungan, anda boleh menjalankan kubectl cert-manager status certificate <ΠΈΠΌΡ-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°>
, yang akan mencari sijil dengan nama yang diberikan dan sebarang sumber yang berkaitan seperti Permintaan Sijil, Rahsia, Pengeluar dan Pesanan dan Cabaran jika menggunakan sijil daripada ACME.
Contoh penyahpepijatan sijil yang belum sedia:
$ 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
Perintah itu juga boleh membantu anda mengetahui lebih lanjut tentang kandungan sijil. Contoh terperinci untuk sijil yang dikeluarkan oleh 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
[...]
Menggunakan API Kubernetes stabil terkini
Pengurus sijil ialah salah seorang yang pertama melaksanakan CRD Kubernetes. Ini, dan sokongan kami untuk versi Kubernetes sehingga 1.11, bermakna kami perlu menyokong warisan apiextensions.k8s.io/v1beta1
untuk CRD kami juga admissionregistration.k8s.io/v1beta1
untuk webhook kami. Ia kini ditamatkan dan akan dialih keluar dalam Kubernetes daripada versi 1.22. Dengan 1.0 kami kini kami menawarkan sokongan penuh apiextensions.k8s.io/v1
ΠΈ admissionregistration.k8s.io/v1
untuk Kubernetes 1.16 (di mana ia ditambah) dan lebih baharu. Bagi pengguna versi terdahulu, kami terus menawarkan sokongan v1beta1
dalam kami legacy
versi.
Pembalakan yang lebih baik
Dalam keluaran ini, kami telah mengemas kini perpustakaan pengelogan kepada klog/v2
, digunakan dalam Kubernetes 1.19. Kami juga menyemak setiap jurnal yang kami tulis untuk memastikan ia diberikan tahap yang sesuai. Kami dibimbing oleh ini Error
(tahap 0), yang hanya mencetak ralat penting dan berakhir dengan Trace
(tahap 5) yang akan membantu anda mengetahui dengan tepat apa yang sedang berlaku. Dengan perubahan ini, kami telah mengurangkan bilangan log jika anda tidak memerlukan maklumat nyahpepijat semasa menjalankan pengurus-sijil.
Petua: pengurus sijil berjalan pada tahap 2 secara lalai (Info
), anda boleh mengatasi ini menggunakan global.logLevel
dalam Helmchart.
Nota: Melihat log adalah pilihan terakhir apabila menyelesaikan masalah. Untuk maklumat lanjut lihat kami
N.b editor.: Untuk mengetahui lebih lanjut tentang cara semuanya berfungsi di bawah hud Kubernetes, dapatkan nasihat berharga daripada guru yang mengamalkan, serta bantuan sokongan teknikal yang berkualiti, anda boleh mengambil bahagian dalam intensif dalam talian
Penambahbaikan ACME
Penggunaan pengurus sijil yang paling biasa mungkin berkaitan dengan pengeluaran sijil daripada Let's Encrypt menggunakan ACME. Versi 1.0 terkenal kerana menggunakan maklum balas komuniti untuk menambah dua peningkatan kecil tetapi penting kepada pengeluar ACME kami.
Lumpuhkan penjanaan kunci akaun
Jika anda menggunakan sijil ACME dalam jumlah yang besar, anda berkemungkinan menggunakan akaun yang sama pada berbilang kelompok, jadi sekatan pengeluaran sijil anda akan dikenakan pada kesemuanya. Ini telah pun boleh dilakukan dalam pengurus sijil apabila menyalin rahsia yang dinyatakan dalam privateKeySecretRef
. Kes penggunaan ini agak bermasalah, kerana pengurus sijil cuba membantu dan dengan senang hati mencipta kunci akaun baharu jika ia tidak menemuinya. Itulah sebabnya kami menambah disableAccountKeyGeneration
untuk melindungi anda daripada tingkah laku ini jika anda menetapkan pilihan ini kepada true
- pengurus sijil tidak akan menjana kunci dan akan memberi amaran kepada anda bahawa kunci akaun itu belum diberikan.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
privateKeySecretRef:
name: example-issuer-account-key
disableAccountKeyGeneration: false
Rantaian Pilihan
29 September Mari Sulitkan ISRG Root
. Sijil yang ditandatangani silang akan digantikan dengan Identrust
. Perubahan ini tidak memerlukan perubahan pada tetapan pengurus sijil, semua sijil yang dikemas kini atau baharu yang dikeluarkan selepas tarikh ini akan menggunakan CA akar baharu.
Let's Encrypt sudah menandatangani sijil dengan CA ini dan menawarkannya sebagai "rantai sijil alternatif" melalui ACME. Dalam versi pengurus sijil ini, adalah mungkin untuk menetapkan akses kepada rantaian ini dalam tetapan pengeluar. Dalam parameter preferredChain
anda boleh menentukan nama CA yang sedang digunakan, dengan mana sijil akan dikeluarkan. Jika sijil CA yang sepadan dengan permintaan tersedia, ia akan mengeluarkan sijil kepada anda. Sila ambil perhatian bahawa ini adalah pilihan pilihan, jika tiada apa-apa dijumpai, sijil lalai akan dikeluarkan. Ini akan memastikan bahawa anda masih akan memperbaharui sijil anda selepas memadamkan rantaian ganti pada pihak pengeluar ACME.
Sudah hari ini anda boleh menerima sijil yang ditandatangani oleh ISRG Root
, Jadi:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
preferredChain: "ISRG Root X1"
Jika anda lebih suka meninggalkan rantai IdenTrust
- tetapkan pilihan ini kepada 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"
Sila ambil perhatian bahawa CA akar ini akan ditamatkan tidak lama lagi, Let's Encrypt akan memastikan rantaian ini aktif sehingga 29 September 2021.
Sumber: www.habr.com