`
JerryWang_SAP
  • 浏览: 1029652 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

如何使用Kubernetes的configmap通过环境变量注入到pod里

阅读更多

在Kubernetes官网里,有这样一篇文章,提到了Kubernetes里的一个最佳实践就是把应用代码同配置信息分开,一种方式就是使用Kubernetes 1.2里引入的configmap概念。

 

https://kubernetes.io/blog/2016/04/configuration-management-with-containers/

configmap实际上就是一系列键值对,存储于etcd里。etcd的官网有这样一句话:

etcd is a distributed key-value store designed to reliably and quickly preserve and provide access to critical data.

https://github.com/etcd-io/etcd/blob/master/Documentation/docs.md

etcd是一个高性能的分布式键值对存储库,用于存储和访问关键数据。

使用下面的命令行创建一个Kubernetes config map:

kubectl create configmap test-config --from-literal=test.type=unit --from-literal=test.exec=always

 

创建一个名为test-config的键值对,key为test.type,值为unit,key为test.exec, 值为always。

下面我打算创建一个pod,消费这个名为test-config的configmap。

创建一个内容如下的yaml文件:

apiVersion: v1

kind: Pod

metadata:

name: test-configmap

spec:

containers:

- name: test-container

image: alpine:3.8

command: [ "/bin/sh", "-c", "env" ]

env:

- name: TEST_TYPE

valueFrom:

configMapKeyRef:

name: test-config

key: test.type

- name: TEST_EXEC

valueFrom:

configMapKeyRef:

name: test-config

key: test.exec

restartPolicy: Never

这个yaml文件定义的pod基于docker镜像alpine,执行shell命令/bin/sh -c env查看环境变量。

在env区域,我给该pod注入一个名为TEST_TYPE的环境变量,值从configMap键值对的键名称为test.type的值中取。

 

kubectl create -f 创建这个pod:

 

使用命令kubectl logs test-configmap查看这个pod运行生成的日志,发现输出的环境变量列表中,出现了TEST_TYPE=unit,这个TEST_TYPE是我在yaml文件里注入的环境变量名称,而unit就来自configmap里test-config的值unit。

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

 
0
0
分享到:
评论

相关推荐

    k8s(kubernetes)相关重要知识点运维笔记——详细文档

    Pod 使用 ConfigMap 数据有两种方式:变量注入和数据卷挂载。 变量注入是指将 ConfigMap 的键值配置到容器中作为全局变量配置。例如,下面是一个使用变量注入的示例: ```yaml apiVersion: apps/v1 kind: ...

    ConfigMap、Secret

    1. 直接作为环境变量注入到Pod中,通过`env:`或`envFrom:`字段。 2. 通过挂载为Volume,使得配置文件可以直接在Pod的文件系统中访问。 在实际操作中,我们可以通过`kubectl create secret`命令创建Secret,如例子所...

    Kubernetes 实践指南

    5. **ConfigMap & Secret**: 存储配置数据,提供安全的环境变量注入方式。 6. **Volume**: 提供Pod内部的数据持久化,跨越容器生命周期。 ### 二、Kubernetes架构 Kubernetes由控制面板和工作节点两部分组成: 1....

    Kubernetes应用快速部署指南.pptx

    它们可以通过环境变量或文件挂载的方式注入到容器中,使得应用能够访问这些数据。 对于有状态应用,如数据库或缓存系统,Kubernetes 提供了 StatefulSet。StatefulSet 保证了每个 Pod 的唯一标识、稳定网络身份和...

    Kubernetes Patterns

    - **应用场景**:在Kubernetes中,可以通过ConfigMap或Secret资源来定义环境变量,并将其注入到Pod中使用的容器。 #### 高级模式 **20. StatefulService** - **定义与作用**:有状态服务模式适用于需要持久化存储...

    15 _ 深入解析Pod对象(二):使用进阶1

    2. **ConfigMap**:ConfigMap用于存储非敏感的配置信息,如环境变量、命令行参数或者配置文件。它们允许将配置数据与应用程序代码分离。 3. **Downward API**:Downward API让Pod内的容器可以获取关于自身的信息,...

    从零开始入门 K8s - 如何实现应用配置管理?1

    此外,使用`envFrom`配置环境变量时,无效的键将不会注入到容器,但Pod仍能创建成功。\n\n2. **敏感信息存储与管理**\n - **Secret**: Secret对象用于安全地存储密码、令牌等敏感数据,数据以base-64编码存储。...

    Kubernetes容器云平台介绍.pptx

    - **Service Account/Secret/KeyRef/ValueFrom**:用于身份验证、安全配置和环境变量注入。 Kubernetes 网络方面,有两种主流的容器网络实现:CNM(Docker)和 CNI(Kubernetes)。CNI 是一种网络插件接口规范,...

    kubernetes-server-linux-amd64.tar.gz

    - **ConfigMap**与**Secret**:用于存储非敏感和敏感的应用配置数据,提供安全的环境变量注入方式。 - **Ingress**:定义外部网络到服务内部的访问规则,支持负载均衡和路由。 2. **Kubernetes 1.21.0新特性**: ...

    kubernetes-training:Kubernetes概念培训

    ConfigMap 可以通过环境变量、命令行参数或配置文件直接注入到 Pod 中。 4. **Secrets** Secrets 提供了一种安全的方式来管理敏感信息,如密码、OAuth 令牌和 SSH 密钥。它们被设计为不可变且易碎,以保护数据...

    Kubernetes官方文档中文版.rar

    - **ConfigMap**和**Secret**:存储配置数据,提供安全的环境变量注入。 2. **工作流程**: - **部署应用**:使用`kubectl apply`命令创建Deployment,它会自动创建 ReplicaSet 并调度Pods到集群节点上。 - **...

    Go-一份入门Grafeas与Kubernetes的循序渐进指南

    下载并安装Go的最新版本,配置好GOPATH和GOROOT环境变量,然后通过`go get`命令获取Grafeas的相关库和工具。在学习过程中,理解Go的模块管理和依赖注入机制将有助于你更好地编写Grafeas客户端或服务端应用。 进入...

    读书摘要系列之《kubernetes权威指南·第四版》第一章:kubernetes入门

    每个Pod启动时,环境变量会被自动注入,而在现代实现中,借助kube-dns,Pod可以通过DNS查询找到其他服务。 Volume是Kubernetes中用于在Pod内共享数据的机制,它独立于容器生命周期存在。常见的Volume类型包括...

    k8s-yml.zip

    11. **ConfigMap**: 用于存储非敏感的配置数据,可以被容器作为环境变量、命令行参数或文件内容使用。 在 Kubernetes 集群中,使用 `kubectl apply -f 文件>` 命令可以将 YAML 文件中的配置应用到集群上,创建或...

    rocketmq k8s yaml部署文件

    4. **ConfigMap** 或 **Secret**: RocketMQ的配置参数可以通过Kubernetes的ConfigMap或Secret对象进行管理,这样可以将敏感信息(如密码)安全地存储,并注入到Pod中。这使得配置文件的管理和更新变得更加灵活。 5....

    k8s-config:配置库

    与ConfigMap类似,Secret可以被挂载为Volume或作为环境变量注入到Pod中。 ```yaml apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: password: dGVzdHBhc3M= # base64编码后的...

    kubernetes:我的有关kubernetes的文档

    Secret则用于安全地存储密码、密钥和其他敏感信息,它们被以加密形式存储,并可被注入到Pod的环境变量或卷中。 在Kubernetes集群的运维过程中,监控和日志收集也是必不可少的。Prometheus、Grafana、Elasticsearch...

    k8s部署influxdb完整yaml部署文件.7z

    3. **influxdb-configmap.yaml**: ConfigMap用于将配置数据注入到Pod中,避免硬编码到应用镜像中。在这个文件中,可能会包含InfluxDB的配置选项,如数据库名称、用户、密码等。 4. **influxdb-pvc.yaml**: ...

    kubernetes_practice:kubernetes实践指南(内容不定期更新中。。。),欢迎提PR

    5. **ConfigMap**和**Secret**:用于将配置数据注入到Pod中,ConfigMap用于非敏感数据,Secret用于敏感信息。 6. **Ingress**:定义外部访问Pod的规则,通常用于设置HTTP/HTTPS路由。 二、Kubernetes组件 1. **...

Global site tag (gtag.js) - Google Analytics