Helm 3 көмегімен cert-manager-пен жұмыс істеу
cert-manager құралының көмегімен Kubernetes кластерлеріндегі сертификаттарды басқаруға болады:
-
Сертификаттау орталығы (certificate authority, CA) рөлін атқаратын көздерге сұраулар жіберу арқылы сертификаттарды, соның ішінде өздігінен қол қойылған (self-signed) сертификаттарды шығару.
Көздер мысалдары:
- Venafi сияқты киберқауіпсіздік шешімдерінің провайдерлері;
- Let’s Encrypt сияқты сертификат провайдерлері;
- HashiCorp Vault сияқты құпиялар қоймалары;
- ішінде сертификаттың ашық бөлігі мен жеке кілті бар жергілікті контейнерлер.
-
Қолданылу мерзімі аяқталып жатқан сертификаттарды автоматты түрде қайта шығару.
cert-manager көмегімен шығарылған сертификат басқа Kubernetes ресурстарына қолжетімді болады. Мысалы, оны Ingress үшін пайдалануға болады.
Төменде Helm 3 көмегімен Kubernetes кластерлерінде cert-manager орнату және жаңарту қалай орындалатыны көрсетіледі. Сондай-ақ cert-manager жұмысқа қабілеттілігін тексеру үшін өздігінен қол қойылған сертификат шығарылады.
-
Жасаңыз Kubernetes кластерін өзекті нұсқада, егер бұл әлі жасалмаған болса.
-
Кластер нұсқасын анықтаңыз.
-
Кластерге қосылу жоспарланған хостта, егер бұл әлі жасалмаса,
kubectlутилитасын орнатып, баптаңыз. -
kubectlкөмегімен кластерге қосылыңыз. -
Кластерге қосылу жоспарланған хостта, егер утилита әлі орнатылмаса, 3.0.0 немесе одан жоғары нұсқадағы Helm-ді орнатыңыз.
Орнату үшін кластермен үйлесімді Helm нұсқасын таңдаңыз.
-
cert-managerрепозиторийін қосыңыз:helm repo add jetstack https://charts.jetstack.io -
Чарттар кешін (charts) жаңартыңыз:
helm repo update -
Қолжетімді
cert-managerчарттары мен олардың нұсқаларының тізімін алыңыз:helm search repo jetstack -l -
Кластерге орнатылатын
cert-managerнұсқасын таңдаңыз.cert-managerжәне Kubernetes нұсқаларының үйлесімділік кестесі cert-manager ресми құжаттамасында келтірілген.
-
cert-managerжұмысына қажетті Custom Resource Definitions (CRDs) орнатыңыз.CRDs
kubectlкөмегімен қолмен орнатылады. Бұл әдісті қолдану ұсынылады, өйткені ол ең қауіпсіз.Пәрменді орындаңыз:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.3/cert-manager.crds.yaml -
Таңдалған
cert-managerнұсқасын орнатыңыз.Бұл пәрмен көрсетілген нұсқадағы
cert-managerатты релиздіcert-managerаттар кеңістігіне (namespace) орнатады. Егер кластерде мұндай кеңістік болмаса, ол автоматты түрде жасалады.Linux (bash) / macOS (zsh)Windows (PowerShell)helm install cert-manager jetstack/cert-manager \--version v1.11.3 \--namespace cert-manager \--create-namespaceОрнату сәтті аяқталса, Helm хабарламасында мыналар көрсетіледі:
STATUS:deployed;NOTES:cert-manager v1.11.3 has been deployed successfully!.
-
cert-managerаттар кеңістігінде қажетті подтардың сәтті жасалғанын және олардыңRunningкүйінде тұрғанын тексеріңіз:kubectl get pods -n cert-manager -
Тест мақсатында өздігінен қол қойылған сертификат шығарыңыз:
-
Манифест файлын жасаңыз:
Бұл манифесте мыналар сипатталған:
IssuerжәнеCertificateресурстары орналастырылатынcert-manager-testаттар кеңістігі;- өздігінен қол қойылған сертификаттарды шығаруға жауап беретін
Issuerресурсы; - өздігінен қол қойылған сертификат параметрлері бар
Certificateресурсы.
-
Манифест файлын қолданыңыз.
kubectl apply -f cert-manager-test-resources.yamlМанифесте сипатталған ресурстар жасалады. Сондай-ақ
cert-managerбасқа қажетті ресурстарды автоматты түрде жасайды. -
Барлық қажетті ресурстардың жасалғанын тексеріңіз:
kubectl get issuers,clusterissuers,certificates,certificaterequests,orders,challenges,secrets -n cert-manager-testШығыста мыналар болуы керек:
- манифесте сипатталған конфигурациясы бар
IssuerжәнеCertificate,READY: Trueкүйінде; CertificateRequest,READY: Trueкүйінде;- сертификат деректерін қамтитын
Secret.
- манифесте сипатталған конфигурациясы бар
-
Сертификат күйін тексеріңіз:
kubectl describe certificate selfsigned-cert -n cert-manager-testСертификат сәтті шығарылған жағдайда:
- Күй туралы ақпаратта (
Status)Certificate is up to date and has not expiredжолы болады. - Оқиғалар тізімінде (
Events)The certificate has been successfully issuedхабарламасы бар оқиға болады.
- Күй туралы ақпаратта (
Егер сертификат сәтті шығарылса, онда
cert-managerдұрыс орнатылған және жұмыс істеп тұр. -
Issuer, ClusterIssuer және Certificate ресурстарының резервтік көшірмесі жасалады. Оған мыналар кірмейді:
-
CertificateRequestsресурстары. Мұндай ресурстарды резервтік көшірмеге қосу ұсынылмайды, өйткені бұл резервтік көшірмеден қалпына келтіруді қиындатуы мүмкін. -
Тікелей сертификат деректерін сақтайтын және соның ішінде жеке кілтті қамтитын құпиялар.
Резервтік көшірме жасау үшін пәрменді орындаңыз:
kubectl get -o yaml \--all-namespaces \issuer,clusterissuer,certificate \> cert-manager-backup.yaml
Кеңейтілген резервтік көшіру және резервтік көшірмеден қалпына келтіру туралы cert-manager ресми құжаттамасынан оқыңыз.
-
Орнатылған
cert-managerрелизінің нұсқасын қараңыз:helm list --namespace cert-manager -
Чарттар кешін жаңартыңыз:
helm repo update -
Қолжетімді
cert-managerчарттары мен олардың нұсқаларының тізімін алыңыз:helm search repo jetstack -l -
Жаңартуға арналған
cert-managerресми құжаттамасын оқып шығыңыз. Онда жаңарту бойынша ұсынымдар, критикалық өзгерістер (breaking changes) тізімі және басқа да пайдалы ақпарат бар.Атап айтқанда, бір уақытта бір минорлық нұсқаға ғана жаңарту ұсынылады (мысалы, 1.11.3 → 1.12.3).
-
Жаңартылатын нұсқаны таңдаңыз.
cert-managerжәне Kubernetes нұсқаларының үйлесімділік кестесі cert-manager ресми құжаттамасында келтірілген. -
Кластерде орнатылған CRDs жаңартыңыз.
Бұл CRDs бұрын қолмен орнатылғандықтан, оларды
cert-managerқұралының өзін жаңартпас бұрын да қолмен жаңартыңыз.kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.3/cert-manager.crds.yaml -
Таңдалған нұсқаға дейін
cert-managerрелизін жаңартыңыз:Linux (bash) / macOS (zsh)Windows (PowerShell)helm upgrade cert-manager jetstack/cert-manager \--version v1.12.3 \--namespace cert-managerЖаңарту сәтті аяқталса, Helm хабарламасында мыналар көрсетіледі:
Release "cert-manager" has been upgraded. Happy Helming!;STATUS:deployed;NOTES:cert-manager v1.12.3 has been deployed successfully!.
Жұмыс істеп тұрған кластер тарификацияланады және есептеу ресурстарын тұтынады. Егер cert-manager құралы мен оның жұмысын тексеру үшін жасалған Kubernetes ресурстары енді қажет болмаса, оларды жойыңыз:
-
cert-manager-test-resources.yamlманифестінде сипатталған ресурстарды жойыңыз:kubectl delete -f cert-manager-test-resources.yaml -
cert-managerжәне онымен байланысты ресурстарды жойыңыз:-
Кластерде
cert-managerжасаған ресурстардың енді жоқ екеніне көз жеткізіңіз:kubectl get issuers,clusterissuers,certificates,certificaterequests,orders,challenges --all-namespacesЕгер мұндай ресурстар бар болса, оларды жойыңыз.
-
cert-managerрелизін жойыңыз:helm delete cert-manager --namespace cert-manager -
cert-managerаттар кеңістігін жойыңыз:kubectl delete ns cert-manager -
Кластерге
cert-managerүшін орнатылған CRDs жойыңыз:kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.3/cert-manager.crds.yaml
-
-
Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.