首页 > 其他分享 >K8S - 配置资源管理

K8S - 配置资源管理

时间:2024-03-07 17:22:06浏览次数:23  
标签:name cm -- 配置 secret Secret Pod K8S 资源管理

配置资源管理

ConfigMap资源(简称给cm)

用于保存配置文件,环境变量等不需要加密的信息。它可以实现将配置信息与应用程序解耦

 

 

 

 

kubectl run pod-demo --image=soscscs/myapp --port=80 --dry-run=client -o yaml > pod-demo.yaml

 

 

kubectl create cm cm-demo1 --from-file=./hanbao.txt --from-file=./index.html --from-literal=myname=hanbao

 

 

 

 

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: pod-demo1
  name: pod-demo1
spec:
  volumes:
  - name: vol-cm
    configMap:
      name: cm-demo1
  containers:
  - image: soscscs/myapp:v1
    name: pod-demo
    ports:
    - containerPort: 80
    volumeMounts:
    - name: vol-cm
      mountPath: /var/www/html
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

 

 

 #实现动态更新(热更新)

 

 

 

 

Pod 中使用 ConfigMap

 

 

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  special.how: very
  special.type: good
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: env-config
  namespace: default
data:
  log_level: INFO

 

 

 

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: busybox
    image: busybox:1.28.4
    command: [ "/bin/sh", "-c", "env" ]
    env:
      - name: SPECIAL_HOW_KEY
        valueFrom:
          configMapKeyRef:
            name: special-config
            key: special.how
      - name: SPECIAL_TYPE_KEY
        valueFrom:
          configMapKeyRef:
            name: special-config
            key: special.type
    envFrom:
      - configMapRef:
          name: env-config
  restartPolicy: Never

 

 

通过数据卷插件使用ConfigMap

在数据卷里面使用 ConfigMap,就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容

 

 

apiVersion: v1
kind: Pod
metadata:
  name: test-pod3
spec:
  containers:
  - name: busybox
    image: busybox:1.28.4
    command: [ "/bin/sh", "-c", "sleep 36000" ]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: special-config
  restartPolicy: Never

 

 

Secret

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

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 证书和私钥信息。

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

应用场景:凭据
https://kubernetes.io/docs/concepts/configuration/secret/

 

 

 

 

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

 

 

 

kubectl describe secret mysecret

 

内容用 base64 编码,创建Secret

echo -n zhangsan | base64

echo -n abc1234 | base64

 

 

 

apiVersion: v1
kind: Secret
metadata:
  name: mysecret1
type: Opaque
data:
  username: emhhbmdzYW4=
  password: YWJjMTIzNA==

 

 

 

 

使用方式 

将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下

 

 

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: secrets
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secrets
    secret:
      secretName: mysecret

 

 

 

将 Secret 导出到环境变量中

 

 

apiVersion: v1
kind: Pod
metadata:
  name: mypod1
spec:
  containers:
  - name: nginx
    image: nginx
    env:
      - name: TEST_USER
        valueFrom:
          secretKeyRef:
            name: mysecret1
            key: username
      - name: TEST_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret1
            key: password
    envFrom:
    - secretRef:
        name: mysecret1

 

 

 

 

总结

ConfigMap资源(简称给cm): #用于保存配置文件,环境变量等不需要加密的信息。它可以实现将配置信息与应用程序解耦
#创建cm资源
kubectl create cm <资源名称> --from-file=文件|目录 --from-literal=<键名>=<键值>
#查看cm资源数据
kubectl get -n <命名空间> cm <cm资源名称> -o yaml
kubectl describe -n <命名空间> cm <cm资源名称>

#使用cm资源
作为存储卷挂载的方式:
在Pod资源配置中spec.volumes字段设置configMap类型的卷
在容器配置中用volumeMounts将卷挂载到容器的指定的目录,cm资源数据的键名会作为文件名,cm资源数据的键值会作为文件内容(支持热更新)
在容器中用volumeMounts.subFath字段指定文件名,实现将卷挂载到容器中指定的文件上(不支持热更新)    --以文件形式挂载

作为容器环境变量方式(不支持热更新)
在容器配置中用env.name字段自定义容器的环境变量名,用env.valueFrom.configMapKeyRef.key/name字段指定环境变量的值从哪个cm资源的键获取
在容器配置中用envFrom.configMapRef.name字段指定cm资源的名称,使得cm资源数据的键名和键值直接作为容器的环境变量名和值


--------------------------------------
Secret资源  #用于保存密码文件、ssl证书/私钥文件、token令牌字符串、镜像私有仓库认证信息等需要加密的敏感信息
Secret的主要目的是将民昂数据与应用程序代码分离,提供一种安全的方式来存储和传递这些敏感数据给容器化的应用程序。它们已加密的形式保存,并且只能在需要时才能被解密和使用

#Secret的4种类型:
kubernetes.io/service-account-token: 当创建serviceaccount账户资源后K8S会自动创建同名的secert资源,用于Pod访问apiserver时会使用此Secret卷中的token做认证

Opaque: 默认的Secret资源类型,可以通过选项引用文件、目录、键值队的方式创建Secret资源,并且资源数据的键值会被自动转换为base64编码格式加密


kubernetes.io/dockerconfigjson: 用户存储K8S从Harbor等镜像私有仓库拉取镜像时做认证的信息


#创建Secret资源
kubectl create secret generic <资源名称> --from-file=文件|目录 --from-literal=<键名>=<键值>
kubectl create secret docker-registry secret-harbor -dockear-server=<私有仓库URL路径> --docker-username=<仓库用户名> --docker-pasword-<用户密码> --docker-email=<邮箱地址>
kubectl create secret tls<资源名称> --cert=证书文件 --key=私钥文件


#查看Secret资源(键值会以base64编码格式加密显示)
kubectl get -n <命名空间> secret <secret资源名称> -o yaml
kubectl describe -n <命名空间> secret <secret资源名称>



#使用Secret资源
作为存储卷挂载的方式:
在Pod资源配置中用spec.volumes字段设置secret类型的卷
在容器配置中用volumeMounts将卷挂载到容器的指定的目录,secret资源数据的键名会作为文件名,secret资源数据的键值会作为文件内容

#作为容器环境变量的方式:
在容器配置中用env.name字段自定义容器的环境变量名,用env.volueFrom.secretKeyRef.key/name字段指定环境变量的值从哪个Secret资源的键获取
在容器配置中用envFrom.secretRef.name字段指定secret资源的名称,使得secret资源数据的键名和键值直接作为容器的环境变量名和值

#Pod配置从私有仓库拉取镜像:
在Pod资源配置中用spec,imagePullsecrets.name字段指定kubernetes.io/dockerconfigjson类型的secret资源名称

 

标签:name,cm,--,配置,secret,Secret,Pod,K8S,资源管理
From: https://www.cnblogs.com/yanrui07/p/18059360

相关文章

  • 【VMware ESXi】如何在独立的ESXi主机上配置vTPM并安装Windows 11操作系统。
    根据微软发布的Windows11操作系统要求,这个版本的系统需要硬件支持受信任的平台模块(TPM)才能进行安装和使用,不然就会提示你“这台电脑无法运行Windows11。这台电脑不符合安装此版本的Windows所需的最低系统要求。有关详细信息,请访问https://aka.ms/WindowsSysReq”错误。关于受......
  • [转载]pip 下载安装时使用清华大学镜像(各种国内源配置)
    版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/sjjsaaaa/article/details/110096059————————————————清华镜像地址:https://pypi.tuna.tsinghua.edu.cn/simple例如:假设要安装numpy......
  • SpringBoot3+Consul配置,启动后,居然不读bootstrap.yml的配置文件,直接连本地localhost:8
    问题描述如题。bootstrap.yml的配置文件: consul控制台打印的日志: 解决方案:booststrap.yml的配置文件缩进搞错了,所以压根就没有读到配置。正确的缩进:  ......
  • SDI 通常指的是“System Deployment Image”,即系统部署映像。这是一个包含操作系统、
    SDI通常指的是“SystemDeploymentImage”,即系统部署映像。这是一个包含操作系统、应用程序和设置的映像文件,用于在多台计算机上进行相同配置的系统部署。如果您想要在Windows上读取用户的SDI文件,您可以按照以下步骤进行操作:使用DISM工具:Windows提供了一个名为DIS......
  • 如何配置云服务器IIS
    一:云服务系统配置 二:点击开始菜单,找到服务器管理器,进入后,点击管理菜单中的添加角色和功能。三:随后进入到安装向导,安装类型默认选择项。 四:服务器选择中一般只会有一台服务器,也就是本机。 五:然后进入到下一步,服务器角色按下图中的选择项进行选择。 六:全部勾选......
  • CH9126网口配置协议及说明
    目录1.CH9126简介及应用特点2.通信相关结构体定义3.通信流程解析3.1搜索设备3.2恢复出厂设置3.3获取设备配置3.4配置设备本文通过wireshark抓包分析了官方配套CH9126搜索上位机软件的底层通信,简单分析了搜索,恢复出厂,配置,获取配置这四个操作。1.CH9126---......
  • 如何部署极狐GitLab Runner Cache 缓存配置?
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。极狐GitLabRunnerCache缓存支持S3标准协议,如:OSS、OOS等等支持S3......
  • k8s集群安装nfs持久化存储
    k8s集群安装nfs-server服务下载并修改yamlmkdir-p/root/yaml/addons/nfscd/root/yaml/addons/nfswgethttps://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/example/nfs-provisioner/nfs-server.yaml修改yaml内容,添加namespace[root@ku......
  • typora一些奇妙的小配置
    typora一些奇妙的小配置目录typora一些奇妙的小配置点击在页面内跳转:锚点跳转悬浮跳转改变字体颜色打出表情(emoji)使用脚注YAMLfront-matter遇到问题遇到格式乱换行问题点击在页面内跳转:锚点跳转<aid="基本公式"></a>设置锚点<ahref="#基本公式">2-14,2-15</a>跳转到锚......
  • Vue调试神器vue-devtools配置 / 解决提示 Download the Vue Devtools extension for a
    访问Vue页面,控制台提示:    ......