Kubernetes 将LoadBalancer的ExternalIP作为环境变量分配给部署

Kubernetes 将LoadBalancer的ExternalIP作为环境变量分配给部署,kubernetes,google-kubernetes-engine,kubernetes-helm,Kubernetes,Google Kubernetes Engine,Kubernetes Helm,我有一个非常具体的例子,我的Pod应该通过ExternalIP访问另一个LoadBalancer服务 有没有办法将LoadBalancer ExternalIP作为环境变量分配给Deployment.yaml 提前谢谢你 我认为这在任何标准模板工具中都不可能直接实现。部分问题在于,创建云承载的负载平衡器是一个异步操作,因此外部IP值在kubectl apply(或等效的helm安装)完成后的一段时间内才可用 如果可以提前创建服务,则可以将其外部IP地址或主机名硬编码到其他配置中,但这本质上是两个

我有一个非常具体的例子,我的Pod应该通过ExternalIP访问另一个LoadBalancer服务

有没有办法将LoadBalancer ExternalIP作为环境变量分配给Deployment.yaml


提前谢谢你

我认为这在任何标准模板工具中都不可能直接实现。部分问题在于,创建云承载的负载平衡器是一个异步操作,因此外部IP值在
kubectl apply
(或等效的
helm安装
)完成后的一段时间内才可用

如果可以提前创建服务,则可以将其外部IP地址或主机名硬编码到其他配置中,但这本质上是两个步骤。(如果您购买了Kubernetes operators,这应该可以通过自定义代码实现:观察服务,一旦它获得外部地址,创建一个保存该地址的相应ConfigMap。)


根据您的特定用例,它也可能只针对集群中的LoadBalancer服务,与任何其他服务一样。这不会通过云提供商的负载平衡器层实现,但在其他方面应该是无法区分的。

我找到了方法,但@David Maze完全正确-没有直接的方法

因此,我的解决方案是添加带有公共和私有区域的DNS:

apiVersion: v1
kind: Service
metadata:
  name: nginx-lb
  labels:
    app.kubernetes.io/name: nginx-lb
  annotations:
    external-dns.alpha.kubernetes.io/hostname: mycoolservice.{{ .Values.dns_external_zone }}.
    external-dns.alpha.kubernetes.io/zone-type: public,private
    external-dns.alpha.kubernetes.io/ttl: "1"
spec:
  type: LoadBalancer
  ports:
    - name: https
      port: 443
      targetPort: https
    - name: http
      port: 80
      targetPort: http
  selector:
    app.kubernetes.io/name: nginx

你能提供更多关于你的用例的细节吗?特别是关于pod负载均衡器访问。为什么不能使用ClusterIP?