当前位置: 首页 > 工具软件 > helm-diff > 使用案例 >

rancher 的MySQL helm安装

茅鸿宝
2023-12-01

rancher 的MySQL helm安装

MySQL是一种快速,可靠,可扩展且易于使用的开源关系数据库系统。MySQL Server适用于关键任务,高负荷的生产系统以及嵌入到大规模部署的软件中。

TL; DR;

$ helm install my-release <helm-repo>/mysql

介绍

该图表使用Helm软件包管理器在Kubernetes集群上引导了MySQL复制集群的部署。

Bitnami图表可与Kubeapps一起用于在群集中部署和管理Helm Charts。该Helm图表已在Bitnami Kubernetes生产运行时(BKPR)之上进行了测试。部署BKPR以获取自动化TLS证书,对应用程序进行日志记录和监视。

先决条件

  • 总督1.12+
  • Helm 2.11+或Helm 3.0-beta3 +
  • 基础架构中的PV供应商支持

安装图表

要使用发布名称安装图表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.registryMySQL映像注册表docker.io
image.repositoryMySQL映像名称bitnami/mysql
image.tagMySQL Image标签{TAG_NAME}
image.pullPolicyMySQL镜像拉策略IfNotPresent
image.pullSecrets将docker-registry秘密名称指定为数组[] (不向已部署的吊舱添加图像拉取秘密)
image.debug指定是否应启用调试日志false
nameOverride使用字符串部分覆盖mysql.fullname模板的字符串(将在发布名称之前)nil
fullnameOverride使用字符串完全覆盖mysql.fullname模板的字符串nil
clusterDomain使用的Kubernetes DNS域名cluster.local
volumePermissions.enabled启用用于更改数据目录中的卷许可权的初始化容器(对于默认的k8runAsUserfsUser值不起作用的情况)false
volumePermissions.image.registry初始化容器容量许可映像注册表docker.io
volumePermissions.image.repository初始化容器容量许可映像名称bitnami/minideb
volumePermissions.image.tag初始化容器体积许可图像标签buster
volumePermissions.image.pullPolicy初始化容器容量许可映像拉取策略Always
volumePermissions.resources初始化容器资源请求/限制nil
existingSecret使用密码的详细信息(现有的秘密root.passworddb.passwordreplication.password将被忽略,从这个秘密回升)。秘密必须包含键mysql-root-passwordmysql-replication-passwordmysql-passwordnil
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.userMySQL复制用户(应该与db.user不同)replicator
replication.passwordMySQL复制用户密码随机的10个字符的字母数字字符串
replication.forcePassword强制用户指定密码。这是“头盔升级”正常工作所必需的false
replication.injectSecretsAsVolume将用户密码挂载为文件,而不使用环境变量false
master.configMySQL主服务器的配置文件_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主节点容器的组ID1001
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从节点容器的组ID1001
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.typeKubernetes服务类型ClusterIP
service.portMySQL服务端口3306
service.nodePort绑定到NodePort服务类型的端口nil
service.loadBalancerIP.master用于主LoadBalancer服务类型的静态IP地址nil
service.loadBalancerIP.slave用于从站的静态IP地址LoadBalancer服务类型nil
service.annotationsKubernetes服务注释{}
metrics.enabled启动边车普罗米修斯出口商false
metrics.image出口商图片名称bitnami/mysqld-exporter
metrics.imageTag出口商图片标签{TAG_NAME}
metrics.imagePullPolicy出口商形象拉动政策IfNotPresent
metrics.resources出口商资源请求/限制nil
metrics.service.typeMySQL Prometheus Exporter的Kubernetes服务类型ClusterIP
metrics.service.portMySQL Prometheus Exporter服务端口9104
metrics.service.annotationsPrometheus导出器SVC批注{prometheus.io/scrape: "true", prometheus.io/port: "9104"}
metrics.serviceMonitor.enabled如果true,则创建Prometheus Operator ServiceMonitor(也必须metrics.enabledtruefalse
metrics.serviceMonitor.namespacePrometheus在其中运行的可选名称空间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

提示:您可以使用默认值。

配置和安装详细信息

滚动式VS不可变标签

强烈建议在生产环境中使用不可变标签。这样可以确保如果使用不同的映像更新相同的标记,则部署不会自动更改。

如果存在主容器的新版本,重大更改或严重漏洞,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

除非您修改图表部署中使用的标签,否则不能保证向后兼容性。
使用下面的解决方法,从3.0.0之前的版本升级。以下示例假定发行版名称为mysql:

$ kubectl delete statefulset mysql-master --cascade=false
$ kubectl delete statefulset mysql-slave --cascade=false
 类似资料: