
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
MariaDB is an open source, community-developed SQL database server that is widely in use around the world due to its enterprise features, flexibility, and collaboration with leading tech firms.
https://mariadb.org/
Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb
Note: You need to substitute the placeholders
REGISTRY_NAMEandREPOSITORY_NAMEwith a reference to your Helm chart registry and repository.
This chart bootstraps a https://github.com/bitnami/containers/tree/main/bitnami/mariadb replication cluster deployment on a https://kubernetes.io cluster using the https://helm.sh package manager.
MariaDB is developed as open source software and as a relational database it provides an SQL interface for accessing data. The latest versions of MariaDB also include GIS and JSON features.
First, log in to the OCI registry and create a secret with your registry credentials:
consolehelm registry login REGISTRY_NAME kubectl create secret docker-registry SECRET_NAME -n NAMESPACE \ --docker-server REGISTRY_NAME \ --docker-username "USER" \ --docker-password "TOKEN"
Note Replace the placeholders in these commands (
REGISTRY_NAME,SECRET_NAME,NAMESPACE,USER, andTOKEN) with your actual values.
Then install the chart with the release name my-release:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb --set "global.imagePullSecrets[0]=SECRET_NAME" -n NAMESPACE
Note Replace the placeholders in the
helm installcommand (REGISTRY_NAME,REPOSITORY_NAME,SECRET_NAME, andNAMESPACE) with your actual values.
The command deploys MariaDB on the Kubernetes cluster in the default configuration. The Parameters section lists the parameters that can be configured during installation.
Tip: List all releases using
helm list
This section describes credentials, configuration, and other installation options.
Bitnami charts allow setting resource requests and limits for all containers inside the chart deployment. These are inside the resources value (check parameter table). Setting requests is essential for production workloads and these should be adapted to your specific use case.
To make this process easier, the chart contains the resourcesPreset values, which automatically sets the resources section according to different presets. Check these presets in https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15. However, in production workloads using resourcesPreset is discouraged as it may not fully adapt to your specific needs. Find more information on container resource management in the https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/.
This chart can be integrated with Prometheus by setting metrics.enabled to true. This will deploy a sidecar container with https://github.com/prometheus/mysqld_exporter in all pods and will expose it via the MariaDB service. This service will have the necessary annotations to be automatically scraped by Prometheus.
Prometheus requirements
It is necessary to have a working installation of Prometheus or Prometheus Operator for the integration to work. Install the https://github.com/bitnami/charts/tree/main/bitnami/prometheus or the https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus to easily have a working Prometheus in your cluster.
Integration with Prometheus Operator
The chart can deploy ServiceMonitor objects for integration with Prometheus Operator installations. To do so, set the value metrics.serviceMonitor.enabled=true. Ensure that the Prometheus Operator CustomResourceDefinitions are installed in the cluster or it will fail with the following error:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
Install the https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus for having the necessary CRDs and the Prometheus Operator.
It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.
Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.
Bitnami charts, with its default settings, configure credentials at first boot. Any further change in the secrets or credentials can be done using one of the following methods:
shellkubectl create secret generic SECRET_NAME --from-literal=password=PASSWORD --from-literal=root-password=ROOT_PASSWORD --dry-run -o yaml | kubectl apply -f -
The Bitnami MariaDB provides a password update job that will automatically change the MariaDB passwords when running helm upgrade. To enable the job set passwordUpdateJob.enabled=true. This job requires:
auth.rootPassword, auth.password and auth.replicationPassword (if applicable) or setting auth.existingSecret.auth.existingSecret or helm template instead of helm upgrade, then set either passwordUpdate.job.previousPasswords.rootPassword, passwordUpdate.job.previousPasswords.password, passwordUpdate.job.previousPasswords.replicationPassword (when applicable), setting auth.existingSecret.In the following example we update the password via values.yaml in a mariadb installation with replication
yamlarchitecture: "replication" auth: user: "user" rootPassword: "newRootPassword123" password: "newUserPassword123" replicationPassword: "newReplicationPassword123" passwordUpdateJob: enabled: true
In this example we use two existing secrets (new-password-secret and previous-password-secret) to update the passwords:
yamlauth: existingSecret: new-password-secret passwordUpdateJob: enabled: true previousPasswords: existingSecret: previous-password-secret
You can add extra update commands using the passwordUpdateJob.extraCommands value.
The https://github.com/bitnami/containers/tree/main/bitnami/mariadb image allows you to use your custom scripts to initialize a fresh instance. Custom scripts may be specified using the initdbScripts parameter. Alternatively, an external ConfigMap may be created with all the initialization scripts and the ConfigMap passed to the chart via the initdbScriptsConfigMap parameter. Note that this will override the initdbScripts parameter.
The allowed extensions are .sh, .sql and .sql.gz.
These scripts are treated differently depending on their extension. While .sh scripts are executed on all the nodes, .sql and .sql.gz scripts are only executed on the primary nodes. This is because .sh scripts support conditional tests to identify the type of node they are running on, while such tests are not supported in .sql or .sql.gz files.
When using a .sh script, you may wish to perform a "one-time" action like creating a database. This can be achieved by adding a condition in the script to ensure that it is executed only on one node, as shown in the example below:
yamlinitdbScripts: my_init_script.sh: | #!/bin/sh if [[ $(hostname) == *primary* ]]; then echo "Primary node" mysql -P 3306 -uroot -prandompassword -e "create database new_database"; else echo "No primary node" fi
This chart supports encrypting communications using TLS. To enable this feature, set the tls.enabled.
It is necessary to create a secret containing the TLS certificates and pass it to the chart via the tls.existingSecret parameter. Every secret should contain a tls.crt and tls.key keys including the certificate and key files respectively and, optionally, a ca.crt key including the CA certificate. For example: create the secret with the certificates files:
consolekubectl create secret generic tls-secret --from-file=./tls.crt --from-file=./tls.key --from-file=./ca.crt
You can manually create the required TLS certificates or relying on the chart auto-generation capabilities. The chart supports two different ways to auto-generate the required certificates:
tls.autoGenerated.enabled to true and tls.autoGenerated.engine to helm.tls.autoGenerated.enabled to true and tls.autoGenerated.engine to cert-manager. Please note it's supported to use an existing Issuer/ClusterIssuer for issuing the TLS certificates by setting the tls.autoGenerated.certManager.existingIssuer and tls.autoGenerated.certManager.existingIssuerKind parameters.This chart supports encrypting data at rest using Transparent Data Encryption (TDE). To enable this feature, set the tde.enabled.
The chart supports two different ways to enable TDE:
tde.enabled to true and tde.existingSecret to the name of the secret containing the random key and the encrypted TDE key.tde.enabled to true and tde.secretsStoreProvider.enabled to true. Currently only the vault provider is supported and requires further parameters to be set for secret keys and paths to the encryption keys.To simplify the configuration the chart defaults most configuration values for TDE and https://mariadb.com/kb/en/file-key-management-encryption-plugin/. For more information, on creating the required keys to enable TDE please refer to the mariaDB blog post https://mariadb.com/resources/blog/mariadb-encryption-tde-using-mariadbs-file-key-management-encryption-plugin/.
NOTE: The
tde.enabledparameter impacts recoverability of the MariaDB data. If you enable TDE, the MariaDB data cannot be recovered if your encryption keys are lost. Always backup your encryption keys and store in a secure location outside of the cluster.
Using Kubernetes secret to store the encryption keys
To enable TDE using Kubernetes secret, create a secret containing the random key and the encrypted TDE key.
consolekubectl create secret generic mariadb-tde-secret --namespace=mariadb \ --from-file=./mariadb/encryption/keyfile.key \ --from-file=./mariadb/encryption/keyfile.enc
Using the Secrets Store CSI Driver to store the encryption keys in Hashicorp Vault
To enable TDE using the Secrets Store CSI Driver, create a secret containing the random key and the encrypted TDE key. When using the Secrets Store CSI Driver, the tde.secretsStoreProvider.vault parameters should be configured. Secrets in Hashicorp Vault are used to store the random key and the encrypted TDE key. The key files must be stored as base64 encoded values.
consoleexport KEYFILE_KEY=$(cat ./mariadb/encryption/keyfile.key|base64) export KEYFILE_ENC=$(cat ./mariadb/encryption/keyfile.enc|base64) vault kv put secrets-kv/keyfile key="$KEYFILE_KEY" enc="$KEYFILE_ENC"
The SecretProviderClass for vault at minimum requires the tde.secretsStoreProvider.vault.roleName, tde.secretsStoreProvider.vault.*KeySecretPath and tde.secretsStoreProvider.vault.*SecretKey parameters to be set for the secret values to properly be mounted.
NOTE: This guide does not include configuration for the Secrets Store CSI Driver or Hashicorp Vault provider which are prerequisites for enabling TDE with the Secrets Store CSI Driver.
If additional containers are needed in the same pod as MariaDB (such as additional metrics or logging exporters), they can be defined using the sidecars parameter.
yamlsidecars: - name: your-image-name image: your-image imagePullPolicy: Always ports: - name: portname containerPort: 1234
If these sidecars export extra ports, extra port definitions can be added using the service.extraPorts parameter (where available), as shown in the example below:
yamlservice: extraPorts: - name: extraPort port: 11311 targetPort: 11311
NOTE: This Helm chart already includes sidecar containers for the Prometheus exporters (where applicable). These can be activated by adding the
--enable-metrics=trueparameter at deployment time. Thesidecarsparameter should therefore only be used for any extra sidecar containers.
If additional init containers are needed in the same pod, they can be defined using the initContainers parameter. Here is an example:
yamlinitContainers: - name: your-image-name image: your-image imagePullPolicy: Always ports: - name: portname containerPort: 1234
Learn more about https://kubernetes.io/docs/concepts/workloads/pods/ and https://kubernetes.io/docs/concepts/workloads/pods/init-containers/.
To back up and restore Helm chart deployments on Kubernetes, you need to back up the persistent volumes from the source deployment and attach them to a new deployment using https://velero.io/, a Kubernetes backup/restore tool. Find the instructions for using Velero in https://techdocs.broadcom.com/us/en/vmware-tanzu/bitnami-secure-images/bitnami-secure-images/services/bsi-doc/apps-tutorials-backup-restore-deployments-velero-index.html.
The FIPS parameters only have effect if you are using images from the https://go-vmware.broadcom.com/contact-us.
For more information on this new support, please refer to the https://techdocs.broadcom.com/us/en/vmware-tanzu/bitnami-secure-images/bitnami-secure-images/services/bsi-doc/security-frameworks-FIPS-compliance.html.
The https://github.com/bitnami/containers/tree/main/bitnami/mariadb image stores the MariaDB data and configurations at the /bitnami/mariadb path of the container.
The chart mounts a https://kubernetes.io/docs/concepts/storage/persistent-volumes/ volume at this location. The volume is created using dynamic volume provisioning, by default. An existing PersistentVolumeClaim can also be defined.
If you encounter errors when working with persistent volumes, refer to our https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/.
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination. You can enable this initContainer by setting volumePermissions.enabled to true.
The following subsections list global, common, and component-specific parameters.
| Name | Description | Value |
|---|---|---|
global.imageRegistry | Global Docker Image registry | "" |
global.imagePullSecrets | Global Docker registry secret names as an array | [] |
global.defaultStorageClass | Global default StorageClass for Persistent Volume(s) | "" |
global.defaultFips | Default value for the FIPS configuration (allowed values: '', restricted, relaxed, off). Can be overridden by the 'fips' object | restricted |
global.security.allowInsecureImages | Allows skipping image verification | false |
global.compatibility.openshift.adaptSecurityContext | Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) | auto |
| Name | Description | Value |
|---|---|---|
kubeVersion | Force target Kubernetes version (using Helm capabilities if not set) | "" |
nameOverride | String to partially override mariadb.fullname | "" |
fullnameOverride | String to fully override mariadb.fullname | "" |
clusterDomain | Default Kubernetes cluster domain | cluster.local |
commonAnnotations | Common annotations to add to all MariaDB resources (sub-charts are not ***ed) | {} |
commonLabels | Common labels to add to all MariaDB resources (sub-charts are not ***ed) | {} |
schedulerName | Name of the scheduler (other than default) to dispatch pods | "" |
runtimeClassName | Name of the Runtime Class for all MariaDB pods | "" |
extraDeploy | Array of extra objects to deploy with the release (evaluated as a template) | [] |
diagnosticMode.enabled | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | false |
diagnosticMode.command | Command to override all containers in the deployment | ["sleep"] |
diagnosticMode.args | Args to override all containers in the deployment | ["infinity"] |
serviceBindings.enabled | Create secret for service binding (Experimental) | false |
| Name | Description | Value |
|---|---|---|
image.registry | MariaDB image registry | REGISTRY_NAME |
image.repository | MariaDB image repository |
Note: the README for this chart is longer than the DockerHub length limit of 25000, so it has been trimmed. The full README can be found at https://techdocs.broadcom.com/us/en/vmware-tanzu/bitnami-secure-images/bitnami-secure-images/services/bsi-app-doc/apps-charts-mariadb-index.html
以下是 bitnamicharts/mariadb 相关的常用 Docker 镜像,适用于 关系型数据库、MySQL 兼容、高性能 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务