Terraform의 plan
및 apply
전략 상 k8s 클러스터에 설치되어 있지 않은 CRD (CustomResourceDefinitions)를 포함하는 kubernetes_manifest
를 사용하는 경우 helm_release
로 선행하여 helm chart를 설치하도록 하더라도 CRD를 인식하지 않아 에러가 발생한다.
Terraform repo에 이미 이슈로 등록되어 있지만 해결해줄 의지가 없는 것으로 보인다.
문제가 해결되기 전까지는 Helm Chart를 테라포밍하지 말고, k8s 클러스터에 수동으로 설치해주어야 문제가 발생하지 않는다.
# resource "helm_release" "metallb" { # name = "metallb" # namespace = "metallb-system" # create_namespace = true # repository = "https://metallb.github.io/metallb" # chart = "metallb" # version = "0.14.9" # skip_crds = false # } resource "kubernetes_manifest" "metallb_ip_pool" { # depends_on = [helm_release.metallb] manifest = { apiVersion = "metallb.io/v1beta1" kind = "IPAddressPool" metadata = { name = "default-address-pool" namespace = "metallb-system" } spec = { addresses = var.ip_pool_addresses } } } resource "kubernetes_manifest" "metallb_advertisement" { # depends_on = [helm_release.metallb] manifest = { apiVersion = "metallb.io/v1beta1" kind = "L2Advertisement" metadata = { name = "l2" namespace = "metallb-system" } } }
K8s 클러스터에 다음과 같이 직접 설치하거나 Helm Chart로 설치한다.
kubectl create namespace metallb-system kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-native.yaml
답글 남기기