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的运行情况
相关推荐
来旺1 小时前
互联网大厂Java面试实战:核心技术栈与业务场景深度解析
java·spring boot·docker·kubernetes·mybatis·hibernate·microservices
DeepFlow 零侵扰全栈可观测1 小时前
DeepFlow 全栈可观测性 护航某银行核心系统全生命周期
数据库·人工智能·分布式·云原生·金融
BD_Marathon2 小时前
【Zookeeper】CAP理论——BASE定理及ZK追求的一致性
分布式·zookeeper·云原生
h***34632 小时前
docker desktop安装redis
redis·docker·容器
i***48612 小时前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器
Mr.Ja3 小时前
【Docker 从入门到实战】——解决跨环境部署痛点的完整指南
运维·docker·容器·dockerfile·dockerimage
shida_csdn3 小时前
k0smotron 一键创建 K8s Control Plane(K8s in K8s 模式)
云原生·容器·k0s·kosmotron
张人大 Renda Zhang3 小时前
Maven = Java 构建世界的“事实标准”:从 pom.xml 到云原生 CI/CD
xml·java·spring boot·后端·ci/cd·云原生·maven
小毅&Nora3 小时前
【云计算】【Kubernetes】 ② K8S的架构、应用及源码解析 - Pod 生命周期管理与 CRI 集成详解
架构·kubernetes·云计算
人工智能训练4 小时前
跨架构突围!X86 Ubuntu Dify 无缝迁移 Arm64 openEuler Docker 实战指南
人工智能·ubuntu·docker·容器·架构·arm64·dify