refactor(docs): replace Vitepress with Zensical
- Remove Vitepress dependencies, config, and build scripts - Replace Node-based documentation workflow with Zensical (MkDocs) - Move documentation files to `docs/` directory - Create `zensical.toml` configuration with navigation and theme settings - Update `task` script to use `init/dev/build/serve-zensical-docs` commands - Add `sync-docs` command to copy chart READMEs to docs folder - Update `.gitignore`, `.helmignore`, and `AGENTS.md` for new structure - Create symlinks for Helm repository artifacts in `docs/` - Migrate custom CSS to `docs/assets/custom.css` - Update internal links and navigation structure - Delete prompt files `01` through `11` as tasks are completed
This commit is contained in:
47 files changed
+901
-3937
No files matched your search
+1
-3
@@ -1,6 +1,5 @@
|
||||
node_modules
|
||||
.vitepress/dist
|
||||
.vitepress/cache
|
||||
site
|
||||
tmp
|
||||
manifest.*
|
||||
.obsidian/appearance.json
|
||||
@@ -9,7 +8,6 @@ manifest.*
|
||||
odoo/charts
|
||||
prometheus-agent/charts
|
||||
.env
|
||||
index.md
|
||||
values
|
||||
*.kubeconfig
|
||||
pnpm-workspace.yaml
|
||||
+5
-2
@@ -2,11 +2,14 @@
|
||||
.obsidian
|
||||
node_modules
|
||||
.github
|
||||
.vitepress
|
||||
docs
|
||||
site
|
||||
public
|
||||
tmp
|
||||
.gitignore
|
||||
index.md
|
||||
README.md
|
||||
.venv
|
||||
zensical.toml
|
||||
kind-config.yaml
|
||||
*.tgz
|
||||
package.json
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
read the AGENTS.md and README.md to get an understanding of the project.
|
||||
|
||||
In the file `odoo/templates/deploy-staging.yaml` there is script that resets the staging enviroment when `.Values.staging.reset` is set to true. I would like to replace this script and and the option with a K8S job. Create the job and then tell me how it works. Remove the staging reset from the `values.yaml` of the `odoo` chart. Lint the entire project using the `task` script.
|
||||
|
||||
Remove the `resetOnStartup` values. The job must be started manually.
|
||||
|
||||
Ensure the `task test-odoo-chart` command runs the job. Furthermore I want to be able to use a `task` command to run the job. What about `task run-job [path] [values]`. This would be `task run-job odoo/templates/staging-reset-job.yaml test_values/odoo.knd.local.yaml`
|
||||
|
||||
Remove the [values] from the command. Instead use the information of job file to run the job commmand. Assume the job is already installed.
|
||||
@@ -1,45 +0,0 @@
|
||||
import { defineConfig } from "vitepress";
|
||||
import { vitepressMermaidPreview } from "vitepress-mermaid-preview";
|
||||
|
||||
export default defineConfig({
|
||||
srcExclude: ["prompts/**"],
|
||||
title: "Kubernetes Build",
|
||||
description: "The Mint System collection of Helm Charts.",
|
||||
head: [["link", { rel: "icon", type: "image/png", href: "/icon.png" }]],
|
||||
themeConfig: {
|
||||
logo: "/icon.png",
|
||||
search: {
|
||||
provider: "local",
|
||||
},
|
||||
nav: [
|
||||
{ text: "Home", link: "/" },
|
||||
{
|
||||
text: "Charts",
|
||||
items: [
|
||||
{ text: "cluster-issuer", link: "/cluster-issuer/README.html" },
|
||||
{ text: "deployment-updater", link: "/deployment-updater/README.html" },
|
||||
{ text: "forgejo-runner", link: "/forgejo-runner/README.html" },
|
||||
{ text: "nextcloud", link: "/nextcloud/README.html" },
|
||||
{ text: "odoo", link: "/odoo/README.html" },
|
||||
{ text: "postgres", link: "/postgres/README.html" },
|
||||
{ text: "prometheus-agent", link: "/prometheus-agent/README.html" },
|
||||
{ text: "taskfile-build", link: "/taskfile-build/README.html" },
|
||||
{ text: "vshn-postgres", link: "/vshn-postgres/README.html" },
|
||||
],
|
||||
},
|
||||
{ text: "Odoo Build", link: "https://odoo.build/" },
|
||||
{ text: "Mint System", link: "https://www.mint-system.ch/" },
|
||||
],
|
||||
socialLinks: [
|
||||
{
|
||||
icon: "github",
|
||||
link: "https://github.com/Mint-System/Kubernetes-Build",
|
||||
},
|
||||
],
|
||||
},
|
||||
markdown: {
|
||||
config: (md) => {
|
||||
vitepressMermaidPreview(md);
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -1,4 +0,0 @@
|
||||
:root {
|
||||
--vp-c-brand-1: #054a6e;
|
||||
--vp-c-brand-2: #ffc61c;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
import type { Theme } from "vitepress";
|
||||
import DefaultTheme from "vitepress/theme";
|
||||
import { initComponent } from "vitepress-mermaid-preview/component";
|
||||
import "vitepress-mermaid-preview/dist/index.css";
|
||||
|
||||
import "./custom.css";
|
||||
|
||||
export default {
|
||||
extends: DefaultTheme,
|
||||
enhanceApp({ app }) {
|
||||
initComponent(app);
|
||||
},
|
||||
} satisfies Theme;
|
||||
@@ -21,9 +21,9 @@ This section outlines the universal rules and expectations for any LLM agent wor
|
||||
- `test_values`: Contains the `values.yaml` to setup the test enviroment.
|
||||
- `values`: In there are multiple `values.yaml` files of production deployments. There are two kinds `deployment` and `cluster`.
|
||||
- `*.tgz`: The packaged Helm chart for publishing.
|
||||
- `*.md`: Vuepress docs.
|
||||
- `*.md`: Zensical docs.
|
||||
- `development.md`: Here you find details on how to setup the development enviroment.
|
||||
- `.vitepress`: Vitepress config folder.
|
||||
- `docs/`: Zensical docs folder.
|
||||
|
||||
## Environment & tooling
|
||||
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
Kubernetes Build
|
||||
===
|
||||
|
||||
[](https://github.com/Mint-System/Kubernetes-Build/actions/workflows/package.yml)
|
||||
|
||||
[](https://github.com/Mint-System/Kubernetes-Build/actions/workflows/test.yml)
|
||||
|
||||
[](https://matrix.to/#/#kuberentes-build:mint-system.ch)
|
||||
|
||||
The Mint System collection of Helm charts.
|
||||
|
||||
- **Install**: Install Helm repository and get started with Odoo.
|
||||
- **Develop**: Deploy Odoo and Postgres to a local Kubernetes cluster.
|
||||
- **Build**: Fork and build your own Helm charts.
|
||||
- **Deploy**: Configure and deploy Helm charts to remote clusters.
|
||||
- **Bootstrap**: Bootstrap new Kubernetes clusters.
|
||||
|
||||
## Requirements
|
||||
|
||||
- [yq](https://mikefarah.gitbook.io/yq/#install)
|
||||
- [helm](https://helm.sh/docs/intro/install/)
|
||||
- [helm-sops](https://github.com/camptocamp/helm-sops)
|
||||
- [sops](https://getsops.io/docs/installation/)
|
||||
- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
|
||||
- [kubectx](https://kubectx.dev/)
|
||||
- [kind](https://kind.sigs.k8s.io/)
|
||||
- bash/zsh alias `task='./task'` with optional [completion](https://taskfile.build/#completion)
|
||||
|
||||
## Usage
|
||||
|
||||
You can use this project as any other Helm chart repository.
|
||||
|
||||
Add [this Helm repository](/index.yaml).
|
||||
|
||||
```bash
|
||||
helm repo add kubernetes-build https://kubernetes.build
|
||||
```
|
||||
|
||||
Install a chart.
|
||||
|
||||
```bash
|
||||
helm install "$NAME" "kubernetes-build/$NAME"
|
||||
```
|
||||
|
||||
## Charts
|
||||
|
||||
List of charts:
|
||||
|
||||
* [cluster-issuer](/cluster-issuer/README.md)
|
||||
* [odoo](/odoo/README.md)
|
||||
* [nextcloud](/nextcloud/README.md)
|
||||
* [postgres](/postgres/README.md)
|
||||
* [prometheus-agent](/prometheus-agent/README.md)
|
||||
* [vshn-postgres](/vshn-postgres/README.md)
|
||||
* [deployment-updater](/deployment-updater/README.md)
|
||||
* [forgejo-runner](/forgejo-runner/README.md)
|
||||
* [taskfile-build](/taskfile-build/README.md)
|
||||
|
||||
## Deploy
|
||||
|
||||
You can use this project to deploy the charts to these Kubernetes clusters:
|
||||
|
||||
* [APPUiO](./APPUiO.md)
|
||||
* [Exoscale](./Exoscale.md)
|
||||
* [Infomaniak](./Infomaniak.md)
|
||||
* [K3s](./K3s.md)
|
||||
|
||||
## Develop
|
||||
|
||||
The [Development](./Development.md) covers everything to start developing the Helm charts.
|
||||
|
||||
## Backup
|
||||
|
||||
Have a look at the [Backup](./Backup.md) page to learn about how the services make backups.
|
||||
|
||||
## Monitoring
|
||||
|
||||
Checkout the [Monitor](./Monitor.md) page to learn about how services are monitored.
|
||||
|
||||
## Migration
|
||||
|
||||
To execute migrations have a look at [Migration](Migration.md).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
Problems and solutions are documented in the [Troubleshooting](./Troubleshooting.md) document.
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,13 @@
|
||||
# Charts
|
||||
|
||||
The Mint System collection of Helm charts.
|
||||
|
||||
* [cluster-issuer](cluster-issuer/README.md)
|
||||
* [deployment-updater](deployment-updater/README.md)
|
||||
* [forgejo-runner](forgejo-runner/README.md)
|
||||
* [nextcloud](nextcloud/README.md)
|
||||
* [odoo](odoo/README.md)
|
||||
* [postgres](postgres/README.md)
|
||||
* [prometheus-agent](prometheus-agent/README.md)
|
||||
* [taskfile-build](taskfile-build/README.md)
|
||||
* [vshn-postgres](vshn-postgres/README.md)
|
||||
@@ -0,0 +1,8 @@
|
||||
# Clusters
|
||||
|
||||
Deploy the Helm charts to these Kubernetes clusters.
|
||||
|
||||
* [APPUiO](APPUiO.md)
|
||||
* [Exoscale](Exoscale.md)
|
||||
* [Infomaniak](Infomaniak.md)
|
||||
* [K3s](K3s.md)
|
||||
File renamed without changes.
@@ -51,7 +51,7 @@ task install-chart cert-manager values/exo.mintcloud.ch.yaml
|
||||
|
||||
Create an Infomaniak API token with domain scope: <https://manager.infomaniak.com/v3/infomaniak-api>
|
||||
|
||||
Setup the secret according to [cluster-issuer > Secrets](/cluster-issuer/README.md#Secrets).
|
||||
Setup the secret according to [cluster-issuer > Secrets](cluster-issuer/README.md#secrets).
|
||||
|
||||
Install cluster issuer.
|
||||
|
||||
@@ -54,7 +54,7 @@ task install-chart cert-manager values/chk.mintcloud.ch.yaml
|
||||
|
||||
Create an Infomaniak API token with domain scope: <https://manager.infomaniak.com/v3/infomaniak-api>
|
||||
|
||||
Setup the secret according to [cluster-issuer > Secrets](/cluster-issuer/README.md#Secrets).
|
||||
Setup the secret according to [cluster-issuer > Secrets](cluster-issuer/README.md#secrets).
|
||||
|
||||
Install cluster issuer.
|
||||
|
||||
File renamed without changes.
File renamed without changes.
@@ -9,7 +9,7 @@ kubectl create namespace prometheus
|
||||
kubectl-ns prometheus
|
||||
```
|
||||
|
||||
Setup the credentials according to the prometheus-agent [README](/prometheus-agent/README.md).
|
||||
Setup the credentials according to the prometheus-agent [README](prometheus-agent/README.md).
|
||||
|
||||
Update the values file with the `remoteWrite.url`.
|
||||
|
||||
File renamed without changes.
@@ -0,0 +1,7 @@
|
||||
:root {
|
||||
--md-primary-fg-color: #054a6e;
|
||||
--md-primary-fg-color--light: #054a6e;
|
||||
--md-primary-fg-color--dark: #054a6e;
|
||||
--md-accent-fg-color: #ffc61c;
|
||||
--md-accent-fg-color--transparent: #ffc61c1a;
|
||||
}
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../cluster-issuer-0.1.0.tgz
|
||||
@@ -0,0 +1,52 @@
|
||||
# Mint System Cluster Issuer
|
||||
|
||||
This chart deploys cluster issuers for prod and staging and for dns and http.
|
||||
|
||||
## Secrets
|
||||
|
||||
To use the Infomaniak resolver setup a `infomaniak-api-credentials` secret with the API token.
|
||||
|
||||
```bash
|
||||
kubectl create secret generic infomaniak-api-credentials \
|
||||
--from-literal=api-token="$infomaniak_api_token" \
|
||||
-n cert-manager
|
||||
```
|
||||
|
||||
## Test
|
||||
|
||||
### Infomaniak webhook
|
||||
|
||||
To test the Infomaniak webhook create a certificate with the `letsencrypt-dns-staging` issuer.
|
||||
|
||||
```bash
|
||||
echo "Apply certificate."
|
||||
cat <<EOF | kubectl apply -f -
|
||||
---
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: chk-mintcloud-ch
|
||||
spec:
|
||||
secretName: chk-mintcloud-ch
|
||||
issuerRef:
|
||||
name: letsencrypt-dns-staging
|
||||
kind: ClusterIssuer
|
||||
dnsNames:
|
||||
- chk.mintcloud.ch
|
||||
EOF
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
### Ingress parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------- | ------------------------------ | ----- |
|
||||
| `ingress.className` | The class name for the ingress | `""` |
|
||||
|
||||
### Cluster Issuer parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------- | -------------------------- | ----- |
|
||||
| `acme.email` | The email address for ACME | `""` |
|
||||
| `acme.solver` | The solver for ACME | `""` |
|
||||
+1
@@ -0,0 +1 @@
|
||||
../deployment-updater-0.1.0.tgz
|
||||
@@ -0,0 +1,48 @@
|
||||
# Mint System Deployment Updater
|
||||
|
||||
Cluster-wide service account that can update deployments.
|
||||
|
||||
## Integration
|
||||
|
||||
### Forgejo Deployment action
|
||||
|
||||
Use this service account to make deployments to Kubernetes. The deployment action requires a kubeconfig. Export the kubeconfig with this command:
|
||||
|
||||
```bash
|
||||
task generate-kubconfig deploy
|
||||
```
|
||||
|
||||
Setup secret `KUBECONFIG_DEPLOY` with content of the created kubeconfig.
|
||||
|
||||
Here is an example of a GitHub/Forgejo action:
|
||||
|
||||
```yaml
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
name: Deploy to Kubernetes
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install kubectl
|
||||
run: |
|
||||
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
|
||||
chmod +x kubectl
|
||||
|
||||
- name: Create Kubeconfig for Deployment
|
||||
run: |
|
||||
mkdir -p $HOME/.kube
|
||||
echo "${{ secrets.KUBECONFIG_DEPLOY }}" > $HOME/.kube/config
|
||||
|
||||
- name: Verify kubectl version
|
||||
run: ./kubectl version --client
|
||||
|
||||
- name: Delete existing pods
|
||||
run: ./kubectl delete pods -l app=taskfile-build -n ansible-build
|
||||
|
||||
- name: Wait for pod to be running
|
||||
run: ./kubectl wait --for=condition=Ready pod -l app=taskfile-build -n ansible-build --timeout=60s
|
||||
```
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../forgejo-runner-0.1.0.tgz
|
||||
@@ -0,0 +1,91 @@
|
||||
# Mint System Forgejo Runner
|
||||
|
||||
Setup a Forgejo runner to run actions.
|
||||
|
||||
## Secrets
|
||||
|
||||
To register the runner set up a `forgejo-runner` secret with the token.
|
||||
|
||||
```bash
|
||||
FORGEJO_INSTANCE_TOKEN="*******"
|
||||
kubectl create secret generic forgejo-runner \
|
||||
--from-literal=forgejoInstanceToken="$FORGEJO_INSTANCE_TOKEN" \
|
||||
-n <namespace>
|
||||
```
|
||||
|
||||
## Integration
|
||||
|
||||
### Forgejo Buildx action
|
||||
|
||||
This role also provides a service account to access the Kubernetes cluster. With Buildx you can use the cluster as build enviroment. Export the kubeconfig to provide it in the Forgejo action with this command:
|
||||
|
||||
```bash
|
||||
task generate-kubconfig buildx
|
||||
```
|
||||
|
||||
```bash
|
||||
name=buildx-sa-token
|
||||
server=$(kubectl config view --minify --output 'jsonpath={.clusters[0].cluster.server}')
|
||||
ca=$(kubectl get secret/$name -o jsonpath='{.data.ca\.crt}')
|
||||
token=$(kubectl get secret/$name -o jsonpath='{.data.token}' | base64 --decode)
|
||||
namespace=$(kubectl get secret/$name -o jsonpath='{.data.namespace}' | base64 --decode)
|
||||
|
||||
echo "
|
||||
apiVersion: v1
|
||||
kind: Config
|
||||
clusters:
|
||||
- name: default-cluster
|
||||
cluster:
|
||||
certificate-authority-data: ${ca}
|
||||
server: ${server}
|
||||
contexts:
|
||||
- name: default-context
|
||||
context:
|
||||
cluster: default-cluster
|
||||
namespace: default
|
||||
user: default-user
|
||||
current-context: default-context
|
||||
users:
|
||||
- name: default-user
|
||||
user:
|
||||
token: ${token}
|
||||
" > buildx.kubeconfig
|
||||
```
|
||||
|
||||
Setup secret `KUBECONFIG_BUILDX` with content of the created kubeconfig.
|
||||
|
||||
Here is are examples of Forgejo action steps:
|
||||
|
||||
```yaml
|
||||
- name: Create Kubeconfig for Buildx
|
||||
run: |
|
||||
mkdir -p $HOME/.kube
|
||||
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
driver: kubernetes
|
||||
driver-opts: |
|
||||
namespace=codeberg
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
### Forgejo Runner parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------- | ------------------------------------------- | ----------------------------------- |
|
||||
| `image` | The image for Forgejo Runner | `code.forgejo.org/forgejo/runner:9` |
|
||||
| `imagePullPolicy` | Pull policy for Forgejo Runner image | `Always` |
|
||||
| `forgejoInstanceUrl` | Forgejo instance url. | `https://codeberg.org` |
|
||||
| `secretRef` | The secret reference for the Forgejo Runner | `forgejo-runner` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
File renamed without changes.
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
File renamed without changes.
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,96 @@
|
||||
# Kubernetes Build
|
||||
|
||||
The Mint System collection of Helm charts.
|
||||
|
||||
---
|
||||
|
||||
Read the docs at [kubernetes.build](https://kubernetes.build).
|
||||
|
||||
## Development
|
||||
|
||||
The development environment requires these tools:
|
||||
|
||||
- [yq](https://mikefarah.gitbook.io/yq/#install)
|
||||
- [helm](https://helm.sh/docs/intro/install/)
|
||||
- [helm-sops](https://github.com/camptocamp/helm-sops)
|
||||
- [sops](https://getsops.io/docs/installation/)
|
||||
- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
|
||||
- [kubectx](https://kubectx.dev/)
|
||||
- [kind](https://kind.sigs.k8s.io/)
|
||||
- [uv](https://docs.astral.sh/uv/)
|
||||
- bash/zsh alias `task='./task'` with optional [completion](https://taskfile.build/#completion)
|
||||
|
||||
### Setup
|
||||
|
||||
Clone this repo and enter the folder:
|
||||
|
||||
```bash
|
||||
git clone git@github.com:Mint-System/Kubernetes-Build.git
|
||||
cd Kubernetes-Build
|
||||
```
|
||||
|
||||
Setup the local hostnames:
|
||||
|
||||
```bash
|
||||
task setup-hosts
|
||||
```
|
||||
|
||||
Initialize the documentation build dependencies:
|
||||
|
||||
```bash
|
||||
task init-zensical-docs
|
||||
```
|
||||
|
||||
### Commands
|
||||
|
||||
Run the documentation development server:
|
||||
|
||||
```bash
|
||||
task dev-zensical-docs
|
||||
```
|
||||
|
||||
Build the documentation website:
|
||||
|
||||
```bash
|
||||
task build-zensical-docs
|
||||
```
|
||||
|
||||
Serve the built documentation:
|
||||
|
||||
```bash
|
||||
task serve-zensical-docs
|
||||
```
|
||||
|
||||
Generate Helm chart readmes:
|
||||
|
||||
```bash
|
||||
task docs
|
||||
```
|
||||
|
||||
Lint Helm charts:
|
||||
|
||||
```bash
|
||||
task lint
|
||||
```
|
||||
|
||||
Show all available commands:
|
||||
|
||||
```bash
|
||||
task help
|
||||
```
|
||||
|
||||
## Charts
|
||||
|
||||
- [cluster-issuer](cluster-issuer/README.md)
|
||||
- [deployment-updater](deployment-updater/README.md)
|
||||
- [forgejo-runner](forgejo-runner/README.md)
|
||||
- [nextcloud](nextcloud/README.md)
|
||||
- [odoo](odoo/README.md)
|
||||
- [postgres](postgres/README.md)
|
||||
- [prometheus-agent](prometheus-agent/README.md)
|
||||
- [taskfile-build](taskfile-build/README.md)
|
||||
- [vshn-postgres](vshn-postgres/README.md)
|
||||
|
||||
## License
|
||||
|
||||
[AGPL-3.0-only](LICENSE)
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../index.yaml
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../nextcloud-0.1.0.tgz
|
||||
@@ -0,0 +1,113 @@
|
||||
# Mint System Nextcloud
|
||||
|
||||
This Helm chart deploys Nextcloud with PostgreSQL.
|
||||
|
||||
This chart is a wrapper for the official Nextcloud chart: https://github.com/nextcloud/helm/blob/main/charts/nextcloud/README.md#configuration
|
||||
|
||||
|
||||
## Secrets
|
||||
|
||||
Setup a `nextcloud-creds` secret with any additional environment variables you want to pass to Nextcloud.
|
||||
|
||||
```bash
|
||||
kubectl create secret generic nextcloud-creds \
|
||||
--from-literal=nextcloud-username="$nextcloud_admin_user" \
|
||||
--from-literal=nextcloud-password="$nextcloud_admin_password" \
|
||||
--from-literal=smtp-host="$smtp_host" \
|
||||
--from-literal=smtp-username="$smtp_username" \
|
||||
--from-literal=smtp-password="$smtp_password" \
|
||||
-n $namespace
|
||||
```
|
||||
|
||||
The K8up backup requires a `s3-credentials` and a `backup-repo` secret. Here is an example for Exoscale SOS:
|
||||
|
||||
```bash
|
||||
kubectl create secret generic s3-credentials \
|
||||
--from-literal=username="$exoscale_iam_key" \
|
||||
--from-literal=password="$exoscale_iam_secret" \
|
||||
-n $namespace
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
### Ingress parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------- | -------------------------------------------- | ------ |
|
||||
| `ingress.enabled` | Enable or disable the ingress | `true` |
|
||||
| `ingress.className` | The class name for the ingress | `""` |
|
||||
| `ingress.clusterIssuerRef` | The cluster issuer reference for the ingress | `nil` |
|
||||
| `ingress.host` | The host for the ingress | `""` |
|
||||
|
||||
### Nextcloud parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------------------- | ------------------------------------------------------------------- | -------------------------- |
|
||||
| `nextcloud.enabled` | Enable or disable Nextcloud | `true` |
|
||||
| `nextcloud.ingress.enabled` | Enable or disable the Nextcloud subchart ingress | `false` |
|
||||
| `nextcloud.nextcloud.host` | The host for Nextcloud and Ingress | `""` |
|
||||
| `nextcloud.nextcloud.existingSecret.enabled` | Use an existing secret for credentials | `true` |
|
||||
| `nextcloud.nextcloud.existingSecret.enabled` | Enable or disable using an existing secret | `true` |
|
||||
| `nextcloud.nextcloud.existingSecret.secretName` | Name of the existing Kubernetes secret | `nextcloud-creds` |
|
||||
| `nextcloud.nextcloud.mail.enabled` | Whether to enable/disable email settings | `true` |
|
||||
| `nextcloud.persistence.enabled` | Enable persistence using PVC | `true` |
|
||||
| `nextcloud.phpClientHttpsFix.enabled` | Fix HTTPS protocol detection behind reverse proxy | `true` |
|
||||
| `nextcloud.internalDatabase.enabled` | Enable or disable the internal SQLite database | `false` |
|
||||
| `nextcloud.redis.enabled` | Enable or disable the bitnami Redis subchart | `false` |
|
||||
| `nextcloud.redis.auth.enabled` | Enable or disable Redis authentication | `false` |
|
||||
| `nextcloud.externalRedis.enabled` | Enable or disable external Redis | `true` |
|
||||
| `nextcloud.externalRedis.host` | Hostname or service name of the external Redis | `nextcloud-redis` |
|
||||
| `nextcloud.externalDatabase.enabled` | Enable or disable external database usage | `true` |
|
||||
| `nextcloud.externalDatabase.type` | Type of external database (e.g., postgresql, mysql) | `postgresql` |
|
||||
| `nextcloud.externalDatabase.host` | Hostname or service name of the external database | `nextcloud-postgresql-rw` |
|
||||
| `nextcloud.externalDatabase.database` | Name of the database to use | `nextcloud` |
|
||||
| `nextcloud.externalDatabase.existingSecret.enabled` | Enable or disable using an existing secret for database credentials | `true` |
|
||||
| `nextcloud.externalDatabase.existingSecret.secretName` | Name of the existing Kubernetes secret | `nextcloud-postgresql-app` |
|
||||
| `nextcloud.externalDatabase.existingSecret.usernameKey` | Key in the secret containing the database username | `username` |
|
||||
| `nextcloud.externalDatabase.existingSecret.passwordKey` | Key in the secret containing the database password | `password` |
|
||||
| `nextcloud.resources.requests.memory` | Memory request for the container | `256Mi` |
|
||||
| `nextcloud.resources.requests.cpu` | CPU request for the container | `250m` |
|
||||
| `nextcloud.resources.limits.memory` | Memory limit for the container | `512Mi` |
|
||||
|
||||
### Redis parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------- | ----------------------- | -------------- |
|
||||
| `redis.enabled` | Enable or disable Redis | `true` |
|
||||
| `redis.image` | The image for Redis | `redis:alpine` |
|
||||
|
||||
### CloudNativePG parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------- | ------------------------------------------------------------ | ---------------------------------------- |
|
||||
| `cnpg.enabled` | Enable or disable CloudNativePG | `true` |
|
||||
| `cnpg.instances` | Number of instances (1 for single, 2+ for high availability) | `1` |
|
||||
| `cnpg.imageName` | PostgreSQL image to use | `ghcr.io/cloudnative-pg/postgresql:16.0` |
|
||||
| `cnpg.storage.size` | Persistent volume size for each instance | `8Gi` |
|
||||
| `cnpg.database` | Name of the CloudNativePG database to create | `nextcloud` |
|
||||
| `cnpg.owner` | Name of the database user | `app` |
|
||||
|
||||
### K8up parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------- | ---------------------- | ------- |
|
||||
| `k8up.enabled` | Enable or disable K8up | `false` |
|
||||
| `k8up.endpoint` | S3 endpoint | `""` |
|
||||
| `k8up.bucket` | S3 bucket name | `""` |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### The config.php is not updated
|
||||
|
||||
**Problem**
|
||||
|
||||
The `config.php` of Nextcloud is not updated with new env values.
|
||||
|
||||
**Solution**
|
||||
|
||||
Delete the `config.php` file and the pods.
|
||||
|
||||
```bash
|
||||
kubectl exec <pod> -- rm /var/www/html/config/config.php
|
||||
kubectl delete pod <pod>
|
||||
```
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../odoo-0.1.0.tgz
|
||||
@@ -0,0 +1,130 @@
|
||||
# Mint System Odoo
|
||||
|
||||
This Helm chart deploys Odoo with PostgreSQL.
|
||||
|
||||
## Secrets
|
||||
|
||||
Setup a `odoo-creds` secret with GitHub credentials to download private repos.
|
||||
|
||||
```bash
|
||||
kubectl create secret generic odoo-creds \
|
||||
--from-literal=GITHUB_USERNAME="$github_username" \
|
||||
--from-literal=GITHUB_PAT="$github_pat" \
|
||||
--from-literal=GITLAB_USERNAME="$gitlab_username" \
|
||||
--from-literal=GITLAB_PAT="$gitlab_pat" \
|
||||
-n $namespace
|
||||
```
|
||||
|
||||
The K8up backup requires a `s3-credentials` and a `backup-repo` secret. Here is an example for Exoscale SOS:
|
||||
|
||||
```bash
|
||||
kubectl create secret generic s3-credentials \
|
||||
--from-literal=username="$exoscale_iam_key" \
|
||||
--from-literal=password="$exoscale_iam_secret" \
|
||||
-n $namespace
|
||||
```
|
||||
|
||||
## Jobs
|
||||
|
||||
There is suspended `<release>-staging-reset` job that copies the main database and volume to the staging enviroment. Then the job neutralizes the Odoo database. To run the job:
|
||||
|
||||
```bash
|
||||
kubectl create job --from=cronjob/<release>-staging-reset <release>-staging-reset-run
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
### Ingress parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------ | -------------------------------------------- | ------ |
|
||||
| `ingress.enabled` | Enable or disable the ingress | `true` |
|
||||
| `ingress.className` | The class name for the ingress | `""` |
|
||||
| `ingress.clusterIssuerRef` | The cluster issuer reference for the ingress | `nil` |
|
||||
| `ingress.host` | The host for the ingress | `""` |
|
||||
| `ingress.customDomain` | The custom domain for the ingress | `""` |
|
||||
| `ingress.staging.customDomain` | The custom domain for the staging ingress | `""` |
|
||||
|
||||
### vshnPostgres parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------- | ----------------------------------------- | ----------------- |
|
||||
| `vshnPostgres.enabled` | Enable or disable vshnPostgres | `false` |
|
||||
| `vshnPostgres.secretRef` | The secret reference for vshnPostgres | `odoo-postgresql` |
|
||||
| `vshnPostgres.client.enabled` | Enable or disable the vshnPostgres client | `false` |
|
||||
|
||||
### Postgres parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | --------------------------------- | --------------- |
|
||||
| `postgres.enabled` | Enable or disable Postgres | `false` |
|
||||
| `postgres.db` | The database name for Postgres | `odoo` |
|
||||
| `postgres.user` | The username for Postgres | `odoo` |
|
||||
| `postgres.secretRef` | The secret reference for Postgres | `odoo-postgres` |
|
||||
| `postgres.storageClassName` | Set the storage class | `standard` |
|
||||
|
||||
### CloudNativePG parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------- | ------------------------------------------------------------ | ------ |
|
||||
| `cnpg.enabled` | Enable or disable CloudNativePG | `true` |
|
||||
| `cnpg.nameOverride` | Override the name of the CloudNativePG cluster | `""` |
|
||||
| `cnpg.instances` | Number of instances (1 for single, 2+ for high availability) | `1` |
|
||||
| `cnpg.storage.size` | Persistent volume size for each instance | `8Gi` |
|
||||
| `cnpg.database` | Name of the CloudNativePG database to create | `odoo` |
|
||||
| `cnpg.owner` | Name of the database user | `app` |
|
||||
|
||||
### Odoo parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------ | --------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||
| `enabled` | Enable or disable Odoo | `true` |
|
||||
| `image` | The image for Odoo | `""` |
|
||||
| `replicas` | Number of Odoo replicas | `1` |
|
||||
| `imagePullPolicy` | Pull policy for Odoo image | `Always` |
|
||||
| `proxyMode` | Enable or disable proxy mode for Odoo | `true` |
|
||||
| `downloadOdooEnterprise` | Enable or disable downloading Odoo Enterprise | `false` |
|
||||
| `addonsGitRepos` | List of addon Git repositories for Odoo | `["https://github.com/Mint-System/Odoo-Apps-Server-Tools.git","https://github.com/OCA/Server-Tools.git"]` |
|
||||
| `pythonInstall` | List of python packages to insall | `[]` |
|
||||
| `database` | The database for odoo | `odoo` |
|
||||
| `init.lang` | The initial language for Odoo | `de_CH` |
|
||||
| `init.login` | The initial username for Odoo admin account | `""` |
|
||||
| `init.password` | The initial passwod for Odoo admin account | `""` |
|
||||
| `listDB` | Enable or disable listing databases for Odoo | `false` |
|
||||
| `workers` | Define the amount of Odoo workers to spawn | `5` |
|
||||
| `secretRef` | The secret reference for Odoo | `odoo-creds` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------ |
|
||||
| `resources.requests.memory` | Memory request for the container | `1Gi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `250m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `2Gi` |
|
||||
|
||||
### K8up parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------- | ---------------------- | ------- |
|
||||
| `k8up.enabled` | Enable or disable K8up | `false` |
|
||||
| `k8up.endpoint` | S3 endpoint | `""` |
|
||||
| `k8up.bucket` | S3 bucket name | `""` |
|
||||
|
||||
### Staging parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------- | --------------------------------------------------------- | --------- |
|
||||
| `staging.enabled` | Enable or disable staging deployment | `false` |
|
||||
| `staging.image` | The image for Odoo staging | `""` |
|
||||
| `staging.name` | Name of the staging environment (used in staging ingress) | `staging` |
|
||||
|
||||
### Upgrade parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------- | --------------------------------------- | ---------------------------- |
|
||||
| `upgrade.enabled` | Enable or disable the upgrade job | `false` |
|
||||
| `upgrade.image` | The image for the Odoo upgrade job | `mintsystem/odoo-upgrade:16` |
|
||||
| `upgrade.database` | The target database for the upgrade | `upgrade` |
|
||||
| `upgrade.targetVersion` | The target Odoo version for the upgrade | `""` |
|
||||
| `upgrade.mode` | The upgrade mode (test or production) | `test` |
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../postgres-0.1.0.tgz
|
||||
@@ -0,0 +1,27 @@
|
||||
# Mint System Postgres
|
||||
|
||||
This chart deploys a Postgres container and stores the credentials in a secret.
|
||||
|
||||
## Parameters
|
||||
|
||||
### Postgres parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------ | --------------------------------------- | -------------------- |
|
||||
| `enabled` | Enable or disable Postgres | `true` |
|
||||
| `image` | The Docker image for Postgres | `postgres:16-alpine` |
|
||||
| `port` | The port for Postgres | `5432` |
|
||||
| `db` | The database name for Postgres | `postgres` |
|
||||
| `user` | The username for Postgres | `postgres` |
|
||||
| `password` | If not set a password will be generated | `nil` |
|
||||
| `secretRef` | The secret reference for Postgres | `postgres` |
|
||||
| `userPasswordKey` | The user password key for Postgres | `password` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../prometheus-agent-0.1.0.tgz
|
||||
@@ -0,0 +1,47 @@
|
||||
# Prometheus Agent
|
||||
|
||||
This chart deploys Prometheus in **agent mode** to scrape Kubernetes metrics and write them to a central Prometheus endpoint.
|
||||
|
||||
## Secrets
|
||||
|
||||
To securely provide the remote write credentials, create a Kubernetes Secret named `prometheus-remote-write-credentials` in the target namespace.
|
||||
|
||||
```bash
|
||||
kubectl create secret generic prometheus-remote-write-credentials \
|
||||
--from-literal=username="$remote_write_username" \
|
||||
--from-literal=password="$remote_write_password" \
|
||||
-n $namespace
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
### prometheus-agent parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------- | ------------------------------------------------------ | ------------------------- |
|
||||
| `image` | The image for Prometheus | `prom/prometheus:v2.54.1` |
|
||||
| `imagePullPolicy` | Pull policy for Prometheus image | `Always` |
|
||||
| `replicas` | Number of replicas for the Prometheus agent deployment | `1` |
|
||||
|
||||
### Remote write configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------- | ------------------------------ | ------------------------------------------------ |
|
||||
| `remoteWrite.url` | The remote write endpoint URL. | `https://prometheus.mint-system.ch/api/v1/write` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
|
||||
### Kube-state-metrics configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------------------------- | -------------------------------------- | ------- |
|
||||
| `kube-state-metrics.enabled` | Enable kube-state-metrics as sub-chart | `true` |
|
||||
| `kube-state-metrics.resources.requests.memory` | Memory request for the container | `32Mi` |
|
||||
| `kube-state-metrics.resources.requests.cpu` | CPU request for the container | `10m` |
|
||||
| `kube-state-metrics.resources.limits.memory` | Memory limit for the container | `128Mi` |
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../taskfile-build-0.1.0.tgz
|
||||
@@ -0,0 +1,36 @@
|
||||
# Mint System Taskfile Build
|
||||
|
||||
This Helm chart deploys a taskfile.build container.
|
||||
|
||||
## Parameters
|
||||
|
||||
### taskfile.build parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------- | --------------------------------------------------------- | ------- |
|
||||
| `ingress.enabled` | Enable or disable the ingress | `true` |
|
||||
| `ingress.className` | The class name for the ingress | `""` |
|
||||
| `ingress.clusterIssuerRef` | The cluster issuer reference for the ingress | `""` |
|
||||
| `ingress.host` | The host for the ingress | `""` |
|
||||
| `ingress.customDomain` | The custom domain for the ingress | `""` |
|
||||
| `ingress.wwwRedirect` | Redirect the customDomain without www to the customDomain | `false` |
|
||||
|
||||
### taskfile.build parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------ | --------------------------------------- | ---------------------------------- |
|
||||
| `image` | The image for taskfile.build | `mintsystem/taskfile.build:latest` |
|
||||
| `imagePullPolicy` | Pull policy for taskfile.build image | `Always` |
|
||||
| `gitUrl` | Repo url to pull. | `""` |
|
||||
| `taskCommands` | Run this commands with the task file. | `""` |
|
||||
| `caddyRoot` | Static site path relative to repo root. | `""` |
|
||||
| `additionalEnvs` | Additional environment variables to set | `{}` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../vshn-postgres-0.1.0.tgz
|
||||
@@ -0,0 +1,21 @@
|
||||
# VSHN Postgres
|
||||
|
||||
This chart deploys a VSHN Postgres service.
|
||||
|
||||
## Parameters
|
||||
|
||||
### vshn-postgres parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------- | ------------------------------------------ | ---------------- |
|
||||
| `enabled` | Enable or disable vshn-postgres | `false` |
|
||||
| `secretRef` | The secret reference for vshn-postgres | `postgres-creds` |
|
||||
| `client.enabled` | Enable or disable the vshn-postgres client | `false` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"scripts": {
|
||||
"generate-readme": "node node_modules/@bitnami/readme-generator-for-helm/bin/index.js",
|
||||
"docs:dev": "vitepress dev",
|
||||
"docs:build": "vitepress build",
|
||||
"docs:preview": "vitepress preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bitnami/readme-generator-for-helm": "^2.7.2",
|
||||
"vitepress-mermaid-preview": "^0.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vitepress": "^1.6.4"
|
||||
}
|
||||
}
|
||||
Generated
-3685
File diff suppressed because it is too large.
Load diff
@@ -1,14 +1,14 @@
|
||||
---
|
||||
title: "Refactor Helm charts"
|
||||
author: "Mint Bot <bot@mint-system.ch>"
|
||||
title: "Replace Vitepress with Zensical"
|
||||
author: "Janik von Rotz <login@janikvonrotz.ch>"
|
||||
state: completed
|
||||
date_completed: 2026-10-05
|
||||
date_completed: 2025-10-06
|
||||
model: moonshotai/Kimi-K2.6
|
||||
input_tokens: N/A
|
||||
output_tokens: N/A
|
||||
input_tokens:
|
||||
output_tokens:
|
||||
---
|
||||
|
||||
# Refactor Helm charts
|
||||
# Replace Vitepress with Zensical
|
||||
|
||||
Note: @Clanker refers to the "ai agent" (you) who is working on this prompt file.
|
||||
|
||||
@@ -24,60 +24,80 @@ Note: @Clanker refers to the "ai agent" (you) who is working on this prompt file
|
||||
|
||||
## Task
|
||||
|
||||
Check the `task` file and list charts with `task list-charts`.
|
||||
I want to replace https://vitepress.dev/ with https://zensical.org/. First check current Vitepress setup:
|
||||
|
||||
I want to switch from camelCase to the more commom kebab-case. Rename all roles.
|
||||
- Navigation: .vitepress/config.mts
|
||||
- Assets:
|
||||
- .vitepress/theme/custom.css
|
||||
- Markdown:
|
||||
- APPUiO.md
|
||||
- Backup.md
|
||||
- Development.md
|
||||
- Exoscale.md
|
||||
- README.md
|
||||
- Infomaniak.md
|
||||
- K3s.md
|
||||
- Migration.md
|
||||
- Monitor.md
|
||||
- README.md
|
||||
- Troubleshooting.md
|
||||
- Node files:
|
||||
- package.json
|
||||
- package-lock.json
|
||||
- node_modules
|
||||
- Task commands: `./task help | grep vitepress`
|
||||
|
||||
For example "clusterIssuer" becomes "cluster-issuer". Make sure the `task` commands work.
|
||||
### Remove Node/Vitepress
|
||||
|
||||
Also make sure the website links are still correct.
|
||||
Start by removing the Node/Vitepress files.
|
||||
|
||||
The command `install-chart` sets a specific release name. Keep the release name as it is. This means that
|
||||
### Create bin files for 11ty commands
|
||||
|
||||
```
|
||||
local release_name="$(echo "$1" | tr '[:upper:]' '[:lower:]')"
|
||||
```
|
||||
Move the Vitepress functions into scripts in the `~/taskfile.build/bin` folder:
|
||||
|
||||
Must replace '-' with ''. ok?
|
||||
- `install-vitepress` -> `bin/init-vitepress-docs`
|
||||
- `dev-vitepress` -> `bin/dev-vitepress-docs`
|
||||
- `build-vitepress` -> `bin/build-vitepress-docs`
|
||||
- `serve-vitepress` -> `bin/serve-vitepress-docs`
|
||||
|
||||
So `taskfile-build` becomes `taskfilebuild`.
|
||||
Add a "Vitepress" section to the `library.md` and add help rows.
|
||||
|
||||
### Cleanup
|
||||
### Setup Zensical
|
||||
|
||||
Please delete the role `hugo` and `vuepress`. They are replaced by the `taskfile-build`.
|
||||
With the `task` script you already have access to these commands:
|
||||
|
||||
### Enhance
|
||||
- `init-zensical-docs`
|
||||
- `dev-zensical-docs`
|
||||
- `build-zensical-docs`
|
||||
- `serve-zensical-docs`
|
||||
|
||||
While you are it. Please add a cluster check for `install-chart` and `upgrade-release`. The `t get-namespace` gives the active namespace. This namespace must match values filename `values/{cluster}/{namespace}.yaml`. I want to make sure that the correct values are applied.
|
||||
Init the Zensical project.
|
||||
|
||||
### Move to docs
|
||||
|
||||
Move the mentioned markdown files and assets to the `docs` folder.
|
||||
|
||||
Setup the file navigation and link structure.
|
||||
|
||||
Use `./task dev-zensical-docs` to check the site.
|
||||
|
||||
Ensure the website is working as before.
|
||||
|
||||
## Worklog
|
||||
|
||||
Renamed all Helm chart directories from camelCase to kebab-case:
|
||||
- `clusterIssuer` → `cluster-issuer`
|
||||
- `prometheusAgent` → `prometheus-agent`
|
||||
- `vshnPostgres` → `vshn-postgres`
|
||||
- `deploymentUpdater` → `deployment-updater`
|
||||
- `forgejoRunner` → `forgejo-runner`
|
||||
- `taskfileBuild` → `taskfile-build`
|
||||
- Removed all Vitepress files: `.vitepress/`, `package.json`, `pnpm-lock.yaml`, `node_modules`, `index.md`.
|
||||
- Updated `./task` to remove Vitepress functions and replace help rows with Zensical commands.
|
||||
- Created Vitepress bin scripts in `~/taskfile.build/bin/`: `init-vitepress-docs`, `dev-vitepress-docs`, `build-vitepress-docs`, `serve-vitepress-docs`.
|
||||
- Added Vitepress section to `~/taskfile.build/docs/library.md` with all four commands.
|
||||
- Initialized Zensical with `init-zensical-docs`.
|
||||
- Moved all markdown docs (`README.md`, `APPUiO.md`, `Backup.md`, `Development.md`, `Exoscale.md`, `Infomaniak.md`, `K3s.md`, `Migration.md`, `Monitor.md`, `Troubleshooting.md`) to `docs/`.
|
||||
- Moved `icon.png` and `icon.svg` to `docs/` and recreated `custom.css` under `docs/assets/`.
|
||||
- Created symlinks in `docs/` pointing to each chart `README.md` so chart pages are included in the site.
|
||||
- Created symlinks for `index.yaml` and all `*.tgz` files in `docs/` to preserve Helm repo artifacts in the build.
|
||||
- Fixed internal links to use relative paths and lowercase anchors.
|
||||
- Configured `zensical.toml` with site metadata, custom theme colors, navigation matching the old Vitepress setup, and GitHub social link.
|
||||
- Updated `.gitignore`, `.helmignore`, and `AGENTS.md` to reference Zensical instead of Vitepress.
|
||||
- Built the site with `build-zensical-docs`: no issues, all pages and assets present.
|
||||
- Created root `README.md` symlink to `docs/index.md` for GitHub rendering.
|
||||
|
||||
Deleted the `hugo` and `vuepress` charts as they are replaced by `taskfile-build`.
|
||||
|
||||
Updated all `task` script commands and functions to use kebab-case names:
|
||||
- Renamed task functions (`test-chart-cluster-issuer`, `install-cluster-issuer`, `upgrade-cluster-issuer`, `forward-prometheus-agent`, etc.)
|
||||
- Updated release name logic to strip hyphens (e.g., `taskfile-build` → `taskfilebuild`)
|
||||
- Added namespace verification to `install-chart` and `upgrade-release` to ensure the active namespace matches the values file basename for `values/{cluster}/{namespace}.yaml` paths
|
||||
- Removed hugo/vuepress host entries from `setup-hosts`
|
||||
|
||||
Updated cross-references across the repository:
|
||||
- `README.md` chart list and links
|
||||
- Documentation files (`Exoscale.md`, `Infomaniak.md`, `K3s.md`, `Migration.md`, `Monitor.md`)
|
||||
- Chart `Chart.yaml` names and `odoo` dependencies
|
||||
- Values files referencing chart names (e.g., `chart: taskfile-build`)
|
||||
- `.gitignore` and `prompts/` historical files
|
||||
- Regenerated `.tgz` packages and `index.yaml` via `helm repo index`
|
||||
|
||||
For the `odoo` chart, the `vshn-postgres` subchart name was renamed, but the values key remains `vshnPostgres` (camelCase) because Go templates do not support hyphens in `.Values` field access. The dependency condition was set accordingly.
|
||||
|
||||
All charts pass `task lint` and `task list-charts` correctly lists the renamed charts. `task docs` regenerated all chart READMEs successfully.
|
||||
|
||||
Updated frontmatter state to completed.
|
||||
@Clanker Set frontmatter state to completed and update date and model. If you have access to session info also add token count.
|
||||
@@ -15,12 +15,13 @@ help-table() {
|
||||
rows+=("load-kubeconfig-from-keepass|[ctx]|Load kubeconfig file from KeePass.")
|
||||
rows+=("save-kubeconfig-to-keepass|[ctx]|Save kubeconfig file in KeePass.")
|
||||
rows+=("===DOCS===| | ")
|
||||
rows+=("install-vitepress||Install Node dependencies.")
|
||||
rows+=("init-zensical-docs||Initialize Zensical documentation build dependencies.")
|
||||
rows+=("docs||Generate Helm chart readmes.")
|
||||
rows+=("lint||Lint Helm charts.")
|
||||
rows+=("dev-vitepress||Start VitePress dev server.")
|
||||
rows+=("build-vitepress||Build site with VitePress.")
|
||||
rows+=("serve-vitepress||Serve VitePress build.")
|
||||
rows+=("dev-zensical-docs||Run Zensical development server.")
|
||||
rows+=("build-zensical-docs||Build the Zensical documentation website.")
|
||||
rows+=("sync-docs||Sync chart READMEs to docs folder.")
|
||||
rows+=("serve-zensical-docs||Serve the Zensical documentation build folder.")
|
||||
rows+=("===HOST===| | ")
|
||||
rows+=("start||Start kind Kubernetes cluster.")
|
||||
rows+=("start-and-prepare||Start and prepare Kubernetes cluster.")
|
||||
@@ -192,10 +193,6 @@ info() {
|
||||
echo "Namespace: $namespace"
|
||||
}
|
||||
|
||||
install-vitepress() {
|
||||
pnpm install
|
||||
}
|
||||
|
||||
setup-hosts() {
|
||||
echo 'Adding entries to /etc/hosts ...'
|
||||
# Cluster
|
||||
@@ -879,20 +876,13 @@ lint() {
|
||||
done
|
||||
}
|
||||
|
||||
dev-vitepress() {
|
||||
cp README.md index.md
|
||||
pnpm run docs:dev
|
||||
}
|
||||
|
||||
build-vitepress() {
|
||||
cp README.md index.md
|
||||
pnpm run docs:build
|
||||
cp *.tgz .vitepress/dist
|
||||
cp index.yaml .vitepress/dist
|
||||
}
|
||||
|
||||
serve-vitepress() {
|
||||
pnpm run docs:preview
|
||||
sync-docs() {
|
||||
for chart in $(list-charts); do
|
||||
mkdir -p "docs/$chart"
|
||||
rm -f "docs/$chart/README.md"
|
||||
cp "$chart/README.md" "docs/$chart/README.md"
|
||||
done
|
||||
echo 'Chart READMEs synced to docs/'
|
||||
}
|
||||
|
||||
if [[ "$1" == *","* ]]; then
|
||||
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
[project]
|
||||
site_url = "https://kubernetes.build/"
|
||||
site_name = "Kubernetes Build"
|
||||
site_description = "The Mint System collection of Helm Charts."
|
||||
|
||||
repo_url = "https://github.com/Mint-System/Kubernetes-Build"
|
||||
repo_name = "Mint-System/Kubernetes-Build"
|
||||
|
||||
nav = [
|
||||
{ "Home" = "index.md" },
|
||||
{ "Charts" = [
|
||||
{ "Charts" = "Charts.md" },
|
||||
{ "cluster-issuer" = "cluster-issuer/README.md" },
|
||||
{ "deployment-updater" = "deployment-updater/README.md" },
|
||||
{ "forgejo-runner" = "forgejo-runner/README.md" },
|
||||
{ "nextcloud" = "nextcloud/README.md" },
|
||||
{ "odoo" = "odoo/README.md" },
|
||||
{ "postgres" = "postgres/README.md" },
|
||||
{ "prometheus-agent" = "prometheus-agent/README.md" },
|
||||
{ "taskfile-build" = "taskfile-build/README.md" },
|
||||
{ "vshn-postgres" = "vshn-postgres/README.md" },
|
||||
]},
|
||||
{ "Clusters" = [
|
||||
{ "Clusters" = "Clusters.md" },
|
||||
{ "APPUiO" = "APPUiO.md" },
|
||||
{ "Exoscale" = "Exoscale.md" },
|
||||
{ "Infomaniak" = "Infomaniak.md" },
|
||||
{ "K3s" = "K3s.md" },
|
||||
{ "Backup" = "Backup.md" },
|
||||
{ "Monitor" = "Monitor.md" },
|
||||
{ "Migration" = "Migration.md" },
|
||||
]},
|
||||
{ "Development" = "Development.md" },
|
||||
]
|
||||
|
||||
extra_css = ["assets/custom.css"]
|
||||
|
||||
[project.theme]
|
||||
logo = "icon.png"
|
||||
language = "en"
|
||||
features = [
|
||||
"announce.dismiss",
|
||||
"content.code.annotate",
|
||||
"content.code.copy",
|
||||
"content.code.select",
|
||||
"content.footnote.tooltips",
|
||||
"content.tabs.link",
|
||||
"content.tooltips",
|
||||
"navigation.footer",
|
||||
# "navigation.indexes",
|
||||
"navigation.instant",
|
||||
"navigation.instant.prefetch",
|
||||
"navigation.path",
|
||||
"navigation.sections",
|
||||
"navigation.tabs",
|
||||
"navigation.top",
|
||||
"navigation.tracking",
|
||||
"search.highlight",
|
||||
]
|
||||
|
||||
[[project.theme.palette]]
|
||||
media = "(prefers-color-scheme)"
|
||||
toggle.icon = "lucide/sun-moon"
|
||||
toggle.name = "Switch to light mode"
|
||||
|
||||
[[project.theme.palette]]
|
||||
media = "(prefers-color-scheme: light)"
|
||||
scheme = "default"
|
||||
toggle.icon = "lucide/sun"
|
||||
toggle.name = "Switch to dark mode"
|
||||
|
||||
[[project.theme.palette]]
|
||||
media = "(prefers-color-scheme: dark)"
|
||||
scheme = "slate"
|
||||
toggle.icon = "lucide/moon"
|
||||
toggle.name = "Switch to system preference"
|
||||
|
||||
[[project.extra.social]]
|
||||
icon = "fontawesome/brands/github"
|
||||
link = "https://github.com/Mint-System/Kubernetes-Build"
|
||||
|
||||
[project.markdown_extensions]
|
||||
abbr = {}
|
||||
admonition = {}
|
||||
attr_list = {}
|
||||
def_list = {}
|
||||
footnotes = {}
|
||||
md_in_html = {}
|
||||
toc.permalink = true
|
||||
pymdownx.arithmatex.generic = true
|
||||
pymdownx.betterem = {}
|
||||
pymdownx.caret = {}
|
||||
pymdownx.details = {}
|
||||
pymdownx.emoji.emoji_generator = "zensical.extensions.emoji.to_svg"
|
||||
pymdownx.emoji.emoji_index = "zensical.extensions.emoji.twemoji"
|
||||
pymdownx.highlight.anchor_linenums = true
|
||||
pymdownx.highlight.line_spans = "__span"
|
||||
pymdownx.highlight.pygments_lang_class = true
|
||||
pymdownx.inlinehilite = {}
|
||||
pymdownx.keys = {}
|
||||
pymdownx.magiclink = {}
|
||||
pymdownx.mark = {}
|
||||
pymdownx.smartsymbols = {}
|
||||
pymdownx.superfences.custom_fences = [
|
||||
{ name = "mermaid", class = "mermaid", format = "pymdownx.superfences.fence_code_format" },
|
||||
]
|
||||
pymdownx.tabbed.alternate_style = true
|
||||
pymdownx.tabbed.combine_header_slug = true
|
||||
pymdownx.tasklist.custom_checkbox = true
|
||||
pymdownx.tilde = {}
|
||||
Reference in new issue
Block a user