Contents
EKSクラスタとのArgoCD統合設定フロー
EKSクラスタにArgoCDを導入する際には、AWSのIAMロール設定やネットワーク構成が重要です。以下に具体的な手順を紹介します。
AWS IAMロールの設定手順
AWS環境でArgoCDを運用するには、適切なIAMロールとポリシーを設定する必要があります。特に、EKSクラスタへのアクセス権を安全かつ細かく管理することが不可欠です。
- IAMロール作成:
- AWSコンソールから「IAM」にアクセスし、「ロール」を作成します。
- ロール名を
ArgoCD-ClusterAccessなど、明確な名称で設定してください。 - ポリシーのアタッチ:
AmazonEKSFullAdminAccessやAmazonEKSVPCResourcesFullAccessなどのポリシーを追加します。必要に応じてカスタムポリシーを作成し、最小限の権限で運用してください。- ロールアタッチ:
- 作成したIAMロールをEKSクラスタにアタッチします。
IAMロールは「最小限の権限」原則に従って設定し、セキュリティリスクを抑えることが重要です。
クラスターへのArgoCDデプロイ
ArgoCDをEKSクラスタにインストールするには、Helmチャートを使用するのが一般的です。以下が基本的な手順です。
-
Helmの初期設定:
bash
helm repo add argocd https://argoproj.github.io/argo-helm
helm repo update -
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アドレスの制限を回避できます。
- 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.comやs3.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アーキテクチャチェックリストをダウンロード