Ana içeriğe geç

CI/CD Entegrasyonu

Guardian'ın drift komutu, drift tespit ettiğinde exit code 1 döner. Bu sayede CI/CD pipeline'larınıza config doğrulama adımı olarak ekleyebilirsiniz.

GitHub Actions

name: Config Drift Kontrolu

on:
schedule:
- cron: '0 */6 * * *' # her 6 saatte
pull_request:
paths:
- 'consul-backup/**'

jobs:
drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Guardian kur
run: |
curl -sSL https://github.com/consul-guardian/consul-guardian/releases/latest/download/consul-guardian_linux_amd64.tar.gz | tar xz
sudo mv consul-guardian /usr/local/bin/

- name: Drift kontrolu
run: consul-guardian drift --prefix config/ --git-repo ./consul-backup
env:
CONSUL_GUARDIAN_CONSUL_ADDRESS: ${{ secrets.CONSUL_ADDR }}
CONSUL_GUARDIAN_CONSUL_TOKEN: ${{ secrets.CONSUL_TOKEN }}

- name: Slack bildirimi
if: failure()
run: |
curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
-d '{"text":"Consul KV drift tespit edildi!"}'

GitLab CI

config-drift:
stage: validate
image: golang:1.22-alpine
variables:
CONSUL_GUARDIAN_CONSUL_ADDRESS: $CONSUL_ADDR
CONSUL_GUARDIAN_CONSUL_TOKEN: $CONSUL_TOKEN
script:
- wget -qO- https://github.com/consul-guardian/consul-guardian/releases/latest/download/consul-guardian_linux_amd64.tar.gz | tar xz
- ./consul-guardian drift --prefix config/ --git-repo ./consul-backup
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"

Deploy Öncesi Kontrol

Uygulamanızı deploy etmeden önce drift kontrolü ekleyin:

deploy:
needs: [build, test]
steps:
- name: Config drift kontrolu
run: consul-guardian drift --prefix config/production/

- name: Deploy
if: success()
run: kubectl apply -f deployment.yaml

Drift varsa deploy adımı atlanır. Beklenmeyen config değişiklikleriyle deploy yapılmasını engeller.

Exit Code'lar

KodAnlam
0Drift yok, her sey senkron
1Drift tespit edildi
2Baglanti hatasi