【发布时间】:2020-02-12 21:11:07
【问题描述】:
要点
我有一个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 集群,因此它会自动为我的服务创建一个公共端点:
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 服务的公共IP 地址,以便在它启动时将其传递给一个pod。
【问题讨论】:
-
cloud.google.com/compute/docs/internal-dns 将 dns 记录与负载均衡器关联后,您可以将该值用作
API_URL的根 -
好的,我可以试试这个!但我更喜欢另一种解决方案:)
标签: kubernetes google-cloud-platform environment-variables google-kubernetes-engine