Skip to content
Dokumentatsiya
Kubernetesga Cert-Manager o'rnatish

Kubernetesga Cert-Manager o'rnatish va sozlash

Kirish

Tashkilotlar o'z applicationlarini Kubernetesga ko'chirishni boshlaganlarida, xavfsiz aloqaga bo'lgan ehtiyoj birinchi o'ringa chiqadi. SSL/TLS sertifikatlari servicelar o'rtasida shifrlangan va autentifikatsiya qilingan aloqani ta'minlashda hal qiluvchi rol o'ynaydi. Biroq, bir nechta servicelar va muhitlarda(environment) sertifikatlarni boshqarish qiyin bo'lishi mumkin. Bu yerda Kubernetes-ning mashhur add-oni bo'lgan Cert-Manager yordamga keladi. Ushbu qo'llanmada biz Cert-Manager nima ekanligini, uning afzalliklarini o'rganamiz va boshlash uchun bosqichma-bosqich o'rnatish ko'rsatmalarini beramiz.

Cert-Manager nima? Cert-Manager - bu Kubernetes uchun maxsus ishlab chiqilgan open-source sertifikatlarni boshqarish tooli. U SSL/TLS sertifikatlarini chiqarish, yangilash va bekor qilishni avtomatlashtiradi, bu jarayonni muammosiz va oson qiladi. Cert-Manager yordamida siz barcha servicelaringiz qo'l aralashuvisiz haqiqiy sertifikatlar bilan himoyalanganligiga ishonch hosil qilishingiz mumkin.

Cert-Manager afzalliklari

  • Avtomatlashtirilgan sertifikat boshqaruvi-> Cert-Manager sertifikatlarni so'rash, tasdiqlash(validating) va yangilash(renewing) jarayonini avtomatlashtiradi, DevOps jamoalari uchun vaqt va kuchni sezilarli darajada tejaydi.
  • Let's Encrypt bilan integratsiya-> Cert-Manager bepul va keng tarqalgan ishonchli sertifikat organi Let's Encrypt bilan muammosiz integratsiyalashgan bo'lib, sizga sertifikatlarni qo'shimcha xarajatlarsiz olish imkonini beradi.
  • Kubernetes Native-> Cert-Manager sertifikatlarni boshqarish uchun Custom Resource Definationidan(CRD) foydalanib, Kubernetesning nativ yondashuviga amal qiladi va bu sizning Kubernetes ekotizimingizga tabiiy ravishda mos keladi.
  • Bir nechta sertifikat issuerlari-> U Let's Encrypt, self-signed sertifikatlar va boshqalar kabi turli sertifikat issuerlarini qo'llab-quvvatlaydi, bu sizning talablaringiz uchun eng mos variantni tanlash uchun moslashuvchanlikni beradi.
  • Ingress Controller integratsiyasi-> Cert-Manager Nginx, Traefik va boshqalar kabi mashhur Ingress kontrollerlari bilan muammosiz ishlaydi, bu sizning Kubernetes servicelari uchun sertifikatlarni oson ta'minlash imkonini beradi.

Cert-Manager o'rnatish

Cert-Managerni kubernetes clusterga o'rnatish uchu talablar.

Kubernetes cluster yaratish, sozlash va network configuratsiya qilish bo'yicha qo'llanmani ko'rib chiqinshingiz mumkin Kubernetes cluster yaratish va sozlash(kubeadm) (opens in a new tab)

  • 1.16 versiyadan yuqori ishlab turgan kubernetes cluster
  • kubectl va helm o'rnatilganligi
  • NGINX Ingress Controller sozlangani

Qo'shimcha: Cert-Manager o'rnatish bo'yicha rasmiy Cert-Manager qo'llanmasi. (opens in a new tab)

1-> Cert-Manager CRD'larini o'rnating: Birinchi qadam Cert-Manager tomonidan talab qilinadigan Custom Resource Definitions (CRD) o'rnatishdir. Ushbu CRDlar sertifikatlarni boshqarish uchun zarur resurslarni belgilaydi.

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.crds.yaml

2-> Cert-Managerni helm orqali o'rnatamiz.

helm repo add jetstack https://charts.jetstack.io
helm repo update jetstack
helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.13.3 \

3-> Statusni tekshiramiz.

kubectl get all -n cert-manager

4-> Cert-Managerni o'rnatib olganimizdan keyin cluster issuer yaratib sozlab olishimiz kerak. Buning uchun certmanager papka ochib clusterissuer.yaml fayl ochib konfiguratsiya yozamiz.

mkdir certmanager
cd certmanager
nano clusterissuer.yaml

clusterissuer.yaml configuratsiyamiz quyidagicha.

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: teshmat@gmail.com  # ishlaydigan email yozing !!!
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx

Ushbu konfiguratsiya Let's Encrypt cert-meneger yordamida TLS sertifikatining avtomatlashtirilgan chiqarilishi va yangilanishini sozlash uchun zarurdir. ClusterIssuer cluster miqyosidagi resource bo'lib, u bir nechta namescpasega taalluqlidir va sertifikat boshqaruvchini clusterdagi Ingress resourcelari bilan bog'langan domenlar uchun TLS sertifikatlarini olish va yangilash uchun Let's Encrypt'ning ACME serveri bilan o'zaro ishlashni sozlaydi.

email qismiga ishlaydigan o'zimizni emailimizni yozib ishga tushiramiz.

kubectl apply -f clusterissuer.yaml
kubectl get secret -n cert-manager

Amaliyot

Kubernetes clusterimizga Cert-Manager o'rnatib clusterissuer solzab olganimizdan keyin uni sinab ko'rish uchun amaliyot qilamiz. Amaliyot uchun kubeview nomli loyihani tanladik. kubeview kubernetes clusterni vizaulatsiya qilish dasturidir ushbu amaliyotda kubernetes clusterimizga kubeview o'rnatamiz Cert-Manager orqali sertifikat olib NGINX Ingress Controller orqali expose qilamiz.

1-> Kubernetes clusterimizga helm orqali kubeview o'rnatamiz.

helm repo add kubeview https://benc-uk.github.io/kubeview/charts
helm repo update kubeview
helm install kubeview kubeview/kubeview --namespace kubeview --create-namespace

2-> Statusini tekshiramiz.

kubectl get all -n kubeview

3-> DNS hostimizdan domenimizga kubernetes clusterimiz static IP'sini berib domen qo'shib olamiz ushbu misolda kubeview.xilol.uz Rasmda ahost misoli ko'rsatilgan xilol.uz mavjud va DNS Xosting bo'limidan kubeview subdomen qo'shyapmiz. 0.0.0.0 o'rniga k8s-matser serveringiz static IP manzilini qo'shamiz.

4-> ClusterIssuerdan va NGINX Ingress Controllerdan foydalanib expose qilamiz. kubeview nomli papka ochib kubeview-ingress.yaml fayl ochib configuratsiya qilamiz.

mkdir kubeview
cd kubeview
nano kubeview-ingress.yaml

Konfiguratsiyamiz quyidagicha

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kubeview-ingress
  namespace: kubeview
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  ingressClassName: "nginx"
  rules:
  - host: kubeview.xilol.uz
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubeview
            port:
              number: 8000
  tls:
  - hosts:
    - kubeview.xilol.uz
    secretName: kubeview-tls

5-> Configuratsiyani apply qilib ishga tushirib kubeview.xilol.uz domenida brauzer orqali kirib tekshirib ko'ramiz.

kubectl apply -f kubeview-ingress.yaml

Konfiguratsiyamizni ishga tushirib biroz vaqt o'tganidan keyin kubeview.xilo.uz domeniga brauzer orqali kirganimizdan u https bilan ochilishi va SSL sertifikati bo'lishi kerak.

Sertifikatni tekshirib ko'rishimiz mumkin.

Nihoyat biz Kubernetes clusterimizga muvaffaqiyatli Cert-Manager o'rnatdik va ishlashga tayyor qilib sozladik va amaliyot ham qildik.

Qo'shimcha