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
| Kod | Anlam |
|---|---|
| 0 | Drift yok, her sey senkron |
| 1 | Drift tespit edildi |
| 2 | Baglanti hatasi |