# Kubernetes配置管理
## Secret
Secret的主要作用就是加密數據,然后存在etcd里面,讓Pod容器以掛載Volume方式進行訪問
場景:用戶名 和 密碼進行加密
一般場景的是對某個字符串進行base64編碼 進行加密
```bash
echo -n 'admin' | base64
```

### 變量形式掛載到Pod
- 創建secret加密數據的yaml文件 secret.yaml

然后使用下面命令創建一個pod
```bash
kubectl create -f secret.yaml
```
通過get命令查看
```bash
kubectl get pods
```

然后我們通過下面的命令,進入到我們的容器內部
```bash
kubectl exec -it mypod bash
```
然后我們就可以輸出我們的值,這就是以變量的形式掛載到我們的容器中
```bash
# 輸出用戶
echo $SECRET_USERNAME
# 輸出密碼
echo $SECRET_PASSWORD
```

最后如果我們要刪除這個Pod,就可以使用這個命令
```bash
kubectl delete -f secret-val.yaml
```
### 數據卷形式掛載
首先我們創建一個 secret-val.yaml 文件

然后創建我們的 Pod
```bash
# 根據配置創建容器
kubectl apply -f secret-val.yaml
# 進入容器
kubectl exec -it mypod bash
# 查看
ls /etc/foo
```

## ConfigMap
ConfigMap作用是存儲不加密的數據到etcd中,讓Pod以變量或數據卷Volume掛載到容器中
應用場景:配置文件
### 創建配置文件
首先我們需要創建一個配置文件 `redis.properties`
```bash
redis.port=127.0.0.1
redis.port=6379
redis.password=123456
```
### 創建ConfigMap
我們使用命令創建configmap
```bash
kubectl create configmap redis-config --from-file=redis.properties
```
然后查看詳細信息
```bash
kubectl describe cm redis-config
```

### Volume數據卷形式掛載
首先我們需要創建一個 `cm.yaml`

然后使用該yaml創建我們的pod
```bash
# 創建
kubectl apply -f cm.yaml
# 查看
kubectl get pods
```

最后我們通過命令就可以查看結果輸出了
```bash
kubectl logs mypod
```

### 以變量的形式掛載Pod
首先我們也有一個 myconfig.yaml文件,聲明變量信息,然后以configmap創建

然后我們就可以創建我們的配置文件
```bash
# 創建pod
kubectl apply -f myconfig.yaml
# 獲取
kubectl get cm
```

然后我們創建完該pod后,我們就需要在創建一個 config-var.yaml 來使用我們的配置信息

最后我們查看輸出
```bash
kubectl logs mypod
```

- Kubernetes簡介
- 搭建K8S集群前置知識
- 使用kubeadm方式搭建K8S集群
- 使用二進制方式搭建K8S集群
- Kubeadm和二進制方式對比
- Kubernetes集群管理工具kubectl
- Kubernetes集群YAML文件詳解
- Kubernetes核心技術Pod
- Kubernetes核心技術Controller
- Kubernetes核心技術Service
- Kubernetes控制器Controller詳解
- Kubernetes配置管理
- Kubernetes集群安全機制
- Kubernetes核心技術Ingress
- Kubernetes核心技術Helm
- Kubernetes持久化存儲
- Kubernetes集群資源監控
- Kubernetes搭建高可用集群
- Kubernetes容器交付介紹
- 使用kubeadm-ha腳本一鍵安裝K8S
- Kubernetes可視化界面kubesphere
- Kubernetes配置默認存儲類
- 使用Rancher搭建Kubernetes集群
- Kubernetes中的CRI