kubernetes/k8s配置资源管理

发布时间:2024年01月16日

配置资源管理

Secret

Configmap*.1.2加入新特征 1.18

Secret:保存密码,token,敏感的k8s资源

这类数据可以存放在镜像当中,但是防止secret可以更方便的控制,减少暴漏风险。

保存加密的信息

Secret的类型:

docker-registry:存储docker仓库认证信息,以及docker组件的认证信息(私有的)

generic:是secret的默认模式,Opaque base64加密编码的secret.用户自定义的密码,密钥等等。

tls:TLS/SSL用于存储整数和私钥,https

系统自建的:kubernetes.io/service-account-token,用来访问apiserver,pod会默认使用这个kubernetes.io/service-account-token创建的secret和apiserver通信,自动挂载到pod的/run/secret/kubernetes.io/serviceaccount.

pod如何来引用secret

3种方式:

1、挂载的方式,secret挂载到pod当中的一个或者多个容器上的卷里面

2、把secret容器的环境变量

3、docker-registry可以作为集群拉取镜像时的使用。使用secret可以实现免密登录

创建:

kubectl create secret generic myscret --from-file=/opt/username.txt --from-file=/opt/passwd.txt #从指定文件种提取信息

generic默认类型,Opaque加密类型

--from-file=/opt/username.txt #从指定的文件获取信息

DATA:加密的信息

保存的是加密的内容,容器内部可以解密,可以直接引用

secret的三种方式:

可以陈述式创建,也可以声明式创建。

用的最多的引用方式:挂载方式

挂载使用 设定环境变量 docker-registry

ConfigMap:

保存的是不需要加密的信息。configmap是1.2之后引用的功能,应用程序会从这些配置文件,命令行参数,以及环境变量种读取信息

通过configmap再创建容器时,给他注入我们需要的配置信息。既可以单个的属性也可以是整个容器的配置文件。

整个nginx.conf传给容器

创建的方式两种

陈述式和声明式

陈述

kubectl create configmap game --from-file=/opt/configmap/wqb1.txt
从指定文件创建可以是一个也可以是多个

使用字面值创建

kubectl create configmap game --from-literal=wqb=123 --from-literal=ooo=avc

声明式

apiVersion: v1
kind: ConfigMap
metadata:
? name: game
data:
? ooo: kkk
? ffff1: fdf

数据卷使用configMap

1、我们通过数据卷形式,把配置文件传给了pod内部容器

2、config的热更新,再pod运行的情况下,对config的配置信息进行修改,直接生效(反应到容器当中)

3、configmap的热更新不会触发pod的滚动更新机制(deployment)

version/config来触发滚动更新机制

kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annottations": {"version/config": "20240116"}}}}}'

secret:主要作用是保存加密文件,只要的使用方式就是挂载方式

configMap:把配置信息传给容器,主要方式也是挂载方式

configMap的热更新:热更新可以直接反映到容器内部,也不会触发pod的更新机制,如果不是需要重启的配置,都可以直接生效

需要重启的,可以重启pod

所谓的更新就是把配置信息重新传到容器内,重启也是一样

configMap:就是把配置信息传给容器,键值对形式保存的,非加密的信息

比如:我想通过configMap实现挂载pod中的nginx.conf配置

mkdir nginx-configmap

创建一个nginx.conf文件

kubectl create configmap nginx-con --from-file=/opt/nginx-configmap/nginx.conf

创建yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx1
  labels:
    app: nginx1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx1
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      containers:
      - name: nginx1
        image: nginx:1.22
        ports:
        - containerPort: 8081
        volumeMounts:
          - name: nginx-config
            mountPath: /etc/nginx/
          - name: nginx-mount
            mountPath: /usr/share/nginx/html/
      volumes:
      - name: nginx-config
        configMap:
          name: nginx-con
      - name: nginx-mount
        hostPath:
          path: /opt/html/
          type: DirectoryOrCreate

kubectl apple -f nginx.yaml

404因为nginx的目录和yaml里的不一致

kubectl edit cm nginx-con

kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/confgi": "20240116"}}}}}'

文章来源:https://blog.csdn.net/m0_52416577/article/details/135623170
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。