Kubernetes学习笔记(六):使用ConfigMap和Secret配置应用程序 (3)

查看Secret通过环境变量暴露的条目

-> [root@kube0.vm] [~] k exec https-nginx env PATH=http://www.likecs.com/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=https-nginx FOO=bar ....... 使用私有的镜像仓库

使用方法:创建一个docker-registry类型的secret,然后

创建一个docker-registry类型的secret。 --docker-server 用于指定仓库服务的地址。

k create secret docker-registry dockerregsecret --docker-username=zhangsan --docker-password=123 --docker-email=zhangsan@163.com

在Pod中的containers.imagePullSecrets.name中引用。

apiVersion: v1 kind: Pod metadata: name: private-pod spec: imagePullSecrets: - name: dockerregsecret containers: - image: username/private:tag name: main StringData与二进制数据

采用Base64编码,使Secret也能存储二进制数据,而纯文本值可以在secret.StringData中定义,但StringData字段是只写的,kubectl get -o yaml查看时会被Base64编码显示在data下。

注意事项

在Kubernetes中定义容器时,镜像的ENTRYPOINT和CMD都可以被覆盖。但是在Docker中,镜像的ENTRYPOINT是不能覆盖的。

可以将configMapKeyRef.optional设置为true,这样即使ConfigMap不存在,容器也能启动。

小结

对于环境变量:使用valueFrom.configMapKeyRef引用一个ConfigMap条目;使用envFrom.configMapRef引用全部,envFrom.prefix设置前缀。

对于命令行参数:containers.args无法直接引用ConfigMap,但是可以通过$(ENV_VAR_NAME)引用环境变量,间接引用了ConfigMap。

挂载文件夹会隐藏该文件夹中已存在的文件,挂载ConfigMap的单独条目不会隐藏其他文件

将ConfigMap暴露为卷可以达到热更新的效果。

每个pod默认都会挂载一个Secret,该Secret包含ca.crt、namespace、token,包含了从Pod内部安全访问Kubernetes Api服务器所需的全部信息。

采用Base64编码,使Secret也能存储二进制数据,而纯文本值可以在secret.StringData中定义,但StringData字段是只写的,kubectl get -o yaml查看时会被Base64编码显示在data下。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyfyx.html