Sobes.tech
Middle+

DevOps-da sertifikatın vəziyyətinin dövri monitorinqi və avtomatik dəyişdirilməsi təcrübəniz nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Sertifikatların monitorinqi üçün mən alətlərin birləşməsindən istifadə edirəm. Veb serverlərdə və xidmətlərdə sertifikatların vəziyyəti və müddətinin əsas monitorinqi aşağıdakı kimi həyata keçirilir:

  1. Prometheus Exporterləri:

    • ssl exporter: göstərilən endpointlərdən sertifikatların müddətini ölçən metrikləri toplayır.
    • node exporter (mətn faylları ilə birlikdə): fayl sistemindəki sertifikat fayllarını monitorinq etmək üçün istifadə edilə bilər.

    Bash və ya Python skriptləri müntəzəm olaraq sertifikatların vəziyyətini yoxlayır (məsələn, openssl x509 -in cert.pem -noout -enddate) və nəticəni node exporter (textfile collector) üçün başa düşülən formata qeyd edir.

  2. Alertmanager:

    • Prometheus metriklərinə əsaslanaraq xəbərdarlıqları aktivləşdirmək üçün Alertmanager-də qaydalar qururam (məsələn, 30, 7 və 1 gün əvvəl).
    • Bildirişlər Slack, email və ya digər əlaqə kanallarına göndərilir.

Avtomatik sertifikat yeniləməsi adətən certbot və ya lego kimi ACME müştəriləri ilə həyata keçirilir.

  1. Tapşırıq planlaşdırılması: Cron və ya sistem timerləri (systemd timers) ACME müştərisini işə salır, sertifikatları yoxlayır və yeniləyir.

    # Certbot üçün cron nümunəsi
    0 */12 * * * root certbot renew --quiet --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
    
  2. CI/CD vasitəsilə avtomatlaşdırma: Kubernetes ilə işləyən mühitlər və ya daha mürəkkəb ssenarilər üçün, sertifikatların yenilənmə prosesi CI/CD pipeline-ına inteqrasiya oluna bilər.

    • Məsələn, TLS ilə Ingress obyektləri olan Kubernetes klasterində, cert-manager sertifikatların verilməsi və yenilənməsini avtomatlaşdırır, Controller və CRD istifadə edir.
    # cert-manager üçün anotasiya ilə Ingress nümunəsi
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-ingress
      annotations:
        cert-manager.io/cluster-issuer: "letsencrypt-prod"
    spec:
      tls:
      - hosts:
        - example.com
        secretName: example-com-tls
      rules:
      - host: example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
    
  3. Konfiqurasiyaların yenilənməsi: Uğurlu sertifikat yeniləməsindən sonra, skriptlər və ya pipeline-lər xidmətləri yenidən başlatır və ya konfiqurasiyaları yenidən oxuyur ki, onlar yeni sertifikatı istifadə etsinlər.

Monitorinq və avtomatlaşdırma birləşməsi, müddəti bitmiş sertifikatlar səbəbindən xidmətlərin uğursuzluq riskini minimuma endirir.