మీరు ఒక అనుభవజ్ఞుడైన, తెలివైన ఇంజనీర్ని సర్ట్-మేనేజర్ గురించి ఏమనుకుంటున్నారని మరియు అందరూ ఎందుకు ఉపయోగిస్తున్నారని అడిగితే, అప్పుడు నిపుణుడు నిట్టూర్చాడు, అతనిని ఆత్మవిశ్వాసంతో కౌగిలించుకుని, అలసిపోతాడు: “ప్రతి ఒక్కరూ దీనిని ఉపయోగిస్తున్నారు, ఎందుకంటే తెలివిగా ప్రత్యామ్నాయాలు లేవు. మా ఎలుకలు ఏడుస్తాయి, తమను తాము గుచ్చుకుంటాయి, కానీ ఈ కాక్టస్తో జీవించడం కొనసాగించండి. మనం ఎందుకు ప్రేమిస్తాం? ఎందుకంటే ఇది పనిచేస్తుంది. మనం ఎందుకు ప్రేమించకూడదు? ఎందుకంటే కొత్త ఫీచర్లను ఉపయోగించే కొత్త వెర్షన్లు నిరంతరం విడుదలవుతూనే ఉంటాయి. మరియు మీరు క్లస్టర్ను మళ్లీ మళ్లీ అప్డేట్ చేయాలి. మరియు పాత సంస్కరణలు పనిచేయడం మానేస్తాయి, ఎందుకంటే ఒక కుట్ర మరియు గొప్ప మర్మమైన షమానిజం ఉంది.
కానీ డెవలపర్లు దీనిని పేర్కొన్నారు సర్ట్-మేనేజర్ 1.0 ప్రతిదీ మారుతుంది.
మనం నమ్ముతామా?
Cert-manager అనేది స్థానిక Kubernetes సర్టిఫికేట్ మేనేజ్మెంట్ కంట్రోలర్. ఇది వివిధ మూలాధారాల నుండి సర్టిఫికేట్లను జారీ చేయడానికి ఉపయోగించవచ్చు: లెట్స్ ఎన్క్రిప్ట్, హాషికార్ప్ వాల్ట్, వెనాఫీ, సంతకం మరియు స్వీయ సంతకం చేసిన కీ జతల. ఇది కీలను తాజాగా ఉంచడానికి మరియు సర్టిఫికేట్లను గడువు ముగిసే ముందు స్వయంచాలకంగా ఒక నిర్దిష్ట సమయంలో పునరుద్ధరించడానికి ప్రయత్నిస్తుంది. Cert-manager అనేది kube-legoపై ఆధారపడి ఉంటుంది మరియు kube-cert-manager వంటి ఇతర సారూప్య ప్రాజెక్ట్ల నుండి కొన్ని సాంకేతికతలను కూడా ఉపయోగించింది.
విడుదల గమనికలు
వెర్షన్ 1.0తో, మేము సర్ట్-మేనేజర్ ప్రాజెక్ట్ యొక్క మూడు సంవత్సరాల అభివృద్ధి కోసం నమ్మకాన్ని ఉంచాము. ఈ సమయంలో, ఇది కార్యాచరణ మరియు స్థిరత్వంలో గణనీయంగా అభివృద్ధి చెందింది, కానీ సమాజంలో అన్నింటికంటే ఎక్కువ. ఈ రోజు మనం చాలా మంది వ్యక్తులు తమ కుబెర్నెట్స్ క్లస్టర్లను భద్రపరచడానికి, అలాగే పర్యావరణ వ్యవస్థలోని వివిధ భాగాలలో దీనిని అమలు చేయడం కోసం దీనిని ఉపయోగించడం చూస్తున్నాము. గత 16 విడుదలలలో చాలా బగ్లు పరిష్కరించబడ్డాయి. మరియు విచ్ఛిన్నం చేయవలసినది విచ్ఛిన్నమైంది. APIతో పని చేయడానికి అనేక సందర్శనలు వినియోగదారులతో దాని పరస్పర చర్యను మెరుగుపరిచాయి. మేము GitHubలో 1500 సమస్యలను పరిష్కరించాము, 253 సంఘం సభ్యుల నుండి మరిన్ని పుల్ అభ్యర్థనలు వచ్చాయి.
1.0 విడుదలతో, మేము cert-manager అనేది పరిపక్వ ప్రాజెక్ట్ అని అధికారికంగా ప్రకటిస్తాము. మేము మా APIని అనుకూలంగా ఉంచుతామని కూడా హామీ ఇస్తున్నాము v1
.
ఈ మూడు సంవత్సరాలలో సర్ట్-మేనేజర్ని రూపొందించడంలో మాకు సహాయం చేసిన ప్రతి ఒక్కరికీ చాలా ధన్యవాదాలు! రాబోయే అనేక గొప్ప విషయాలలో వెర్షన్ 1.0 మొదటిదిగా ఉండనివ్వండి.
విడుదల 1.0 అనేది అనేక ప్రాధాన్యతా ప్రాంతాలతో స్థిరమైన విడుదల:
-
v1
API; -
జట్టు
kubectl cert-manager status
, సమస్య విశ్లేషణలో సహాయం చేయడానికి; -
తాజా స్థిరమైన Kubernetes APIలను ఉపయోగించడం;
-
మెరుగైన లాగింగ్;
-
ACME మెరుగుదలలు.
అప్గ్రేడ్ చేయడానికి ముందు అప్డేట్ నోట్స్ చదవాలని నిర్ధారించుకోండి.
API v1
వెర్షన్ v0.16 APIతో పని చేసింది v1beta1
. ఇది కొన్ని నిర్మాణాత్మక మార్పులను జోడించింది మరియు API ఫీల్డ్ డాక్యుమెంటేషన్ను మెరుగుపరిచింది. వెర్షన్ 1.0 APIతో వీటన్నింటిపై రూపొందించబడింది v1
. ఈ API మా మొదటి స్థిరమైనది, అదే సమయంలో మేము ఇప్పటికే అనుకూలత హామీలను అందించాము, కానీ APIతో v1
రాబోయే సంవత్సరాల్లో అనుకూలతను కొనసాగిస్తామని మేము హామీ ఇస్తున్నాము.
చేసిన మార్పులు (గమనిక: మా మార్పిడి సాధనాలు మీ కోసం అన్నింటిని జాగ్రత్తగా చూసుకుంటాయి):
సర్టిఫికేట్:
-
emailSANs
ఇప్పుడు అంటారుemailAddresses
-
uriSANs
-uris
ఈ మార్పులు ఇతర SANలతో అనుకూలతను జోడిస్తాయి (సబ్జెక్ట్ ఆల్ట్ పేర్లు, సుమారు అనువాదకుడు), అలాగే Go APIతో. మేము ఈ పదాన్ని మా API నుండి తీసివేస్తున్నాము.
నవీకరణ
మీరు Kubernetes 1.16+ని ఉపయోగిస్తుంటే - వెబ్హూక్స్ని మార్చడం వలన మీరు 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 <имя-сертификата>
, 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
[...]
తాజా స్థిరమైన Kubernetes APIలను ఉపయోగించడం
కుబెర్నెటెస్ CRDలను అమలు చేసిన మొదటి వారిలో సెర్ట్-మేనేజర్ ఒకరు. ఇది మరియు 1.11 వరకు కుబెర్నెట్స్ వెర్షన్లకు మా మద్దతు అంటే మేము లెగసీకి మద్దతివ్వాలి apiextensions.k8s.io/v1beta1
మన CRDలకు కూడా admissionregistration.k8s.io/v1beta1
మా వెబ్హుక్స్ కోసం. అవి ఇప్పుడు నిలిపివేయబడ్డాయి మరియు కుబెర్నెట్స్లో వెర్షన్ 1.22 నుండి తీసివేయబడతాయి. మా 1.0తో మేము ఇప్పుడు పూర్తి మద్దతును అందిస్తున్నాము apiextensions.k8s.io/v1
и admissionregistration.k8s.io/v1
కుబెర్నెటీస్ 1.16 (అవి ఎక్కడ జోడించబడ్డాయి) మరియు కొత్తవి. మునుపటి సంస్కరణల వినియోగదారుల కోసం, మేము మద్దతును అందించడం కొనసాగిస్తాము v1beta1
మా లో legacy
సంస్కరణలు.
మెరుగైన లాగింగ్
ఈ విడుదలలో, మేము లాగింగ్ లైబ్రరీని అప్డేట్ చేసాము klog/v2
, Kubernetes 1.19లో ఉపయోగించబడింది. మేము వ్రాసే ప్రతి పత్రికకు తగిన స్థాయి కేటాయించబడిందని నిర్ధారించుకోవడానికి కూడా మేము సమీక్షిస్తాము. దీని ద్వారా మాకు మార్గదర్శకత్వం లభించింది Error
(స్థాయి 0), ఇది ముఖ్యమైన లోపాలను మాత్రమే ముద్రిస్తుంది మరియు ముగుస్తుంది Trace
(స్థాయి 5), ఇది సరిగ్గా ఏమి జరుగుతుందో తెలుసుకోవడానికి మీకు సహాయం చేస్తుంది. ఈ మార్పుతో, cert-managerని అమలు చేస్తున్నప్పుడు మీకు డీబగ్ సమాచారం అవసరం లేకపోతే మేము లాగ్ల సంఖ్యను తగ్గించాము.
చిట్కా: cert-manager డిఫాల్ట్గా స్థాయి 2 వద్ద నడుస్తుంది (Info
), మీరు దీన్ని ఉపయోగించి భర్తీ చేయవచ్చు global.logLevel
హెల్మ్ చార్ట్లో.
గమనిక: ట్రబుల్షూటింగ్లో లాగ్లను చూడడం చివరి ప్రయత్నం. మరింత సమాచారం కోసం మా తనిఖీ చేయండి
ఎడిటర్ ఎన్.బి.: కుబెర్నెటెస్ హుడ్ కింద ఇవన్నీ ఎలా పనిచేస్తాయనే దాని గురించి మరింత తెలుసుకోవడానికి, ప్రాక్టీస్ చేసే ఉపాధ్యాయుల నుండి విలువైన సలహాలను పొందండి, అలాగే నాణ్యమైన సాంకేతిక మద్దతు సహాయం కోసం, మీరు ఆన్లైన్ ఇంటెన్సివ్లలో పాల్గొనవచ్చు.
ACME మెరుగుదలలు
cert-manager యొక్క అత్యంత సాధారణ ఉపయోగం బహుశా ACMEని ఉపయోగించి లెట్స్ ఎన్క్రిప్ట్ నుండి సర్టిఫికేట్లను జారీ చేయడానికి సంబంధించినది. మా ACME జారీచేసేవారికి రెండు చిన్న కానీ ముఖ్యమైన మెరుగుదలలను జోడించడానికి కమ్యూనిటీ ఫీడ్బ్యాక్ను ఉపయోగించడం కోసం వెర్షన్ 1.0 గుర్తించదగినది.
ఖాతా కీ ఉత్పత్తిని నిలిపివేయండి
మీరు పెద్ద వాల్యూమ్లలో ACME సర్టిఫికేట్లను ఉపయోగిస్తుంటే, మీరు బహుళ క్లస్టర్లలో ఒకే ఖాతాను ఉపయోగించే అవకాశం ఉంది, కాబట్టి మీ సర్టిఫికేట్ జారీ పరిమితులు వాటన్నింటికీ వర్తిస్తాయి. లో పేర్కొన్న రహస్యాన్ని కాపీ చేస్తున్నప్పుడు ఇది ఇప్పటికే సర్ట్-మేనేజర్లో సాధ్యమైంది 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ని ఉపయోగిస్తాయి.
ఈ CAతో ఇప్పటికే సర్టిఫికెట్లపై సంతకం చేసి, వాటిని ACME ద్వారా "ప్రత్యామ్నాయ సర్టిఫికెట్ చైన్"గా అందజేద్దాం. సర్ట్-మేనేజర్ యొక్క ఈ సంస్కరణలో, జారీచేసేవారి సెట్టింగ్లలో ఈ చైన్లకు యాక్సెస్ని సెట్ చేయడం సాధ్యపడుతుంది. పరామితిలో 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 త్వరలో నిలిపివేయబడుతుందని గుర్తుంచుకోండి, లెట్స్ ఎన్క్రిప్ట్ ఈ గొలుసును సెప్టెంబర్ 29, 2021 వరకు సక్రియంగా ఉంచుతుంది.
మూలం: www.habr.com