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 小时前
Docker革命:软件开发的集装箱时代
docker·容器·eureka
勇往直前plus1 小时前
Docker 拉取镜像:SSL 拦截与国内镜像源失效问题解决
docker·容器·https·ssl
Serverless社区3 小时前
为什么别人用 DevPod 秒启 DeepSeek-OCR,你还在装环境?
阿里云·云原生·serverless
一枚正在学习的小白3 小时前
k8s的包管理工具helm3--流程控制语句和变量(3)
linux·运维·服务器·云原生·kubernetes
缘的猿5 小时前
kubectl 学习心得:从入门到实践的 K8s 命令行掌控之旅
云原生·容器·kubernetes
阿里云云原生5 小时前
用户说“App 卡死了”,你却查不到原因?可能是监控方式错了
云原生
老友@5 小时前
Docker 部署 Node.js + Playwright 项目,实现浏览器截图、打印和下载
docker·容器·node.js·playwright
2401_840192276 小时前
什么是ingress?
docker·容器·kubernetes
晚风 -8 小时前
idea中Docker一键自动化部署
docker·容器·自动化