首页 > 解决方案 > 如何手动重新创建 Ingress 部件(为 k8s 服务随机生成后端名称)?

问题描述

我想避免在 GKE 上使用 k8s Ingress,而是通过 Terraform 手动管理所有代理/规则/证书,而不是通过 K8S。但是缺少的链接是我将如何获得用于创建 LoadBalancer 后端服务的 k8s 服务名称?它似乎是使用随机后缀创建的,因此无法将其硬编码为 Terraform 配置。

标签: google-kubernetes-enginekubernetes-ingressterraform-provider-gcp

解决方案


如果我理解正确,听起来您想自己(通过 Terraform)创建负载均衡器,而不是通过 K8S 入口对其进行管理?

我建议看看将独立 NEG 与 GKE服务一起使用。NEG(这是一个命名资源)可以是 LoadBalancer 的后端,并且可以映射到支持 Service 的 pod 端点。您将创建一个 K8S 服务资源,例如:

apiVersion: v1
kind: Service
metadata:
  name: NEG_DEMO_SVC
  annotations:
    cloud.google.com/neg: '{"exposed_ports": {"80":{"name": "NEG_NAME"}}}'
spec:
  type: ClusterIP
  selector:
    run: NEG_DEMO_APP # Selects Pods labelled run: NEG_DEMO_APP
  ports:
  - port: 80
    protocol: TCP
    targetPort: 9376

然后,您将能够创建一个GCE 负载均衡器,其后端使用 NEG,并且您将拥有 NEG 的名称,因为您在创建服务资源时将其传入。不涉及 Ingress。


推荐阅读