云原生应用管理:原理与实践
上QQ阅读APP看书,第一时间看更新

2.10.1 创建第一个template文件

我们创建的第一个template文件就是ConfigMap。在Kubernetes中,ConfigMap的作用是存放一些配置信息,这样其他的Pod就可以通过挂载ConfigMap来读取信息。创建ConfigMap文件如下:


#myChart/templates/configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: myChart-configmap
data:
  myvalue: "Hello World"

上例创建的是一个非常简单的ConfigMap,Tiller在收到这个信息后,可以很简单地直接将其提交到Kubernetes apiServer中,下面我们尝试安装ConfigMap。


[root@iZ8vb0qditk1qw27yu4k5nZ myChart]# helm install ../myChart/
NAME:   deadly-raccoon
LAST DEPLOYED: Tue Aug 27 20:17:36 2019
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME               DATA  AGE
myChart-configmap  1     0s

在上面的输出中,我们可以看到ConfigMap已经被创建出来了,下面我们使用Helm命令行查看一下提交的资源信息。


[root@iZ8vb0qditk1qw27yu4k5nZ myChart]# helm get manifest deadly-raccoon

---
# Source: myChart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: myChart-configmap
data:
  myvalue: "Hello World"

helm get manifest命令通过读取Release名称,能够输出所有提交给Kubernetes集群的资源信息。每个资源之间通过“---”分隔符分割,这里输出的都是被Helm解析完毕的yaml,即可以直接被Kubernetes集群识别。

下面再通过Kubernetes命令行验证资源的提交情况。


[root@iZ8vb0qditk1qw27yu4k5nZ myChart]# kubectl get cm
NAME                DATA   AGE
myChart-configmap   1      6m56s
[root@iZ8vb0qditk1qw27yu4k5nZ myChart]# kubectl get cm myChart-configmap -o yaml
apiVersion: v1
data:
  myvalue: Hello World
kind: ConfigMap
metadata:
  creationTimestamp: 2019-08-27T12:17:36Z
  name: myChart-configmap
  namespace: default
  resourceVersion: "4716216"
  selfLink: /api/v1/namespaces/default/configmaps/myChart-configmap
  uid: a7bcd6d9-c8c4-11e9-a8fb-00163e04d480

通过输出可以看出,这个ConfigMap确实已经被提交到Kubernetes集群了,而且内容都是正确的。下面我们可以使用helm delete deadly-raccoon--purge命令删除这个Release了。