60 lines
2.0 KiB
Markdown
60 lines
2.0 KiB
Markdown
# MySQL Connection Component
|
|
|
|
This Kustomize component provides a standardized way for applications to connect to the shared MySQL database cluster.
|
|
|
|
## Features
|
|
|
|
- Injects standard database connection environment variables.
|
|
- Supports `Deployment`, `StatefulSet`, and `HelmRelease` (standard `bjw-s` app-template structure).
|
|
- Configurable via a local `mysql-secret`.
|
|
|
|
## Environment Variables
|
|
|
|
The following variables are injected into the application containers:
|
|
|
|
| Variable | Source / Value | Description |
|
|
|----------|----------------|-------------|
|
|
| `DB_HOST` | `mysql-innodbcluster-router.database-system.svc.cluster.local` | The internal DNS name for the MySQL router. |
|
|
| `DB_PORT` | `3306` | The default MySQL port. |
|
|
| `DB_USER` | Secret `mysql-secret`, key `DB_USER` | Database username. |
|
|
| `DB_PASSWORD` | Secret `mysql-secret`, key `DB_PASSWORD` | Database password. |
|
|
| `DB_NAME` | Secret `mysql-secret`, key `DB_NAME` | Name of the database. |
|
|
|
|
## Usage
|
|
|
|
### 1. Add the component to `kustomization.yaml`
|
|
|
|
In your application's `kustomization.yaml`, add the component:
|
|
|
|
```yaml
|
|
components:
|
|
- ../../components/connect/mysql
|
|
```
|
|
|
|
### 2. Create the required secret
|
|
|
|
Ensure a secret named `mysql-secret` exists in the application's namespace with the following keys:
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: mysql-secret
|
|
stringData:
|
|
DB_USER: "your-user"
|
|
DB_PASSWORD: "your-password"
|
|
DB_NAME: "your-database"
|
|
```
|
|
|
|
### 3. Overriding defaults
|
|
|
|
If you need to use a different secret name or override specific variables, you can define them directly in your resource's `env` section. Kustomize will prioritize or merge these depending on the patch type.
|
|
|
|
For `HelmRelease` using the `bjw-s` template, ensure your controller is named `main` and container is named `main` for the patch to apply automatically.
|
|
|
|
## Resource Compatibility
|
|
|
|
- **Deployments**: Targets containers named `app`.
|
|
- **StatefulSets**: Targets containers named `app`.
|
|
- **HelmReleases**: Targets `spec.values.controllers.main.containers.main`.
|