一、secret
1、什么是secret?
- 这个类型主要就是存储密码或者一些隐私一些内容
- 主要就是保存这些东西的
- 值都是base64加密的
- 都是基于命名空间的
2、创建secret方式
1、命令行创建
- [root@k-master 8-2]# kubectl create secret --help
- Create a secret using specified subcommand.
- Available Commands:
- docker-registry Create a secret for use with a Docker registry
- generic Create a secret from a local file, directory, or literal value # 常用的
- tls Create a TLS secret
- Usage:
- kubectl create secret [flags] [options]
- Use "kubectl <command> --help" for more information about a given command.
- Use "kubectl options" for a list of global command-line options (applies to all commands).
- [root@k-master 8-2]# kubectl create secret generic --help
- # 这些有的是案例的
- [root@k-master 8-2]# kubectl create secret generic --help | grep from
- kubectl create secret generic my-secret --from-file=path/to/bar
- kubectl create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-file=ssh-publickey=path/to/id_rsa.pub
- kubectl create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret
- kubectl create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-literal=passphrase=topsecret
- # Create a new secret named my-secret from env files
- kubectl create secret generic my-secret --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env
- --from-env-file=[]: # 通过环境变量创建
- --from-file=[]: # 通过文件创建
- --from-literal=[]: # 键值对的方式
- kubectl create secret generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none] [options]
- [root@k-master 8-2]# kubectl create secret generic mysec1 --from-literal=name1=aaa1 --from-literal=name2=bbb2
- secret/mysec1 created
- # 上面创建了2个数据
- [root@k-master 8-2]# kubectl get secrets
- NAME TYPE DATA AGE
- mysec1 Opaque 2 3s
- [root@k-master 8-2]# kubectl describe secrets mysec1
- Name: mysec1
- Namespace: default
- Labels: <none>
- Annotations: <none>
- Type: Opaque # 基于base64密钥进行解密和加密
- Data
- ====
- name2: 4 bytes # 值默认是加密的
- name1: 4 bytes
复制代码- [root@k-master 8-2]# kubectl get secrets mysec1 -o yaml
- apiVersion: v1
- data:
- name1: YWFhMQ==
- name2: YmJiMg==
- kind: Secret
- metadata:
- creationTimestamp: "2025-08-02T07:00:20Z"
- name: mysec1
- namespace: default
- resourceVersion: "150234"
- uid: b89398bb-a512-41bf-9032-31d6e15e2fa0
- type: Opaque
- # 使用base64进行解密
- [root@k-master 8-2]# echo -n YWFhMQ== | base64 -d
- aaa1[root@k-master 8-2]#
复制代码 2、文件方式
- [root@k-master 8-2]# echo redhat > name3
- [root@k-master 8-2]# ls
- name3
- [root@k-master 8-2]# cat name3
- redhat
- [root@k-master 8-2]# kubectl create secret generic mysec2 --from-file=name3
复制代码 3、环境变量方式
- cat 1.txt
- name1=aaa1
- [root@k-master 8-2]# kubectl create secret generic mysec3 --from-env-file=1.txt
- secret/mysec3 created
复制代码 4、通过yaml文件生成
- # 通过查看命令帮助
- [root@k-master ~]# kubectl explain secret --recursive | less
- [root@k-master 8-2]# cat secret1.yaml
- apiVersion: v1
- kind: Secret
- metadata:
- name: mysec4
- data:
- name1: cXFxCg==
复制代码 3、使用secret方式
1、卷使用secret
- 将这个secret挂载到容器里面去即可
- 以卷的方式来挂载这个secret和confgimap的话,适用场景就是一些服务的配置文件
- 在pod里面存在的方式,文件名就是键
- [root@k-master 8-2]# cat pod1.yaml
- apiVersion: v1
- kind: Pod
- metadata:
- creationTimestamp: null
- labels:
- run: pod1
- name: pod1
- spec:
- containers:
- - image: nginx
- imagePullPolicy: IfNotPresent
- name: pod1
- volumeMounts: # 挂载到这个/mnt目录下
- - name: v1
- mountPath: /mnt
- volumes: # 使用secret作为卷
- - name: v1
- secret:
- secretName: mysec1
- # 将这个密钥写到这个文件里面去了
- # 文件名就是这个键,内容就是值
- # 在pod里面的存在的方式文件名就是键
- [root@k-master 8-2]# kubectl exec -ti pod1 -- ls /mnt
- name1 name2
复制代码 2、变量方式使用secret
- mysql运行时,需要环境变量,因此上面的文件不方便
- [root@k-master 8-2]# cat pod1.yaml
- apiVersion: v1
- kind: Pod
- metadata:
- creationTimestamp: null
- labels:
- run: pod1
- name: pod1
- spec:
- containers:
- - image: nginx
- imagePullPolicy: IfNotPresent
- name: pod1
- env:
- - name: env1 # 环境变量名
- valueFrom: # 这个值来自于这个secret
- secretKeyRef:
- name: mysec1
- key: name1 # 使用的键是这个name1,env1的值使用就是name1对应的值
- # 进入容器使用环境变量
- [root@k-master 8-2]# kubectl exec -ti pod1 -- /bin/bash
- root@pod1:/# echo $env1
- aaa1
复制代码- [root@k-master 8-2]# cat mysql.yaml
- apiVersion: v1
- kind: Pod
- metadata:
- creationTimestamp: null
- labels:
- run: mysql1
- name: mysql1
- spec:
- containers:
- - image: mysql
- imagePullPolicy: IfNotPresent
- name: mysql1
- ports:
- - containerPort: 3306
- env:
- - name: MYSQLROOT_PASSWORD # 环境变量键
- valueFrom:
- secretKeyRef:
- name: mysec1
- key: name1 # 使用的值就是name1键对应的值
- resources: {}
- dnsPolicy: ClusterFirst
- restartPolicy: Always
- status: {}
复制代码- [root@k-master 8-2]# kubectl get pod -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- mysql1 1/1 Running 0 84s 10.244.82.180 k-node1 <none> <none>
- pod1 1/1 Running 0 16m 10.244.82.172 k-node1 <none> <none>
- # 语法,-u 可以要空格可以不需要空格
- # 但是呢,这个密码的话不能有空格
- [root@k-master 8-2]# mysql -uroot -paaa1 -h 10.244.82.180
- Welcome to the MariaDB monitor. Commands end with ; or \g.
- Your MySQL connection id is 9
- Server version: 9.4.0 MySQL Community Server - GPL
- Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- MySQL [(none)]>
复制代码 二、configmap
1、什么是configmap
- 主要就是保存配置文件用的
- 明文的方式保存
- 跟上面secret的操作一模一样
2、创建configmap方式
1、命令行创建
- # 查看命令行帮助
- [root@k-master 8-2]# kubectl create configmap --help | grep -i from
- kubectl create configmap my-config --from-file=path/to/bar
- kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt
- kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
- # Create a new config map named my-config from the key=value pairs in the file
- kubectl create configmap my-config --from-file=path/to/bar
- # Create a new config map named my-config from an env file
- kubectl create configmap my-config --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env
- --from-env-file=[]:
- --from-file=[]:
- --from-literal=[]:
- kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none] [options]
- [root@k-master 8-2]# kubectl create configmap cm1 --from-literal=name1=qqq
- configmap/cm1 created
- [root@k-master 8-2]# kubc^C
- [root@k-master 8-2]# kubectl get cm
- NAME DATA AGE
- cm1 1 4s
- kube-root-ca.crt 1 13d
- [root@k-master 8-2]# kubectl describe cm cm1
- Name: cm1
- Namespace: default
- Labels: <none>
- Annotations: <none>
- Data
- ====
- name1: # 键
- ----
- qqq # 文件的内容
- BinaryData
- ====
- Events: <none>
复制代码 2、文件创建
- [root@k-master 8-2]# kubectl create configmap cm2 --from-file=name4
- configmap/cm2 created
- [root@k-master 8-2]# kubectl describe cm cm2
- Name: cm2
- Namespace: default
- Labels: <none>
- Annotations: <none>
- Data
- ====
- name4: # 键
- ----
- qqq # 文件的内容
- BinaryData
- ====
- Events: <none>
复制代码 3、环境变量和yaml创建
- [root@k-master 8-2]# kubectl create configmap cm3 --from-env-file=2.txt
- configmap/cm3 created
- [root@k-master 8-2]# kubectl get cmck^C
- [root@k-master 8-2]# kubectl describe cm cm3
- Name: cm3
- Namespace: default
- Labels: <none>
- Annotations: <none>
- Data
- ====
- name1:
- ----
- qqq
- BinaryData
- ====
- Events: <none>
复制代码- [root@k-master 8-2]# kubectl apply -f cm4.yaml
- configmap/cm4 created
- [root@k-master 8-2]# kubectl describe configmaps cm4
- Name: cm4
- Namespace: default
- Labels: <none>
- Annotations: <none>
- Data
- ====
- name1:
- ----
- qqq
- BinaryData
- ====
- Events: <none>
复制代码 3、使用configmap方式
1、通过卷的方式使用
- [root@k-master 8-2]# cat pod2.yaml
- apiVersion: v1
- kind: Pod
- metadata:
- creationTimestamp: null
- labels:
- run: pod2
- name: pod2
- spec:
- containers:
- - image: nginx
- imagePullPolicy: IfNotPresent
- name: pod2
- volumeMounts:
- - name: c1
- mountPath: /mnt
- resources: {}
- volumes:
- - name: c1
- configMap:
- name: cm4
- dnsPolicy: ClusterFirst
- restartPolicy: Always
- status: {}
- # 卷挂载的话,以键是文件的存在形式存在的
- [root@k-master 8-2]# kubectl exec -ti pod2 -- cat /mnt/name1
- qqq[root@k-master 8-2]#
复制代码 2、通过变量的方式使用
- [root@k-master 8-2]# cat pod2.yaml
- apiVersion: v1
- kind: Pod
- metadata:
- creationTimestamp: null
- labels:
- run: pod2
- name: pod2
- spec:
- containers:
- - image: nginx
- imagePullPolicy: IfNotPresent
- name: pod2
- resources: {}
- env:
- - name: env1 # 环境变量键
- valueFrom:
- configMapKeyRef: # 使用的值是configmap
- name: cm4
- key: name1 # 值是name1对应的值
- dnsPolicy: ClusterFirst
- restartPolicy: Always
- status: {}
- [root@k-master 8-2]# kubectl exec -ti pod2 -- /bin/bash
- root@pod2:/# echo $env1
- qqq
- root@pod2:/#
复制代码 三、实验
1、configmap配置nginx网页目录
[code][/code]
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除 |