Kubernetes ConfigMap - Secret - 使用ConfigMap来配置 Redis

这篇具有很好参考价值的文章主要介绍了Kubernetes ConfigMap - Secret - 使用ConfigMap来配置 Redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

ConfigMap :

参考文档:k8s -- ConfigMap - 简书 (jianshu.com)    K8S ConfigMap使用 - 知乎 (zhihu.com)

ConfigMap的作用类型:

可以作为卷的数据来源:使用 ConfigMap 来配置 Redis | Kubernetes

可以基于文件创建 ConfigMap:配置 Pod 使用 ConfigMap | Kubernetes

可以基于目录创建 ConfigMap:配置 Pod 使用 ConfigMap | Kubernetes

为什么需要使用ConfigMap呢?

使用 ConfigMap 来配置 Redis

参考网址:使用 ConfigMap 来配置 Redis | Kubernetes

配置拓扑图:

步骤:

nginx配置文件投射:(ConfigMap 基于文件创造)

Secret

参考文档:Secret | Kubernetes

例子:使用 Secret 安全地分发凭证:使用 Secret 安全地分发凭证 | Kubernetes


ConfigMap :

ConfigMap理解为一个容器,存放数据的地方,里面存放键值对的数据或者是文件类型,里面存放的数据是明文的,不是加密

ConfigMap顾名思义,是用于保存配置数据的键值对,可以用来保存单个属性,也可以保存配置文件。Secret可以为Pod提供密码、Token、私钥等敏感数据;对于一些非敏感数据,比如应用的配置信息,则可以使用ConfigMap。

Secret理解为一个容器,存放数据的地方,在内存里,里面存放敏感的数据,例如密码,密钥,token等,需要进行加密,数据可以是键值对或者文件

参考文档:k8s -- ConfigMap - 简书 (jianshu.com)    K8S ConfigMap使用 - 知乎 (zhihu.com)

ConfigMap的作用类型:

可以作为卷的数据来源:使用 ConfigMap 来配置 Redis | Kubernetes

可以基于文件创建 ConfigMap:配置 Pod 使用 ConfigMap | Kubernetes

可以基于目录创建 ConfigMap:配置 Pod 使用 ConfigMap | Kubernetes

kubectl create configmap game-config --from-file=configure-pod-container/configmap/

为什么需要使用ConfigMap呢?

使用k8s部署应用,当你将应用配置写进代码中,就会存在一个问题,更新配置时也需要打包镜像,configmap可以将配置信息和docker镜像解耦。
使用微服务架构的话,存在多个服务共用配置的情况,如果每个服务中单独一份配置的话,那么更新配置就很麻烦,使用configmap可以友好的进行配置共享。
其次,configmap可以用来保存单个属性,也可以用来保存配置文件。

Kubernetes ConfigMap - Secret - 使用ConfigMap来配置 Redis,笔记

基于文件创造ConfigMap拓扑图

Kubernetes ConfigMap - Secret - 使用ConfigMap来配置 Redis,笔记

 

使用 ConfigMap 来配置 Redis

参考网址:使用 ConfigMap 来配置 Redis | Kubernetes

配置拓扑图:

Kubernetes ConfigMap - Secret - 使用ConfigMap来配置 Redis,笔记

步骤:

首先创建一个配置模块为空的 ConfigMap:

cat <<EOF >./example-redis-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: example-redis-config
data:
  redis-config: ""
EOF

应用上面创建的 ConfigMap 以及 Redis pod 清单:

[root@master configmap]# kubectl apply -f example-redis-config.yaml
configmap/example-redis-config created
[root@master configmap]# wget https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/redis-pod.yaml

配置文件 redis-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
      - "/redis-master/redis.conf"   #redis启动的时候加载配置文件redis.conf
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
    resources:
      limits:
        cpu: "0.1"
    volumeMounts:
    - mountPath: /redis-master-data
      name: data
    - mountPath: /redis-master
      name: config
  volumes:
    - name: data
      emptyDir: {}
    - name: config
      configMap:
        name: example-redis-config
        items:
        - key: redis-config   #读取key redis-config的内容
          path: redis.conf    #写到容器里的redis.conf配置文件里去

启动redis-pod.yaml文件

[root@master configmap]# kubectl apply -f redis-pod.yaml 
pod/redis created
[root@master configmap]# 

检查创建的对象:

[root@master configmap]# kubectl get pod/redis configmap/example-redis-config 
NAME        READY   STATUS    RESTARTS   AGE
pod/redis   1/1     Running   0          3m20s

NAME                             DATA   AGE
configmap/example-redis-config   1      5m2s
[root@master configmap]# 

使用 kubectl exec 进入 pod,运行 redis-cli 工具检查当前配置:

[root@master configmap]# kubectl exec -it redis -- redis-cli
127.0.0.1:6379> 

查看 maxmemory

127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "0"
127.0.0.1:6379> 

同样,查看 maxmemory-policy

127.0.0.1:6379> CONFIG GET maxmemory-policy

它也应该显示默认值 noeviction

1) "maxmemory-policy"
2) "noeviction"

应用更新的 ConfigMap:

向 example-redis-config ConfigMap 添加一些配置:

apiVersion: v1
kind: ConfigMap
metadata:
  name: example-redis-config
data:
  redis-config: |
    maxmemory 2mb
    maxmemory-policy allkeys-lru    
[root@master configmap]# kubectl  apply -f example-redis-config-2.yaml 
configmap/example-redis-config configured
[root@master configmap]# kubectl  get cm
NAME                   DATA   AGE
example-redis-config   1      15m
kube-root-ca.crt       1      31h
[root@master configmap]# 

确认 ConfigMap 已更新:

[root@master configmap]# kubectl describe configmap/example-redis-config
Name:         example-redis-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
redis-config:
----
maxmemory 2mb
maxmemory-policy allkeys-lru 


BinaryData
====

Events:  <none>
[root@master configmap]# 

重新启动 Pod 才能从关联的 ConfigMap 中获取更新的值。 

[root@master configmap]# kubectl delete pod redis
pod "redis" deleted
[root@master configmap]# ls
example-redis-config-2.yaml  example-redis-config.yaml  redis-pod.yaml
[root@master configmap]# kubectl apply -f redis-pod.yaml
pod/redis created
[root@master configmap]# kubectl get pod -o wide
NAME                                READY   STATUS              RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
redis                               1/1     Running             0          15s   10.244.1.18   node1   <none>           <none>
test                                1/1     Running             0          28h   10.244.2.7    node2   <none>           <none>
[root@master configmap]# 

现在,最后一次重新检查配置值:

[root@master configmap]# kubectl exec -it redis -- redis-cli
127.0.0.1:6379> CONFIG GET maxmemory   #查看 maxmemory:
1) "maxmemory"
2) "2097152"
127.0.0.1:6379> 
#现在,它应该返回更新后的值 2097152 大概2mb

127.0.0.1:6379> CONFIG GET maxmemory-policy # 同样,maxmemory-policy 也已更新:
1) "maxmemory-policy"
2) "allkeys-lru"
127.0.0.1:6379> 
#现在它反映了期望值 allkeys-lru:

删除创建的资源,清理你的工作:

kubectl delete pod/redis configmap/example-redis-config

nginx配置文件投射:(ConfigMap 基于文件创造)


===
[root@scmaster nginx]# cat nginx/nginx.conf 
worker_processes  4;
events {
    worker_connections  2048;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
	listen  80;
	server_name localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
[root@scmaster nginx]# kubectl create configmap wyt-nginx-1 --from-file=nginx.conf
[root@scmaster nginx]# cat nginx.yaml 
kind: Deployment
metadata:
  name: wyt-nginx
spec:
  replicas: 2
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wyt-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: wyt-nginx
  template:
    metadata:
      labels:
        app: wyt-nginx
    spec:
      containers:
        - name: nginx
          image: "nginx:latest"
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 80
          volumeMounts:
          - name: wyt-nginx-config
            mountPath: /etc/nginx/nginx.conf
            subPath: nginx.conf
      volumes:
        - name: wyt-nginx-config
          configMap:
            name: wyt-nginx-1
            items:
            - key: nginx.conf
              path: nginx.conf              

[root@scmaster nginx]# 

Secret

Secret 是存储诸如密码或密钥之类的敏感数据的对象 --》相当于一个密码箱

Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 

Kubernetes Secret 默认情况下存储为 base64-编码的、非加密的字符串。文章来源地址https://www.toymoban.com/news/detail-608571.html

参考文档:Secret | Kubernetes

例子:使用 Secret 安全地分发凭证:使用 Secret 安全地分发凭证 | Kubernetes

到了这里,关于Kubernetes ConfigMap - Secret - 使用ConfigMap来配置 Redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Linux高级---configmap和secret

    Linux高级---configmap和secret

    1、介绍 ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改。 注意: ConfigMap 并不提供保密或者加密功能。 如果你

    2024年02月06日
    浏览(8)
  • Kubernetes配置管理 ConfigMap

    Kubernetes配置管理 ConfigMap

    kubernetes集群可以使用ConfigMap来实现对容器中应用的配置管理 。 可以把ConfigMap看作是一个挂载到pod中的存储卷 1.2.1 在命令行指定参数创建 通过直接在命令行中指定configmap参数创建,即 --from-literal=key=value ; 1.2.2 在命令行通过多个文件创建 通过指定文件创建,即将一个配置文

    2024年02月09日
    浏览(11)
  • Kubernetes (十) 存储——Configmap配置管理

    Kubernetes (十) 存储——Configmap配置管理

    一.Configmap作用                                                                                               实验环境:清除之前的ns pod svc networkpolicy......                      kubectl delete -f networkpolicy.yaml                    kubectl delete svc myapp-v1        

    2024年01月22日
    浏览(26)
  • 【Kubernetes资源篇】ConfigMap配置管理中心详解

    【Kubernetes资源篇】ConfigMap配置管理中心详解

    1、ConfigMap配置中心简介 官方中文参考文档: ConfigMap是API对象,用于存放明文(非机密性)数据保存到键值对中,可以使用环境变量、命令行参数或者存储卷方式应用到Pod中,ConfigMap相当于Pod中程序的配置文件,通过修改ConfigMap内容来修改程序的配置。 2、ConfigMap局限性 ConfigM

    2024年02月13日
    浏览(32)
  • Kubernetes中Pod的配置管理ConfigMap

    应用部署的一个最佳实践是将应用所需的配置信息与程序进行分离,这样可以使应用程序被更好地复用,通过不同 的配置也能实现更灵活的功能。将应用打包为容器镜像后,可以通过环境变量或者外挂文件的方式在创建容器时进 行配置注入,但在大规模容器集群的环境中,

    2024年02月12日
    浏览(8)
  • K8S初级入门系列之四-Namespace/ConfigMap/Secret

    K8S初级入门系列之四-Namespace/ConfigMap/Secret

         本章节我们继续学习Namespace、ConfigMap、Secret基础概念,了解他们基本用法和操作。NameSpace为命名空间,在同一集群中试下资源隔离。ConfigMap通过key-value的方式实现明文配置数据的保存,Secret与ConfigMap类似,不过是采用密文方式保存。      K8S集群可以通过Namespace创建多

    2024年02月15日
    浏览(13)
  • 【kubernetes系列】Kubernetes之configMap

    工作中,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如服务需要配置MySQL、Redis等相关信息。而业务上线一般要经历开发环境、测试环境、预发布环境只到最终的线上环境,每一个环境一般都需要其独立的配置。如果我们不能很好的管理这些配置文件,运维工作

    2024年02月12日
    浏览(28)
  • 【云原生】Kubernetes之Secret

    你必须拥有一个 Kubernetes 的集群,同时你必须配置 kubectl 命令行工具与你的集群通信 Secret 对象用来存储敏感数据,如 Pod 用于访问服务的凭据。例如,为访问数据库,你可能需要一个 Secret 来存储所需的用户名及密码 你可以通过在命令中传递原始数据,或将凭据存储文件中,

    2024年02月15日
    浏览(11)
  • 7、Kubernetes核心技术 - Secret

    7、Kubernetes核心技术 - Secret

    目录 一、Secret概述 二、Secret 三种类型 2.1、Opaque 2..2、kubernetes.io/dockerconfigjson 2.3、kubernetes.io/service-account-token 三、Secret创建 3.1、命令行方式创建 Secret 3.2、yaml方式创建 Secret 四、Secret解码 五、Secret使用 5.1、将 Secret 挂载到 Volume 中 5.2、将 Secret 设置为环境变量 5.3、通过volu

    2024年02月14日
    浏览(9)
  • kubernetes存储-configmap

    kubernetes存储-configmap

    目录 一、字面值创建 二、通过文件创建 三、通过目录创建 四、通过yaml文件创建 五、使用configmap设置环境变量 六、使用conigmap设置命令行参数 七、通过数据卷使用configmap 八、configmap热更新       在Kubernetes中,ConfigMap是一种存储配置数据的对象。它允许将配置数据分离出来

    2024年02月06日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包