k8s 配置资源管理

一、Secret的资源配置

1.1 Secret配置的相关说明

        Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。

有四种类型:

kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中;
Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。
kubernetes.io/tls:用于存储TLS证书和私钥,通常用于Ingress控制器或其他需要TLS加密通信的服务。

Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret
●作为挂载到一个或多个容器上的卷 中的文件。
●作为容器的环境变量。
●由 kubelet 在为 Pod 拉取镜像时使用。

应用场景:凭据  Secret | Kubernetes

1.2 陈述式创建 Secret配置

        Secret 的创建是根据文件中保存到相应信息 进行。例如我们要通过一个用户名文件和密码文件来创建具体的Secret资源配置。

#首先准备好相对应的用户和密码文件
#echo 中 “-n” 选项为不换行
echo -n 'limahua' > username.txt
echo -n 'qq666' > passwd.txt

用kubectl create secret命令创建Secret

kubectl create secret generic mysecret --from-file=username.txt --from-file=passwd.txt

kubectl describe secrets mysecret

1.3 声明式 + base64编码 创建Secret

echo limahua | base64

echo qq666 | base64
通过管道符base64 将明文进行转码

编写yaml文件
vim secret01.yaml

apiVersion: v1
kind: Secret                #表明资源的类型为Secret,用于存储敏感信息
metadata:
  name: my-secret1
type: Opaque                 # base64 进行转码信息保护
data:                        #定义secret的配置信息
  username: bGltYWh1YQo=     #Base64编码后的用户名
  password: cXE2NjYK         #Base64编码后的密码


kubectl apply -f secret01.yaml

1.4 将secret 以volume形式挂载到pod中

创建一个pod模板,对其进行修改编辑
kubectl run nginx-secret --image=nginx:1.18 --port=80 --dry-run=client -o yaml > ng-secret.yaml

vim ng-secret.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: nginx-secret
  name: nginx-secret
spec:
  containers:
  - image: nginx:1.18
    name: nginx-secret
    ports:
    - containerPort: 80
    volumeMounts:
    - name: secrets                 #引用一个卷(volume)的名称,该卷在此容器内挂载
      mountPath: "/etc/secret"      #指定容器内挂载的路径
      readOnly: true                #只读
  volumes:
  - name: secrets                   #卷的名称,与上述容器中引用的卷名对应
    secret:
      secretName: mysecret          #指定了此卷的数据来源是一个名为mysecret的Secret对象


Kubernetes会自动将mysecret Secret中的数据挂载到指定的/etc/secret路径下,
所有数据都是以文件形式存在且根据Secret的原始内容Base64解码。

kubectl apply -f ng-secret.yaml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值