Istio EKS ARM64 Installation¶
概念概覽
版本選型¶
核心知識¶
版本選型¶
K8s 1.34 需要 Istio 1.25+。1.26.2 EOL 至 2026/08 後無官方安全修補,生產環境應直接選 1.29.0。
ARM64 映像問題¶
Locust EKS 節點為 ARM64(aarch64),私有 ECR 若僅有 amd64 映像會在 kubectl exec 階段報 exec format error,不會在 imagePull 階段失敗,容易誤判為映像損壞。解法:改用 docker.io 官方 multi-arch 映像,繞過私有 ECR 維護負擔(需確認 NAT Gateway 可外網拉取)。
CA 憑證生成必要欄位¶
用 openssl 生成 Istio root CA 時,**必須包含**以下兩個 extension,否則 istiod 報 certificate is not authorized to sign other certificates:
Helm chart 預設值覆蓋陷阱¶
-f values.yaml 無法清除 chart 內建的預設 key,必須用 --set key=null 明確清除。
CRLF 換行符¶
Windows 編輯器產生的 CRLF 會導致 env: bash\r: No such file or directory。腳本提交前需 dos2unix 或 CI 加入自動轉換。
動態版本路徑¶
ISTIO_DEPLOY_PATH 不能寫死版本號,必須動態組合 ${ISTIO_VERSION},否則升版後路徑仍指向舊版目錄。
經驗教訓¶
-
ARM64 架構不匹配錯誤(exec format error)發生在執行期而非拉取期,容易被誤診
-
私有 ECR 版本管理成本高,多架構場景優先考慮官方 docker.io 映像
-
openssl 生成 CA 憑證的 basicConstraints + keyUsage 是必要條件,不是可選項
-
Helm --set key=null 才能真正清除 chart 預設值,-f 覆蓋不完整
常見陷阱¶
-
exec format error 不代表映像損壞,可能是 amd64/arm64 架構不匹配
-
私有 ECR 升版時若忘記推 ARM64 映像,會立即 ImagePullBackOff
-
Helm -f 無法清除 chart 預設 key,需明確 --set key=null
最佳實踐¶
-
ARM64 EKS 安裝 Istio 優先使用 docker.io 官方 multi-arch 映像
-
CA 憑證生成腳本必須包含 basicConstraints 和 keyUsage extension
-
腳本路徑中的版本號應動態取自參數,不寫死
-
Git 提交前對 shell 腳本執行 dos2unix
相關概念¶
- EKS Add-on Upgrade
- EKS Cluster Version Upgrade
- Istio Cross-Namespace xDS Authentication
- Istio Header-Based Environment Routing
來源 Sessions¶
| 日期 | Session | 貢獻摘要 |
|---|---|---|
| 2026-03-22 | 64b0516b-af8e-4206-8a1b-037aee68b1bf | 完整記錄了在 ARM64 EKS + K8s 1.34 環境安裝 Istio 1.29.0 的四層陷阱與解法 |