是否可以使用 Terraform 编辑现有的 Kubernetes 资源?

问题描述 投票:0回答:1

我正在尝试使用 Terraform 部署 Kubernetes 集群。为了在我的集群上安装 nginx,我在 .tf 文件中写入了以下内容:

resource "helm_release" "ingress" {
    name      = "ingress"
    chart     = "stable/nginx-ingress"
     namespace = "kube-system"

    set {
        name = "controller.replicaCount"
        value = "1"
    }
    depends_on = [azurerm_kubernetes_cluster.k8s]
}

一切正常,nginx 已部署,但我想在部署上安装配置映射。我很确定在 Terraform 创建 nginx 部署之前我无法做到这一点,所以我想知道之后是否可以做到这一点。 configmap 也是使用 Terraform 创建的:

resource "kubernetes_config_map" "nginx" {
  metadata {
    name = "my-name"
    namespace = "kube-system"
  }
  data = {
    "my-field" = "${file("${path.module}/C:/my_configmap.yaml")}"
  }
}
kubernetes terraform terraform-provider-azure
1个回答
0
投票

ingress-nginx
Helm 图表支持使用
controller.config
Helm 值将自定义数据传递到控制器的 ConfigMap,如下1:

# values.yml
controller:
  config:
    hsts: true
    hsts-preload: true
# main.tf
resource "helm_release" "ingress" {
  name       = "ingress-nginx"
  repository = "https://kubernetes.github.io/ingress-nginx"
  chart      = "ingress-nginx"
  version    = "4.10.x"
  namespace  = "default"

  values = [
    "${file("${path.module}/values.yml")}"
  ]
}

这样,ConfigMap 将如下所示:

# kubectl get cm/ingress-nginx-controller -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: ingress-nginx-controller
  namespace: default
  annotations:
    meta.helm.sh/release-name: ingress-nginx
    meta.helm.sh/release-namespace: default
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    app.kubernetes.io/version: 1.10.1
    helm.sh/chart: ingress-nginx-4.10.1
data:
  allow-snippet-annotations: "false"
  hsts: "true"
  hsts-preload: "true"

Nginx Pod 将具有以下配置:

# /etc/nginx/nginx.conf
# ... truncated ...
http {
        # ... truncated ...
        init_by_lua_block {
                # ... truncated ...
                lua_ingress.set_config({
                        hsts = true,
                        hsts_preload = true,
                        # ... truncated ...
                })
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.