上QQ阅读APP看书,第一时间看更新
2.2.7 Helm后端存储
默认情况下,Tiller使用ConfigMaps来存储每个实例的安装信息,安装实例的每个版本都在kube-system命令空间下有对应的configmap。
[root@iZ8vb0qditk1qw27yu4k5nZ ~]# helm ls NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE riotous-gorilla 1 Mon Aug 5 19:42:58 2019 DEPLOYED mysql-5.0.6 8.0.16 default [root@iZ8vb0qditk1qw27yu4k5nZ ~]# kubectl get cm -n kube-system | grep riotous-gorilla riotous-gorilla.v1 1 32s [root@iZ8vb0qditk1qw27yu4k5nZ ~]# kubectl get cm riotous-gorilla.v1 -n kube-system -o yaml apiVersion: v1 data: release: H4sIAAAAAAAC/+y9TWwcSbIYjN158+1+NQa8TzYW9uLBzm3OmqSGVU1KM8Js+2kxHEkzQ48ocUlqhIFWYGVXZXfnqqqylJnVVI+o04Nh332xD88/J1988MGG4aN99cm+LYwHvKNhGDBg+7aAYeRfVdZf/7BbEjXbXOyI7M6MjIyMiIyMjIxw/irFhJOMuUNCcRTBa// +A+cffvDjH3T+7APnKEKQIdBHIIUco4SD8xGOEOAjBIIRpBxgBvoIJ0MQojQiExQ6zilOe44DwGPIg5Fsqr6LRX/GIc8YyJjoI8GQOIZJ2APPsj4KeASGiIOUhAy458B1ExgjlsJAABnALOKOc4LoGAeIyUFQMCLgEDKOaA9UZuLGE/Y88nRHj40DL4gy0dSLSACj3
上例只截取了一部分configmap信息,configmap后面的“.”对应的就是版本号,这里因为只有一个版本,所以版本号就是v1。
从Helm 2.7.0开始,Helm就提供了将实例信息存放到secret中的功能,这样就给实例信息提供了额外的安全保护。注意这个功能必须在安装Tiller的时候开启。
helm init --override 'spec.template.spec.containers[0].command'='{/Tiller, --storage=secret}'
在编写本书时,Helm还不能提供从configmap到secret迁移的功能,用户必须从一开始就使用secret或configmap,随着这个功能的发展,在Helm后续版本应该会提供官方推荐的迁移策略。
Helm 2.14.0发布后,Helm社区开发了一个基于SQL的存储功能,用于持久化存储数量较多的实例。该功能目前只支持将所有的实例信息存储到postgres中。
在Kubernetes中,configmap和secret默认只能支持存储1MB大小的信息,所以如果Chart安装信息大于1MB,这个基于SQL的存储功能就非常有用。同样,如果开启这个功能,则必须在安装Tiller时启用。
helm init \ --override \ 'spec.template.spec.containers[0].args'='{--storage=sql,--sql-dialect=postgres, --sql-connection-string=postgresql:// Tiller-postgres:5432/helm?user=helm&password=changeme}'
目前Helm社区没有提供从configmap到SQL的转移策略。