Terraform-如何创建GKE集群并安装头盔图表? 目标

Terraform-如何创建GKE集群并安装头盔图表? 目标,terraform,google-kubernetes-engine,kubernetes-helm,kubectl,nginx-ingress,Terraform,Google Kubernetes Engine,Kubernetes Helm,Kubectl,Nginx Ingress,我有一个特定的工作流程来在谷歌云上建立一个新的Kubernetes集群。我想用Terraform自动化这个过程。这些是步骤: 创建集群 gcloud beta container --project "my-google-project" clusters create "cluster-name" --zone "europe-west3-b" 安装舵repos helm repo add stable https://kubernetes-charts.storage.googleapi

我有一个特定的工作流程来在谷歌云上建立一个新的Kubernetes集群。我想用Terraform自动化这个过程。这些是步骤:

  • 创建集群
    gcloud beta container --project "my-google-project" clusters create "cluster-name" --zone "europe-west3-b"
    
  • 安装舵repos
    helm repo add stable https://kubernetes-charts.storage.googleapis.com/
    helm repo add jetstack https://charts.jetstack.io/
    helm repo update
    
  • 安装NGINX入口
    kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user $(gcloud config get-value account)
    helm install nginx-ingress stable/nginx-ingress
    
  • 安装证书管理器
    kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/v0.13.0/deploy/manifests/00-crds.yaml
    kubectl create namespace cert-manager
    helm install cert-manager jetstack/cert-manager --namespace cert-manager
    
  • 思想 第一步可能如下所示:

    resource "google_container_cluster" "primary" {
      name               = "cluster-name"
      location           = "europe-west3-b"
      initial_node_count = 3
    
      master_auth {
        username = ""
        password = ""
    
        client_certificate_config {
          issue_client_certificate = false
        }
      }
    
      node_config {
        oauth_scopes = [
          "https://www.googleapis.com/auth/logging.write",
          "https://www.googleapis.com/auth/monitoring",
        ]
    
        metadata = {
          disable-legacy-endpoints = "true"
        }
      }
    }
    

    但我不知道如何进行步骤2-4。

    虽然Terraform对于构建和配置云基础设施(如Kubernetes)是有意义的,但在部署后用于配置所述基础设施并不一定有意义。我认为大多数基础设施设计将考虑部署到配置的集群上的应用程序作为配置到所述集群。这里的语义肯定有点细微差别,但我认为像Ansible这样的工具更适合在资源调配后将应用程序部署到集群

    因此,我的建议是定义几个可承担的角色。也许:

    create_cluster
    deploy_helm
    install_nginx_ingress
    install_cert_manager
    
    在每个相应的角色中,定义需要根据使用的任务和变量。最后,定义Ansible用于
    包含
    导入
    这些角色的。这将允许您在一个命令中调配基础架构并将所有必需的应用程序部署到其中:


    ansible playbook playbook.yml

    步骤2-4是软件配置,应使用软件配置器执行。最流行的工具是Ansible。