07-k8s中secret资源02-玩转secret

一、回顾secret资源的简单实用

第一步:将想要的数据信息【key:value】中的value值,使用base64编码后,写入secret资源清单中;

第二步:创建secret资源;

第三步:pod资源引用secret资源;

二、实战secret资源

1,第一步:将数据base64编码

root@k8s231 \~# echo xinjizhiwa | base64

eGluaml6aGl3YQo=

2,编辑secret资源清单

root@k8s231 secrets# vim secret.yaml

apiVersion: v1

kind: Secret

metadata:

name: secret-01

#用户自定义的任意数据类型;(还有别的类型。。。)

type: Opaque

data:

k8s: eGluaml6aGl3YQo=

3,创建secret资源

root@k8s231 secrets# kubectl apply -f secret.yaml

4,pod引用secret资源

· 编辑资源清单

root@k8s231 secrets# cat pod.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: secret-01

#声明使用secret资源中的那一个key

key: k8s


#vomlume方式引用

apiVersion: v1

kind: Pod

metadata:

name: pod-secret-02

spec:

#声明存储卷

volumes:

  • name: vol-secret

#声明存储卷的类型是secret

secret:

#指定secret资源的名称(使用哪个secret资源?)

secretName: secret-01

containers:

  • name: c2

image: nginx:1.24.0-alpine

volumeMounts:

  • name: vol-secret

#挂载到容器的哪个位置路径?

mountPath: /secret/

· 创建pod资源

root@k8s231 secrets# kubectl apply -f pod.yaml

5,进入容器查看是否引用成功

· env应用的pod容器

root@k8s231 secrets# kubectl exec pod-secret-01 -it -- sh

/ # env

k8s=xinjizhiwa

· volumes引用的pod容器

root@k8s231 secrets# kubectl exec pod-secret-02 -it -- sh

/ # cat /secret/k8s

xinjizhiwa

三、pod资源清单指定key引用secret

1,编辑pod资源清单

root@k8s231 secrets# cat pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: pod-secret-02

spec:

#声明存储卷

volumes:

  • name: vol-secret

#声明存储卷的类型是secret

secret:

#1,指定secret资源的名称(使用哪个secret资源?)

secretName: secret-01

#2,指定secret资源中要引用的key

items:

  • key: k8s

path: xjzw.log

containers:

  • name: c2

image: nginx:1.24.0-alpine

volumeMounts:

  • name: vol-secret

#挂载到容器的哪个位置路径?

mountPath: /secret/xjzw.log

#只挂在文件,不清空容器原有文件夹

subPath: xjzw.log

2,创建pod

root@k8s231 secrets# kubectl apply -f pod.yaml

3,进入pod查看

root@k8s231 secrets# kubectl exec pod-secret-02 -it -- sh

/ # ls /secret/

xjzw.log

/ # cat /secret/xjzw.log

xinjizhiwa

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

创建Docker harbor的secret信息:

因为,k8s拉取镜像与Docker拉取镜像是不同的方式,所以k8s需要创建一个属于自己的来气镜像的方式;

1>docker-registry:创建一个给Docker registry容器镜像仓库使用的secret

2>generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)

也就是资源清单中的type:Opaque是一个意思;

3>tls: 创建一个TLS secret

1,harbor创建私有仓库

harbor创建私有仓库

2,推送镜像到私有仓库

root@k8s233 \~# docker push harbor.xinjizhiwa.com/xinjizhiwa01/nginx:1.20.1-alpine

3,创建拉取镜像的secret资源

· 响应式创建secret资源

docker 拉取镜像的secret账号密码资源

root@k8s231 secrets# kubectl create secret docker-registry xinjizhiwa-harbor --docker-username=admin --docker-password=1 --docker-email=123@qq.com --docker-server=harbor.xinjizhiwa.com

4,创建pod引用拉取镜像的secret资源

root@k8s231 secrets# cat pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: pod-secret-02

spec:

#指定镜像拉取的secret资源(secret的拉取镜像类型);

imagePullSecrets:

  • name: xinjizhiwa-harbor

containers:

  • name: c3

image: harbor.xinjizhiwa.com/xinjizhiwa01/nginx:1.20.1-alpine

五、拓展,如何声明式创建docker registry类型的secret资源

1,【-o yaml】模仿系统声明式的写法

就是将已经创建好的docker registry资源方向使用yaml格式查看;

root@k8s231 secrets# kubectl get secrets xinjizhiwa-harbor -o yaml

apiVersion: v1

data:

.dockerconfigjson: eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19

kind: Secret

metadata:

creationTimestamp: "2024-02-14T05:08:30Z"

name: xinjizhiwa-harbor

namespace: default

resourceVersion: "597638"

uid: 33a3d025-047f-4d22-be5e-b92ed97b3310

type: kubernetes.io/dockerconfigjson

2,base64反向编译查看内容

root@k8s231 \~# echo eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19 | base64 -d

{"auths":{"harbor.xinjizhiwa.com":{"username":"admin","password":"1","email":"123@qq.com","auth":"YWRtaW46MQ=="}}}
root@k8s231 \~# echo YWRtaW46MQ== | base64 -d

admin:1

也就是说,dacker registy使用了两次base64的编码;

3,根据上述信息,自己编辑secret声明式资源清单

root@k8s231 \~# vim docker.yaml

apiVersion: v1

kind: Secret

metadata:

name: xinjizhiwa-harbor02

type: kubernetes.io/dockerconfigjson

data:

.dockerconfigjson: eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19

了解到:私有仓库的镜像拉取secret资源的使用即可;

#######################################################################3

编译过程:二次base64编译方向过程

root@k8s233 \~# echo -n eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19 |base64 -d

{"auths":{"harbor.xinjizhiwa.com":{"username":"admin","password":"1","email":"123@qq.com","auth":"YWRtaW46MQ=="}}}
root@k8s233 \~# echo -n YWRtaW46MQ== | base64 -d

admin:1
root@k8s233 \~# echo -n '{"auths":{"harbor.xinjizhiwa.com":{"username":"admin","password":"1","email":"123@qq.com","auth":"YWRtaW46MQ=="}}}' | base64

eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBh

c3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19

相关推荐
云烟成雨TD2 小时前
Kubernetes 系列【4】基础概念
云原生·容器·kubernetes
云烟成雨TD3 小时前
Kubernetes 系列【3】使用 kubeadm 创建 K8s 集群
云原生·容器·kubernetes
江畔柳前堤5 小时前
第13章:docker生产环境部署实战
运维·git·docker·容器·代码复审
潘正翔8 小时前
docker基础_镜像使用
linux·运维·服务器·docker·容器·centos·devops
江湖有缘8 小时前
Lunalytics部署指南:使用Docker快速搭建私有监控面板
运维·docker·容器
分布式存储与RustFS9 小时前
RustFS保姆级教程:Docker快速部署兼容S3的本地对象存储
运维·docker·容器·rustfs部署教程·本地搭建s3对象存储·rustfs网页控制台使用·awscli连接rustfs
江湖有缘9 小时前
Docker部署Papra极简文件归档平台
运维·docker·容器
艾文伯特10 小时前
k8s-1.35-centos7-安装文档
云原生·容器·kubernetes
qq_3494479510 小时前
十四、k8s集群安装kube-state-metrics 组件
docker·容器·kubernetes
AOwhisky10 小时前
Kubernetes(K8s)学习笔记(第十四期):集群存储与有状态应用(下篇):StatefulSet 有状态应用管理
redis·笔记·mysql·云原生·kubernetes·云计算·k8s