ArgoCD

EKSとArgoCDによるGitOpsデプロイパイプラインの構築ガイド

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

EKSクラスタとのArgoCD統合設定フロー

EKSクラスタにArgoCDを導入する際には、AWSのIAMロール設定やネットワーク構成が重要です。以下に具体的な手順を紹介します。

AWS IAMロールの設定手順

AWS環境でArgoCDを運用するには、適切なIAMロールとポリシーを設定する必要があります。特に、EKSクラスタへのアクセス権を安全かつ細かく管理することが不可欠です。

  1. IAMロール作成:
  2. AWSコンソールから「IAM」にアクセスし、「ロール」を作成します。
  3. ロール名をArgoCD-ClusterAccessなど、明確な名称で設定してください。
  4. ポリシーのアタッチ:
  5. AmazonEKSFullAdminAccessAmazonEKSVPCResourcesFullAccessなどのポリシーを追加します。必要に応じてカスタムポリシーを作成し、最小限の権限で運用してください。
  6. ロールアタッチ:
  7. 作成したIAMロールをEKSクラスタにアタッチします。

IAMロールは「最小限の権限」原則に従って設定し、セキュリティリスクを抑えることが重要です。


クラスターへのArgoCDデプロイ

ArgoCDをEKSクラスタにインストールするには、Helmチャートを使用するのが一般的です。以下が基本的な手順です。

  1. Helmの初期設定:
    bash
    helm repo add argocd https://argoproj.github.io/argo-helm
    helm repo update

  2. ArgoCDインストール:
    bash
    helm install argocd argocd/argo-cd --namespace argocd --create-namespace

AWSマネージドのArgoCD導入オプションも存在しますが、柔軟性を重視する場合は自社でHelmチャートをカスタマイズすることをお勧めします。


GitOpsによる宣言型デプロイのベストプラクティス

GitOpsでは、リポジトリ内の宣言的な設定ファイルをもとにインフラやアプリケーションを自動化します。特にプライベートリポジトリでの運用には注意が必要です。

リポジトリ構成の設計指針

リポジトリの構造を統一することで、チーム間で協業しやすくなります。

項目 推奨構成 補足
アプリケーションディレクトリ /apps/ 各アプリケーションの Helm チャートを配置
共有リソース /shared/ 共通の ConfigMap など
GitOps設定ファイル /argocd/ ArgoCD 用の Application YAML が配置

自動同期のセキュリティ設定

プライベートリポジトリを使用する場合は、アクセス制御が必須です。AWS IAMポリシーと連携することで、適切に管理できます。

  • GitHub Actionsとの連携:
    GitHub Secrets を使用して、ArgoCDへの認証情報を安全に保存します。

  • アクセス制限:
    AWS VPC内でのみアクセス可能なIPアドレスを指定し、外部からの不正アクセスを防ぎます。


Privateリポジトリ対応のself-hosted runner構成

GitHub Actionsでプライベートリポジトリを使用する際は、self-hosted runnerの設定が重要です。AWS環境での運用例を紹介します。

GitHub Actions RunnerのEKSデプロイ

EKSクラスタ内にRunnerをデプロイすることで、IPアドレスの制限を回避できます。

  1. Runner Podの作成:
    yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: github-runner
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: github-runner
    template:
    metadata:
    labels:
    app: github-runner
    spec:
    containers:
    - name: runner
    image: docker.io/actions/runner:latest
    env:
    - name: RUNNER_NAME
    value: "eks-runner"

セキュリティ証明書管理

RunnerはAWS Secrets Managerからシークレットを取得することで、機密情報を安全に管理できます。

  • Secrets Managerとの連携:
    Runner Pod内でaws-secretsmanagerコマンドを使用し、APIキーなどを動的に読み込むようにします。

  • 証明書の有効期限確認:
    証明書の管理は定期的な監視が必須です。


AWS新機能利用時のセキュリティ設定

AWSの最新機能を活用することで、セキュリティと運用効率を向上させることができます。

VPC Endpoint活用

EKSクラスタとArgoCDの通信をVPC Endpointで暗号化すると、インターネット経由のトラフィックが防げます。

  • ステップ:
  • AWSコンソールから「VPC」にアクセス。
  • 「Endpoints」タブを開き、eks.amazonaws.coms3.amazonaws.comなどのエンドポイントを有効化します。

VPC Endpointは、コスト削減とセキュリティ強化の両面でメリットがあります。


KMSによる暗号化

機密情報(APIキーなど)はAWS KMSを使って暗号化して管理するのがベストプラクティスです。

  • KMS設定例:
    bash
    aws kms encrypt --key-id <key-id> --plaintext fileb://secrets.json --output text > encrypted.txt

HelmチャートとArgoCDの連携方法

Helmチャートを用いたアプリケーションデプロイは、GitOpsに最適です。以下が推奨される手順です。

値ファイルのバージョン管理

Helmチャートで使用する値ファイル(values.yaml)はリポジトリ内に統一して保管します。

ファイル名 内容 説明
charts/app/values.yaml アプリケーションの設定 環境ごとの値を切り替え可能
charts/db/values.yaml データベースの設定 セキュリティ情報はKMSで管理

自動リロード設定

ArgoCDでは、アプリケーションの変更が自動的に反映される仕組みがあります。

  • AWS EventBridgeとの連携:
    GitHub ActionsでのプッシュイベントをEventBridgeに送信し、ArgoCDをトリガーする仕組みを作成します。

無料でEKS+ArgoCDアーキテクチャチェックリスト

本記事で紹介した内容を踏まえて、導入時の設計ポイントを網羅したチェックリストをご用意しました。
AWS最新機能(例:VPC EndpointやKMS)の対応方法や、セキュリティ設定の最適化が含まれています。

チェックリストは以下より無料でダウンロード可能です。実務での導入計画にぜひ活用ください。

→ 無料でEKS+ArgoCDアーキテクチャチェックリストをダウンロード

スポンサードリンク

-ArgoCD