首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Terraform将坞映像部署到GCP GKE中

使用Terraform将坞映像部署到GCP GKE中
EN

Stack Overflow用户
提问于 2022-07-13 02:49:15
回答 1查看 188关注 0票数 1

我正在GCP中编写一个terraform文件,以便在GKE上运行一个无状态应用程序,下面是我试图进入terraform的步骤。

  1. 创建服务帐户
  2. 将角色授予服务帐户
  3. 创建集群
  4. 配置部署
代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mllp-adapter-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mllp-adapter
  template:
    metadata:
      labels:
        app: mllp-adapter
    spec:
      containers:
        - name: mllp-adapter
          imagePullPolicy: Always
          image: gcr.io/cloud-healthcare-containers/mllp-adapter
          ports:
            - containerPort: 2575
              protocol: TCP
              name: "port"
          command:
            - "/usr/mllp_adapter/mllp_adapter"
            - "--port=2575"
            - "--hl7_v2_project_id=PROJECT_ID"
            - "--hl7_v2_location_id=LOCATION"
            - "--hl7_v2_dataset_id=DATASET_ID"
            - "--hl7_v2_store_id=HL7V2_STORE_ID"
            - "--api_addr_prefix=https://healthcare.googleapis.com:443/v1"
            - "--logtostderr"
            - "--receiver_ip=0.0.0.0"
  1. 添加内部负载均衡器,使其可在集群之外访问。
代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: mllp-adapter-service
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
spec:
  type: LoadBalancer
  ports:
  - name: port
    port: 2575
    targetPort: 2575
    protocol: TCP
  selector:
    app: mllp-adapter

我找到这个示例是为了创建一个自动引导公共集群,但是我不知道在哪里指定我的步骤4的YAML文件。

此外,我还找到了使用kubernetes提供程序将服务部署到创建的集群的另一个蓝图,我希望它解决了我的步骤5。

总的来说,我是terraform和GCP架构的新手,所有这些工作都是在文档之后完成的,不过,我现在正试图找到一种方法,将其部署到开发环境中进行测试,但它不在我的沙箱之外,应该是使用terraform部署的,我想我已经接近它了。

有人能告诉我下一步是什么,或者如何将这些YAML配置添加到我找到的.tf示例中吗?

我这样做对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-13 04:18:37

您可以使用此脚本并进一步扩展它以部署YAML文件,其中包括:公共的

上面的TF脚本正在为YAML部署创建GKE自动引导集群,您可以使用K8s提供程序并使用它应用文件。

https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/deployment

完整示例:公共的

main.tf

代码语言:javascript
复制
locals {
  cluster_type           = "simple-autopilot-public"
  network_name           = "simple-autopilot-public-network"
  subnet_name            = "simple-autopilot-public-subnet"
  master_auth_subnetwork = "simple-autopilot-public-master-subnet"
  pods_range_name        = "ip-range-pods-simple-autopilot-public"
  svc_range_name         = "ip-range-svc-simple-autopilot-public"
  subnet_names           = [for subnet_self_link in module.gcp-network.subnets_self_links : split("/", subnet_self_link)[length(split("/", subnet_self_link)) - 1]]
}

data "google_client_config" "default" {}

provider "kubernetes" {
  host                   = "https://${module.gke.endpoint}"
  token                  = data.google_client_config.default.access_token
  cluster_ca_certificate = base64decode(module.gke.ca_certificate)
}

module "gke" {
  source                          = "../../modules/beta-autopilot-public-cluster/"
  project_id                      = var.project_id
  name                            = "${local.cluster_type}-cluster"
  regional                        = true
  region                          = var.region
  network                         = module.gcp-network.network_name
  subnetwork                      = local.subnet_names[index(module.gcp-network.subnets_names, local.subnet_name)]
  ip_range_pods                   = local.pods_range_name
  ip_range_services               = local.svc_range_name
  release_channel                 = "REGULAR"
  enable_vertical_pod_autoscaling = true
}

另一个很好的例子,它使用YAML文件作为模板,并使用terraform应用它。:https://github.com/epiphone/gke-terraform-example/tree/master/terraform/dev

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72960378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档