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_TOKENKUBE_CAはマスクされたCI/CD変数として保存します。
  • 最小限のRBAC権限を持つサービスアカウントを使用します。
  • kubeconfigやトークン値をログに出力しないでください。

ユースケース

マネージド(GKE、EKS、AKS)またはセルフホストのKubernetesクラスターへのコンテナ化されたアプリケーションのデプロイに使用します。複数の設定値を持つ複雑なアプリケーションにはHelmアプローチが推奨されます。

試してみる — GitLab CI Config Generator

フルツールを開く