https://gocn.vip/topics/10419
首先一起来看一下需求来源。大家应该都有过这样的经验,就是用一个容器镜像来启动一个 container。要启动这个容器,其实有很多需要配套的问题待解决:
第一,比如说一些可变的配置。因为我们不可能把一些可变的配置写到镜像里面,当这个配置需要变化的时候,可能需要我们重新编译一次镜像,这个肯定是不能接受的;
第二就是一些敏感信息的存储和使用。比如说应用需要使用一些密码,或者用一些 token;
第三就是我们容器要访问集群自身。比如我要访问 kube-apiserver,那么本身就有一个身份认证的问题;
第四就是容器在节点上运行之后,它的资源需求;
第五个就是容器在节点上,它们是共享内核的,那么它的一个安全管控怎么办?
最后一点我们说一下容器启动之前的一个前置条件检验。比如说,一个容器启动之前,我可能要确认一下 DNS 服务是不是好用?又或者确认一下网络是不是联通的?那么这些其实就是一些前置的校验。
Pod 的配置管理
在 Kubernetes 里面,它是怎么做这些配置管理的呢
可变配置就用 ConfigMap;
敏感信息是用 Secret;
身份认证是用 ServiceAccount 这几个独立的资源来实现的;
资源配置是用 Resources;
安全管控是用 SecurityContext;
前置校验是用 InitContainers 这几个在 spec 里面加的字段,来实现的这些配置管理。