[CKS] Create/Read/Mount a Secret in K8S

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于读取、创建以及挂载secret的题目。

​ 专栏其他文章:

What's the Secret

详细介绍参见这篇官方介绍: https://v1-28.docs.kubernetes.io/docs/concepts/configuration/secret/

Question 1

Get the username data from the curly Secret in the larry namespace and save it to /home/cloud_user/username.txt on the CLI server.

Then, get the password data and save it to /home/cloud_user/password.txt on the CLI server.

这个题目就是要求我们读取username和password在larry命令空间下的curly secret资源下。并且将结果存在username.txt和password.txt文件中

Practice

在这里需要明确的是secret存储的内容是base64编码的,所以这儿第一步需要将base64的编码数据给获取到,我们可以使用下面的命令打印出该secret的详细内容

shell 复制代码
kubectl get secret curly -n larry -o yaml

这里我们将会获得如下结果

这里我们就知道了以下内容:

  • password的base64编码为:MTIzNDUK
  • username的base64编码为:YWRtaW4K

由此,现在我们就需要对这个base64进行解码,并存储在username.txt和password.txt文件中,我们可以使用以下两条命令完成

shell 复制代码
echo MTIzNDUK | base64 --decode > password.txt
echo YWRtaW4K | base64 --decode > username.txt

Question 2

Create a new secret in the larry namespace called moe.

Provide fields called username and password and store the following username and password credentials in the Secret:

username dbuser

password A83MaeKoz

Create a Pod called secret-pod in the larry namespace.

Mount the new Secret to /etc/credentials in the Pod's container.

这个题目要求我们创建一个moe的secret,里面需要存储username为dbuser,password为A83MaeKoz,然后创建一个secret-pod,将这个secret进行挂载在pod的/etc/credentials

Practice

刚才我们说了,secret里面存储的是base64编码的内容,所以第一步我们需要将这个明文的username和password进行一个base64的编码,可以使用如下两个命令:

shell 复制代码
echo dbuser | base64
# 结果为: ZGJ1c2VyCg==
echo A83MaeKoz | base64
# 结果为: QTgzTWFlS296Cg==

然后创建moe.yaml, 文件内容如下:

yaml 复制代码
apiVersion: v1
data:
 password: QTgzTWFlS296Cg==
 username: ZGJ1c2VyCg==
kind: Secret
metadata:
 name: moe
 namespace: larry
type: Opaque

使用下面的命令创建secret:

shell 复制代码
kubectl create -f moe.yaml

最后,修改并创建/home/cloud_user/secret-pod.yml对应的pod,修改的内容如下:

yml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: secret-pod
  namespace: larry
spec:
  volumes:
    - name: secret-volume
      secret:
        secretName: moe
  containers:
  - name: busybox
    image: busybox:1.33.1
    command: ['sh', '-c', 'cat /etc/credentials/username; cat /etc/credentials/password; while true; do sleep 5; done']
    volumeMounts:
    - name: secret-volume
      readOnly: true
      mountPath: /etc/credentials

最后使用kubectl create -f secret-pod.yml创建pod

验证

shell 复制代码
kubectl logs secret-pod -n larry

结果如下:

相关推荐
要开心吖ZSH9 分钟前
微服务架构的演进:迈向云原生
java·微服务·云原生
dyj09512 分钟前
Rancher Server + Kubernets搭建云原生集群平台
云原生·rancher
weixin_399380691 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
IT成长日记2 小时前
【Docker基础】Docker数据卷管理:docker volume ls及其参数详解
运维·docker·容器·volume ls
偷萧逸苦茶2 小时前
docker常见命令
docker·容器·eureka
慌糖10 小时前
微服务介绍
微服务·云原生·架构
高山莫衣16 小时前
Docker Desktop导致存储空间不足时的解决方案
docker·容器·eureka
鹏大师运维16 小时前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德
Ahlson16 小时前
【fnNAS】docker的nginx配置html
nginx·docker·容器·fnnas
LuckyLay16 小时前
Compose 常用命令详解——AI教你学Docker
docker·容器·eureka