做免费互动小游戏的网站,音乐网站开发需求文档模板,工信网站投诉系统,蓝色科技企业网站模板免费下载一、Secret secrets资源#xff0c;类似于configmap资源#xff0c;只是secrets资源是用来传递重要的信息的#xff1b; secret资源就是将value的值使用base64编译后传输#xff0c;当pod引用secret后#xff0c;k8s会自动将其base64的编码#xff0c;反编译回正常的字符…
一、Secret secrets资源类似于configmap资源只是secrets资源是用来传递重要的信息的 secret资源就是将value的值使用base64编译后传输当pod引用secret后k8s会自动将其base64的编码反编译回正常的字符串 Secret 用于保存机密数据的对象。一般由于保存密码、令牌或密钥等。 data字段用来存储 base64 编码数据。stringData存储未编码的字符串。Secret 意味着你不需要在应用程序代码中包含机密数据减少机密数据(如密码)泄露的风险。Secret 可以用作环境变量、命令行参数或者存储卷文件。
二、创建secrets资源
1.创建工作目录 [rootk8s1 k8s]# mkdir secrets [rootk8s1 k8s]# cd secrets/ 2.尝试使用base64进行编码 # 编码 [rootk8s1 secrets]# echo oslee | base64 b3NsZWUK # 解码 [rootk8s1 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: b3NsZWUKoslee: b3NsZWUK # 创建secret资源 [rootk8s1 secrets]# kubectl apply -f 01-secret.yaml secret/s1 created # 查看 [rootk8s1 secrets]# kubectl get secrets NAME TYPE DATA AGE default-token-xwhzs kubernetes.io/service-account-token 3 23h s1 Opaque 2 2m46s [rootk8s1 secrets]# kubectl describe secret s1 Name: s1 Namespace: default Labels: none Annotations: none Type: Opaque Data k8s: 6 bytes oslee: 6 bytes 4.响应式创建secret [rootk8s1 secrets]# kubectl create secret generic secret-02 --from-literalschoolos --from-literalclasslee docker-registry创建一个给Docker registry容器镜像仓库使用的secretgeneric 从本地file, directory或者literal value创建一个 secret这是大多数情况使用的也就是资源清单中的typeOpaque是一个意思tls 创建一个TLS secret 三、pod引用secret资源
1.pod资源env环境变量引用 # 创建pod资源 [rootk8s1 secrets]# cat pod.yaml apiVersion: v1
kind: Pod
metadata:name: m13
spec:containers:- image: nginx:1.20.1-alpinename: nginxenv: - name: secret-env01valueFrom:#声明引用sercetsecretKeyRef: #声明secret名称name: s1#声明secret的keykey: oslee- name: secret-env02valueFrom:secretKeyRef:name: secret-02key: class # 创建资源 [rootk8s1 secrets]# kubectl apply -f pod.yaml pod/m13 created # 登录pod资源查看env变量 [rootk8s1 secrets]# kubectl exec m13 -it -- sh / # env secret-env01oslee secret-env02lee 2.pod资源volume存储卷引用secret资源 # 编辑资源清单 [rootk8s1 secrets]# vi pod-env-volume.yaml #pod资源env环境变量方式引用secret
apiVersion: v1
kind: Pod
metadata:name: pod-secret-01
spec:containers:- name: c1image: nginx:1.20.1-alpineenv:- name: k8svalueFrom:#声明引用secret资源secretKeyRef: name: s1#声明使用secret资源中的那一个keykey: k8s---#vomlume方式引用
apiVersion: v1
kind: Pod
metadata:name: pod-secret-02
spec: #声明存储卷volumes:- name: vol-secret#声明存储卷的类型是secretsecret:#指定secret资源的名称(使用哪个secret资源)secretName: s1containers:- name: c2image: nginx:1.24.0-alpinevolumeMounts:- name: vol-secret#挂载到容器的哪个位置路径mountPath: /secret/ # 创建资源 [rootk8s1 secrets]# kubectl apply -f pod-env-volume.yaml pod/pod-secret-01 created pod/pod-secret-02 created # 查看挂载 [rootk8s1 secrets]# kubectl exec pod-secret-01 -it -- sh [rootk8s1 secrets]# kubectl exec pod-secret-02 -it -- sh 3.pod资源清单指定key引用secret [rootk8s1 secrets]# kubectl apply -f pod-path.yaml pod/pod-secret-03 created [rootk8s1 secrets]# cat pod-path.yaml apiVersion: v1
kind: Pod
metadata:name: pod-secret-03
spec: #声明存储卷volumes:- name: vol-secret#声明存储卷的类型是secretsecret:#1指定secret资源的名称(使用哪个secret资源)secretName: s1#2指定secret资源中要引用的keyitems: - key: k8spath: oslee.pathcontainers:- name: c2image: nginx:1.24.0-alpinevolumeMounts:- name: vol-secret#挂载到容器的哪个位置路径mountPath: /secret/oslee.path#只挂在文件不清空容器原有文件夹subPath: oslee.path # 进入pod查看 [rootk8s1 secrets]# kubectl exec -it pod-secret-03 -- sh 四、secret类型之-私有镜像仓库使用 docker-registry创建一个给Docker registry容器镜像仓库使用的secretgeneric 从本地file, directory或者literal value创建一个 secret这是大多数情况使用的也就是资源清单中的typeOpaque是一个意思tls 创建一个TLS secret 创建Docker harbor的secret信息 因为k8s拉取镜像与Docker拉取镜像是不同的方式所以k8s需要创建一个属于自己的拉取镜像的方式 1.harbor创建私有仓库 2.推送镜像到私有仓库 [rootk8s2 ~]# docker login harbor.oslee.com [rootk8s2 ~]# docker tag nginx:1.20.1-alpine harbor.oslee.com/oslee-private/nginx:1.20.1-alpine [rootk8s2 ~]# docker push harbor.oslee.com/oslee-private/nginx:1.20.1-alpine 3.响应式创建拉取镜像的secret资源 [rootk8s1 ~]# kubectl create secret docker-registry oslee-harbor --docker-usernameadmin --docker-passwordharbor123 --docker-emailosleeqq.com --docker-serverharbor.oslee.com secret/oslee-harbor created 4.创建pod引用拉取镜像的secret资源
[rootk8s1 secrets]# cat pod-harbor-secret.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-harbor-01
spec:#指定镜像拉取的secret资源secret的拉取镜像类型;imagePullSecrets:- name: oslee-harborcontainers:- name: c3image: harbor.oslee.com/oslee-private/nginx:1.20.1-alpine
5.声明式创建docker registry类型的secret资源
5.1.【-o yaml】模仿系统声明式的写法 [rootk8s1 secrets]# kubectl get secrets oslee-harbor -oyaml 5.2.base64解码查看内容 [rootk8s1 secrets]# echo eyJhdXRocyI6eyJoYXJib3Iub3NsZWUuY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6ImhhcmJvcjEyMyIsImVtYWlsIjoib3NsZWVAcXEuY29tIiwiYXV0aCI6IllXUnRhVzQ2YUdGeVltOXlNVEl6In19fQ | base64 -d {auths:{harbor.oslee.com:{username:admin,password:harbor123,email:osleeqq.com,auth:YWRtaW46aGFyYm9yMTIz}}}[rootk8s1 secrets]# [rootk8s1 secrets]# echo YWRtaW46aGFyYm9yMTIz | base64 -d admin:harbor123 5.3根据上述信息自己编辑secret声明式资源清单
[rootk8s1 secrets]# cat harbor-secret.yaml
apiVersion: v1
kind: Secret
metadata:name: oslee-harbor02
type: kubernetes.io/dockerconfigjson
data:.dockerconfigjson: eyJhdXRocyI6eyJoYXJib3Iub3NsZWUuY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6ImhhcmJvcjEyMyIsImVtYWlsIjoib3NsZWVAcXEuY29tIiwiYXV0aCI6IllXUnRhVzQ2YUdGeVltOXlNVEl6In19fQ[rootk8s1 secrets]# kubectl apply -f harbor-secret.yaml secret/oslee-harbor02 created [rootk8s1 secrets]# cat pod-harbor-secret.yaml apiVersion: v1 kind: Pod metadata: name: pod-harbor-01 spec: #指定镜像拉取的secret资源secret的拉取镜像类型; imagePullSecrets: - name: oslee-harbor02 containers: - name: c3 image: harbor.oslee.com/oslee-private/nginx:1.20.1-alpine [rootk8s1 secrets]# kubectl apply -f pod-harbor-secret.yaml pod/pod-harbor-01 created [rootk8s1 secrets]# kubectl get pod NAME READY STATUS RESTARTS AGE pod-harbor-01 1/1 Running 0 6s