阶段十:容器编排技术之K8s的ConfigMap与Secret
ConfigMap 基础
概念介绍
- kubernetes集群可以使用ConfigMap来实现对容器中应用的配置管理。
- 可以把ConfigMap看作是一个挂载到pod中的存储卷
key1 = value1
或者
key2: value2创建方式
在Kubernetes中,创建ConfigMap,除命令行之外,有两种常见的方式。
从目录创建
形式一 指定两个文件
通过指定文件创建,即将一个配置文件创建为一个ConfigMap,--from-file=文件路径;
[root@master1 ~]# echo 127.0.0.1 > host.txt
[root@master1 ~]# echo 3306 > port.txt
[root@master1 ~]# kubectl create configmap cm2 --from-file=./host.txt --from-file=./port.txt
configmap/cm2 created命令作用:
- 把命令后的文本或变量展开结果写到标准输出;配合
>或>>时会改为写入文件,前者覆盖、后者追加。
- 创建命令指定的 Kubernetes 资源;同名资源已存在时通常会失败。
执行结果:
- 成功后文本或变量展开结果会输出到终端;带重定向时会写入目标文件。
- 成功后应以该命令实际输出、生成的文件或目标服务状态为准;失败时先阅读终端报错,再核对命令参数和运行环境。
关键参数:
注意事项:
Annotations: ==== host: ---- 127.0.0.1 port: ---- 3306
**注意事项:**
使用ConfigMap有2种方式。
通过环境变量的方式传递给pod
metadata:
data:注意事项:
metadata: spec: containers:
**注意事项:**注意事项:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=pod-cm1 DEPLOY_NGINX_PORT_80_TCP=tcp://10.2.205.160:80 DEPLOY_NGINX_PORT_80_TCP_ADDR=10.2.205.160 KUBERNETES_PORT=tcp://10.2.0.1:443 KUBERNETES_PORT_443_TCP=tcp://10.2.0.1:443 MY_SERVICE_SERVICE_HOST=10.2.52.46 MY_SERVICE_PORT_80_TCP_ADDR=10.2.52.46 KUBERNETES_SERVICE_HOST=10.2.0.1 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_PORT_443_TCP_ADDR=10.2.0.1 MY_SERVICE_SERVICE_PORT=80 MY_SERVICE_PORT=tcp://10.2.52.46:80 MY_SERVICE_PORT_80_TCP=tcp://10.2.52.46:80 DEPLOY_NGINX_SERVICE_HOST=10.2.205.160 DEPLOY_NGINX_SERVICE_PORT=80 KUBERNETES_PORT_443_TCP_PORT=443 MY_SERVICE_PORT_80_TCP_PORT=80 DEPLOY_NGINX_PORT=tcp://10.2.205.160:80 DEPLOY_NGINX_PORT_80_TCP_PROTO=tcp DEPLOY_NGINX_PORT_80_TCP_PORT=80 KUBERNETES_SERVICE_PORT=443 KUBERNETES_SERVICE_PORT_HTTPS=443 MY_SERVICE_PORT_80_TCP_PROTO=tcp HOME=/root
**注意事项:**
metadata:
spec:
containers:
configMap:注意事项:
**注意事项:**
127.0.0.1
3306注意事项:
**注意事项:**
Secret有4种类型:
| 类型 | 说明 |
|---|---|
| **Opaque**(音,欧佩克) | Base64编码格式的Secret,用来存储密码、密钥、信息、证书等,类型标识符为generic |
| kubernetes.io/dockerconfigjson | 用来存储私有docker registry的认证信息,类型标识为docker-registry |
| **kubernetes.io/tls** | 用于为SSL通信模式存储证书和私钥文件,命令式创建类型标识为TLS |
下面,我们使用Opaque类型来创建MySQL密码Secret。注意事项:
编写创建secret的YAML文件
metadata: data:
**注意事项:**注意事项:
metadata: spec: containers: env: valueFrom: secretKeyRef:
**注意事项:**注意事项:
MYSQL_ROOT_PASSWORD=123
**注意事项:**注意事项:
https://192.168.88.137:32256/

查看证书信息


总结
我们创建了一套证书,并生成了相应的证书卷。
思考
在这里,我们还需要进入到容器中,修改服务端证书配置,进行重载,才完成了证书加载。

**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `--cert=server.crt` | 【普通】 | 长参数 `--cert` 的值是 `server.crt`,用于精确控制命令行为。 |
| `--key=server.key` | 【普通】 | 长参数 `--key` 的值是 `server.key`,用于精确控制命令行为。 |
**注意事项:**注意事项:
**注意事项:**
metadata:
spec:
selector:
matchLabels:
template:
metadata:
labels:
spec:
containers:
ports:
volumeMounts:
volumes:
secret:
configMap:
metadata:
spec:
selector:
ports:注意事项:
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-f` | 【必看】 | 指定要读取或操作的 YAML 文件。 |
| `deploy-svc-nginx-with-conf.yaml` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
**注意事项:**
命令说明:
https://192.168.88.137:32117/
由于使用的是自签名证书,浏览器会提示证书不受信任,你可以选择继续访问。
