k8s基础(7)—Kubernetes-Secret
Secret概述:
Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。
由于创建 Secret 可以独立于使用它们的 Pod, 因此在创建、查看和编辑 Pod 的工作流程中暴露 Secret(及其数据)的风险较小。 Kubernetes 和在集群中运行的应用程序也可以对 Secret 采取额外的预防措施, 例如避免将敏感数据写入非易失性存储。
Secret 类似于 ConfigMap 但专门用于保存机密数据。
资料来自官网:Secret | Kubernetes
(一)实验准备
1、创建阿里云私有仓库
1.1、创建私有仓库mysql
1.2、验证私有仓库是否可用
往创建的私有仓库中推镜像
#打标签
docker tag mysql:5.7 registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:5.7
#推镜像
docker push registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:5.7
1.3、退出之前的登录确保环境整洁
#退出登录
docker logout master01:5000
#拉取镜像
docker pull master01:5000/test/kube-webhook-certgen:v2023
报错:
#Error response from daemon: unauthorized: unauthorized to access repository: test/kube-webhook-certgen, action: pull: unauthorized to access repository: test/kube-webhook-certgen, action: pull
(二)创建Secret并验证
1、使用命令行创建Sercret
#格式如下
kubectl create secret docker-registry yb-docker \
--docker-server=registry.cn-hangzhou.aliyuncs.com \
--docker-username=admin \
--docker-password=123456 \
--docker-email=12345678@qq.com
#yaml配置如下
#查看secret的内容
kubectl get secret yb-docker -oyaml
yaml格式如下
apiVersion: v1
data:
.dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoicHBwIiwiYXV0aCI6IllXUnRhVzQ2Y0hCdyJ9fX0=
kind: Secret
metadata:
name: secret-docker
namespace: default
type: kubernetes.io/dockerconfigjson
注意:虽然加密了,但是还是可以用解码工具对secret的内容进行解密
2、创建Pod拉取私有仓库镜像时应用Secret中的数据
采用secret方式保存敏感信息时,在部署或者需要安全验证时都会从secret中取数据。
例如:从私有仓库拉取数据时每台机器上都可以取secret中配置的验证信息,而正常的docker的部署方式是先在应用机器上执行docker login xxx 然后才能拉取镜像。
2.1、从阿里云私有仓库拉取nginx镜像并部署
步骤一:创建secret
创建secret
kubectl create secret docker-registry yangbin-docker \
--docker-server=registry.cn-hangzhou.aliyuncs.com \
--docker-username=xxx \
--docker-password=xxx \
--docker-email=xxxx@qq.com
步骤二:创建pod
apiVersion: v1
kind: Pod
metadata:
name: nginx-secret
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/yangbin-docker/nginx:latest
imagePullSecrets:
- name: yangbin-docker
2.2、从阿里云私有仓库拉取mysql的镜像并部署
步骤一:创建PV和PVC
步骤二:创建pod
#创建PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: p01-50m
spec:
capacity:
storage: 50M
accessModes:
- ReadWriteOnce
storageClassName: nfs
nfs:
path: /opt/nfs/data/pv01
server: 192.168.72.130
#创建PVC
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-pvc10mi
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
storageClassName: nfs
#创建pod
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-master
spec:
replicas: 2
selector:
matchLabels:
app: mysql-master
template:
metadata:
labels:
app: mysql-master
spec:
containers:
- name: mysql
image: registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "ppp"
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: nginx-pvc8gi
imagePullSecrets:
- name: yangbin-docker
步骤三:验证mysql的运行情况
原文地址:https://blog.csdn.net/dghfttgv/article/details/144542839
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!