如何在 kubernetes 部署规范中从 ingress-nginx-controller 引用 EXTERNAL-IP?

Posted

技术标签:

【中文标题】如何在 kubernetes 部署规范中从 ingress-nginx-controller 引用 EXTERNAL-IP?【英文标题】:How to reference the EXTERNAL-IP from ingress-nginx-controller in a kubernetes deployment specification? 【发布时间】:2021-07-17 01:39:34 【问题描述】:

作为一名 kubernetes 新手,我已经成功部署了一个带有 ingress-nginx 的应用程序。但现在在我的应用程序部署规范中,我需要引用 ingress-nginx-controller 的 EXTERNAL-IP(通过 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/cloud/deploy.yaml 创建)。

我尝试在我的部署规范中执行以下操作,

- name: HOSTIP                                               
  valueFrom:                                                         
    fieldRef:                                                        
       fieldPath: status.hostIP

但是当我执行kubectl get svc -n ingress-nginx 时,它返回的 IP 地址与表中的 EXTERNAL-IP 地址值完全不同。

有没有办法使用 valueFrom 语法来引用 ingress-nginx-controller EXTERNAL-IP 值,或者这是不可能的?如果没有,还有什么方法可以让部署的 pod 获得 ingress-nginx-controller 的 EXTERNAL-IP 值?

【问题讨论】:

【参考方案1】:

    由于The downward API 的限制,您无法使用valueFrom 执行此操作。请查看this answer 了解更多详情。去年提供了所有需要的链接。

    您可以将此值存储在 configmap 中,并使用脚本定期更新。检查Kubernetes - Pass Public IP of Load Balance as Environment Variable into Pod 是否已准备好脚本。

【讨论】:

以上是关于如何在 kubernetes 部署规范中从 ingress-nginx-controller 引用 EXTERNAL-IP?的主要内容,如果未能解决你的问题,请参考以下文章

Docker ENTRYPOINT 和 Kubernetes 容器规范命令之间的区别?

kubernetes部署elasticsearch-6.6.2

如何在以下上下文中从响应中获取规范 ID?

在Kubernetes中从0打造可观测性

如何在 GitLab 中从开发到登台进行推广?

如何在情节提要中从一个视图转到另一个视图