首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Kubernetes部署规范中使用环境变量

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

Server Fault用户
提问于 2016-07-25 02:42:32
回答 3查看 33.4K关注 0票数 20

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

代码语言:javascript
复制
spec:
  type: LoadBalancer
  loadBalancerIP: <static-ip-address>

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

代码语言:javascript
复制
spec:
   type: LoadBalancer
   loadBalancerIP: ${SERVICE_ADDRESS}

代码语言:javascript
复制
export SERVICE_ADDRESS=<static-ip-address>
kubectl create -f Deployment.yaml

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

我不喜欢依赖单独的供应工具秘密s和ConfigMaps看上去很有前途,但显然他们不能以适合这个目的的方式消费。如果我可以直接引用用gcloud compute addresses create service-address定义的静态IP地址,那将是最好的。

EN

回答 3

Server Fault用户

发布于 2017-04-11 12:47:15

一个更容易/更干净的解决方案:envsubst

在deploy.yml中:

代码语言:javascript
复制
LoadbalancerIP: $LBIP

然后创建env var并运行kubectl,如下所示:

代码语言:javascript
复制
export LBIP="1.2.3.4"
envsubst < deploy.yml | kubectl apply -f -

您只需将常规Bash变量放入您想要使用的任何文件,在本例中是YAML清单,并让ensubst读取该文件。它将输出文件,并将env替换为它们的值。您还可以使用它创建如下新文件:

代码语言:javascript
复制
envsubst < input.yml > output.yml

envsubst可以在例如Ubuntu/Debian gettext包中使用。

票数 32
EN

Server Fault用户

发布于 2016-07-26 14:27:54

您可以编写一个简单的预处理器来对yaml文件进行变量替换(也可以使用jsonnet在json配置文件上完成相同的任务)。

有一些关于将模板直接添加到Kubernetes配置中的讨论,但它还没有实现或可用。

票数 0
EN

Server Fault用户

发布于 2016-07-30 15:22:40

模板可用之前,最简单的方法是运行使用Kubernetes API更新服务的作业。在一个基于高山的映像中,一个简短的shell脚本,再加上一个秘密(包含IP地址)和一个configmap (包含模板),应该非常简单。难点在于正确使用apiserver的身份验证和授权特性。

https://stackoverflow.com/questions/30690186/how-do-i-access-the-kubernetes-api-from-within-a-pod-container给出了一个访问API的示例。显然,您希望在该示例中发布到/api/v1/命名空间/默认/服务,而不是GET。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/791715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档