当前位置: 首页 > article >正文

K8S资源之secret资源

secret资源介绍

secret用于敏感数据存储,底层基于base64编码,数据存储在etcd数据库中

应用场景举例:

  • 数据库的用户名,密码,
  • tls的证书
  • ssh等服务的相关证书
secret的基础管理

1 在命令行响应式创建

1.响应式创建

kubectl create secret generic mysql-info  \
--from-literal=name=wenzhiyong \
--from-literal=host=10.0.0.231 \
--from-literal=password=wzy666

2.查看secret mysql-info,数据值被base64编码过了

[root@master231~]# kubectl get secrets mysql-info -o yaml
apiVersion: v1
data:
  host: MTAuMC4wLjIzMQ==
  name: d2VuemhpeW9uZw==
  password: d3p5NjY2
kind: Secret
metadata:
  name: mysql-info
  namespace: default
type: Opaque

3.使用base64 -d查看内容和原来的一样

[root@master231~]# echo 'MTAuMC4wLjIzMQ==' | base64 -d | more
10.0.0.231

2 基于yaml声明式创建

基于yaml声明式创建secret时,又有2种细微的差别。就是value填写明文还是密文。

  • 方式1:明文形式书写
apiVersion: v1
kind: Secret
metadata:
  name: my-info
stringData:
  name: wenzhiyong
  age: "18"
  sex: man

创建后明文会自动经过base64编码

[root@master23103-secret]# echo 'MTg=' |base64 -d |more
18
  • 方式2:密文方式书写

注:需要提前把要申明的值进行base64编码,然后手动在yaml中直接填写。(比较繁琐,不推荐)

[root@master23103-secret]# echo username | base64
dXNlcm5hbWUK
[root@master23103-secret]# echo 123456 | base64
MTIzNDU2Cg==
apiVersion: v1
kind: Secret
metadata:
  name: wzy-username-and-password
data:
  username: d3p5Cg==
  password: MTIzNDU2Cg==

3 删除secret

和删除configmap一样:kubectl delete secret name1

4 基于配置文件创建secret

1.先把文件内容写在1个txt,然后使用kubectl指定创建

kubectl create secret generic service-secret --from-file=/etc/nginx/nginx.conf
基于环境变量引入secrets

1.声明式定义变量后,再创建pod使用变量,最后打印验证。

apiVersion: v1
kind: Secret
metadata:
  name: my-info
stringData:
  name: wenzhiyong
  age: "18"
  sex: man
  
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-sec-env
spec:
  replicas: 1
  selector:
    matchLabels:
      apps: xiuxian
  template:
    metadata:
      labels:
         apps: xiuxian
    spec:
       containers:
       - name: c1
         image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
         env: 
         - name: my_name
           valueFrom:
             secretKeyRef:
              name: my-info
              key: name

3.验证环境变量正确

[root@master23103-secret]# kubectl exec deploy-sec-env-5cf84b8f94-mz9h6 -- sh -c 'echo $my_name'
wenzhiyong
基于存储卷引入secrets资源

1.依赖于02-secrets-stringData.yaml

[root@master23107-secret]# cat 02-secrets-stringData.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: harborinfo
# 直接将value的值自定义字符串,可读性较强
stringData:
  username: admin
  password: "1"
  harbor_server: harbor.zhiyong18.com

2.编写资源清单

[root@master23107-secret]# cat 04-deploy-secrets-volumes.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-secret-volumes
spec:
  replicas: 1
  selector:
    matchExpressions:
    - key: apps
      values:
      - xiuxian
      operator: In
  template:
    metadata:
      labels:
         apps: xiuxian
    spec:
      volumes:
      - name: data
        # 指定存储卷类型为secret资源
        secret:
          # 指定secret的名称
          secretName: harborinfo
          # 用 items 指定要引用secret的 key 信息,若不指定则默认引用所有的KEY信息;这一点和configmap类似
          items:
          - key: username
            path: username.txt
          - key: password
            path: password.txt
      containers:
      - name: c1
        image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v3
        volumeMounts:
        - name: data
          mountPath: /zhiyong18-data

3.验证结果如下,进入pod,查看2个文件创建成功,内容和 secret 的内容一致

~ # cd /zhiyong18-data/

/zhiyong18-data # cat password.txt
1

/zhiyong18-data # cat username.txt 
admin
使用secret资源进行镜像仓库认证

1.基于响应式创建一个secret资源存储harbor的认证信息

kubectl create secret docker-registry harbor-admin \
--docker-username=admin \
--docker-password=1 \
--docker-email=admin@oldboyedu.com \
--docker-server=harbor.oldboyedu.com

[root@master231 secrets-harbor]# kubectl get secrets harbor-admin 
NAME           TYPE                             DATA   AGE
harbor-admin   kubernetes.io/dockerconfigjson   1      2m9s

在这里插入图片描述

2.引用secret资源进行harbor私有仓库认证

[root@master231 secrets-harbor]# cat 01-secrets-harbor.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-xiuxian
spec:
  replicas: 1
  selector:
    matchExpressions:
    - key: apps
      values:
      - xiuxian
      operator: In
  template:
    metadata:
      labels:
         apps: xiuxian
    spec:
      # 指定拉取私有仓库的认证信息
      imagePullSecrets:
        # 指定的是secret信息
      - name: harbor-admin
      containers:
      - name: c1
        image: harbor.oldboyedu.com/oldboyedu-linux/alpine:3.20.2
        stdin: true
        imagePullPolicy: IfNotPresent

3.实测可以成功拉取alpine镜像

基于声明式创建镜像仓库的secret

apiVersion: v1
kind: Secret
metadata:
  name: harbor
type: kubernetes.io/dockerconfigjson
stringData:
  .dockerconfigjson: |
    {
      "auths": {
        "harbor.zhiyong18.com": {
          "username": "admin",
          "password": "aa",
          "email": "wzy@wzy.com",
          "auth": "YWRtaW46YWE="
        }
      }
    }

http://www.kler.cn/a/420784.html

相关文章:

  • 力扣hot100道【贪心算法后续解题方法心得】(三)
  • Next.js 路由使用完整指南
  • MySQL常见面试题(二)
  • JavaWeb12
  • Vue根据Div内容的高度给其Div设置style height
  • elementUI el-image的使用
  • 基于Java Springboot传统戏曲推广微信小程序
  • 泷羽sec-burp功能介绍(1) 学习笔记
  • Python爬取机车网车型数据并存入Mysql数据库
  • 如何让控件始终处于父容器的居中位置(父容器可任意改变大小)
  • vue项目如何设置字体样式font-family,font-family在项目中不生效
  • linux perf安装问题解决
  • Python线程使用
  • linux arm下获取屏幕事件(rk3588)
  • 大模型开发和微调工具Llama-Factory-->训练方法(SFT, RLHF, DPO, KTO)
  • Android 编译和使用libheif
  • playwright 学习复仇记-2 Selector选择器定位元素
  • vmware虚拟机移植
  • 多线程 03 实现方式
  • 三维开发中blender建模后如何完美兼容到threejs
  • SAP HANA 上进行 ABAP 开发:简介
  • 设计模式 更新ing
  • 简单快速的上手python
  • node.js基础学习-zlib模块-压缩解压(八)
  • 护航开源大赛,赋能数字未来
  • Milvus python库 pymilvus 常用操作详解之Collection(上)