gpt4 book ai didi

Kubernetes - 将负载均衡的公共(public) IP 作为环境变量传递到 Pod

转载 作者:行者123 更新时间:2023-12-04 19:25:27 25 4
gpt4 key购买 nike

要旨

我有一个 ConfigMap它为我的 pod 提供了必要的环境变量:

apiVersion: v1
kind: ConfigMap
metadata:
name: global-config
data:
NODE_ENV: prod
LEVEL: info

# I need to set API_URL to the public IP address of the Load Balancer
API_URL: http://<SOME IP>:3000

DATABASE_URL: mongodb://database:27017
SOME_SERVICE_HOST: some-service:3000

我在 Google Cloud 上运行我的 Kubernetes 集群,因此它会自动为我的服务创建一个公共(public)端点:
apiVersion: v1
kind: Service
metadata:
name: gateway
spec:
selector:
app: gateway
ports:
- name: http
port: 3000
targetPort: 3000
nodePort: 30000
type: LoadBalancer

问题

我有一个 Web 应用程序需要从客户端的浏览器向 gateway 发出 HTTP 请求。服务。但是为了向外部服务发出请求,Web 应用程序需要知道它的 IP 地址。

所以我设置了 pod,它以某种方式为 Web 应用程序提供服务,它获取一个环境变量“ API_URL”,结果向这个 url 发出所有 HTTP 请求。

所以我只需要一种方法来设置 API_URL gateway 的公共(public) IP 地址的环境变量服务在启动时将其传递到 pod 中。

最佳答案

我知道这不是您想要的确切方法,但我发现 creating a static IP address and explicitly passing it in往往更容易使用。

首先,创建一个静态 IP 地址:

gcloud compute addresses create gke-ip --region <region>

在哪里 region是您的 GKE 集群所在的 GCP 区域。

然后,您可以通过以下方式获取新 IP 地址:
gcloud compute addresses describe gke-ip --region <region>

现在您可以通过指定显式 loadBalancerIP 将静态 IP 地址添加到服务中。 .1
apiVersion: v1
kind: Service
metadata:
name: gateway
spec:
selector:
app: gateway
ports:
- name: http
port: 3000
targetPort: 3000
nodePort: 30000
type: LoadBalancer
loadBalancerIP: "1.2.3.4"

此时,您也可以将其硬编码到您的 ConfigMap 中。而不必担心从集群本身获取值(value)。

1如果您已经创建了 LoadBalancer使用自动分配的 IP 地址,设置 IP 地址不会更改底层 GCP 负载平衡器的 IP。相反,您应该删除 LoadBalancer服务,等待约 15 分钟以清理底层 GCP 资源,然后重新创建 LoadBalancer带有明确的 IP 地址。

关于Kubernetes - 将负载均衡的公共(public) IP 作为环境变量传递到 Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58407345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com