## クイックスタート
### 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__ |