首页 > 其他分享 >【K8s】专题五(4):Kubernetes 配置之 ConfigMap 与 Secret 使用

【K8s】专题五(4):Kubernetes 配置之 ConfigMap 与 Secret 使用

时间:2024-06-19 15:29:38浏览次数:21  
标签:ConfigMap name Kubernetes demo yaml Secret deployment spec metadata

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


目录

一、ConfigMap 使用方式

1、注入环境变量

2、挂载配置文件

二、Secret 使用方式

1、注入环境变量

2、设置镜像密钥

3、设置TLS凭据


一、ConfigMap 使用方式
1、注入环境变量
  • 方式一(指定)

在 deployment.yaml 的 env 部分,通过 configMapKeyRef 方式注入指定的环境变量。

# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-configmap
data:
  RUN_ENV: prod
  RUN_MODE: allinone
  ...

---
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-deployment
  template:
    metadata:
      labels:
        app: demo-deployment
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
        env:
        - name: RUN_ENV
          valueFrom:
            configMapKeyRef:
              name: demo-configmap
              key: RUN_ENV
        - name: RUN_MODE
          valueFrom:
            configMapKeyRef:
              name: demo-configmap
              key: RUN_MODE
  • 方式二

在 deployment.yaml 的 envFrom 部分,通过 configMapRef 方式注入所有环境变量。

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-deployment
  template:
    metadata:
      labels:
        app: demo-deployment
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
        envFrom:
        - configMapRef:
            name: demo-configmap

2、挂载配置文件

在 deployment.yaml 中,通过 volume 方式挂载为容器配置文件 /etc/config/conf_A 和 /etc/config/conf_B。

# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-configmap
data:
  conf_A: |
    host: hostA
    name: nameA
 
  conf_B: |
    host: hostB
    name: nameB

---
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-deployment
  template:
    metadata:
      labels:
        app: demo-deployment
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: conf
          mountPath: /etc/config
      volumes:
      - name: conf
        configMap:
          name: demo-configmap
          defaultMode: 420


二、Secret 使用方式
1、注入环境变量
  • 方式一

在 deployment.yaml 的 env 部分,通过 secretKeyRef 方式注入指定环境变量。

# secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: demo-secret
type: Opaque
data:
  password: MTIzNDU2Cg==
  ...

---
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-deployment
  template:
    metadata:
      labels:
        app: demo-deployment
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
        env:
        - name: password
          valueFrom:
            secretKeyRef:
              name: demo-secret
              key: password
  • 方式二

在 deployment.yaml 的 envFrom 部分,通过 secretRef 方式注入所有环境变量。

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-deployment
  template:
    metadata:
      labels:
        app: demo-deployment
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
        envFrom:
        - secretRef:
            name: demo-secret

2、设置镜像密钥

在 deployment.yaml 中,通过 imagePullSecrets 指定下载镜像所需的镜像仓库密钥。

# 创建 docker-registry 对象
kubectl create secret docker-registry demo-secret \
--docker-server=DOCKER_SERVER \
--docker-username=DOCKER_USER \
--docker-password=DOCKER_PASSWORD

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-deployment
  template:
    metadata:
      labels:
        app: demo-deployment
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
        imagePullSecrets:
          name: demo-secret

3、设置 TLS 凭据

在 ingress.yaml 中的 tls 部分,指定域名证书对应的 Secret 对象。

# 创建 TLS 对象
kubectl create secret tls demo-secret --cert=tls.crt --key=tls.key

# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-ingress
spec:
  rules:
...
  tls:
  - hosts:
    - demo.com
    secretName: demo-secret

说明:后续文章将详细介绍 ingress 对象

标签:ConfigMap,name,Kubernetes,demo,yaml,Secret,deployment,spec,metadata
From: https://blog.csdn.net/2401_82795112/article/details/139769262

相关文章

  • Kubernetes 1.18 部署 Traefik2.0
    Kubernetes1.18部署Traefik2.0参考资料:Traefik2.0官方文档:https://doc.traefik.io/traefik/v2.0/Kubernetes1.18.3部署Traefik2.0:https://www.cnblogs.com/heian99/p/14608414.html1.Traefik介绍traefik是一款反向代理、负载均衡服务,使用golang实现的。和n......
  • kubernetes部署dashboard
    kubernetes部署dashboard1.简介Dashboard是基于网页的Kubernetes用户界面。你可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。你可以使用Dashboard获取运行在集群中的应用的概览信息,也可以创建或者修改Kubernetes......
  • k8s的python客户端库--kubernetes
    简介Kubernetes是什么Kubernetes是一个全新的基于容器技术的分布式架构解决方案,是Google开源的一个容器集群管理系统,Kubernetes简称K8S。Kubernetes是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台,对现有的编程语言、编程框架、中间件没有任何侵入性。K......
  • 大数据Kubernetes(简称K8s):架构、应用与优化
    文章目录大数据Kubernetes(简称K8s):架构、应用与优化一、介绍Kubernetes的历史和演进初始阶段发展阶段演进阶段K8s的核心概念和设计理念核心概念设计理念二、K8s架构深入解析架构、应用与优化主要组件和节点类型1.控制平面(Master节点)2.工作节点(Worker节点)控制平面和......
  • 【K8s】专题五(3):Kubernetes 配置之 ConfigMap 与 Secret 异同
    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!目录一、相同点二、不同点一、相同点功能作用:ConfigMap与Secret都用于存储配置数据,以便Pod可以访问这些数据创建方式:ConfigMap与Secret都可以通过......
  • kubernetes部署dashboard
    kubernetes部署dashboard1.简介Dashboard是基于网页的Kubernetes用户界面。你可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。你可以使用Dashboard获取运行在集群中的应用的概览信息,也可以创建或者修改Kubernetes资源......
  • openEuler22.03(LTS-SP3)安装kubernetesV1.29
    一、环境配置主机配置角色系统版本IPmaster012核4GmasteropenEuler22.03(LTS-SP3)192.168.0.111master022核4GmasteropenEuler22.03(LTS-SP3)192.168.0.112master032核4GmasteropenEuler22.03(LTS-SP3)192.168.0.113worker012核4GworkeropenEu......
  • [隐私计算学习笔记]4——SecretFlow与SecretNote的安装部署
    目录1.SecretFlow介绍2.安装(亲测)2.1运行要求2.2安装方式2.2.1方式一:docker镜像2.2.2方式二:pypi2.2.3方式三:源码安装3.部署3.1前置知识——SecretFlow和Ray3.2 仿真模式——实现快速验证3.2.1单机仿真3.2.2集群仿真3.3 生产模式——实现安全生产4.关......
  • 使用Kube-Bench对Kubernetes进行安全检测
    使用Kube-Bench对Kubernetes进行安全检测1.工具介绍Kube-Bench是一个开源的Go语言工具,用于自动化检查Kubernetes集群是否符合CISKubernetes基准。这些基准包括一系列关于Kubernetes配置和部署安全性的建议和最佳实践。Kube-Bench执行了一系列针对Kubernetes组件(如kube-......
  • kubernetes-ingress-nginx-controller资源-用于管理和处理集群中的 Ingress 资源
    ingress-nginx-controller是一个常用的KubernetesIngress控制器,它基于NGINX实现,主要用于管理和处理集群中的Ingress资源。Ingress资源是Kubernetes中的一种网络入口资源,用于将外部流量路由到集群内部的服务ingress-nginx-controller的功能作用流量管理和路由#1、......