目录
- 一、ConfigMap
- 1.1、创建
- 1.1.1、from-file
- 1.1.2、from-env-file
- 1.1.3、from-literal
- 1.1.4、基于yaml文件创建
- 1.2、Pod使用ConfigMap
- 1.2.1、valueFrom
- 1.2.2、envFrom
- 1.2.3、volumeMounts
- 1.2.4、自定义文件名称
- 1.2.5、控制文件权限
- 1.2.6、子目录-subPath
- 1.2.7、热更新
- 1.2.8、不可变的cm
- 1.3、限制条件
- 1.1、创建
- 二、Secret
- 2.1、创建
- 2.1.1、from-file
- 2.1.2、from-literal
- 2.1.3、基于yaml文件创建
- 2.1.4、from-env-file
- 2.2、实战
- 2.2.1、配置阿里云私有仓库密钥
- 2.2.2、管理https证书
- 2.2.3、不可变的secret
- 2.1、创建
一、ConfigMap应用部署的最佳实践都趋向于将应用所需要的配置信息和应用程序本身离开,以便实现通过不同的配置实现更灵活的功能 。
我们都知道,K8S中运行的是容器 , 若不将配置文件抽离 , 每一次配置文件的变动,都需要重新制作镜像,这其实挺麻烦挺没必要的 。
在K8S中提供了ConfigMap资源对象作为配置管理的统一管理方案,可以通过环境变量或者文件的方式 , 在创建容器的时候将配置信息动态注入到容器中~
下文开始对ConfigMap的实战
官网文档:https://kubernetes.io/zh/docs/concepts/configuration/configmap/
1.1、创建1.1.1、from-file准备目录和文件
# 创建目录及配置文件[root@master01 yamls]# ls conf/nginx.confredis.conf[root@master01 yamls]# cat conf/nginx.confapp.name=nginxlocation.prefix=/app[root@master01 yamls]# cat conf/redis.confip=10.10.10.101port=2379
创建cm[root@master01 yamls]# kubectl create cm -h# --from-file参数既可以指定文件又可以指定目录[root@master01 yamls]# kubectl create cm cm-from-file --from-file=conf/configmap/cm-from-file created
查看[root@master01 yamls]# kubectl get cmNAMEDATAAGEcm-from-file238skube-root-ca.crt117d[root@master01 yamls]# kubectl get cm cm-from-file -oyamlapiVersion: v1data:# 默认的data的key值就是文件名# 可以在创建时通过参数 --from-file=abc=nginx.conf的方式将data.key改成abcnginx.conf: |app.name=nginxlocation.prefix=/appredis.conf: |ip=10.10.10.101port=2379kind: ConfigMapmetadata:creationTimestamp: "2022-03-31T00:52:21Z"name: cm-from-filenamespace: defaultresourceVersion: "759788"uid: 5a41bdbe-66d0-45fa-8a5e-b6f6b005d671
1.1.2、from-env-fileenv环境变量的格式为:key=value
指定参数:
--from-env-file
而不是--from-file
[root@master01 yamls]# kubectl create cm cm-env-file --from-env-file=conf/nginx.confconfigmap/cm-env-file created[root@master01 yamls]# kubectl getcm cm-env-file -oyamlapiVersion: v1data:app.name: nginxlocation.prefix: /appkind: ConfigMapmetadata:creationTimestamp: "2022-03-31T01:04:12Z"name: cm-env-filenamespace: defaultresourceVersion: "761496"uid: 8e885d31-0a83-423c-a59f-6ea8b0473103
1.1.3、from-literalliteral(翻译为:字面意义的)直接在命令行上指定好key和value参数:
--from-literal
[root@master01 ~]# kubectl create cm env-from-literal --from-literal=Level=INFO --from-literal=Name=Macconfigmap/env-from-literal created[root@master01 ~]# kubectl get cm env-from-literal -oyamlapiVersion: v1data:Level: INFOName: Mackind: ConfigMapmetadata:creationTimestamp: "2022-04-01T00:31:13Z"name: env-from-literalnamespace: defaultresourceVersion: "762641"uid: da2f8922-8385-46ba-82e9-b0dc197a1eb2[root@master01 ~]#
1.1.4、基于yaml文件创建apiVersion: v1kind: ConfigMapmetadata:name: game-demodata:# 类属性键;每一个键都映射到一个简单的值player_initial_lives: "3"ui_properties_file_name: "user-interface.properties"# 类文件键game.properties: |enemy.types=aliens,monstersplayer.maximum-lives=5user-interface.properties: |color.good=purplecolor.bad=yellowallow.textmode=true
1.2、Pod使用ConfigMap1.2.1、valueFrom推荐将下面这种kv格式的configMap注入为容器的配置文件[root@master01 yamls]# kubectl get cm cm-env-file -oyamlapiVersion: v1data:app.name: nginxlocation.prefix: /appkind: ConfigMapmetadata:creationTimestamp: "2022-03-31T01:04:12Z"name: cm-env-filenamespace: defaultresourceVersion: "761496"uid: 8e885d31-0a83-423c-a59f-6ea8b0473103
创建dp,并将cm挂在进去【系统整理K8S的配置管理实战-建议收藏系列】
[root@master01 yamls]#kubectl create deployment dp-test-cm --image=nginx --dry-run=client -oyaml > dp-test-cm.yaml
修改apiVersion: apps/v1kind: Deploymentmetadata:labels:app: dp-test-cmname: dp-test-cmspec:replicas: 1selector:matchLabels:app: dp-test-cmtemplate:metadata:labels:app: dp-test-cmspec:containers:- image: nginxname: nginxenv:# 直接定义ENV的kv- name: Levelvalue: Pro# 将cm中的指定key的值作为AppName这个环境变量的值- name: AppNamevalueFrom:configMapKeyRef:name: cm-env-filekey: app.name
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1分钟完成在线测试部署便捷收集班级同学文件的web管理系统
- RHCE习题
- 红米note10怎么更新系统_系统更新教程
- 重新整理 .net core 实践篇 ———— linux上性能排查 [外篇]
- k8s 中的 ingress 使用细节
- 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]
- 第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍
- 华为nova8SE可以升级鸿蒙系统吗_华为nova8SE能不能升级鸿蒙系统
- 基于 Docker 构建轻量级 CI 系统:Gitea 与 Woodpecker CI 集成
- BI系统打包Docker镜像及部署的技术难度和实现