6.k8s中的secrets资源-初识secret

目录

一、Secret

二、创建secrets资源

1.创建工作目录

2.尝试使用base64进行编码 

3.声明式创建secrets资源

4.响应式创建secret

三、pod引用secret资源

1.pod资源env环境变量引用

2.pod资源volume存储卷引用secret资源

 3.pod资源清单指定key引用secret

四、secret类型之-私有镜像仓库使用


一、Secret

secrets资源,类似于configmap资源,只是secrets资源是用来传递重要的信息的;

secret资源就是將value的值使用base64编译后传输,当pod引用secret后,k8s会自动将其base64的编码,反编译回正常的字符串;

  1. Secret 用于保存机密数据的对象。一般由于保存密码、令牌或密钥等。
    • data字段用来存储 base64 编码数据。
    • stringData存储未编码的字符串。
  2. Secret 意味着你不需要在应用程序代码中包含机密数据,减少机密数据(如密码)泄露的风险。
  3. Secret 可以用作环境变量、命令行参数或者存储卷文件。

二、创建secrets资源

1.创建工作目录

[root@k8s1 k8s]# mkdir secrets
[root@k8s1 k8s]# cd secrets/

2.尝试使用base64进行编码 

# 编码

[root@k8s1 secrets]# echo oslee | base64
b3NsZWUK

# 解码

[root@k8s1 secrets]# echo b3NsZWUK | base64 -d
oslee

3.声明式创建secrets资源

# 编辑secrets资源清单

vi 01-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: s1

#用户自定义的类型(Opaque为自定义类型;generic为)
type: Opaque
data: 
  k8s: b3NsZWUK
  oslee: b3NsZWUK

# 创建secret资源

[root@k8s1 secrets]#  kubectl apply -f 01-secret.yaml
secret/s1 created

# 查看

[root@k8s1 secrets]# kubectl get secrets
NAME                  TYPE                                  DATA   AGE
default-token-xwhzs   kubernetes.io/service-account-token   3      23h
s1                    Opaque                                2      2m46s
[root@k8s1 secrets]# kubectl describe secret s1
Name:         s1
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
k8s:    6 bytes
oslee:  6 bytes

4.响应式创建secret

[root@k8s1 secrets]# kubectl create secret generic secret-02 --from-literal=school=os --from-literal=class=lee

  1. docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
  2. generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)也就是资源清单中的type:Opaque是一个意思;
  3. tls: 创建一个TLS secret

三、pod引用secret资源

1.pod资源env环境变量引用

# 创建pod资源

[root@k8s1 secrets]# cat pod.yaml  

apiVersion: v1
kind: Pod
metadata:
  name: m13
spec:
  containers:
  - image: nginx:1.20.1-alpine
    name: nginx
    env: 
    - name: secret-env01
      valueFrom:
        #声明引用sercet
        secretKeyRef: 
          #声明secret名称
          name: s1
          #声明secret的key
          key: oslee
    - name: secret-env02
      valueFrom:
        secretKeyRef:
          name: secret-02
          key: class

# 创建资源

[root@k8s1 secrets]# kubectl apply -f pod.yaml 
pod/m13 created 

# 登录pod资源查看env变量

[root@k8s1 secrets]# kubectl exec m13 -it -- sh
/ # env

secret-env01=oslee

secret-env02=lee

2.pod资源volume存储卷引用secret资源

 # 编辑资源清单

[root@k8s1 secrets]# vi pod-env-volume.yaml 

#pod资源env环境变量方式引用secret
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-01
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    env:
    - name: k8s
      valueFrom:
        #声明引用secret资源
        secretKeyRef: 
          name: s1
          #声明使用secret资源中的那一个key
          key: k8s

---

#vomlume方式引用
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-02
spec: 
  #声明存储卷
  volumes:
  - name: vol-secret
    #声明存储卷的类型是secret
    secret:
      #指定secret资源的名称(使用哪个secret资源?)
      secretName: s1
  containers:
  - name: c2
    image: nginx:1.24.0-alpine
    volumeMounts:
    - name: vol-secret
      #挂载到容器的哪个位置路径
      mountPath: /secret/

# 创建资源

[root@k8s1 secrets]# kubectl apply -f pod-env-volume.yaml 
pod/pod-secret-01 created
pod/pod-secret-02 created

# 查看挂载

[root@k8s1 secrets]# kubectl exec pod-secret-01 -it -- sh

[root@k8s1 secrets]# kubectl exec pod-secret-02 -it -- sh

 3.pod资源清单指定key引用secret

[root@k8s1 secrets]# kubectl apply -f pod-path.yaml 
pod/pod-secret-03 created
[root@k8s1 secrets]# cat pod-path.yaml 

apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-03
spec: 
  #声明存储卷
  volumes:
  - name: vol-secret
    #声明存储卷的类型是secret
    secret:
      #1,指定secret资源的名称(使用哪个secret资源?)
      secretName: s1
      #2,指定secret资源中要引用的key
      items: 
      - key: k8s
        path: oslee.path
  containers:
  - name: c2
    image: nginx:1.24.0-alpine
    volumeMounts:
    - name: vol-secret
      #挂载到容器的哪个位置路径?
      mountPath: /secret/oslee.path
      #只挂在文件,不清空容器原有文件夹
      subPath: oslee.path

# 进入pod查看

[root@k8s1 secrets]# kubectl exec -it pod-secret-03 -- sh 

四、secret类型之-私有镜像仓库使用

  1. docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
  2. generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)也就是资源清单中的type:Opaque是一个意思;
  3. tls: 创建一个TLS secret

kubectl create secret docker-registry oslee-harbor --docker-username=admin --docker-password=123 --docker-email=123@qq.com --docker-server=harbor.oslee.com 

相关推荐

  1. 6.k8ssecrets资源-secret

    2024-05-02 08:34:01       10 阅读
  2. 查看k8ssecret

    2024-05-02 08:34:01       15 阅读
  3. k8s-sercret

    2024-05-02 08:34:01       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-02 08:34:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-02 08:34:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-02 08:34:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-02 08:34:01       18 阅读

热门阅读

  1. Edge的使用心得与深度探索

    2024-05-02 08:34:01       10 阅读
  2. 大数据组件之Storm简介

    2024-05-02 08:34:01       15 阅读
  3. 嵌入式Linux编辑器vi

    2024-05-02 08:34:01       10 阅读
  4. 关于PostgreSQL的20道面试题

    2024-05-02 08:34:01       11 阅读
  5. 陪同口译VR情景实训教学系统开发

    2024-05-02 08:34:01       11 阅读
  6. 蓝桥杯练习系统(算法训练)ALGO-952 简易编辑器

    2024-05-02 08:34:01       9 阅读
  7. Podman相比Docker在轻量级部署上的优势是什么?

    2024-05-02 08:34:01       13 阅读
  8. 【leetcode】链表反转题目总结

    2024-05-02 08:34:01       13 阅读
  9. Leetcode 225. Implement Stack using Queues

    2024-05-02 08:34:01       9 阅读
  10. 从事人工智能AI工作需要哪些关键技能?

    2024-05-02 08:34:01       11 阅读