小编Dru*_*rux的帖子

在 Kubernetes 部署规范中使用环境变量

我目前使用 Kubernetes 规范Deployment.yaml来部署服务。该规范包括对特定 IP 地址的逐字引用(标记<static-ip-address>如下):

spec:
  type: LoadBalancer
  loadBalancerIP: <static-ip-address>
Run Code Online (Sandbox Code Playgroud)

我担心将密码或 IP 地址等信息推送到远程 Git 存储库中。我可以通过使用环境变量来避免这种情况,例如使用部署规范和实际部署大致如下:

spec:
   type: LoadBalancer
   loadBalancerIP: ${SERVICE_ADDRESS}
Run Code Online (Sandbox Code Playgroud)

export SERVICE_ADDRESS=<static-ip-address>
kubectl create -f Deployment.yaml
Run Code Online (Sandbox Code Playgroud)

显然,这种特定的语法还不起作用。但是这样的事情可能吗,如果有的话怎么办?

我宁愿不依赖单独的配置工具Secret s 和ConfigMaps 看起来很有希望,但显然不能以适合此目的的方式使用它们。如果我可以直接引用用它定义的静态 IP 地址gcloud compute addresses create service-address,那就最好了。

environment-variables kubernetes google-kubernetes-engine

20
推荐指数
2
解决办法
3万
查看次数

创建 GCE 负载均衡器时出错:请求的地址 ip 既不是静态的也不是分配给 LB

我有一种情况,Kubernetes 显然无法再为kubectl create -f Deployment.yaml. kubectl describe service <my-service>报告以下错误

CreatingLoadBalancerFailed    
Error creating load balancer (will retry): Failed to create load balancer 
for service default/<my-service>: requested ip <my-address> is 
neither static nor assigned to LB <id>(default/<my-service>): <nil>
Run Code Online (Sandbox Code Playgroud)

gcloud compute addresses list表示my-address是静态IP地址:

NAME          REGION        ADDRESS       STATUS
<my-address>  europe-west1  <ip-address>  RESERVED
Run Code Online (Sandbox Code Playgroud)

Deployment.yaml包含<my-service>分配<my-address>给负载均衡器的规范:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: my-app
ports:
  - protocol: UDP
    port: …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine kubernetes google-kubernetes-engine

9
推荐指数
2
解决办法
4061
查看次数