ΠΡΠ»ΠΈ ΡΠΏΡΠΎΡΠΈΡΡ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡΠ΄ΡΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°, ΡΡΠΎ ΠΎΠ½ Π΄ΡΠΌΠ°Π΅Ρ ΠΎ cert-manager ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π²ΡΠ΅ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΡΠΎ ΡΠΏΠ΅Ρ Π²Π·Π΄ΠΎΡ Π½ΡΡ, Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΠΈΠΌΠ΅Ρ ΠΈ ΡΡΡΠ°Π»ΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ: Β«ΠΡΠ΅ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² Π²ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ . ΠΠ°ΡΠΈ ΠΌΡΡΠΈ ΠΏΠ»Π°ΡΡΡ, ΠΊΠΎΠ»ΡΡΡΡ, Π½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΆΠΈΡΡ Ρ ΡΡΠΈΠΌ ΠΊΠ°ΠΊΡΡΡΠΎΠΌ. ΠΠΎΡΠ΅ΠΌΡ Π»ΡΠ±ΠΈΠΌ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΡΠ΅ΠΌΡ Π½Π΅ Π»ΡΠ±ΠΈΠΌ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΡΡ ΠΎΠ΄ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΡΠΈ. Π ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π· Π·Π° ΡΠ°Π·ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ. Π ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π°Π³ΠΎΠ²ΠΎΡ Π΅ΡΡΡ ΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ΅ ΡΠ°ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°ΠΌΠ°Π½ΡΡΠ²ΠΎΒ».
ΠΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ²Π΅ΡΡΡΡ, ΡΡΠΎ Ρ cert-manager 1.0 Π²ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
ΠΠΎΠ²Π΅ΡΠΈΠΌ?
Cert-manager — Β«ΡΠΎΠ΄Π½ΠΎΠΉΒ» ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ Kubernetes. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²: Let’s Encrypt, HashiCorp Vault, Venafi, ΠΏΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΈ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΡ . ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠ»ΡΡΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π΄ΠΎ ΠΈΡ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΡ. Cert-manager ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° kube-lego, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΡ ΠΎΠΆΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ kube-cert-manager.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΊ Π²ΡΠΏΡΡΠΊΡ
ΠΠ΅ΡΡΠΈΠ΅ΠΉ 1.0 ΠΌΡ ΡΡΠ°Π²ΠΈΠΌ Π·Π½Π°ΠΊ Π΄ΠΎΠ²Π΅ΡΠΈΡ Π·Π° ΡΡΠΈ Π³ΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° cert-manager. ΠΠ° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ»ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ — Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΡΠ²ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² Kubernetes, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ 16 Π²ΡΠΏΡΡΠΊΠ°Ρ Π±ΡΠ»ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ ΠΊΡΡΠ° ΠΎΡΠΈΠ±ΠΎΠΊ. Π ΡΠΎ, ΡΡΠΎ Π½Π°Π΄ΠΎ Π±ΡΠ»ΠΎ ΡΠ»ΠΎΠΌΠ°ΡΡ — ΡΠ»ΠΎΠΌΠ°Π½ΠΎ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Ρ ΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ API ΡΠ»ΡΡΡΠΈΠ»ΠΈ Π΅Π³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ. ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ 1500 ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π° GitHub Ρ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΎΡ 253 ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°.
ΠΡΠΏΡΡΠΊΠ°Ρ 1.0 ΠΌΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Π·Π°ΡΠ²Π»ΡΠ΅ΠΌ, ΡΡΠΎ cert-manager — Π·ΡΠ΅Π»ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ API v1
.
ΠΠ³ΡΠΎΠΌΠ½Π°Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π» Π΄Π΅Π»Π°ΡΡ cert-manager Π²ΡΠ΅ ΡΡΠΈ ΡΡΠΈ Π³ΠΎΠ΄Π°! ΠΡΡΡΡ Π²Π΅ΡΡΠΈΡ 1.0 ΡΡΠ°Π½Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ Π±ΡΠ΄ΡΡΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠΏΡΡΠΊ 1.0 — ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠΏΡΡΠΊ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΌΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ:
-
v1
API; -
ΠΠΎΠΌΠ°Π½Π΄Π°
kubectl cert-manager status
, Π΄Π»Ρ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ; -
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Π΅ΠΉΡΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ API Kubernetes;
-
Π£Π»ΡΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
-
Π£Π»ΡΡΡΠ΅Π½ΠΈΡ ACME.
ΠΠ΅ΡΠ΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
API v1
ΠΠ΅ΡΡΠΈΡ v0.16 ΡΠ°Π±ΠΎΡΠ°Π»Π° Ρ API v1beta1
. ΠΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»ΡΡΡΠΈΠ»ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΠΌ API. ΠΠ΅ΡΡΠΈΡ 1.0 ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΡΡΠΎ Π²ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ API v1
. ΠΡΠΎΡ API ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ, Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΡ ΡΠΆΠ΅ Π΄Π°Π²Π°Π»ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ Ρ API v1
ΠΌΡ ΠΎΠ±Π΅ΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π½Π° Π³ΠΎΠ΄Ρ Π²ΠΏΠ΅ΡΠ΅Π΄.
ΠΠ½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π½Π°ΡΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π°Π±ΠΎΡΡΡΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅ΠΌ Π΄Π»Ρ Π²Π°Ρ):
Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°Ρ:
-
emailSANs
ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡemailAddresses
-
uriSANs
—uris
ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ SAN (subject alt names, ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°), Π° ΡΠ°ΠΊΠΆΠ΅ Ρ Go API. ΠΡ ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΡΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ API.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Kubernetes 1.16+ — ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡΡΠΈΠ΅ webhooks ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π±Π΅ΡΡΠΎΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ API v1alpha2
, v1alpha3
, v1beta1
ΠΈ v1
. Π‘ ΠΈΡ
ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ API Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ
ΡΡΠ°ΡΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠ² Π΄ΠΎ API v1
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠΊΠΎΡΠΎ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ legacy
Π²Π΅ΡΡΠΈΠΈ cert-manager Π±ΡΠ΄ΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ v1
, ΡΠ°Π³ΠΈ ΠΏΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ
ΠΠΎΠΌΠ°Π½Π΄Π° kubectl cert-manager status
C Π½ΠΎΠ²ΡΠΌΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΠΌΠΈ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΠΊ kubectl
ΡΡΠ°Π»ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½Π΅Π²ΡΠ΄Π°ΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ². kubectl cert-manager status
ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΄Π°Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΠ°ΠΏ Π²ΡΠ΄Π°ΡΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ kubectl cert-manager status certificate <ΠΈΠΌΡ-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°>
, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠΎΠΈΡΠΊΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π»ΡΠ±ΡΡ
ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ CertificateRequest, Secret, Issuer, Π° ΡΠ°ΠΊΠΆΠ΅ Order ΠΈ Challenges Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΎΡ ACME.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π΅ΡΠ΅ Π½Π΅ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°:
$ 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
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠ·Π½Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°. ΠΡΠΈΠΌΠ΅Ρ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, Π²ΡΠ΄Π°Π½Π½ΠΎΠ³ΠΎ 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
[...]
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Π΅ΠΉΡΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ API Kubernetes
Cert-manager Π±ΡΠ» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ
, ΠΊΡΠΎ Π²Π½Π΅Π΄ΡΠΈΠ» Kubernetes CRDs. ΠΡΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π΅ΡΡΠΈΠΉ Kubernetes Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ 1.11, ΠΏΡΠΈΠ²Π΅Π»ΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ apiextensions.k8s.io/v1beta1
Π΄Π»Ρ Π½Π°ΡΠΈΡ
CRD, Π° ΡΠ°ΠΊΠΆΠ΅ admissionregistration.k8s.io/v1beta1
Π΄Π»Ρ Π½Π°ΡΠΈΡ
webhooks. Π‘Π΅ΠΉΡΠ°Ρ ΠΎΠ½ΠΈ ΡΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ Π±ΡΠ΄ΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ Π² Kubernetes Ρ Π²Π΅ΡΡΠΈΠΈ 1.22. Π‘ Π½Π°ΡΠ΅ΠΉ 1.0 ΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ apiextensions.k8s.io/v1
ΠΈ admissionregistration.k8s.io/v1
Π΄Π»Ρ Kubernetes 1.16 (Π³Π΄Π΅ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ) ΠΈ Π½ΠΎΠ²Π΅Π΅. ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
Π²Π΅ΡΡΠΈΠΉ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ v1beta1
Π² Π½Π°ΡΠ΅ΠΉ legacy
Π²Π΅ΡΡΠΈΠΈ.
Π£Π»ΡΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ klog/v2
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² Kubernetes 1.19. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΆΡΡΠ½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ΅ΠΌ, Π΄Π»Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΅ΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠ²Π°Π»ΠΈΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Error
(ΡΡΠΎΠ²Π΅Π½Ρ 0), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ Trace
(ΡΡΠΎΠ²Π΅Π½Ρ 5), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ·Π½Π°ΡΡ ΡΠΎΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ. ΠΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΡ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΆΡΡΠ½Π°Π»ΠΎΠ², Π΅ΡΠ»ΠΈ Π²ΡΠΌ Π½Π΅ Π½ΡΠΆΠ½Π° ΠΎΡΠ»Π°Π΄ΠΎΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ cert-manager.
Π‘ΠΎΠ²Π΅Ρ: ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ cert-manager ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ 2 (Info
), Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ global.logLevel
Π² Helm chart.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΆΡΡΠ½Π°Π»ΠΎΠ² — ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΡΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠΈ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ. ΠΠ»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ Π½Π°ΡΠΈΠΌ
N.B. ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°: Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Ρ Kubernetes, ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²-ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Π΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΠ΅Ρ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π°Ρ
Π£Π»ΡΡΡΠ΅Π½ΠΈΡ ACME
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ cert-manager Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π²ΡΠΏΡΡΠΊΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΎΡ Let’s Encrypt ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ACME. ΠΠ΅ΡΡΠΈΡ 1.0 ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ·ΡΠ²ΠΎΠ² ΠΎΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ , Π½ΠΎ Π²Π°ΠΆΠ½ΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ Π² Π½Π°Ρ ACME issuer.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ° ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ACME Π² Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΌΠ°Ρ
, Π²Ρ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ
, ΡΠ°ΠΊ ΡΡΠΎ Π²Π°ΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π²ΡΠΏΡΡΠΊΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΠΊΠ°ΡΠ°ΡΡΡΡ ΠΈΡ
Π²ΡΠ΅Ρ
. ΠΡΠΎ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² cert-manager ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² privateKeySecretRef
. Π’Π°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³Π»ΡΡΠ½ΡΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ cert-manager ΠΏΡΡΠ°Π»ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΈ ΡΠ°Π΄ΠΎΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π» Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ». ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ disableAccountKeyGeneration
, ΡΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΠΈΡΡ Π²Π°Ρ ΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² true
— cert-manager Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ»ΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡ Π²Π°Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΅ΠΌΡ Π½Π΅ Π±ΡΠ» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ ΠΊΠ»ΡΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
privateKeySecretRef:
name: example-issuer-account-key
disableAccountKeyGeneration: false
ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌΠ°Ρ ΡΠ΅ΠΏΠΎΡΠΊΠ°
29 ΡΠ΅Π½ΡΡΠ±ΡΡ Let’s Encrypt ISRG Root
. Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΌΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° Identrust
. ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΎΠΊ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
cert-manager, Π²ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ, Π²ΡΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠΉ Π΄Π°ΡΡ, Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ CA.
Let’s Encrypt ΡΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ CA ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΈΡ
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Β«Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²Β» ΡΠ΅ΡΠ΅Π· ACME. Π ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ cert-manager Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΈΠΌ ΡΠ΅ΠΏΠΎΡΠΊΠ°ΠΌ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
issuer. Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ preferredChain
ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ CA, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π°Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ. ΠΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ CA, ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡΡ, ΠΎΠ½ Π²ΡΠ΄Π°ΡΡ Π²Π°ΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, Π΅ΡΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ — Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π°Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠΎ Π΄Π°ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ACME issuer.
Π£ΠΆΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ISRG Root
, ΡΠ°ΠΊ:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
preferredChain: "ISRG Root X1"
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ IdenTrust
— Π²ΡΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² 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"
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ΅Π½ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΊΠΎΡΠΎ ΡΡΡΠ°ΡΠ΅Π΅Ρ, Let’s Encrypt Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎ 29 ΡΠ΅Π½ΡΡΠ±ΡΡ 2021 Π³ΠΎΠ΄Π°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com