🤖
kubernetes provider の設定が原因でエラーが出た
はじめに
Terragrunt で Plan したら EKS 周りでエラーが出てよくわからなかったので対処法まとめます。
問題
下記の2件のエラーが発生しました。
EKS のエンドポイントを叩いているべきなのに、localhost になっている、、?
╷
│ Error: Get "http://localhost/api/v1/namespaces/aws-observability": dial tcp [::1]:80: connect: connection refused
│
│ with module.eks_blueprints_addons.kubernetes_namespace_v1.aws_observability[0],
│ on .terraform/modules/eks_blueprints_addons/main.tf line 2545, in resource "kubernetes_namespace_v1" "aws_observability":
│ 2545: resource "kubernetes_namespace_v1" "aws_observability" {
│
╵
│ Error: Get "http://localhost/api/v1/namespaces/aws-observability/configmaps/aws-logging": dial tcp [::1]:80: connect: connection refused
│
│ with module.eks_blueprints_addons.kubernetes_config_map_v1.aws_logging[0],
│ on .terraform/modules/eks_blueprints_addons/main.tf line 2558, in resource "kubernetes_config_map_v1" "aws_logging":
│ 2558: resource "kubernetes_config_map_v1" "aws_logging" {
│
╵
対象のリソースを state から削除したら、とりあえず Plan は通るようになります。
が、Apply で結局似たようなエラーが発生します。
解決方法
provider の設定を見直すといいと思います。(最初からこっちで良かった)
下記は一例です。
provider "kubernetes" {
host = module.eks.cluster_endpoint
cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data)
exec {
api_version = "client.authentication.k8s.io/v1beta1"
args = ["eks", "get-token", "--cluster-name", module.eks.cluster_name]
command = "aws"
}
# config_path = "~/.kube/config"
# config_context = module.eks.cluster_arn
}
おわりに
エラーで検索したら英語の Discussion ばっかでちょっと大変だった。
ネットワーク接続エラーが出た時に、なぜか localhost に接続していることに違和感を持って、そこから Provider の設定を疑っていれば時間浪費せずにすぐに対処できたかも。
Discussion