メインコンテンツへスキップ
この記事には、GKE、AKS、ベアメタル Kubernetes のサポート スタブを備えた、AWS EKS 上の EKB プラットフォームを管理するための Terraform および Terragrunt のコードとしてのインフラストラクチャ (IaC) が含まれています。これには、すべての Helm チャートのデプロイメントと環境構成テンプレートが含まれます。

ドキュメント

| Document | Description PLACEHOLDER_4 Terragrunt Deployment Guide | Step-by-step guide for creating and deploying a new environment PLACEHOLDER_5 AWS Architecture Overview | Architecture overview, component descriptions, and data flow PLACEHOLDER_6 Disaster Recovery Strategy | DR strategy, RTO/RPO targets, backup systems, and recovery procedures PLACEHOLDER_7 Prerequisites Checklist | Pre-deployment checklist to complete with the customer |

リポジトリ構造```

ekb-terraform/ ├── root.hcl # Root Terragrunt config (remote state, provider generation) │ ├── modules/ # Reusable Terraform modules │ ├── eks/ # AWS EKS cluster, VPC, Karpenter, IAM, Helm releases │ ├── aws-services/ # ElastiCache Redis, Amazon MQ RabbitMQ │ ├── helm/ # Generic Helm release module │ ├── state/ # S3 state bucket bootstrap │ ├── aks/ # Azure AKS (stub) │ ├── gke/ # Google GKE (stub) │ └── baremetal/ # Bare-metal Kubernetes (stub) │ ├── terragrunt/ │ ├── .gitignore │ └── environments/ │ ├── STATE_MANAGEMENT_README.md │ └── env-template-folder/ # Template for new environments — copy and fill placeholders │ ├── terragrunt.hcl # Main environment config (cluster, Helm releases, AWS services) │ ├── state/ │ │ └── terragrunt.hcl # State bucket bootstrap for this environment │ └── values/ # Per-chart Helm values (one file per chart) │ ├── infrastructure.yaml # AWS Load Balancer Controller │ ├── aws-ebs-csi-driver.yaml # EBS CSI Driver │ ├── karpenter.yaml # Karpenter NodePool │ ├── karpenter-nodeclasses.yaml# Karpenter EC2NodeClass │ ├── karpenter-values.yaml # Karpenter controller values │ ├── keda.yaml # KEDA autoscaler │ ├── odin-services.yaml # EKB application services │ ├── cloudnative-pg.yaml # CloudNativePG operator (ENABLE_CNPG) │ ├── ha-supabase-db.yaml # HA Postgres cluster via CNPG (ENABLE_HA_SUPABASE_DB) │ ├── supabase.yaml # Supabase application stack (ENABLE_SUPABASE) │ ├── signoz.yaml # SigNoz observability platform (ENABLE_SIGNOZ) │ └── signoz-k8s-infra.yaml # SigNoz k8s-infra metrics agent (ENABLE_SIGNOZ) │ └── helm-deployment/ # Vendored / local Helm charts ├── infrastructure/ # ALB Controller wrapper chart ├── odin-services/odin-services/ # EKB platform (Web, API, Celery, Automator, Ingress) ├── cloudnative-pg/ # CloudNativePG operator chart ├── ha-supabase-db/ # HA Supabase DB (CNPG Cluster + PgBouncer + barman backups) ├── supabase-kubernetes-ha/ # Full Supabase application stack ├── signoz/ # SigNoz observability platform └── k8s-infra/ # SigNoz k8s-infra cluster metrics agent
 
## クイックスタート
 
### 1. 必要なツールをインストールする
 
**テラフォーム**```bash
# macOS
brew install terraform
 
# Linux
sudo apt update && sudo apt install terraform
```**テラグラント**```bash
# macOS
brew install terragrunt
 
# Linux / macOS (manual)
curl -Lo /usr/local/bin/terragrunt \
  https://github.com/gruntwork-io/terragrunt/releases/latest/download/terragrunt_linux_amd64
chmod +x /usr/local/bin/terragrunt
```**kubectl と Helm**```bash
# macOS
brew install kubectl helm
 
# Linux
curl -LO "https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -m 0755 kubectl /usr/local/bin/kubectl
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
```**インストールを確認してください**```bash
terraform --version
terragrunt --version
kubectl version --client
helm version
aws sts get-caller-identity
```---
 
### 2. 新しい環境を作成する
 
新しい環境は、`env-template-folder` をコピーし、プレースホルダーを埋めることによって作成されます。
 
詳しい手順については、[Terragrunt Deployment Guide](/offerings/on-premise/kubernetes-deployment/terragrunt-deployment) を参照してください。大まかな流れは次のとおりです。```bash
# 1. Copy the template
cp -r terragrunt/environments/env-template-folder terragrunt/environments/your-env-name
 
# 2. Fill all <YOUR_*> placeholders in:
#    - terragrunt/environments/your-env-name/terragrunt.hcl
#    - terragrunt/environments/your-env-name/state/terragrunt.hcl
#    - terragrunt/environments/your-env-name/values/*.yaml
 
# 3. Bootstrap the state bucket
cd terragrunt/environments/your-env-name/state
terragrunt apply
 
# 4. Set environment variables and deploy
cd ../
export ENABLE_ALB_CONTROLLER=true
export WEB_DOMAIN="app.example.com"
export WEB_CERTIFICATE_ARN="arn:aws:acm:<region>:<account>:certificate/<id>"
# ... (see TERRAGRUNT_DEPLOYMENT_GUIDE.md for full variable list)
 
terragrunt apply
```---
 
## サービスの有効化/無効化フラグ
 
すべてのオプションのサービスは、環境変数によって切り替えられます。 `terragrunt apply` を実行する前に設定してください。
 
| Variable | Default | Service __PLACEHOLDER_16__ __PLACEHOLDER_1__ | __PLACEHOLDER_2__ | AWS Load Balancer Controller __PLACEHOLDER_17__ __PLACEHOLDER_3__ | __PLACEHOLDER_4__ | ElastiCache Redis + Amazon MQ RabbitMQ __PLACEHOLDER_18__ __PLACEHOLDER_5__ | __PLACEHOLDER_6__ | CloudNativePG operator __PLACEHOLDER_19__ __PLACEHOLDER_7__ | __PLACEHOLDER_8__ | HA PostgreSQL cluster (requires __PLACEHOLDER_9__) __PLACEHOLDER_20__ __PLACEHOLDER_10__ | __PLACEHOLDER_11__ | Full Supabase stack (requires __PLACEHOLDER_12__) __PLACEHOLDER_21__ __PLACEHOLDER_13__ | __PLACEHOLDER_14__ | SigNoz observability + k8s-infra agent |
 
<Info>
**Supabase セルフホスト展開注文**
 
Supabase コンポーネントは、次の順序でデプロイする必要があります。```bash
ENABLE_CNPG=true           terragrunt apply --target='helm_release.local["cloudnative-pg"]'
ENABLE_HA_SUPABASE_DB=true terragrunt apply --target='helm_release.local["ha-supabase-db"]'
ENABLE_SUPABASE=true       terragrunt apply --target='helm_release.local["supabase"]'
```</Info>
 
---
 
## Helm チャートのリファレンス
 
| Chart (in __PLACEHOLDER_0__) | Namespace | Enabled by | Description __PLACEHOLDER_34__ __PLACEHOLDER_1__ | __PLACEHOLDER_2__ | Always | AWS Load Balancer Controller __PLACEHOLDER_35__ __PLACEHOLDER_3__ | __PLACEHOLDER_4__ | Always | Web, FastAPI, Celery, Automator, Ingress __PLACEHOLDER_36__ __PLACEHOLDER_5__ (upstream) | __PLACEHOLDER_6__ | Always | EBS persistent volume driver __PLACEHOLDER_37__ __PLACEHOLDER_7__ (upstream) | __PLACEHOLDER_8__ | Always | Pod autoscaling __PLACEHOLDER_38__ __PLACEHOLDER_9__ | __PLACEHOLDER_10__ | __PLACEHOLDER_11__ | PostgreSQL operator __PLACEHOLDER_39__ __PLACEHOLDER_12__ | __PLACEHOLDER_13__ | __PLACEHOLDER_14__ | HA Postgres + PgBouncer + barman backups __PLACEHOLDER_40__ __PLACEHOLDER_15__ | __PLACEHOLDER_16__ | __PLACEHOLDER_17__ | Kong, Auth, Storage, Studio, Realtime __PLACEHOLDER_41__ __PLACEHOLDER_18__ | __PLACEHOLDER_19__ | __PLACEHOLDER_20__ | Distributed tracing, metrics, logs __PLACEHOLDER_42__ __PLACEHOLDER_21__ (upstream) | __PLACEHOLDER_22__ | __PLACEHOLDER_23__ | Cluster metrics DaemonSet agent |
 
---
 
## モジュールのリファレンス
 
### `modules/eks`
 
プライマリモジュール。規定:
 
- 3 つの AZ にわたるパブリック/プライベート サブネットを持つ VPC
- EKS クラスター (Kubernetes 1.33) と Karpenter の管理対象ノード グループ
- Karpenter コントローラー + NodePool + EC2NodeClass
- IAM ロール (クラスター、ノード グループ、Karpenter、ALB コントローラー、EBS CSI ドライバー)
- `helm_releases` 入力マップを介したすべての Helm リリース
 
### `modules/aws-services`
 
ElastiCache Redis と Amazon MQ RabbitMQ をプロビジョニングします。 `ENABLE_AWS_SERVICES=true` の場合にのみアクティブになります。
 
### `modules/state`
 
新しい環境用に S3 状態バケットをブートストラップします (バージョン管理、暗号化、パブリック アクセス ブロック)。
 
### `modules/helm`
 
アップストリーム チャート リポジトリとローカル `chart_path` チャートの両方をサポートする再利用可能な Helm リリース モジュール。
 
---
 
## 環境設定
 
### プレースホルダー
 
`env-template-folder` の環境固有の値はすべて、`<YOUR_*>` プレースホルダーを使用します。デプロイする前に次のコマンドを実行して、何も残っていないことを確認します。```bash
grep -r "<YOUR_" terragrunt/environments/your-env-name/
```### リモート状態
 
状態は環境ごとに S3 に保存されます。バケットは `state/terragrunt.hcl` によってブートストラップされ、`root.hcl` によって参照されます。命名パターンは `ekb-terraform-state-<env-name>` です。
 
### 秘密
 
<Warning>
Sensitive values (passwords, API keys, certificate ARNs) are **never committed**. They are passed as environment variables consumed by __PLACEHOLDER_3__ calls in __PLACEHOLDER_4__, or as __PLACEHOLDER_5__ placeholders in values files that must be filled before deployment.
</Warning>
 
---
 
## トラブルシューティング
 
**AWS 認証情報を確認します**```bash
aws sts get-caller-identity
```**クラスターアクセスを確認してください**```bash
aws eks update-kubeconfig --region <region> --name <cluster-name>
kubectl get nodes
kubectl get pods -A
```**ALB コントローラーを確認してください**```bash
kubectl get pods -n infrastructure | grep aws-load-balancer-controller
kubectl get ingress -A
```**カーペンターをチェックしてください**```bash
kubectl get pods -n kube-system | grep karpenter
kubectl get nodepools
kubectl get nodeclaims
```**状態ロックを確認してください**```bash
# Force-unlock a stuck state (use the lock ID from the error message)
cd terragrunt/environments/your-env-name
terragrunt force-unlock <lock-id>
```**プレースホルダーが残っていないことを確認してください**```bash
grep -r "<YOUR_" terragrunt/environments/your-env-name/
```**Helm リリース ステータスを確認する**```bash
helm list -A
helm status <release-name> -n <namespace>
helm get values <release-name> -n <namespace>
```---
 
## マルチクラウドのサポート (計画中)
 
| Platform | Status | Module __PLACEHOLDER_4__ AWS EKS | Active | __PLACEHOLDER_0__ __PLACEHOLDER_5__ Azure AKS | Stub | __PLACEHOLDER_1__ __PLACEHOLDER_6__ Google GKE | Stub | __PLACEHOLDER_2__ __PLACEHOLDER_7__ Bare metal | Stub | __PLACEHOLDER_3__ |