GitLab CIからKubernetesへのデプロイ
Kubernetesクラスターへのアプリケーションデプロイ用GitLab CI設定。kubectl apply、Helmチャートデプロイメント、環境管理をカバー。
Deployment
詳細な説明
GitLab CIからKubernetesへのデプロイ
GitLab CIはKubernetesと適切に統合し、自動デプロイメントを実現します。この設定はkubectlとHelmベースの両方のアプローチをカバーします。
kubectlデプロイメント
deploy_staging:
stage: deploy
image: bitnami/kubectl:1.29
before_script:
- kubectl config set-cluster k8s --server=$KUBE_SERVER
- kubectl config set-credentials deployer --token=$KUBE_TOKEN
- kubectl config set-context default --cluster=k8s --user=deployer
- kubectl config use-context default
script:
- envsubst < k8s/deployment.yaml | kubectl apply -f -
- kubectl rollout status deployment/my-app --timeout=120s
environment:
name: staging
url: https://staging.example.com
Helmデプロイメント
deploy_helm:
stage: deploy
image: alpine/helm:3.14
script:
- helm upgrade --install my-app ./helm/my-app
--set image.tag=$CI_COMMIT_SHA
--wait --timeout 5m
environment:
name: production
環境管理
environmentキーワードはGitLabで環境トラッキングを作成し、各環境にどのコミットがデプロイされているかを表示します。
セキュリティ上の考慮事項
KUBE_TOKENとKUBE_CAはマスクされたCI/CD変数として保存します。- 最小限のRBAC権限を持つサービスアカウントを使用します。
- kubeconfigやトークン値をログに出力しないでください。
ユースケース
マネージド(GKE、EKS、AKS)またはセルフホストのKubernetesクラスターへのコンテナ化されたアプリケーションのデプロイに使用します。複数の設定値を持つ複雑なアプリケーションにはHelmアプローチが推奨されます。