前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes 配置项之 configmap vs secret

kubernetes 配置项之 configmap vs secret

原创
作者头像
keepyan
修改2020-01-21 16:47:21
1.8K0
修改2020-01-21 16:47:21
举报
文章被收录于专栏:TKE操作指北

前言:在之前的文档中,我们介绍过 secret 的使用,与其同类型的资源还有 configmap ,这里我们会简单介绍一下configmap, 以及分析 cofigmap 和 secret 在功能 和 使用场景上的区别。

Configmap

ConfigMap 是有 key-value 类型的键值对,通过 ConfigMap 你可以将配置和运行的镜像进行解耦,使得应用程序有更强的移植性。

你可以通过控制台的 Kubectl 工具创建对应的 ConfigMap 对象,然后可以通过挂载数据卷、环境变量或在容器的运行命令中使用 ConfigMap。

如何创建ConfigMap?

我们可以通过两种方式来创建 ConfigMap:

From Literal Values和From Configuration File;

From Literal Values 方法:

我们可以用 kubectl create 来创建一个 ConfigMap,然后通过 kubectl get 来获取:

代码语言:javascript
复制
$ kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
configmap "my-config" created 

# Get the ConfigMap Details for my-config
$ kubectl get configmaps my-config -o yaml
apiVersion: v1
data:
 key1: value1
 key2: value2
kind: ConfigMap
metadata:
 creationTimestamp: 2017-05-31T07:21:55Z
 name: my-config
namespace: default
 resourceVersion: "241345"
 selfLink: /api/v1/namespaces/default/configmaps/my-config
 uid: d35f0a3d-45d1-11e7-9e62-080027a46057

From Configuration File 方法:

除了上面的方式,我们还可以直接通过配置文件来创建(好吧,虽然我感觉是同一种,只不过是放到文件里面了而已……),首先,我们得有一个配置文件,假设名字叫做 myconfigmap.yaml:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
 name: customer1
data:
 TEXT1: Customer1_Company
 TEXT2: Welcomes You
 COMPANY: Customer1 Company Technology Pct. Ltd.

然后,我们可以通过 kubectl create -f 来创建:

代码语言:javascript
复制
$ kubectl create -f myconfigmap.yaml
configmap "customer1" created 

如何使用configmap?

跟 secret 一样,configmap 可以在环境变量中使用,也可以作为数据卷挂载使用。

针对TKE 环境中的用法,可以参考:

https://cloud.tencent.com/document/product/457/31717

secret 和 configmap 的区别

其实目前 Secret 的实现,就是 ConfigMap 把 value 用 base64 encode了一下,所以,其实不存在任何安全性,只要 decode 一下就能出现原来结果,相当于明文存储。

base64 这玩意儿都不能叫做加密,只能叫做编码,所以我们都不说 encrypt,而是 encode 和 decode。

当然,Kubernetes 社区有在计划对 Secret 进行下一步的安全性增强,当然这是后话了,截止目前为止,Secret 基本和 ConfigMap一样是明文存储。

secret 和 configmap 的使用场景

理论上来讲,secret 和 configmap 可以在相同的场景下使用,因为功能上都是一样的。

这里结合生产环境看下当前主流的用法:

configmap:mysql redis 等涉及密码初始化类容器业务 (如MYSQL_ROOT_PASSWORD)

secret:第三方镜像仓库凭证 配置TLS 类型secret 用于记录证书秘钥等信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Configmap
    • 如何创建ConfigMap?
      • 如何使用configmap?
      • secret 和 configmap 的区别
      • secret 和 configmap 的使用场景
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档