阶段十:容器编排技术之K8s的ConfigMap与Secret

ConfigMap 基础

概念介绍

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

命令作用:

执行结果:

关键参数:

注意事项:

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/


![](/assets/feishu-images/6c2d328f2cffac4b0c3a0bcf.png)

查看证书信息

![](/assets/feishu-images/7bd05ab17f8d2ca71c235153.png)


![](/assets/feishu-images/6c3ee8bc69bdd0bf22775ac5.png)

总结  
        我们创建了一套证书,并生成了相应的证书卷。  

思考  
      在这里,我们还需要进入到容器中,修改服务端证书配置,进行重载,才完成了证书加载。  
image

**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `--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/


由于使用的是自签名证书,浏览器会提示证书不受信任,你可以选择继续访问。

![](/assets/feishu-images/b3dc298726443b0bba0372e0.png)