zoukankan      html  css  js  c++  java
  • kubernetes Configmap secret的使用

    kubernetes configmap 核心作用是让配置信息和镜像解耦,pod可以使用configmap的数据生成配置文件。如果后端的pod配置文件要改变时,只需要更改下configmap里面的数据,让后会动态的改变pod容器里面的配置信息。

    configmap的数据是以键值的形式

    configMap 的使用

    第一步:创建configmap  

    kubectl create configmap nginx-conf --from-literal=NGINX_PORT=8080 --from-literal=SERVER_NAME=dingbin

    这里创建了2个数据,一个是NGINX_PORT=8080,一个是SERVER_NAME=dingbin

     显示创建的configmap

    pod如何引用configmap的数据,第一种是通过环境变量的方式来引用。看下面的yaml文件

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-cm
      namespace: default
      labels:
        app: myapp
        tier: frontend
    spec:
      containers:
      - name: myapp-cm
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80
        env:                     #这里开始是引用configmap
        - name: Nginx_PORT
          valueFrom:
            configMapKeyRef:
              name: nginx-conf    #这个是刚刚创建的configmap的名字
              key: NGINX_PORT     #这是configmap里面数据的键
        - name: NGINX_SERVERNAME
          valueFrom:
            configMapKeyRef:
              name: nginx-conf
              key: SERVER_NAME

    创建上面的pod,

    这种就是pod通过env来引用configmap里面的数据

    第二种方法是pod把configmap当作存储卷来挂载的方式

    新建一个nginx的虚拟主机的配置文件  vim nginx-server.conf

    重新创建一个configmap  ,这次是直接把这个文件当作键的值

    kubectl create configmap nginx-server --from-file=./nginx-server.conf

    pod 通过挂载的方式来引用configmap,yaml文件

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-cm2
      namespace: default
      labels:
        app: myapp
        tier: frontend
    spec:
      containers:
      - name: myapp-cm
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80
        volumeMounts:   #这里挂载
        - name: html   挂载的卷名
          mountPath: /etc/nginx/conf.d/   #挂载在容器的路径
          readOnly: true
      volumes:       #定义卷
      - name: html   #卷的名字
        configMap:  类型是configMap
          name: nginx-server   这里是刚创建configmap的名字

    创建pod

    在容器中创建 /data/web/html   ,新建一个index.html

    随便找一个节点,添加一个hosts解析

     

     如果配置发生变化,只需要更改configmap里的数据,会自动更新pod容易里面的配置文件,如下

    上图是容器里面的配置文件。

    注意,容器的配置文件是更改了,但是还是需要重新reload下nginx,否则nginx监听的端口是没有改变的

    kubernetes  secret 和configmap很像,不同的是secret是数据是私密的数据,会加密成base64的格式,比如一般密码,私钥等要用secret

    secret由三种类型,第一种是docker-registry 是专门给docker使用的,第二种是generic是通用型,比如你要存储密码可以使用,第三种是证书的私钥使用的

    创建个generic的测试下效果:

    创建好了,至于引用的方式和configmap一样,可以是env的方式,也可以是挂载的方式,

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-secret
      namespace: default
      labels:
        app: myapp
        tier: frontend
    spec:
      containers:
      - name: myapp-secret1
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80
        env:
        - name: MYSQL_PASSWOED
          valueFrom:
            secretKeyRef:
              name: mysql-password   #secret的名字
              key: password    #secret数据的键

    以上是configmap和secret的使用,不足之处希望大家可以指出!

  • 相关阅读:
    eclipse集成testng插件(离线安装方式+ 在线安装方式)
    javaw.exe in your current path的解决方法
    Java单元测试工具:JUnit4(四)——JUnit测试套件使用及参数化设置
    Java单元测试工具:JUnit4(三)——JUnit详解之运行流程及常用注解
    Java单元测试工具:JUnit4(二)——JUnit使用详解
    Java单元测试工具:JUnit4(一)——概述及简单例子
    MINA框架使用
    UDP/IP + NIO实现系统间通信
    UDP/IP+BIO/NIO/多播
    java分布式开发TCP/IP NIO无阻塞 Socket((基于消息方式实现系统间的通信) )
  • 原文地址:https://www.cnblogs.com/dingbin/p/9766641.html
Copyright © 2011-2022 走看看