如果我使用以下命令运行kubectl create -f deployment.yaml
命令以下deployment.yaml
文件,一切成功。
apiVersion: v1
kind: Pod
metadata:
name: my_app
labels:
app: my_app
spec:
containers:
- name: my_app
image: docker:5000/path_to_my_custom_image
args: ["my_special_argument"]
但是,现在我想要一个自定义的“ my_special_argument”如下
apiVersion: v1
kind: Pod
metadata:
name: my_app
labels:
app: my_app
spec:
containers:
- name: my_app
image: docker:5000/path_to_my_custom_image
args: ["$(ARG)"]
并且我想在执行kubectl create -f deployment.yaml
命令时以某种方式设置$ ARG $的值。怎么做?
我正在寻找类似的东西:kubectl create -f deployment.yaml --ARG=new_arg
可以执行这样的命令吗?
您可以在deployment.yaml
中使用环境变量
apiVersion: v1
kind: Pod
metadata:
name: my_app
labels:
app: my_app
spec:
containers:
- name: my_app
image: docker:5000/path_to_my_custom_image
env:
- name: SPECIAL_ARG_VAL
value: "my_special_argument_val_for_my_app"
args: ["$(SPECIAL_ARG_VAL)"]
此外,您也可以使用Secrets或Configmaps加载环境变量的值。
Here是从configmap加载值的示例
apiVersion: v1
kind: Pod
metadata:
name: my_app
labels:
app: my_app
spec:
containers:
- name: my_app
image: docker:5000/path_to_my_custom_image
env:
- name: SPECIAL_ARG_VAL
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_VAL_KEY
args: ["$(SPECIAL_ARG_VAL)"]
您可以使用kubectl
如下创建配置映射,但建议使用单独的yaml文件。
kubectl create configmap special-config --from-literal=SPECIAL_VAL_KEY=my_special_argument_val_for_my_app
[如果您在镜像的Dockerfile中定义了相同的环境变量,甚至可以从上面的pod yaml中删除args
。