对Kubernetes清单文件中的值使用ENVs 我正在为一个新项目打下基础,我们将在谷歌KubNeNes引擎上运行一个应用程序,它具有多个环境(开发、分级、生产)。每个环境都是自己的GC项目
我正在编写一些清单文件,我想抽象出任何特定于环境的值,以便根据更新/部署到的环境(项目)可以重用 我已经在Kubernetes Secrets中创建了值,将这些值转换为ENV是很简单的(请参见对Kubernetes清单文件中的值使用ENVs 我正在为一个新项目打下基础,我们将在谷歌KubNeNes引擎上运行一个应用程序,它具有多个环境(开发、分级、生产)。每个环境都是自己的GC项目,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我正在编写一些清单文件,我想抽象出任何特定于环境的值,以便根据更新/部署到的环境(项目)可以重用 我已经在Kubernetes Secrets中创建了值,将这些值转换为ENV是很简单的(请参见数据库\u URL)。但是,如果我想使用一个变量作为容器映像的值:gcr.io/my-app-production-123:latest,我将如何从一个秘密中传递该值 这是从清单文件中抽象特定于环境的值的正确方法吗?谢谢大家! apiVersion: batch/v1 kind: Job metadata:
数据库\u URL
)。但是,如果我想使用一个变量作为容器映像的值:gcr.io/my-app-production-123:latest
,我将如何从一个秘密中传递该值
这是从清单文件中抽象特定于环境的值的正确方法吗?谢谢大家!
apiVersion: batch/v1
kind: Job
metadata:
name: db-migrate
spec:
completions: 1
template:
metadata:
name: db-migrate
spec:
restartPolicy: Never
containers:
- name: db-migrate
# how can I reference secret/env for the value of image:?
image: gcr.io/my-app-production-242920:latest
args: ["bundle", "exec", "rake", "db:create", "db:migrate"]
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: app-secrets
key: DATABASE_URL
您可以将您的秘密装入容器中并使用它 例如:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: db-migrate
image: gcr.io/my-app-production-242920:latest
args: ["bundle", "exec", "rake", "db:create", "db:migrate"]
volumeMounts:
- name: <these_names_are_same>
mountPath: "/container/where/to/mount"
readOnly: true
volumes:
- name: <these_names_are_same>
secret:
secretName: <your deployed secret name>
apiVersion:v1
种类:豆荚
元数据:
姓名:mypod
规格:
容器:
-名称:db迁移
图片:gcr.io/my-app-production-242920:最新版本
参数:[“bundle”、“exec”、“rake”、“db:create”、“db:migrate”]
体积数量:
-姓名:
挂载路径:“/container/where/to/mount”
只读:正确
卷数:
-姓名:
秘密:
秘书长姓名:
您可能需要使用更高级的工具来注入这样的变量。我熟悉的一个是,但是还有其他工具可以让您将参数注入YAML文件 你不能用你描述的方式来使用秘密。使用机密(或配置映射,它们非常相似)可以做的唯一事情就是使用它们。在一定程度上,你可以;但是,如果您查看允许使用
$(变量)
语法的位置,就会明确地调用它,并且只允许参数:
、命令:
和环境:
在Helm中,您可以在YAML文件中使用Go的模板语法,因此可以编写
image: gcr.io/my-app-production:{{ .Values.tag }}
然后使用以下内容部署服务
helm install ./my-app --set tag=242920
但我很确定,在朴素的Kubernetes中,没有一种方法可以参数化POD(或部署、状态集或…)。谢谢。有一件事我不清楚,那就是提供一个挂载路径。在我当前的配置中,我只需为
图像指定我的容器的gcr.io url:
。我不清楚我会为mountpath放什么您为图像指定的内容:
是您将使用/拉取的docker图像。但是您定义了该图像的规格。编辑了我的答案以包含您的要求。谢谢。我在这里打开了一个标签来调查赫尔姆。感觉我的方法不太正确,但我仍然在熟悉管理多环境kubernetes应用程序的工具