ืื ืชืฉืืื ืืื ืืก ืื ืืกื ืืืื ืื ืืื ืืืฉื ืขื 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
.
ืชืืื ืจืื ืืื ืื ืฉืขืืจ ืื ื ืืืคืื ืืื ืื ืชืขืืืืช ืื ืฉืืืฉ ืืฉื ืื ืืืื! ืชื ืืืจืกื 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 ืืืฆืื ืืจืืฉืื ืฉืื ื, ืืืงืืื ืืืจ ื ืชื ื ืืืืืืช ืชืืืืืช, ืืื ืขื ื-API v1
ืื ื ืืืืืืื ืืฉืืืจ ืขื ืชืืืืืช ืืืฉื ืฉื ืื ืจืืืช.
ืฉืื ืืืื ืฉืืืฆืขื (ืืขืจื: ืืื ืืืืจื ืฉืื ื ืืืืืื ืื ืืืื):
ืชึฐืขืึผืึธื:
-
emailSANs
ืขืืฉืื ื ืงืจืemailAddresses
-
uriSANs
-uris
ืฉืื ืืืื ืืื ืืืกืืคืื ืชืืืืืช ื-SANs ืืืจืื (ืฉืืืช ืืืืคืืื ืื ืืฉื, ืืฉืืขืจ. ืึฐืชืึผืจืึฐืึธื), ืืื ืื ืขื ืืืฉืง ื-API ืฉื Go. ืื ื ืืกืืจืื ืืช ืืืื ื ืืื ืื-API ืฉืื ื.
ืืขืืื
ืื ืืชื ืืฉืชืืฉ ื-Kubernetes 1.16+, ืืืจืช webhooks ืชืืคืฉืจ ืื ืืขืืื ืื-ืืื ืืช ืืืืงื ืขื ืืจืกืืืช API v1alpha2
, v1alpha3
, v1beta1
ะธ v1
. ืืขืืจืช ืืื, ืชืืื ืืืฉืชืืฉ ืืืจืกื ืืืืฉื ืฉื ื-API ืืืื ืืฉื ืืช ืื ืืคืจืืก ืืืืฉ ืืช ืืืฉืืืื ืืืฉื ืื ืฉืื. ืื ื ืืืืืฆืื ืืืื ืืฉืืจื ืืช ืืื ืืคืกืืื ืฉืื ื-API v1
, ืฉืื ืืจืกืืืช ืงืืืืืช ืืืคืกืงื ืืงืจืื. ืืฉืชืืฉืื legacy
ืืืจืกืืืช ืฉื cert-manager ืขืืืื ืชืืื ืจืง โโืืืฉื v1
, ื ืืชื ืืืฆืื ืฉืืื ืฉืืจืื
ืคืงืืืช ืกืืืืก kubectl cert-manager
ืขื ืฉืืคืืจืื ืืืฉืื ืืืจืืื ืฉืื ื ื kubectl
ื ืขืฉื ืงื ืืืชืจ ืืืงืืจ ืืช ืืืขืืืช ืืงืฉืืจืืช ืืื ืื ืคืงืช ืชืขืืืืช. kubectl cert-manager status
ืืขืช ื ืืชื ืืจืื ืืืชืจ ืืืืข ืขื ืื ืฉืงืืจื ืขื ืืชืขืืืืช ืืื ืืฆืื ืืช ืฉืื ืื ืคืงืช ืืชืขืืื.
ืืืืจ ืืชืงื ืช ืืชืืกืฃ, ืชืืื ืืืคืขืื kubectl cert-manager status certificate <ะธะผั-ัะตััะธัะธะบะฐัะฐ>
, ืืฉืจ ืืืคืฉ ืืช ืืืืฉืืจ ืขื ืืฉื ืื ืชืื ืืื ืืฉืืืื ืงืฉืืจืื ืืืื CertificateRequest, Secret, Issuer ื- Order and 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 ืืื ืืืจืืฉืื ืื ืฉืืืืืขื ืงืืืจื ืืก 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
ื-Helmchart.
ืืขืจื: ืฆืคืืื ืืืืื ืื ืืื ืืืืฆื ืืืืจืื ืืขืช โโืคืชืจืื ืืขืืืช. ืืืืืข ื ืืกืฃ ืืืืง ืืช ืฉืื ื
ืืก' ืืขืืจื: ืืื ืืืืื ืขืื ืขื ืืื ืืื ืขืืื ืชืืช ืืืกื ืืื ืืข ืฉื Kubernetes, ืืงืื ืขืฆืืช ืืฉืืืืช ืืืืจืื ืืชืจืืืื, ืืื ืื ืขืืจื ืืื ืืช ืืืืืชืืช, ืืชื ืืืื ืืงืืช ืืืง ืืงืืจืกืื ืืงืืื ืื
ืฉืืคืืจืื ื-ACME
ืืฉืืืืฉ ืื ืคืืฅ ืืืืชืจ ื-cert-manager ืงืฉืืจ ืื ืจืื ืืื ืคืงืช ืืืฉืืจืื ื-Let's Encrypt ืืืืฆืขืืช ACME. ืืจืกื 1.0 ืืืืืช ืืฉืืืืฉ ืืืฉืื ืงืืืืชื ืืื ืืืืกืืฃ ืฉื ื ืฉืืคืืจืื ืงืื ืื ืื ืืฉืืืื ืืื ืคืืง ACME ืฉืื ื.
ืืฉืืช ืืช ืืฆืืจืช ืืคืชืืืช ืืืฉืืื
ืื ืืชื ืืฉืชืืฉ ืืชืขืืืืช 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 ืืกืคืืืืจ ืืืื ืืืฆืคืื ISRG Root
. ืชืขืืืืช ืืชืืืืช ืฆืืืืืช ืืืืืคื ื Identrust
. ืฉืื ืื ืื ืืื ื ืืฆืจืื ืฉืื ืืืื ืืืืืจืืช ืื ืื ืืืืฉืืจืื, ืื ืืืืฉืืจืื ืืืขืืืื ืื ืื ืืืืฉืื ืฉืืื ืคืงื ืืืืจ ืชืืจืื ืื ืืฉืชืืฉื ื-CA ืืฉืืจืฉ ืืืืฉ.
Let's Encrypt ืืืจ ืืืชืืช ืขื ืืืฉืืจืื ืขื CA ืื ืืืฆืืขื ืืืชื ื"ืฉืจืฉืจืช ืืืฉืืจืื ืืืืคืืช" ืืืืฆืขืืช ACME. ืืืจืกื ืื ืฉื cert-manager, ื ืืชื ืืืืืืจ ืืืฉื ืืจืฉืชืืช ืืื ืืืืืจืืช ืืื ืคืืง. ืืคืจืืืจ preferredChain
ืืชื ืืืื ืืฆืืื ืืช ืฉื ื-CA ืฉื ืืฆื ืืฉืืืืฉ, ืฉืืืชื ืชืื ืคืง ืืืืฉืืจ. ืื ืืืื ืืืฉืืจ CA ืืชืืื ืืืงืฉื, ืืื ืืืฆืื ืื ืืืฉืืจ. ืฉืืื ืื ืฉืื ืืืคืฉืจืืช ืืืืขืืคืช, ืื ืื ืืืืฆื ืืืจ, ืชืื ืคืง ืืืฉืืจ ืืจืืจืช ืืืื. ืื ืืืืื ืฉืขืืืื ืชืืืฉ ืืช ืืืืฉืืจ ืฉืื ืืืืจ ืืืืงืช ืืฉืจืฉืจืช ืืืืืคืืช ืืฆื ืื ืคืืง ACME.
ืืืจ ืืืื ื ืืชื ืืงืื ืชืขืืืืช ืืชืืืืช ืขื ืืื 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"
ืฉืื ืื ืฉ-CA ืฉืืจืฉ ืื ืืืฆื ืืฉืืืืฉ ืืงืจืื, Let's Encrypt ืืฉืืืจ ืืช ืืฉืจืฉืจืช ืคืขืืื ืขื 29 ืืกืคืืืืจ 2021.
ืืงืืจ: www.habr.com