Sobes.tech
Middle+

Ի՞նչ փորձ ունեք սերտիֆիկատի վիճակի ցիկլային մոնիտորինգի և դրա ավտոմատ փոխարինման վերաբերյալ DevOps-ում։

sobes.tech AI

Պատասխան AI-ից

Սերտիֆիկատների մոնիտորինգի համար ես օգտագործում միացյալ գործիքների հավաքածու: Հիմնական մոնիտորինգը կատարվում է սերտիֆիկատների վիճակի և ժամկետի ժամկետի մասին՝ վեբ սերվերների և ծառայությունների վրա՝

  1. Prometheus Exporters:

    • ssl exporter: հավաքում է սերտիֆիկատների ժամկետների մասին մետրիկաները նշված endpoint-ներից:
    • node exporter (տեքստային ֆայլերի հետ միասին): Կարող է օգտագործվել ֆայլային համակարգում սերտիֆիկատների ֆայլերի մոնիտորինգի համար:

    Bash կամ Python սցենարները պարբերաբար ստուգում են սերտիֆիկատների վիճակը (օրինակ՝ openssl x509 -in cert.pem -noout -enddate) և արդյունքը գրանցում են այն ձևաչափով, որը հասկանում է node exporter-ը (textfile collector):

  2. Alertmanager:

    • Կարգավորում եմ Alertmanager-ում կանոններ՝ ծանուցումներ գործարկելու համար (օրինակ՝ 30, 7 և 1 օր առաջ ժամկետի ավարտից), Prometheus- ի մետրիկաների հիման վրա:
    • Ծանուցումները ուղարկվում են Slack, էլեկտրոնային փոստ կամ այլ հաղորդակցման ալիքներ:

Ավտոմատ փոխարինումը սովորաբար իրականացվում է ACME- հաճախորդների միջոցով՝ ինչպիսիք են certbot կամ lego:

  1. Թվային ծրագրի պլանավորում:

    • Cron-գործառույթներ կամ համակարգային ժամացույցներ (systemd timers) գործարկում են ACME հաճախորդին՝ ստուգելու և թարմացնելու համար:
    # Certbot-ի օրինակ cron գրառում
    0 */12 * * * root certbot renew --quiet --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
    
  2. Ավտոմատացում՝ CI/CD-ի միջոցով:

    • Ավելի բարդ սցենարների կամ Kubernetes միջավայրի համար՝ սերտիֆիկատների թարմացման գործընթացը կարող է ինտեգրվել CI/CD պայլայնում:
    • Օրինակ՝ Kubernetes Ingress օբյեկտների TLS-ով, cert-manager սերտիֆիկատների կառավարչի միջոցով ավտոմատ կերպով թողարկում և թարմացում է իրականացնում՝ օգտագործելով Controller և Custom Resource Definitions (CRD):
# Cert-manager-ի համար Ingress օրինակ՝ annotations-ով
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
  1. Կոնֆիգուրացիաների թարմացում:
    • Սերտիֆիկատների հաջող թարմացումից հետո սցենարները կամ պայլայնները վերագործարկում կամ նորից կարդում են ծառայությունների կոնֆիգուրացիաները՝ սկսելու օգտագործել նոր սերտիֆիկատը:

Ստուգում և ավտոմատացում համակցությունը նվազեցնում է ծառայությունների անթույլատրելիության ռիսկը՝ պայմանավորված ժամկետի ավարտով։