From 42463881229078f65c4e6a31ca6bd9f63177d92b Mon Sep 17 00:00:00 2001 From: Ryosuke Date: Tue, 3 Oct 2023 06:19:05 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20`onp=5Fminecraft=5Fmariadb=5Fmonitoring?= =?UTF-8?q?=5Fpassword`=20=E3=82=92=20`helm=5Frelease`=20=E3=81=AB?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- terraform/onp_cluster_secrets.tf | 47 ++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/terraform/onp_cluster_secrets.tf b/terraform/onp_cluster_secrets.tf index c97aaa948..da6aba4e9 100644 --- a/terraform/onp_cluster_secrets.tf +++ b/terraform/onp_cluster_secrets.tf @@ -160,21 +160,38 @@ resource "random_password" "minecraft__prod_mariadb_monitoring_password" { special = false // MariaDBのパスワードがぶっ壊れて困るので記号を含めない } -resource "kubernetes_manifest" "onp_minecraft_mariadb_monitoring_password" { +resource "helm_release" "onp_minecraft_mariadb_monitoring_password" { depends_on = [helm_release.onp_cluster_clustersecret] - manifest = yamldecode(<<-EOS - kind: ClusterSecret - apiVersion: clustersecret.io/v1 - metadata: - namespace: clustersecret - name: mariadb-monitoring-password - matchNamespace: - - monitoring - - seichi-minecraft - - seichi-debug-minecraft-on-seichiassist-pr-* - data: - monitoring-password: ${base64encode(random_password.minecraft__prod_mariadb_monitoring_password.result)} - EOS - ) + # ClusterSecret controller も helm_release で入れている (onp_cluster_clustersecret) ため、 + # kubernetes_manifest リソースで ClusterSecret を入れようとすると、controller と ClusterSecret 両方を + # (クラスタ再作成時等に) 作成する際に plan が失敗し、apply できなくなる。 + # https://github.com/hashicorp/terraform-provider-kubernetes/issues/1583 + # + # これを回避するため、 values.yaml 内の manifest をそのまま apply するような Helm chart を作成し、 + # それを経由して ClusterSecret を作成する。こうすると、Terraform は ClusterSecret manifest の diff を取らずに + # `onp_minecraft_mariadb_monitoring_password` に対応する Helm release が存在するかどうかだけを見るようになるので、 + # 上手くいく。 + repository = "https://giganticminecraft.github.io/seichi_infra/" + chart = "raw-resources" + name = "mariadb-monitoring-password-raw-resource" + namespace = "kube-system" + version = "0.2.0" + + values = { + manifests = [<<-EOS + kind: ClusterSecret + apiVersion: clustersecret.io/v1 + metadata: + namespace: clustersecret + name: mariadb-monitoring-password + matchNamespace: + - monitoring + - seichi-minecraft + - seichi-debug-minecraft-on-seichiassist-pr-* + data: + monitoring-password: ${base64encode(random_password.minecraft__prod_mariadb_monitoring_password.result)} + EOS + ] + } }