2024-11-25Hünkar Döner
EKS ile CI/CD Pipeline Entegrasyonu (GitHub Actions)
CI/CDGitHub ActionsEKSDevOps
E
EKS ile CI/CD Pipeline Entegrasyonu (GitHub Actions)
Modern yazılım geliştirmede hız her şeydir. Geliştiricinin yazdığı kodun, testlerden geçip Amazon EKS üzerindeki canlı ortama ulaşması dakikalar içinde ve el değmeden olmalıdır. Bu sürece CI/CD (Sürekli Entegrasyon / Sürekli Dağıtım) denir. En popüler CI araçlarından biri olan GitHub Actions ile EKS entegrasyonunu nasıl yapacağınızı anlatacağız.
Pipeline Adımları
Bir EKS dağıtım pipeline'ı genellikle şu adımlardan oluşur:
- Checkout: Kodun GitHub'dan çekilmesi.
- Configure AWS Credentials: GitHub runner'ın AWS hesabınıza erişmesi için yetkilendirilmesi (OIDC kullanın, Access Key değil!).
- Login to ECR: Docker imajını yüklemek için Amazon ECR'a giriş.
- Build & Push: Docker imajının oluşturulması ve ECR'a yüklenmesi.
- Update Kubeconfig:
kubectlkomutunun EKS ile konuşabilmesi için config dosyasının güncellenmesi. - Deploy:
kubectl applyveyahelm upgradeile uygulamanın güncellenmesi.
GitHub OIDC ile Güvenli Bağlantı
GitHub Actions'a AWS Access Key ve Secret Key vermek güvenlik riskidir. Bunun yerine OpenID Connect (OIDC) kullanın. AWS IAM'de bir "Identity Provider" oluşturarak, sadece sizin GitHub reponuzdan gelen isteklere geçici yetki verebilirsiniz.
Örnek Workflow Dosyası (.github/workflows/deploy.yml)
name: Deploy to EKS
on:
push:
branches: [ main ]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: arn:aws:iam::123456789012:role/GitHubActionRole
aws-region: eu-central-1
- run: |
aws eks update-kubeconfig --name my-cluster
kubectl set image deployment/my-app my-app=123456789012.dkr.ecr.eu-central-1.amazonaws.com/my-app:${{ github.sha }}
Bu basit pipeline, her commit sonrası uygulamanızı EKS üzerinde günceller.