Kubernetesクラスタの名前空間を含むTerraformスクリプトが接続拒否として失敗するのはなぜですか?
クラスターを含む Terraform スクリプトに対して Generate Plan
を実行すると、3 カ月前に正常に機能するために使用されましたが、今度は同じ Terraform スクリプトに以下のエラーが表示されます。
"Error: Get "http://localhost/api/v1/namespaces/external-secrets":
dial tcp [::1]:80: connect: connection refused".
成功した Generate Plan
実行と失敗した実行の間でログを比較した場合。 new versions picked up of providers
が検出されたため、バージョンの変更によってエラーが発生しなかったことを確認するために、スクリプトは強制的に同じバージョンになりました。 それでもエラーは解決しません。
この問題は Kubernetes プロバイダーによるものです。さまざまなクラウド・プロバイダーによるこのエラーについて多くの議論がありますが、明確な解決策はありません。
問題を修正するために提供されている以下の参照と解決策を確認してください。
以前の経験に基づいて、修正すべき 2 つの回避策を以下に示します。
ソリューション1
コード・ブロックに示されているように、 Kubernetes に対するプロバイダー認証を使用している場合。
provider "kubernetes" {
config_path = data.ibm_container_cluster_config.cluster_config.config_file_path
}
テンプレートを以下のように変更します。
provider "kubernetes" {
host = data.ibm_container_cluster_config.cluster_config.host
client_certificate = data.ibm_container_cluster_config.cluster_config.admin_certificate
client_key = data.ibm_container_cluster_config.cluster_config.admin_key
cluster_ca_certificate = data.ibm_container_cluster_config.cluster_config.ca_certificate
}
ソリューション2
IBM Cloud Schematics CLI コマンドを使用して、 statefile
からクラスター構成に関連する 状態を削除 し、 Terraform plan
コマンドまたは Terraform apply
コマンドを再実行することができます。
ibmcloud schematics workspace state rm --id --address <enter the workspace ID and the address of the resource to mark as taint>