首页 > 其他分享 >k8s配置存储(ConfigMap、Secret)

k8s配置存储(ConfigMap、Secret)

时间:2022-12-05 15:49:18浏览次数:42  
标签:ConfigMap configmap secret Secret master kubectl pod k8s root

配置存储

ConfigMap

ConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。

创建configmap.yaml,内容如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap
  namespace: dev
data:
  info: |                  #这个|表示下面的参数信息都是info的
    username:admin
    password:123456

接下来,使用此配置文件创建configmap

# 创建configmap
[root@master ~]# kubectl create -f configmap.yaml

# 查看configmap详情
[root@master ~]# kubectl describe cm configmap -n dev

接下来创建一个pod-configmap.yaml,将上面创建的configmap挂载进去

apiVersion: v1
kind: Pod
metadata:
  name: pod-configmap
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    volumeMounts: # 将configmap挂载到目录
    - name: config
      mountPath: /configmap/config
  volumes: # 引用configmap
  - name: config
    configMap:
      name: configmap      #名字要和上面的相同

创建并查看

# 创建pod
[root@master ~]# kubectl create -f pod-configmap.yaml

# 查看pod
[root@master ~]# kubectl get pod pod-configmap -n dev

#进入容器
[root@master ~]# kubectl exec -it pod-configmap -n dev -- bash
root@pod-configmap:/# ls /configmap/config
root@pod-configmap:/# cat /configmap/config/info

# 可以看到映射已经成功,每个configmap都映射成了一个目录
# key--->文件      value---->文件中的内容
# 此时如果更新configmap的内容, 容器中的值也会动态更新
测试动态更新
#修改密码为666666
[root@master ~]# kubectl edit cm configmap -n dev

再次查看内容(同步数据需要点时间)
[root@master ~]# kubectl exec -it pod-configmap -n dev -- cat /configmap/config/info

注:使用kubectl create configmap 命令可直接生成一个configmap
kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]

kubectl create configmap nginx-conf --from-file=/var/webconf/nginx.conf

也可使用--dry-run生成yaml文件
也可自己vim创建一个yaml文件,使用:r/配置文件路径(如 :r /var/webconf/ nginx.conf)
将配置文件的内容导入,然后调整格式间距即可

Secret

在kubernetes中,还存在一种和ConfigMap非常类似的对象,称为Secret对象。它主要用于存储敏感信息,例如密码、秘钥、证书等等。

1) 首先使用base64对数据进行编码

注:base64非常容易被破解,防君子而已

[root@master ~]# echo -n 'admin' | base64 #准备username
YWRtaW4=

[root@master ~]# echo -n '123456' | base64 #准备password
MTIzNDU2

2) 接下来编写secret.yaml,并创建Secret

apiVersion: v1
kind: Secret
metadata:
  name: secret
  namespace: dev
type: Opaque
data:
  username: YWRtaW4=
  password: MTIzNDU2

创建并查看

# 创建secret
[root@master ~]# kubectl create -f secret.yaml

# 查看secret详情
[root@master ~]# kubectl describe secret secret -n dev

3) 创建pod-secret.yaml,将上面创建的secret挂载进去:

apiVersion: v1
kind: Pod
metadata:
  name: pod-secret
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    volumeMounts: # 将secret挂载到目录
    - name: config
      mountPath: /secret/config
  volumes:
  - name: config
    secret:
      secretName: secret

创建并查看

# 创建pod
[root@master ~]# kubectl create -f pod-secret.yaml

# 查看pod
[root@master ~]# kubectl get pod pod-secret -n dev

# 进入容器,查看secret信息,发现已经自动解码了
[root@master ~]# kubectl exec -it pod-secret -n dev -- bash
root@pod-secret:/# ls /secret/config/
root@pod-secret:/# cat /secret/config/password
root@pod-secret:/# cat /secret/config/username

至此,已经实现了利用secret实现了信息的编码。

参考

黑马B站k8s课程https://www.bilibili.com/video/BV1Qv41167ck/
https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
https://www.yuque.com/fairy-era/yg511q/xyqxge

标签:ConfigMap,configmap,secret,Secret,master,kubectl,pod,k8s,root
From: https://www.cnblogs.com/gys001/p/16951975.html

相关文章

  • Kubernetes(K8S) helm chart
    感觉和放到一个yaml文件中,用----分隔,操作繁琐程度上,没有太大区别创建自定义Chart#创建自定义的chart名为mychart[root@k8smaster~]#helmcreatemychartCre......
  • k8s-nfs
    nfs.servernfs服务器helmrepoaddnfs-subdir-external-provisionerhttps://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/helminstallnfs-subdir......
  • 批处理及有状态等应用类型在 K8S 上应该如何配置?
    众所周知,Kubernetes(K8S)更适合运行无状态应用,但是除了无状态应用.我们还会有很多其他应用类型,如:有状态应用,批处理,监控代理(每台主机上都得跑),更复杂的应用......
  • K8S核心技术
    一、命令行工具Kubectlkubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署1、基本语法kubectl[co......
  • [k8s] 删除Terminating状态的namespace
    ns=ingress-nginxkubectlgetnamespace$ns-ojson>tmp.jsonkubectlproxy--port=8081另起一个连接curl-k-H"Content-Type:application/json"-XPUT--data......
  • Kubernetes(K8S) helm 安装
    Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。Helm有3个重要概念:helm......
  • K8S-service介绍
    Service介绍在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。为了解......
  • k8s高级存储(PV、PVC)
    高级存储前面已经学习了使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏......
  • Kubeadm高可用安装k8s集群-补充说明
    1.1k8s1.24管理用户无token处理1.24版本及以上关闭了自动生成admin-user-token的配置[root@k8s-master01dashboard]#kubectl-nkube-systemgetsecret|grepadmi......
  • k8s源码分析7-API核心服务Authorization的认证及鉴权
    一、Authentication认证本节重点总结:Authentication的目的Kubernetes使用身份认证插件利用下面的策略来认证API请求的身份客户端证书持有者令牌(BearerToke......