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 \
[email protected]
#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 \
[email protected]
步骤二:创建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的运行情况
相关推荐
陈陈CHENCHEN7 小时前
【Kubernetes】K8s 之 ETCD - 恢复备份
kubernetes
叶落闲庭8 小时前
【k8s】k8s集群搭建
云原生·容器·kubernetes
藥瓿亭8 小时前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks
xyhshen8 小时前
k8s下离线搭建elasticsearch
elasticsearch·容器·kubernetes
椰汁菠萝9 小时前
k8s集群安装坑点汇总
云原生·容器·kubernetes
背太阳的牧羊人10 小时前
sudo docker exec -it backend bash 以交互方式(interactive)进入正在运行的 Docker 容器的命令行环境
docker·容器·bash
gsls20080810 小时前
ocrapi服务docker镜像使用
运维·docker·容器
在未来等你11 小时前
互联网大厂Java求职面试:AI大模型与云原生技术的深度融合
java·云原生·kubernetes·生成式ai·向量数据库·ai大模型·面试场景
爱宇阳11 小时前
使用 Docker Compose 从零部署 TeamCity + PostgreSQL(详细新手教程)
docker·postgresql·容器