Ի՞նչ փորձ ունեք սերտիֆիկատի վիճակի ցիկլային մոնիտորինգի և դրա ավտոմատ փոխարինման վերաբերյալ DevOps-ում։
sobes.tech AI
Պատասխան AI-ից
Սերտիֆիկատների մոնիտորինգի համար ես օգտագործում միացյալ գործիքների հավաքածու: Հիմնական մոնիտորինգը կատարվում է սերտիֆիկատների վիճակի և ժամկետի ժամկետի մասին՝ վեբ սերվերների և ծառայությունների վրա՝
-
Prometheus Exporters:
ssl exporter: հավաքում է սերտիֆիկատների ժամկետների մասին մետրիկաները նշված endpoint-ներից:node exporter(տեքստային ֆայլերի հետ միասին): Կարող է օգտագործվել ֆայլային համակարգում սերտիֆիկատների ֆայլերի մոնիտորինգի համար:
Bash կամ Python սցենարները պարբերաբար ստուգում են սերտիֆիկատների վիճակը (օրինակ՝
openssl x509 -in cert.pem -noout -enddate) և արդյունքը գրանցում են այն ձևաչափով, որը հասկանում էnode exporter-ը (textfile collector): -
Alertmanager:
- Կարգավորում եմ Alertmanager-ում կանոններ՝ ծանուցումներ գործարկելու համար (օրինակ՝ 30, 7 և 1 օր առաջ ժամկետի ավարտից), Prometheus- ի մետրիկաների հիման վրա:
- Ծանուցումները ուղարկվում են Slack, էլեկտրոնային փոստ կամ այլ հաղորդակցման ալիքներ:
Ավտոմատ փոխարինումը սովորաբար իրականացվում է ACME- հաճախորդների միջոցով՝ ինչպիսիք են certbot կամ lego:
-
Թվային ծրագրի պլանավորում:
- Cron-գործառույթներ կամ համակարգային ժամացույցներ (systemd timers) գործարկում են ACME հաճախորդին՝ ստուգելու և թարմացնելու համար:
# Certbot-ի օրինակ cron գրառում 0 */12 * * * root certbot renew --quiet --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" -
Ավտոմատացում՝ 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
- Կոնֆիգուրացիաների թարմացում:
- Սերտիֆիկատների հաջող թարմացումից հետո սցենարները կամ պայլայնները վերագործարկում կամ նորից կարդում են ծառայությունների կոնֆիգուրացիաները՝ սկսելու օգտագործել նոր սերտիֆիկատը:
Ստուգում և ավտոմատացում համակցությունը նվազեցնում է ծառայությունների անթույլատրելիության ռիսկը՝ պայմանավորված ժամկետի ավարտով։