MySQL是一种快速,可靠,可扩展且易于使用的开源关系数据库系统。MySQL Server适用于关键任务,高负荷的生产系统以及嵌入到大规模部署的软件中。
$ helm install my-release <helm-repo>/mysql
该图表使用Helm软件包管理器在Kubernetes集群上引导了MySQL复制集群的部署。
Bitnami图表可与Kubeapps一起用于在群集中部署和管理Helm Charts。该Helm图表已在Bitnami Kubernetes生产运行时(BKPR)之上进行了测试。部署BKPR以获取自动化TLS证书,对应用程序进行日志记录和监视。
要使用发布名称安装图表my-release
:
$ helm install my-release <helm-repo>/mysql
这些命令以默认配置在Kubernetes集群上部署MySQL。“参数”部分列出了可以在安装过程中配置的参数。
提示:列出所有使用的版本
helm list
要卸载/删除my-release
部署:
$ helm delete my-release
该命令将删除与图表关联的所有Kubernetes组件并删除发行版。
下表列出了MySQL图表的可配置参数及其默认值。
参数 | 描述 | 默认 |
---|---|---|
global.imageRegistry | 全局Docker映像注册表 | nil |
global.imagePullSecrets | 全局Docker注册表机密名称作为数组 | [] (不向已部署的吊舱添加图像拉取秘密) |
global.storageClass | 用于动态配置的全局存储类 | nil |
image.registry | MySQL映像注册表 | docker.io |
image.repository | MySQL映像名称 | bitnami/mysql |
image.tag | MySQL Image标签 | {TAG_NAME} |
image.pullPolicy | MySQL镜像拉策略 | IfNotPresent |
image.pullSecrets | 将docker-registry秘密名称指定为数组 | [] (不向已部署的吊舱添加图像拉取秘密) |
image.debug | 指定是否应启用调试日志 | false |
nameOverride | 使用字符串部分覆盖mysql.fullname模板的字符串(将在发布名称之前) | nil |
fullnameOverride | 使用字符串完全覆盖mysql.fullname模板的字符串 | nil |
clusterDomain | 使用的Kubernetes DNS域名 | cluster.local |
volumePermissions.enabled | 启用用于更改数据目录中的卷许可权的初始化容器(对于默认的k8runAsUser 和fsUser 值不起作用的情况) | false |
volumePermissions.image.registry | 初始化容器容量许可映像注册表 | docker.io |
volumePermissions.image.repository | 初始化容器容量许可映像名称 | bitnami/minideb |
volumePermissions.image.tag | 初始化容器体积许可图像标签 | buster |
volumePermissions.image.pullPolicy | 初始化容器容量许可映像拉取策略 | Always |
volumePermissions.resources | 初始化容器资源请求/限制 | nil |
existingSecret | 使用密码的详细信息(现有的秘密root.password ,db.password ,replication.password 将被忽略,从这个秘密回升)。秘密必须包含键mysql-root-password ,mysql-replication-password 和mysql-password 。 | nil |
root.password | 密码的root 用户 | 随机的10个字符的字母数字字符串 |
root.forcePassword | 强制用户指定密码。这是“头盔升级”正常工作所必需的 | false |
root.injectSecretsAsVolume | 将管理员用户密码挂载为文件,而不使用环境变量 | false |
db.user | 要创建的新用户的用户名(应该与Replication.user不同) | nil |
db.password | 新用户的密码 | 如果db.user 定义了10个字符的字母数字字符串 |
db.name | 要创建的新数据库的名称 | my_database |
db.forcePassword | 强制用户指定密码。这是“头盔升级”正常工作所必需的 | false |
db.injectSecretsAsVolume | 将用户密码挂载为文件,而不使用环境变量 | false |
replication.enabled | 启用MySQL复制 | true |
replication.user | MySQL复制用户(应该与db.user不同) | replicator |
replication.password | MySQL复制用户密码 | 随机的10个字符的字母数字字符串 |
replication.forcePassword | 强制用户指定密码。这是“头盔升级”正常工作所必需的 | false |
replication.injectSecretsAsVolume | 将用户密码挂载为文件,而不使用环境变量 | false |
master.config | MySQL主服务器的配置文件 | _default values in the values.yaml file_ |
master.updateStrategy.type | 主状态集更新策略策略 | RollingUpdate |
master.podAnnotations | 主节点的Pod批注 | {} |
master.affinity | 主节点的节点/吊舱亲和度地图 | {} (该值作为模板评估) |
master.nodeSelector | 主节点上用于pod分配的节点标签 | {} (该值作为模板评估) |
master.tolerations | 主节点上的Pod分配公差 | [] (该值作为模板评估) |
master.securityContext.enabled | 为主节点启用安全上下文 | true |
master.securityContext.fsGroup | 主节点容器的组ID | 1001 |
master.securityContext.runAsUser | 主节点容器的用户标识 | 1001 |
master.resources | 主节点容器的CPU /内存资源请求/限制 | {} |
master.livenessProbe.enabled | 打开和关闭活动探针(主节点) | true |
master.livenessProbe.initialDelaySeconds | 启动活动性探测之前的延迟(主节点) | 120 |
master.livenessProbe.periodSeconds | 多久执行一次探测(主节点) | 10 |
master.livenessProbe.timeoutSeconds | 探测超时时(主节点) | 1 |
master.livenessProbe.successThreshold | 探测的最小连续成功(主节点) | 1 |
master.livenessProbe.failureThreshold | 探针(主节点)的最小连续失败 | 3 |
master.readinessProbe.enabled | 打开和关闭就绪探针(主节点) | true |
master.readinessProbe.initialDelaySeconds | 启动就绪探针之前的延迟(主节点) | 30 |
master.readinessProbe.periodSeconds | 多久执行一次探测(主节点) | 10 |
master.readinessProbe.timeoutSeconds | 探测超时时(主节点) | 1 |
master.readinessProbe.successThreshold | 探测的最小连续成功(主节点) | 1 |
master.readinessProbe.failureThreshold | 探针(主节点)的最小连续失败 | 3 |
master.persistence.enabled | 使用PersistentVolumeClaim (主节点)启用持久性 | true |
master.persistence.mountPath | 配置PersistentVolumeClaim 安装路径(主节点) | /bitnami/mysql |
master.persistence.annotations | 持久卷声明批注(主节点) | {} |
master.persistence.storageClass | 持久卷存储类(主节点) | `` |
master.persistence.accessModes | 持久卷访问模式(主节点) | [ReadWriteOnce] |
master.persistence.size | 永久卷大小(主节点) | 8Gi |
master.persistence.existingClaim | 提供一个现有的PersistentVolumeClaim (主节点) | nil |
slave.replicas | 所需的从属副本数 | 1 |
slave.updateStrategy.type | 从状态集更新策略策略 | RollingUpdate |
slave.podAnnotations | 从属节点的Pod注释 | {} |
slave.affinity | 从节点的节点/吊舱亲和度映射 | {} (该值作为模板评估) |
slave.nodeSelector | 从节点上的Pod分配的节点标签 | {} (该值作为模板评估) |
slave.tolerations | 从节点上的Pod分配公差 | [] (该值作为模板评估) |
slave.securityContext.enabled | 为从属节点启用安全上下文 | true |
slave.securityContext.fsGroup | 从节点容器的组ID | 1001 |
slave.securityContext.runAsUser | 从节点容器的用户标识 | 1001 |
slave.resources | 从属节点容器的CPU /内存资源请求/限制 | {} |
slave.livenessProbe.enabled | 打开和关闭活动性探针(从节点) | true |
slave.livenessProbe.initialDelaySeconds | 启动活动性探测之前的延迟(从节点) | 120 |
slave.livenessProbe.periodSeconds | 多久执行一次探测(从节点) | 10 |
slave.livenessProbe.timeoutSeconds | 探测超时时(从节点) | 1 |
slave.livenessProbe.successThreshold | 探测的最小连续成功数(从节点) | 1 |
slave.livenessProbe.failureThreshold | 探针(从属节点)的最小连续失败 | 3 |
slave.readinessProbe.enabled | 打开和关闭就绪探针(从节点) | true |
slave.readinessProbe.initialDelaySeconds | 启动就绪探测之前的延迟(从节点) | 30 |
slave.readinessProbe.periodSeconds | 多久执行一次探测(从节点) | 10 |
slave.readinessProbe.timeoutSeconds | 探测超时时(从节点) | 1 |
slave.readinessProbe.successThreshold | 探测的最小连续成功数(从节点) | 1 |
slave.readinessProbe.failureThreshold | 探针(从属节点)的最小连续失败 | 3 |
slave.persistence.enabled | 使用PersistentVolumeClaim (从节点)启用持久性 | true |
slave.persistence.mountPath | 配置PersistentVolumeClaim 安装路径(从节点) | /bitnami/mysql |
slave.persistence.annotations | 持久卷声明批注(从属节点) | {} |
slave.persistence.storageClass | 持久卷存储类(从属节点) | `` |
slave.persistence.accessModes | 持久卷访问模式(从节点) | [ReadWriteOnce] |
slave.persistence.size | 永久卷大小(从节点) | 8Gi |
slave.persistence.existingClaim | 提供一个现有的PersistentVolumeClaim (从属节点) | nil |
service.type | Kubernetes服务类型 | ClusterIP |
service.port | MySQL服务端口 | 3306 |
service.nodePort | 绑定到NodePort服务类型的端口 | nil |
service.loadBalancerIP.master | 用于主LoadBalancer服务类型的静态IP地址 | nil |
service.loadBalancerIP.slave | 用于从站的静态IP地址LoadBalancer服务类型 | nil |
service.annotations | Kubernetes服务注释 | {} |
metrics.enabled | 启动边车普罗米修斯出口商 | false |
metrics.image | 出口商图片名称 | bitnami/mysqld-exporter |
metrics.imageTag | 出口商图片标签 | {TAG_NAME} |
metrics.imagePullPolicy | 出口商形象拉动政策 | IfNotPresent |
metrics.resources | 出口商资源请求/限制 | nil |
metrics.service.type | MySQL Prometheus Exporter的Kubernetes服务类型 | ClusterIP |
metrics.service.port | MySQL Prometheus Exporter服务端口 | 9104 |
metrics.service.annotations | Prometheus导出器SVC批注 | {prometheus.io/scrape: "true", prometheus.io/port: "9104"} |
metrics.serviceMonitor.enabled | 如果true ,则创建Prometheus Operator ServiceMonitor(也必须metrics.enabled 是true ) | false |
metrics.serviceMonitor.namespace | Prometheus在其中运行的可选名称空间 | nil |
metrics.serviceMonitor.interval | 刮取指标的频率(默认使用,回溯至Prometheus的默认设置) | nil |
metrics.serviceMonitor.selector | 默认为kube-prometheus安装(建议使用CoreOS),但应根据Prometheus安装进行设置 | nil |
上面的参数映射到bitnami / mysql中定义的env变量。有关更多信息,请参考bitnami / mysql映像文档。
使用的--set key=value[,key=value]
参数指定每个参数helm install
。例如,
$ helm install my-release \
--set root.password=secretpassword,user.database=app_database \
<helm-repo>/mysql
上面的命令将MySQLroot
帐户密码设置为secretpassword
。此外,它还会创建一个名为的数据库app_database
。
或者,可以在安装图表时提供指定参数值的YAML文件。例如,
$ helm install my-release -f values.yaml <helm-repo>/mysql
提示:您可以使用默认值。
强烈建议在生产环境中使用不可变标签。这样可以确保如果使用不同的映像更新相同的标记,则部署不会自动更改。
如果存在主容器的新版本,重大更改或严重漏洞,Bitnami将发布新图表以更新其容器。
该图表包括一个values-production.yaml
文件,您可以在其中找到一些与常规配置相比面向生产配置的参数values.yaml
。您可以使用此文件而不是默认文件。
强制用户指定密码:
```diff
root.forcePassword:否
root.forcePassword:true
db.forcePassword:否
db.forcePassword:true
plication.forcePassword:否
复制.forcePassword:true
所需的从属副本数:
```diff
slave.replicas:1
slave.replicas:2
启动侧面汽车普罗米修斯出口商:
```diff
metrics.enabled:假
metrics.enabled:true
使用Bitnami MySQL映像,您可以使用自定义脚本来初始化新实例。为了执行脚本,它们必须位于图表文件夹内,files/docker-entrypoint-initdb.d
以便可以作为ConfigMap使用。
允许的扩展是.sh
,.sql
和.sql.gz
。
所述Bitnami MySQL的图像存储MySQL的数据和配置在/bitnami/mysql
所述容器的路径。
图表在此位置安装了持久卷卷。默认情况下,使用动态卷配置创建该卷。可以定义现有的PersistentVolumeClaim。
由于映像默认情况下以非根用户身份运行,因此有必要调整持久卷的所有权,以便容器可以向其中写入数据。
默认情况下,该图表配置为使用Kubernetes安全上下文自动更改卷的所有权。但是,此功能不适用于所有Kubernetes发行版。
作为替代方案,此图表支持使用initContainer更改卷的所有权,然后再将其装入最终目标。
您可以通过设置volumePermissions.enabled
为启用此initContainer true
。
root.password
升级时有必要设置参数,以使就绪/活动探针正常工作。首次安装此图表时,将显示一些注释,提供必须在“管理员凭据”部分下使用的凭据。请记下密码并运行以下命令以升级图表:
$ helm upgrade my-release bitnami/mysql --set root.password=[ROOT_PASSWORD]
| 注意:您需要用安装说明中获得的值替换占位符_ [ROOT_PASSWORD] _。
除非您修改图表部署中使用的标签,否则不能保证向后兼容性。
使用下面的解决方法,从3.0.0之前的版本升级。以下示例假定发行版名称为mysql:
$ kubectl delete statefulset mysql-master --cascade=false
$ kubectl delete statefulset mysql-slave --cascade=false