湘潭网站建设 诚信磐石网络,网站稿件管理发布系统,杭州建设信用网网站,WordPress怎么修改网站登陆地址一、ConfigMap资源配置
ConfigMap保存的是不需要加密配置的信息
ConfigMap 功能在 Kubernetes1.2 版本中引入#xff0c;许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制#xff0c;ConfigMap 可以被…一、ConfigMap资源配置
ConfigMap保存的是不需要加密配置的信息
ConfigMap 功能在 Kubernetes1.2 版本中引入许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制ConfigMap 可以被用来保存单个属性也可以用来保存整个配置文件或者JSON二进制大对象。 应用场景应用配置
创建 ConfigMap
方法1
只要指定为一个文件就可以从单个文件中创建 ConfigMap
--from-file 这个参数可以使用多次即可以使用两次分别指定上个实例中的那两个配置文件 --from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对键的名字就是文件名值就是文件的内容
kubectl create cm demo1-cm --from-filedemo/ 方法2
使用文字值创建利用 --from-literal 参数传递配置信息
kubectl create cm kv-cm --from-literalmynamekukun --from-literalmylovehobbyPod 中使用 ConfigMap
作为数据卷挂载使用
vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo-podname: demo-pod
spec:volumes:- name: cm-vol #定义存储卷名称configMap: name: demo-cm #指定cm资源名称containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts: #指定挂载容器信息- name: cm-volmountPath: /mntdnsPolicy: ClusterFirstrestartPolicy: Always
status: {} 作为环境变量引用使用
vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo2-podname: demo2-pod
spec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}env: #指定环境变量- name: MYNAME value: liangzai- name: MYCLASS valueFrom: #变量值从什么地方而来configMapKeyRef:name: kv-cmkey: myclassdnsPolicy: ClusterFirstrestartPolicy: Always
status: {} 补充
kubectl create cm web-cm --from-file./vim demo4-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo4-podname: demo4-pod
spec:volumes:- name: web-volconfigMap:name: web-cmcontainers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts:- name: web-volmountPath: /usr/share/nginx/htmldnsPolicy: ClusterFirstrestartPolicy: Always
status: {}kubectl apply -f demo4-pod.yaml 更新内容
kubectl edit cm web-cm 修改其中的chen.html为tc通过数据卷挂载使用的支持热更新 注环境变量引用的方式使用configmap在线修改内容不会进行更新
挂载时如何不覆盖原本目录的内容进行挂载
此种方法也不支持热更新 二、Secret
作用存储密钥信息资源
Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源这类数据虽然也可以存放在 Pod 或者镜像中但是放在 Secret 中是为了更方便的控制如何使用数据并减少暴露的风险。
Secret 有四种类型 ●kubernetes.io/service-account-token由 Kubernetes 自动创建用来访问 APIServer 的 SecretPod 会默认使用这个 Secret 与 APIServer 通信 并且会自动挂载到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount 目录中; ●Opaque base64 编码格式的 Secret用来存储用户自定义的密码、密钥等默认的 Secret 类型; ●kubernetes.io/dockerconfigjson 用来存储私有 docker registry 的认证信息。 ●kubernetes.io/tls 用来存储 TLS 证书和私钥信息。
Pod 需要先引用才能使用某个 secretPod 有 3 种方式来使用 secret ●作为挂载到一个或多个容器上的卷 中的文件。 ●作为容器的环境变量。 ●由 kubelet 在为 Pod 拉取镜像时使用
Opaque的创建、使用
kubectl create -n xy101 secret generic liliang-cecret --from-file./username.txt --from-file./password.txtkubectl create secret -n xy101 generic li-secret --from-filedemo/kubectl create -n xy101 secret generic scj-secret --from-literalmynamescj --from-literalmyclassxy101挂载方式引用Opaque vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:labels:run: demo1-podname: demo1-podnamespace: xy101
spec:volumes:- name: secret-volsecret:secretName: liliang-cecretcontainers:- image: nginxname: myappports:- containerPort: 80resources: {}volumeMounts:- name: secret-volmountPath: /mntdnsPolicy: ClusterFirstrestartPolicy: Always
环境变量方式引用
vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo2-podname: demo2-podnamespace: xy101
spec:containers:- image: nginxname: myappports:- containerPort: 80resources: {}env:- name: MYSCHOOLvalueFrom:secretKeyRef:name: scj-secretkey: mynameenvFrom:- secretRef:name: scj-secretdnsPolicy: ClusterFirstrestartPolicy: Always
status: {} 总结
configMap资源简称cm
作用 用于保存配置文件、环境变量等不需要加密的信息。它可以实现将配置信息与应用程序镜像解耦 创建cm资源 kubectl create cm 资源名称 -n 命名空间 --from-file文件|目录 --from-liternal键名键值 查看cm资源 kubectl describe -n 命名空间 cm 资源名称 kubectl get -n 命名空间 cm 资源名称 -o yaml 注保存的文件名会作为 cm 资源数据的 键名文件内容会作为 cm 资源数据的键值
使用cm资源 1、作为存储卷挂载的方式 在Pod资源配置中用spec.volumes字段设置configMap类型的卷 在容器配置中用volumeMounts字段将卷挂载到容器的指定目录cm资源数据的键名会作为文件名、键值会作为文件内容生成在容器的挂载点目录中支持热更新 在容器配置中用volumeMounts.subPath字段指定文件名实现将卷挂载到容器中的指定文件上不支持热更新 2、作为容器环境变量的方式不支持热更新 在容器配置中用env.name指定自定义容器的环境变量名用env.valueFrom.configMapKeyRef.name|key字段指定环境变量的值从哪个cm资源的键获取 在容器配置中用envFrom.configMapRef.name字段指定cm资源的名称使得cm资源数据的键名和键值直接作为容器的环境变量名和 secret资源 作用 用户保存密码文件、tls证书/私钥文件、token令牌字符串、镜像私有仓库认证信息等需要加密的敏感信息 secret的4种类型 Opaque默认的secret资源类型可以通过选项引用文件、目录、键值对的方式创建secret资源并且资源数据的键值会被自动转换为base64编码格式 kubernetes.io/service-account-token当创建serviceaccount账户资源后K8S会自动创建同名的此类型secret资源用于Pod访问apiserver时会使用此secret中的token做认证 kubernetes.io/dockerconfigjson用于存储K8S从harbor等镜像私有仓库拉取镜像时做认证的信息 kubernetes.io/tls用于存储tls证书和私钥文件的信息 创建secret资源 kubectl create secret generic 资源名称 -n 命名空间 --from-file文件|目录 --from-liternal键名键值 kubectl create secret docker-registry 资源名称 -n 命名空间 --docker-server镜像私钥仓库URL地址 --docker-username仓库用户名 --docker-password用户密码 --docker-email邮箱地址 kubectl create secret tls 资源名称 -n 命名空间 --cert证书文件路径 --key私钥文件路径 查看secret资源 kubectl describe -n 命名空间 secret 资源名称 kubectl get -n 命名空间 secret 资源名称 -o yaml 注数据的键值会以base64编码格式加密显示 使用secret资源
作为存储卷挂载的方式 在Pod资源配置中用spec.volumes字段设置secret类型的卷 在容器配置中用volumeMounts字段将卷挂载到容器的指定目录secret资源数据的键名会作为文件名、键值会作为文件内容生成在容器的挂载点目录中
作为容器环境变量的方式 在容器配置中用env.name指定自定义容器的环境变量名用env.valueFrom.secretKeyRef.name|key字段指定环境变量的值从哪个secret资源的键获取 在容器配置中用envFrom.secretRef.name字段指定secret资源的名称使得secret资源数据的键名和键值直接作为容器的环境变量名和值
Pod配置从镜像私钥仓库拉取镜像 在Pod资源配置中用spec.imagePullSecrets.name字段指定kubernetes.io/dockerconfigjson类型secret资源名称