kubernetes/k8s配置资源管理

配置资源管理

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"}}}}}'

相关推荐
武子康1 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
秋播2 天前
国内本地WSL2编译rancher源码
云原生
小猿姐3 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
阿里云云原生4 天前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
2601_961875244 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj4 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵4 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
正经教主4 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang4 天前
Docker 使用完整指南
运维·docker·容器
正经教主4 天前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器