yog*_*ogs 2 deployment docker kubernetes google-kubernetes-engine
以下是我在Google上使用Kunbernetes的方式。
我有一个节点应用程序,比如Book-portal。
节点应用正在使用环境变量进行配置。
步骤1:我创建了docker文件并推送
gcr.io/<project-id>/book-portal:v1
Run Code Online (Sandbox Code Playgroud)
步骤2:使用以下命令进行部署
kubectl run book-portal --image=gcr.io/<project-id>/book-portal:v1 --port=5555 --env ENV_VAR_KEY1=value1 --env ENV_VAR_KEY2=value2 --env ENV_VAR_KEY3=value3
Run Code Online (Sandbox Code Playgroud)
第三步:
kubectl expose deployment book-portal --type="LoadBalancer"
Run Code Online (Sandbox Code Playgroud)
步骤4:通过以下方式获取公共IP
kubectl get services book-portal
Run Code Online (Sandbox Code Playgroud)
现在假设我在下一版本中添加了新功能和新配置。
因此要推出新版本v2
步骤1:我创建了docker文件并推送
gcr.io/<project-id>/book-portal:v2
Run Code Online (Sandbox Code Playgroud)
步骤2:编辑部署
kubectl edit deployment book-portal
---------------yaml---------------
...
spec:
replicas: 1
selector:
matchLabels:
run: book-portal
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
run: book-portal
spec:
containers:
- env:
- name: ENV_VAR_KEY1
value: value1
- name: ENV_VAR_KEY2
value: value2
- name: ENV_VAR_KEY3
value: value3
image: gcr.io/<project-id>/book-portal:v1
imagePullPolicy: IfNotPresent
name: book-portal
...
----------------------------------
Run Code Online (Sandbox Code Playgroud)
我能够成功进行更改
image:gcr.io/<project-id>/book-portal:v1
Run Code Online (Sandbox Code Playgroud)
至
image:gcr.io/<project-id>/book-portal:v2
Run Code Online (Sandbox Code Playgroud)
但是我不能添加/更改环境变量
- env:
- name: ENV_VAR_KEY1
value: value1
- name: ENV_VAR_KEY2
value: value2
- name: ENV_VAR_KEY3
value: value3
- name: ENV_VAR_KEY4
value: value4
Run Code Online (Sandbox Code Playgroud)
我认为最好的选择是在k8s中使用configmap,然后更改您的pod模板以从configmap中获取env变量值,请参阅在pod中使用ConfigMap。
编辑:我很抱歉我在这里输入了错误的链接。我已经更新,但是对于TL; DR,您可以执行以下操作。
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
Run Code Online (Sandbox Code Playgroud)
然后pod的使用情况可能会如下所示。
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.how
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.type
restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9218 次 |
| 最近记录: |