k8s基础(7)—Kubernetes-Secret

Secret概述:

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。

由于创建 Secret 可以独立于使用它们的 Pod, 因此在创建、查看和编辑 Pod 的工作流程中暴露 Secret(及其数据)的风险较小。 Kubernetes 和在集群中运行的应用程序也可以对 Secret 采取额外的预防措施, 例如避免将敏感数据写入非易失性存储。

Secret 类似于 ConfigMap 但专门用于保存机密数据。

资料来自官网:Secret | Kubernetes

(一)实验准备

1、创建阿里云私有仓库

1.1、创建私有仓库mysql
1.2、验证私有仓库是否可用

往创建的私有仓库中推镜像

bash 复制代码
#打标签
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、退出之前的登录确保环境整洁
bash 复制代码
 #退出登录
 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

bash 复制代码
#格式如下
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格式如下

bash 复制代码
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
bash 复制代码
创建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
bash 复制代码
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
bash 复制代码
#创建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的运行情况
相关推荐
能不能别报错8 小时前
K8s学习笔记(十六) 探针(Probe)
笔记·学习·kubernetes
能不能别报错10 小时前
K8s学习笔记(十四) DaemonSet
笔记·学习·kubernetes
火星MARK11 小时前
k8s面试题
容器·面试·kubernetes
Serverless社区12 小时前
阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
阿里云·云原生·serverless·函数计算
赵渝强老师13 小时前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes
能不能别报错14 小时前
K8s学习笔记(十五) pause容器与init容器
笔记·学习·kubernetes
稚辉君.MCA_P8_Java14 小时前
kafka解决了什么问题?mmap 和sendfile
java·spring boot·分布式·kafka·kubernetes
乄bluefox14 小时前
保姆级docker部署nacos集群
java·docker·容器
每天进步一点_JL15 小时前
Docker 是什么?
后端·docker·容器
一叶飘零_sweeeet15 小时前
从 0 到 1 掌控云原生部署:Java 项目的 Docker 容器化与 K8s 集群实战指南
docker·云原生·kubernetes·项目部署