首页 > 其他分享 >ConfigMap

ConfigMap

时间:2022-12-06 21:45:35浏览次数:36  
标签:ConfigMap name deploy configmap nginx config

12. ConfigMap

可以通过卷的方式挂载传递配置文信息 或者可以通过环境变量来传递信息

  • 概述
一般用ConfigMap去管理一些配置文件、或者一些大量的环境变量信息。

ConfigMap 将配置和Pod分开,有一个nginx、nginx.conf -》 configmap nginx
更易于配置文件的更改和管理

ConfigMap配置信息和镜像解耦,实现方式为将配置信息放到ConfigMap对象中,然后在pod的中作为Volume挂载到pod中,从而实现导入配置的目的
  • 使用场景
通过ConfigMap给pod定义全局环境变量
通过ConfigMap给pod传递命令行参数,如mysql -u -p中的账户密码可以通过ConfigMap传递
通过ConfigMap给pod中的容器提供配置文件,配置文件以挂载到容器的形式使用
  • 注意事项
ConfigMap需要在pod使用它之前创建
pod只能使用位于同一个namespace的ConfigMap,及ConfigMap不能夸ConfigMap使用
通常用于非安全加密的配置场景
ConfigMap通常是小于1MB的配置

12.1 使用

#下载官方模板
wget https://kubernetes.io/examples/configmap/ui.properties -O ../configmap/ui.properties

wget --no-check-certificate https://kubernetes.io/examples/configmap/game.properties -O ../configmap/game.properties

#创建cm
[root@master01 configmap]# kubectl create configmap game-config --from-file=../configmap/
configmap/game-config created

  • 查看文件内容
[root@master01 configmap]# kubectl describe cm
Name:         game-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice

Events:  <none>

  • 导出文件形式
[root@master01 configmap]# kubectl get  cm game-config-2 -o yaml
apiVersion: v1
data:
  game.properties: |-
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30
kind: ConfigMap
metadata:
  creationTimestamp: "2022-11-08T14:27:20Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:game.properties: {}
    manager: kubectl-create
    operation: Update
    time: "2022-11-08T14:27:20Z"
  name: game-config-2
  namespace: default
  resourceVersion: "211077"
  selfLink: /api/v1/namespaces/default/configmaps/game-config-2
  uid: 36b3a9f3-8427-4eb9-aedf-bf95abe645e1

12.2 数据卷挂载

  • 数据卷的方式挂载
root@deploy-harbor:~/20220731/k8s-Resource-N70/case10-configmap# cat 1-deploy_configmap.yml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
 default: |
    server {
       listen       80;
       server_name  www.mysite.com;
       index        index.html index.php index.htm;

       location / {
           root /data/nginx/html;
           if (!-e $request_filename) {
               rewrite ^/(.*) /index.html last;
           }
       }
    }


---
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ng-deploy-80
  template:
    metadata:
      labels:
        app: ng-deploy-80
    spec:
      containers:
      - name: ng-deploy-80
        image: nginx:1.20.0
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath:  /etc/nginx/conf.d
        - name: nginx-static-dir
          mountPath: /data/nginx/html
      volumes:
      - name: nginx-static-dir
        hostPath:
          path: /data/nginx
      - name: nginx-config
        configMap:
          name: nginx-config
          items:
             - key: default
               path: mysite.conf

---
apiVersion: v1
kind: Service
metadata:
  name: ng-deploy-80
spec:
  ports:
  - name: http
    port: 81
    targetPort: 80
    nodePort: 30019
    protocol: TCP
  type: NodePort
  selector:
    app: ng-deploy-80
  • 显示
root@deploy-harbor:~/20220731/k8s-Resource-N70/case10-configmap# kubectl describe configmaps nginx-config 
Name:         nginx-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
default:
----
server {
   listen       80;
   server_name  www.mysite.com;
   index        index.html index.php index.htm;

   location / {
       root /data/nginx/html;
       if (!-e $request_filename) {
           rewrite ^/(.*) /index.html last;
       }
   }
}


BinaryData
====

Events:  <none>

12.3 环境变量传递

  • 通过环境变量传递 容器里直接查看env即可
root@deploy-harbor:~/20220731/k8s-Resource-N70/case10-configmap# cat 2-deploy_configmap_env.yml 
apiVersion: v1
kind: ConfigMap

metadata:
  name: nginx-config
data:
  username: "user1"
  password: "12345678"


---
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ng-deploy-80
  template:
    metadata:
      labels:
        app: ng-deploy-80
    spec:
      containers:
      - name: ng-deploy-80
        image: nginx 
        env:
        - name: MY_USERNAME
          valueFrom:
            configMapKeyRef:
              name: nginx-config
              key: username
        - name: MY_PASSWORD
          valueFrom:
            configMapKeyRef:
              name: nginx-config
              key: password
        ######是可以选择其中一个即可 上面是通过变量传递值 下面是直接使用变量传递值###
        - name: "password"
          value: "123456"
        ports:
        - containerPort: 80

标签:ConfigMap,name,deploy,configmap,nginx,config
From: https://www.cnblogs.com/yidadasre/p/16960648.html

相关文章

  • k8s配置存储(ConfigMap、Secret)
    配置存储ConfigMapConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。创建configmap.yaml,内容如下:apiVersion:v1kind:ConfigMapmetadata:nam......
  • ConfigMap/Secret:怎样配置、定制应用(chrono《kubernetes入门实战课》笔记整理)
     【概念说明】Kubernetes里专门用来管理配置信息的两种对象:ConfigMap和Secret,使用它们来灵活地配置、定制我们的应用。配置根据数据安全划分,分为两种:明文配置:不加密......
  • Kubernetes(K8S) 配置管理-ConfigMap 介绍
    作用:存储不加密数据到etcd,让Pod以变量或者Volume挂载到容器中场景:配置文件创建配置文件创建ConfigMap#根据redis.properties创建redis-config[root@k8sma......
  • K8s configmap Secrets 更新滚动更新pod
    K8sconfigmapSecrets更新滚动更新podReloaderpatch一、k8s使用Reloader实现更新configmap后自动重启podGitHub-stakater/Reloader在日常使用kubernetes......
  • 8-1 configmap
    configmapConfigMap是一种API对象,用来将非机密性的数据保存到键值对中。使用时,Pods可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMaP将环境配置......
  • 配置容器应用ConfigMap
    ConfigMap和Secret是kubernetes系统上两种特殊类型的存储卷,ConfigMap对象用于为容器中的应用提供配置数据以定制程序的行为,不过敏感的配置信息,如密钥、证书等通常由Sec......
  • k8s部署canal-server使用configMap挂载方式报Read Only file System
    k8s部署canal-server使用configMap挂载方式报ReadOnlyfileSystem1.1、问题复现由于部署canal-server时,需要修改主库master的数据库连接信息以及配置zookeeper,所以为了......
  • k8s中配置存储ConfigMap和Secret
    ConfigMapConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。Secret在kubernetes中,还存在一种和ConfigMap非常类似的对象,称为Secret对象。它主要用......
  • 若依 微服务部署 Invalid bound statement (not found): com.ruoyi.system.mapper.Sys
     运行 ruoyi-auth和ruoyi-gateway都可以启动。但是,ruoyi-system不行报错:Causedby:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanw......