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

Kubernetes里的ConfigMap的用途

阅读更多

顾名思义,ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。

ConfigMap同Kubernetes的另一个概念secret类似,区别是ConfigMap主要用于保存不包含敏感信息的明文字符串。

创建方式:

kubectl create configmap special-config --from-literal=i042416=jerry

上述命令行创建了一个名为special-config的键值对,

 
 

key为i042416, 值为jerry

 

接下来我希望用这个key为i042416的值"jerry"来定义成pod里的一个环境变量。

下面是我的yaml文件:

 

apiVersion: v1

2 kind: Pod

3 metadata:

4 name: jerry-config-pod

5 spec:

6 containers:

7 - name: test-container

8 image: gcr.io/google_containers/busybox

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

10 env:

11 - name: JERRY_NAME

12 valueFrom:

13 configMapKeyRef:

14 name: special-config

15 key: i042416

16 restartPolicy: Never

可以看到第15行引用了我的ConfigMap的key:i042416

下面使用create -f将该yaml文件导入,创建一个新的pod:

 

创建之后,能在pod的明细页面看到configMap的key已经作为环境变量显示出来了:

 

因为我yaml文件里指定pod执行的script为/bin/sh -c env, 因此最后会将容器里所有的环境变量都打印出来,我们定义在ConfigMap里的i042416的值jerry也被显示了出来:

 

这种定义环境变量的做法和SAP云平台CloudFoundry环境里定义环境变量的方式很类似。

CloudFoundry环境变量一览表:

https://docs.run.pivotal.io/devguide/deploy-apps/environment-variable.html

  • CF_INSTANCE_ADDR
  • CF_INSTANCE_GUID
  • CF_INSTANCE_INDEX
  • CF_INSTANCE_IP
  • CF_INSTANCE_INTERNAL_IP
  • CF_INSTANCE_PORT
  • CF_INSTANCE_PORTS
  • DATABASE_URL
  • HOME
  • LANG
  • MEMORY_LIMIT
  • PORT
  • PWD
  • TMPDIR
  • USER
  • VCAP_APP_PORT
  • VCAP_APPLICATION
  • VCAP_SERVICES

当使用cf push命令将本地应用部署到SAP云平台的CloudFoundry环境下时,某些环境变量会自动被系统写入相应的值,这个行为同ABAP的sy-sysid自动被设置为当前系统ID具有一样的逻辑。

比如app router会把用户访问请求重定向到XSUAA实例上。

 

app router在manifest.yml里定义的XSUAA实例名称为xsuaa-jerry-demo,

 

在运行时这个XSUAA的id会被SAP云平台自动写入环境变量VCAP_SERVICES里:

 

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

 
0
0
分享到:
评论

相关推荐

    Kubernetes(k8s)面试题.pdf

    ConfigMap和Secret在Kubernetes中的作用是什么?** - **ConfigMap**:用于存储非机密配置数据。 - **Secret**:用于存储敏感信息,如密码和证书。 **13. 什么是Kubernetes的Volume?** Volume是Pod内的共享持久...

    k8s-kotlin-dsl,用于kubernetes配置的kotlin dsl.zip

    - **ConfigMap**和**Secrets**:用于存储非敏感和敏感的配置数据,可被Pods内的应用使用。 - **Ingress**:定义外部网络到Kubernetes内部服务的访问规则。 - **PersistentVolume**和**PersistentVolumeClaim**:...

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

    **可变配置管理**\n - **ConfigMap**: ConfigMap是Kubernetes中用于存储和管理容器运行所需非敏感配置信息的关键组件。它可以包含环境变量、命令行参数或配置文件。ConfigMap通过键值对的形式存储数据,允许Pod在...

    kubernetes-handbook

    ConfigMap可以存储配置数据,而Horizontal Pod Autoscaling可以根据CPU使用情况或自定义指标自动扩展Pod数量。 Label用于标记资源,以便于管理和组织。ServiceAccount为Pod中的进程提供身份认证。Replication...

    八、kubernetes 数据存储.pdf

    配置存储如ConfigMap和Secret则用于存储配置数据和敏感信息。 EmptyDir是Kubernetes中一种基础的Volume类型,它在Pod被分配到Node节点时创建,并且最初是空的,不需要在宿主机上指定目录文件,因为Kubernetes会自动...

    kubernetes对象Volume用法详解

    2. **configMap**:configMap用于将配置信息以Volume的形式传递给Pod内的容器,而不是用来持久化数据。它允许你将配置数据保存在Kubernetes的etcd数据库中,并在需要时挂载到Volume。 3. **downwardAPI**:类似于...

    k8s-config:配置库

    - **ConfigMap**:ConfigMap 是 Kubernetes 的一种资源对象,用于存储非敏感的应用配置数据。它允许开发者将配置信息分离到单独的文件或环境变量,而不是硬编码到应用程序容器内部。 - **Secret**:Secret 对象...

    my-kubernetes-deployments

    1. **配置文件**:YAML 格式的 Kubernetes 资源定义,如 Deployment、Service、Ingress、ConfigMap 和 Secret 等。 2. **Helm 图表**:如果项目使用 Helm 进行包管理,可能会有 Helm 图表目录,包含应用的模板和配置...

    helm-v2.6.1-linux-amd64.tar.gz

    Helm 使用图表(Charts)来封装 Kubernetes 的资源定义,这些图表包含了必要的 YAML 文件,用于创建、配置和部署各种 Kubernetes 对象,如 Deployment、Service、ConfigMap 和 PersistentVolumeClaim 等。...

    helm-v3.2.0-rc.1-linux-amd64.tar.gz

    使用Helm,开发者和管理员可以创建名为“Charts”的包,这些包包含了Kubernetes的所有定义资源,如Deployment、Service、ConfigMap等。Charts能够通过YAML文件进行描述,便于版本控制和复用。Helm的“helm install”...

    k8s-config:配置存储库

    配置存储库通常包含多个配置文件,如YAML或JSON格式,这些文件定义了Kubernetes对象,如Deployment、Service、ConfigMap、Secret等。下面我们将深入探讨这个主题,并介绍相关知识点。 1. **Kubernetes配置文件**: ...

    anthos-seroter-config-repo-base

    4. **Kubernetes YAML文件**:这些文件定义了Kubernetes对象,如Deployment、Service、ConfigMap和Secrets,它们是 Anthos 集群的基础构建块。 5. **GitOps实践**: Anthos 鼓励采用GitOps工作流,其中基础设施和...

    charts:sxd-overlords项目的Helm图表存储库

    3. **templates**目录:这个目录包含了Kubernetes资源定义(如Deployment、Service、ConfigMap等)的YAML模板文件,Helm会根据values.yaml中的参数动态生成最终的资源对象。 4. **charts**目录(如果有的话):如果...

    Parallels Helm phpmyadmin app pack-开源

    通过 Helm,开发者可以创建包含多个 Kubernetes 对象(如 Deployment、Service、ConfigMap 等)的模板,然后打包成一个可重用的 Chart。 2. **phpMyAdmin**: phpMyAdmin 是一个用 PHP 编写的开源 Web 应用,用于...

Global site tag (gtag.js) - Google Analytics