EKS Terraform Infrastructure Stack¶
概念概覽
Terraform Bootstrap 順序¶
核心知識¶
Terraform Bootstrap 順序¶
S3 state bucket 必須在 terraform init 之前手動 bootstrap 建立,否則 backend 初始化失敗。bootstrap 成功後應確認:
- bucket_region = 目標區域(如 ap-east-2)
- AES256 SSE Enabled
- Versioning Enabled
- Public Access Block Enabled
- Lifecycle: 90 天清理舊版本
完整 Helm Chart 清單(dev 環境,已由 terraform plan 確認)¶
| Chart | 版本 |
|---|---|
| ArgoCD | 5.51.6 |
| Argo Rollouts | 2.35.0 |
| Istio base/cni/istiod | 1.28.0 |
| Kiali | 2.1.0 |
| Loki | 6.24.0 |
| kube-prometheus-stack | 65.1.0 |
| External Secrets | 0.9.11 |
| Cluster Autoscaler | 9.37.0 |
| Prometheus Adapter | - |
Kiali 重要修正¶
Kiali **確實包含**在 helm_release.kiali 中,與 Grafana + Prometheus 整合,dev 環境使用 auth.strategy: anonymous。舊文檔記載「非 Kiali」為錯誤,以本 session 的 terraform plan 輸出為準。
EKS Cluster 配置¶
- Cluster:
matchrpg-dev,Kubernetes v1.29 - Node type:
t3.large(desired: 2, max: 5) - Addons: coredns、kube-proxy、vpc-cni、aws-ebs-csi-driver
經驗教訓¶
-
Terraform plan 的實際輸出是修正舊文檔錯誤的唯一可信依據
-
S3 state bucket bootstrap 必須是第一步,且需在與 EKS 相同的目標區域建立
-
Kiali dev 環境用 anonymous auth 可快速驗證,但 staging/prod 必須改為 token 或 openid
常見陷阱¶
-
舊文檔可能記載錯誤,需以最新 terraform plan 輸出為準而非舊筆記
-
區域遷移時容易遺漏 Loki/Tempo S3 bucket 名稱中的區域字串
最佳實踐¶
-
每次 plan 前先執行 aws sts get-caller-identity 確認使用正確的 IAM 身份
-
區域遷移後檢查所有資源名稱和 ARN 是否已更新(特別是 S3 bucket name 含區域字串)
-
Kiali 生產環境一定要設定 auth.strategy: token 或 openid,不可用 anonymous
相關概念¶
- eks-qa-nodegroup-debug----dangling---
- GitHub Actions OIDC AWS Integration
- Terraform Secrets Management with random_password
來源 Sessions¶
| 日期 | Session | 貢獻摘要 |
|---|---|---|
| 2026-03-19 | 12166813-461c-4fea-8bdc-9685a03af89c | 記錄了 MatchRPG 專案 EKS dev 環境的完整 Terraform Helm chart 清單(含版本),以及 S3 state bootstrap 的正確執行順序,並修正了舊文檔中「不含 Kiali」的錯誤記載。 |