kubernetes 使用Terraform将Docker映像部署到GCP GKE中

ymdaylpp  于 2023-03-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(121)

我正在用GCP编写一个terraform文件,以便在GKE上运行一个无状态应用程序,这些是我尝试进入terraform的步骤。
1.创建服务帐户
1.向服务帐户授予角色
1.创建群集
1.配置部署

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.添加内部负载平衡器,使其可在群集外部访问

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

我找到这个example是为了创建一个auto-pilot-public集群,但是我不知道在哪里指定步骤4中的YAML文件
我还发现了另一个blueprint,它使用kubernetes提供程序将服务部署到创建的集群中,我希望它能解决我的第5步。
总体来说,我是terraform和GCP架构的新手,我在documentation之后得到了所有这些工作,然而,我现在正试图找到一种方法来将其部署在开发环境中以进行测试,但这超出了我的沙箱,它应该使用terraform来部署,我想我正在接近它。
有人能告诉我下一步是什么,或者如何将这些YAML配置添加到我找到的.tf示例中吗?
我这样做对吗

5jvtdoz2

5jvtdoz21#

您可以使用此脚本并对其进行进一步扩展,以使用以下命令部署YAML文件:https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/examples/simple_autopilot_public
上面的TF脚本正在为YAML部署创建GKE自动引导集群,您可以使用K8s提供程序并使用它应用文件。
https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/deployment
完整示例:https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/examples/simple_autopilot_public
main.tf

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

相关问题