【云驻共创】华为云云原生黄金课程08:Kubernetes应用配置管理
上节课我们介绍了kubernetes服务对外暴露的方式通过Service和ngress解决的是服务暴露问题,具体的服务实现还需要Pod来完成,Pod的运行通常需要为其提供配置接下来的课程我们将为大家介绍kubernetes ConfigMap和 Secret基本概念和使用场。
1.课程目标
学完本课程后,您将能够:
- 了解 ConfigMap概念及使用场景
- 了解 Secret概念及使用场景
- 了解华为云CCE服务应用配置操作方法
2.应用配置管理概述
ConfigMap、Secret都服务于pod。为Kubernetes的pod提供配置,可以参看springBoot中的yml文件。
应用配置
- 数据库配置
- 证书配置
- 应用自定义配置
Kubernetes应用配置
- ConfigMap:一般性配置
- Secret:敏感信息配置
2.1 ConfigMap介绍
ConfigMap是一种存储非敏感数据的资源对象
- 以<key- value>形式存储配置数据
Config Map设计要素
- 解耦应用程序(镜像)和配置参数
- 不用于存储大块数据(<=1MB)
Config Map主要服务于Pod
- 为容器提供环境变量
- 为容器提供命令行参数
- 为容器提供配置文件
2.1.1 ConfigMap资源对象
API设计
- 没有Spec字段
Data字段
- 用来保存UTF-8字节序列
- 键名不能与 Binary Data重叠
Binary Data
- 用来保存二进制数据(base64编码
- 键名不能与Data重叠
mutable(v1.19版本)
- 不可变更(禁止修改)
- 保护应用,兔受意外更新带来负面影响
- 提升性能(减轻监视负担)
2.1.2 ConfigMap的创建
可以通过命令行创建ConfigMap。
kubectl create configmap my-config --from-literal=key1=config1 --literal=key2=config2
apiVersion: v1
data
key1:config1
key2:config2
kind:ConfigMap
metadata
name:my-config
namespace:default
kubectl create configmap my-config--from-file=config=/root/class/config1
api Version:V1
data
config1:
This is file content of config1
kind: ConfigMap
metadata
name:my-config
namespace:default
2.1.3 Pod中使用ConfigMap
使用 Config Map配置环境变量:
apiVersion:v1
kind:Pod
metadata:
name: configmap-demo-pod
spec:
containers:
-name:demo
mage: alpine
command: [sleep,3600]
env:
-name: PLAYER_INITIAL_LIVES //环境名
valueFrom: //来源
configMapKeyRef:
name:my-config
ey:player_initial_lives
-name:UI_PROPERTIES_FILE_NAME
ValueFrom
configMapkeyref:
name:my-config
key:ul_properties_tlle_name
使用 ContfigMap挂载配置文件:
apiversion:V1
kind:Pod
metadata:
name:conTigmap-demo-poa
spec:
containers:
-name:demo
image:alpine
command:["sleep","3600"]
volumeMounts:
name:config
mountRath: "/config" //挂载的目录
readOnly:true
volumes:
-name:config
configMap:
name: my-contig
items
-key:"game.properties"
path: "game.properties"
2.1.4 Configmap使用小节
- ConfigMap用于存储非敏感应用配置
- 每个 ConfigMap大小限制为1MB
- Config Map必须先于Pod创建,否则Pod无法启动
- Pod只能使用同 Namespace下的 ConfigMap
- 使用 Config map挂载配置文件,会自动更新
- 使用Conη fig Mapi配置环境变量时,不会自动更新
2.2 Secre概述
Secret是一种资源对象
- 以<key-vaue>形式存储敏感数据(密码, token等
Secre设计要素
- 数据采用base-64编码保存(非加密)
- 通常结合 RBAC rules来加强安全性
Secret主要服务于Pod
- 为容器提供环境变量
- 为容器提供镜像仓库密钥(由 kubelet使用
- 为容器提供配置文件
2.2.1 Secre资源对象
API设计
- 没有Spec字段
Data字段
- 用来保存UTF-8字节序列
Stringdata
- 任意字符串( write-only)
Immutable(v1.19版本)
- 不可变更(禁止修改)
- 保护应用,兔受意外更新带来负面影响
- 提升kube- pserver性能(减轻监视负担
Secret类型(检查和限制有所区别)
- Opaque:任意数据
- kubernetes io/service-account-token
2.2.2 Secre创建
通过命令行创建:
kubectl create secret generic my-secret--from-literal=key1=supersecret --from-literal=key 2=topsecre
apiVersion:V1
data:
key1:C3VWZXJZZWNyZXQ=
key2:dG9wc2VicmVO
kind:secret
metadata:
name:my-secre
namespace:default
type:Opaque
kubectl create secret generic my-secret--from-file=mykey=/root/class/secretcon
apiVersion:v1
data:
mykey:VGhpcyBpcyBjb250ZW50IG9mIHNIY3JIdCBjb25maWcuCg
kind:Secret
metadata:
name:my-secret
namespace:default
type:Opaque
2.2.3 Pod中使用Secret
使用Secret配置环境变量:
apiVersion:v1
kind:Pod
metadata:
name:mypod
spec:
containers:
-name: mycontainer
image: redis
env:
-name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecre
key:username
-name: SECRET PASSWORD
valueFrom:
secretKeyRef:
name:mysecre
key:password
使用 Secret挂载配置文件:
apiVersion:v1
kind:Pod
metadata:
name:mypod
spec:
containers:
-name: mypod
image: redis
volumeMounts:
-name foo
mountRath: "/etc/foo"
readOnly: true
volumes:
-name:foo
secret:
secretName: mysecret
2.2.4 Secret使用小节
- Secret用于存储敏感配置(区别于 Config Map)
- 每个 Secret大小限制为1MB
- Pod只能使用同 Namespace下的 Secret
- Secret数据使用Base64编码,本身不提供数据加密
- 由于 Secret会以纯文本方式存储在ETCD,需要限制ETCD的访问权限
- 为 Secret设置严格的RBAC规则,限制资源访问
3.实验-天气预报简介
共有4个服务模块:
- frontend:前台服务,展示整个应用的页面,使用 React. js开发而成;
- advertisement:广告服务,返回静态的广告图片,使用 Galang开发而成
- forecast:天气预报服务,返回相应城市的天气数据,使用 Node. js开发而成
- recommendation:推荐服务,根据天气情况冋用户推荐穿衣和运动等信息,使用Java
开发而成。
3.1 实验具体内容
本课实验
基于CCE集群使用 Config Map和 Secret配置数据库环境变量
实验目标
使用 ConfigMap和 Secret配置 advertisement服务的 mySQL数据库环境变量
实验前置条件
已经在CCE集群上部署好了 advertisement服务和 my sQL数据库服务
实验关键步骤
- 通过页面创建 Secret配置
- 通过页面创建 ConfigMap配置
- 通过页面升级为 advertisement应用配置环境变量
- 查看天气预报访问页面观察配置环境变量之后的效果
3.2 具体操作
创建ConfigMap,这里有两个键值。
创建Secret,这里指定有一个键值。
修改Deployment的配置。并挂载上文的Secret、ConfigMap配置。
本文整理自华为云社区【内容共创】活动第12期。
查看活动详情:https://bbs.huaweicloud.cn/blogs/325315
相关任务详情:任务36. 华为云云原生黄金课程08:Kubernetes应用配置管理
- 点赞
- 收藏
- 关注作者
评论(0)