diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2dc719..ea8ba7d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ # title: Continuous Integration # uses: # - https://github.com/helm/chart-testing-action -# - https://github.com/helm/kind-action +# - https://github.com/stackrox/kube-linter-action name: CI @@ -46,6 +46,12 @@ jobs: with: python-version: '3.x' check-latest: true + - name: Use KubeLinter + id: kube-lint-scan + uses: stackrox/kube-linter-action@v1 + with: + directory: charts + config: .kube-linter.yaml - name: Set up chart-testing uses: helm/chart-testing-action@v2.7.0 - name: Add dependency chart repositories diff --git a/.kube-linter.yaml b/.kube-linter.yaml index 362d84a..32121e5 100644 --- a/.kube-linter.yaml +++ b/.kube-linter.yaml @@ -1,7 +1,24 @@ checks: addAllBuiltIn: true + # ref. https://docs.kubelinter.io/#/generated/checks exclude: - - "no-read-only-root-fs" - - "unset-cpu-requirements" - - "unset-memory-requirements" - ignorePaths: [] + - access-to-secrets + - default-service-account + - dnsconfig-options + - minimum-three-replicas + - no-anti-affinity + - no-node-affinity + - no-read-only-root-fs + - non-isolated-pod + - required-annotation-email + - required-label-owner + - unset-cpu-requirements + - unset-memory-requirements + - use-namespace + # disable for now (need to add users in image Dockerfile) + - run-as-non-root + - privileged-ports + ignorePaths: + - charts/**/charts/** + # disable for now (too many issues for something to rework from the container image) + - charts/nfs-ganesha/** diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a522996..319d802 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,48 +4,101 @@ ## Repository Structure -`/charts` contains custom Helm charts. +`/charts` contains the source of custom Helm charts. > [!NOTE] > [Helm Chart Releaser](https://github.com/helm/chart-releaser) doesn't support multiple chart directories ou multiple levels so all charts must be in `charts` repository. -`/docs` provides instructions for: +`/docs` provides the source of the website, with in particular instructions for: - Installing popular applications (`/docs/application-guides`) - Using custom charts (`/docs/custom-charts`) -## Code validation +## Custom Helm charts + +### Check manifest during creation + +Lint the chart: + +```bash +helm lint +``` + +Generate the Kubernetes manifest yaml: + +```bash +helm template myapp . -f values.yaml --namespace myns > temp.yaml +``` + +### Deploy from sources + +Install the application: + +```bash +helm upgrade --install myapp . -f values.yaml --namespace myns --create-namespace --debug > output.yaml +``` + +### Run locally CI checks Lint charts with [helm/chart-testing](https://github.com/helm/chart-testing) (with workaround described at [issue #464](https://github.com/helm/chart-testing/issues/464)): ```bash -docker run --rm -it --workdir=/data --volume $(pwd):/data quay.io/helmpack/chart-testing:v3.7.1 \ +docker run --rm -it --workdir=/data --volume $(pwd):/data quay.io/helmpack/chart-testing:v3.13.0 \ /bin/sh -c "git config --global --add safe.directory /data ; ./scripts/add_helm_repo.sh ; ct lint --target-branch main" ``` -(not yet available because of [Issue #575](https://github.com/stackrox/kube-linter/issues/575)) Lint charts with [stackrox/kube-linter](https://github.com/stackrox/kube-linter) ([docs](https://docs.kubelinter.io/)): +> [!TIP] +> Beware if you're on Windows, as some files may be with the EOL CRLF and could be seen as a difference needing a version bump. +> You can find them with `find charts/ -type f -exec file {} \; | grep CLRF`, update the EOL (change save from VS Code), and also check on the repo with `git show main:charts/nfs-ganesha/.helmignore | od -c`. + +Lint charts with [KubeLinter](https://docs.kubelinter.io/): ```bash -docker run --rm -v $(pwd)/charts:/charts -v $(pwd)/.kube-linter.yaml:/etc/config.yaml \ - stackrox/kube-linter lint /charts --config /etc/config.yaml +docker run --rm -v $(pwd)/charts:/charts -v $(pwd)/.kube-linter.yaml:/etc/config.yaml stackrox/kube-linter \ + lint /charts --config /etc/config.yaml ``` -## Chart repository references +### View Chart repository references - [aws/eks-charts](https://github.com/aws/eks-charts) - [rancher/helm3-charts](https://github.com/rancher/helm3-charts) ## Documentation website -The documentation is built with [VitePress](https://vitepress.dev/) ([code](https://github.com/vuejs/vitepress)): +### Static Site Generator + +The website is built with [VitePress](https://vitepress.dev/) and: + +- plugins: [VitePress Sidebar](https://vitepress-sidebar.cdget.com/) +- theme: [Catppuccin for VitePress](https://vitepress.catppuccin.com/) -- plugins: [VitePress Sidebar](https://github.com/jooy2/vitepress-sidebar) -- theme: [Catppuccin for VitePress](https://github.com/catppuccin/vitepress) +The project was generated using `npx vitepress init`. -It was generated using `npx vitepress init`. +### Local review -Run locally the website with: +Run the website with: ```bash npm run docs:dev ``` + +### Markdown tips + +- Use Alerts when it makes sense: + +```md +> [!NOTE] +> Highlights information that users should take into account, even when skimming. + +> [!TIP] +> Optional information to help a user be more successful. + +> [!IMPORTANT] +> Crucial information necessary for users to succeed. + +> [!WARNING] +> Critical content demanding immediate user attention due to potential risks. + +> [!CAUTION] +> Negative potential consequences of an action. +``` diff --git a/README.md b/README.md index 9c34e3c..f80619a 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -# Kube toolkit +# Kube Workload Toolkit [![CI](https://github.com/devpro/helm-charts/actions/workflows/ci.yml/badge.svg)](https://github.com/devpro/helm-charts/actions/workflows/ci.yml) [![PKG](https://github.com/devpro/helm-charts/actions/workflows/pkg.yml/badge.svg)](https://github.com/devpro/helm-charts/actions/workflows/pkg.yml) Welcome! This project provides: -- **Curated Guides**: Step-by-step instructions for installing popular applications using their official Helm charts in a Kubernetes cluster. -- **Custom Helm Charts**: A collection of Helm charts that were created for deploying unique workloads on Kubernetes. +- **Curated guides**: Step-by-step instructions for installing popular applications using their official Helm charts in a Kubernetes cluster. +- **Custom Helm charts**: A collection of charts that were created for deploying unique workloads on Kubernetes. Whether you're deploying custom solutions or setting up well-known applications like NGINX or Prometheus, this repository aims to simplify your Kubernetes journey with tested configurations and clear documentation. -Get started with the [documentation](https://devpro.github.io/helm-charts/docs/). +🚀 Get started with the [Kube Workload Toolkit](https://kwt.devpro.fr/) Feel free to [contribute](CONTRIBUTING.md)! @@ -77,20 +77,6 @@ helm: * Go to "Apps" > "Repositories", click on "Create" and enter `https://devpro.github.io/helm-charts` as "Index URL", then click on "Create" * Go to "Apps" > "Charts", look at the available applications (charts) and install the one(s) you want -## Cluster setup logic - -* Create a Kubernetes Cluster and get CLI access (download `kubectl` configuration) -* Install & configure kube add-ons - * Install certificate issuer ([cert-manager](./charts/cert-manager/README.md)) - * Create storage class - * Create Ingress Controller ([NGINX](./charts/ingress-nginx/README.md) or HAProxy) - * Create load balancer - * Install secret management ([Sealed Secrets](./charts/sealed-secrets/README.md)) - * Deploy GitOps tool ([ArgoCD](./charts/argocd/README.md) or Fleet) -* Setup Security ([NeuVector](./charts/neuvector/README.md)) -* Install Observability ([OpenTelemetry, Prometheus, Grafana](./charts/otel-prometheus-grafana/README.md)) -* Setup Continuous Deployment - * Configure GitOps repositories and deploy backing services and applications ## Samples diff --git a/charts/capi-templates/Chart.yaml b/charts/capi-templates/Chart.yaml index 86311c8..eb56270 100644 --- a/charts/capi-templates/Chart.yaml +++ b/charts/capi-templates/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: capi-templates description: Helm chart for Cluster API (CAPI) Templates type: application -version: 0.1.0 +version: 0.1.1 appVersion: "1.0.0" home: https://github.com/devpro/helm-charts/tree/main/charts/capi-templates maintainers: diff --git a/charts/capi-templates/README.md b/charts/capi-templates/README.md index 01ec70f..95ce170 100644 --- a/charts/capi-templates/README.md +++ b/charts/capi-templates/README.md @@ -1,11 +1,13 @@ # Kubernetes CAPI Templates Helm Chart -This chart will simplify the use of CAPI (Cluster API) to manage your Kubernetes clusters. - -Contributions are welcome! See how with this [short guide](CONTRIBUTING.md). +This chart will simplify the use of [Cluster API (CAPI))](https://cluster-api.sigs.k8s.io/) to manage your Kubernetes clusters. ## Getting started +Start with the [documentation](https://kwt.devpro.fr/custom-charts/capi-templates.html). + +## Usage + ### Setup Add the Helm repository: @@ -33,6 +35,22 @@ googlecloud: EOF ``` +Generate the manifest file for review: + +```bash +helm template capi-gke-demo devpro/capi-templates -f values_gke.yaml > temp.yaml +``` + +Can be compared with the one generated with clusterctl: + +```bash +export GCP_PROJECT=$GCLOUD_PROJECT_ID +export GCP_REGION=$GCLOUD_REGION +export GCP_NETWORK_NAME=$GCLOUD_VPC +export WORKER_MACHINE_COUNT=1 +clusterctl generate cluster gke-capi-bthomas-demo --flavor gke -i gcp > capi-gke-quickstart.yaml +``` + Create the cluster: ```bash diff --git a/charts/cow-demo/Chart.yaml b/charts/cow-demo/Chart.yaml index 4177a72..9b67984 100644 --- a/charts/cow-demo/Chart.yaml +++ b/charts/cow-demo/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: cow-demo description: Helm chart for Cow Demo Application type: application -version: 0.2.0 +version: 0.2.1 appVersion: "2.0.0" maintainers: - name: devpro diff --git a/charts/cow-demo/templates/deployment.yaml b/charts/cow-demo/templates/deployment.yaml index 1c20728..ad6c928 100644 --- a/charts/cow-demo/templates/deployment.yaml +++ b/charts/cow-demo/templates/deployment.yaml @@ -9,6 +9,8 @@ metadata: app.kubernetes.io/name: {{ $name }} spec: replicas: {{ $.Values.replicaCount }} + strategy: + type: RollingUpdate selector: matchLabels: app: {{ $name }} @@ -32,5 +34,14 @@ spec: - name: http containerPort: 8080 protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http resources: {{- toYaml .Values.resources | nindent 12 }} + restartPolicy: Always diff --git a/charts/devpro-salesportal/Chart.yaml b/charts/devpro-salesportal/Chart.yaml index 3874cdf..d2a3515 100644 --- a/charts/devpro-salesportal/Chart.yaml +++ b/charts/devpro-salesportal/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: devpro-salesportal description: Helm chart for Devpro Sales Portal type: application -version: 0.2.5 +version: 0.2.6 appVersion: "1.1.0" dependencies: - name: mongodb diff --git a/charts/devpro-salesportal/templates/deployment.yaml b/charts/devpro-salesportal/templates/deployment.yaml index be0dacb..af34d03 100644 --- a/charts/devpro-salesportal/templates/deployment.yaml +++ b/charts/devpro-salesportal/templates/deployment.yaml @@ -12,6 +12,8 @@ metadata: app.kubernetes.io/name: {{ .name }} spec: replicas: {{ .replicaCount }} + strategy: + type: RollingUpdate selector: matchLabels: app: {{ .name }} @@ -97,5 +99,6 @@ spec: - name: MongoDb__DatabaseName value: {{ .db.databaseName }} {{- end }} + restartPolicy: Always {{- end }} {{ end }} diff --git a/charts/ecorp-demo/Chart.yaml b/charts/ecorp-demo/Chart.yaml index 5c3dfae..2ec61a4 100644 --- a/charts/ecorp-demo/Chart.yaml +++ b/charts/ecorp-demo/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: ecorp-demo description: Helm chart for E Corp demo type: application -version: 0.2.0 +version: 0.2.1 appVersion: "1.1.0" maintainers: - name: devpro diff --git a/charts/ecorp-demo/templates/deployment.yaml b/charts/ecorp-demo/templates/deployment.yaml index 6d0e039..f3b06e0 100644 --- a/charts/ecorp-demo/templates/deployment.yaml +++ b/charts/ecorp-demo/templates/deployment.yaml @@ -12,6 +12,8 @@ metadata: app.kubernetes.io/name: {{ .name }} spec: replicas: {{ .replicaCount }} + strategy: + type: RollingUpdate selector: matchLabels: app: {{ .name }} @@ -84,5 +86,6 @@ spec: value: "{{ $.Values.otelCollector.endpoint }}" {{- toYaml . | nindent 12 }} {{- end }} + restartPolicy: Always {{- end }} {{ end }} diff --git a/charts/game-2048/Chart.yaml b/charts/game-2048/Chart.yaml index 070c11a..1293028 100644 --- a/charts/game-2048/Chart.yaml +++ b/charts/game-2048/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: game-2048 description: Helm chart for Game 2048 type: application -version: 0.1.1 +version: 0.1.2 appVersion: "1.0.0" maintainers: - name: devpro diff --git a/charts/game-2048/templates/deployment.yaml b/charts/game-2048/templates/deployment.yaml index e88e0bd..0487dcc 100644 --- a/charts/game-2048/templates/deployment.yaml +++ b/charts/game-2048/templates/deployment.yaml @@ -9,6 +9,8 @@ metadata: app.kubernetes.io/name: {{ $name }} spec: replicas: {{ $.Values.replicaCount }} + strategy: + type: RollingUpdate selector: matchLabels: app: {{ $name }} @@ -25,7 +27,16 @@ spec: imagePullPolicy: Always ports: - name: http - containerPort: 80 + containerPort: {{ $.Values.containerPort }} protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http resources: {{- toYaml .Values.resources | nindent 12 }} + restartPolicy: Always diff --git a/charts/game-2048/templates/service.yaml b/charts/game-2048/templates/service.yaml index f3b433b..75c8464 100644 --- a/charts/game-2048/templates/service.yaml +++ b/charts/game-2048/templates/service.yaml @@ -16,4 +16,4 @@ spec: - name: http port: {{ $.Values.port }} protocol: TCP - targetPort: 80 + targetPort: {{ $.Values.containerPort }} diff --git a/charts/game-2048/values.yaml b/charts/game-2048/values.yaml index c25378f..433ffea 100644 --- a/charts/game-2048/values.yaml +++ b/charts/game-2048/values.yaml @@ -3,6 +3,7 @@ image: devprofr/game-2048 tag: "1.0.8328752292" replicaCount: 1 port: 80 +containerPort: 80 ingress: enabled: false className: "nginx" diff --git a/charts/minio/CONTRIBUTING.md b/charts/minio/CONTRIBUTING.md deleted file mode 100644 index ab9cf97..0000000 --- a/charts/minio/CONTRIBUTING.md +++ /dev/null @@ -1,71 +0,0 @@ -# Contribute - -## How to update the dependencies - -```bash -# makes sure the repository has been added and refreshed -helm repo add minio https://charts.min.io/ -helm repo update - -# searches for the latest version -helm search repo -l minio --versions - -# manual: update version number in Chart.yaml - -# updates Chart.lock -helm dependency update -``` - -## How to check the manifest before deployment - -```bash -# checks code style -helm lint - -# checks the Kubernetes objects generated from the chart -helm template minio . -f values.yaml \ - --namespace minio > temp.yaml -``` - -## How to deploy the chart from the sources - -```bash -# installs on a cluster -helm upgrade --install minio . -f values.yaml --create-namespace \ - --set minio.resources.requests.memory=512Mi \ - --set minio.replicas=1 --set minio.mode=standalone \ - --set minio.persistence.enabled=false \ - --set minio.rootUser=admin,minio.rootPassword=pasWd8char \ - --namespace minio \ - # --debug -``` - -## How to access the console - -### Example with NGINX Ingress Controller and a default storage class defined - -ℹ MinIO Server comes with an embedded web based object browser - -```bash -# gets Ingress Controller external IP -NGINX_PUBLIC_IP=`kubectl get service -n ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'` - -# installs on a cluster -helm upgrade --install minio . -f values.yaml --create-namespace \ - --set minio.resources.requests.memory=512Mi \ - --set minio.replicas=1 \ - --set minio.mode=standalone \ - --set minio.persistence.enabled=true,minio.persistence.size=10Gi \ - --set minio.rootUser=admin,minio.rootPassword=pasWd8char \ - --set minio.ingress.enabled=true,minio.ingress.ingressClassName=nginx,minio.ingress.annotations.'cert-manager\.io/cluster-issuer'=letsencrypt-prod \ - --set minio.ingress.hosts[0]=minio.${NGINX_PUBLIC_IP}.sslip.io \ - --set minio.ingress.tls[0].secretName=minio-tls \ - --set minio.ingress.tls[0].hosts[0]=minio.${NGINX_PUBLIC_IP}.sslip.io \ - --set minio.consoleIngress.enabled=true,minio.consoleIngress.ingressClassName=nginx,minio.consoleIngress.annotations.'cert-manager\.io/cluster-issuer'=letsencrypt-prod \ - --set minio.consoleIngress.hosts[0]=minio-console.${NGINX_PUBLIC_IP}.sslip.io \ - --set minio.consoleIngress.tls[0].secretName=minio-console-tls \ - --set minio.consoleIngress.tls[0].hosts[0]=minio-console.${NGINX_PUBLIC_IP}.sslip.io \ - --namespace minio - -# manual: open http://minio-console.${NGINX_PUBLIC_IP}.sslip.io/ (log in with admin/pasWd8char) -``` diff --git a/charts/minio/Chart.lock b/charts/minio/Chart.lock deleted file mode 100644 index 7ef9ddf..0000000 --- a/charts/minio/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: minio - repository: https://charts.min.io - version: 5.0.9 -digest: sha256:f93e3182ead43eb99cfb2e9caabfd9af08a106c8d4276feaae91ade0149b0ed4 -generated: "2023-07-03T08:56:29.967777315+02:00" diff --git a/charts/minio/Chart.yaml b/charts/minio/Chart.yaml deleted file mode 100644 index dbfa63e..0000000 --- a/charts/minio/Chart.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v2 -name: minio -description: Helm chart for managing MinIO -type: application -version: "0.1.1" -appVersion: "RELEASE.2023-04-28T18-11-17Z" -dependencies: - - name: minio - version: 5.0.9 # appVersion: RELEASE.2023-04-28T18-11-17Z - repository: https://charts.min.io -maintainers: - - name: devpro - email: bertrand@devpro.fr -home: https://github.com/devpro/helm-charts/tree/main/charts/minio diff --git a/charts/minio/README.md b/charts/minio/README.md deleted file mode 100644 index b8e81f5..0000000 --- a/charts/minio/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Helm chart for MinIO - -This Helm chart will install [min.io](https://min.io/) ([code](https://github.com/minio/minio)) on a Kubernetes cluster. -It is based on [the official Helm chart](https://github.com/minio/minio/tree/master/helm/minio). - -## Quick start - -```bash -# if not already done, adds devpro repository in helm -helm repo add devpro https://devpro.github.io/helm-charts -helm repo update - -# installs the chart with default parameters -helm upgrade --install minio devpro/minio --create-namespace --namespace minio - -# cleans up -helm uninstall minio -n minio -kubectl delete ns minio -``` - -## Going further - -Look at [Contributing](CONTRIBUTING.md) page. diff --git a/charts/minio/values.yaml b/charts/minio/values.yaml deleted file mode 100644 index cc943a1..0000000 --- a/charts/minio/values.yaml +++ /dev/null @@ -1,13 +0,0 @@ -# https://github.com/minio/minio/blob/master/helm/minio/values.yaml -minio: {} - # resources: - # requests: - # memory: - # replicas: - # mode: - # persistence: - # enabled: - # # access key length should be at least 3 character long - # rootUser: - # # secret key length should be at least 8 character long - # rootPassword: diff --git a/charts/neuvector/Chart.lock b/charts/neuvector/Chart.lock deleted file mode 100644 index ee78fef..0000000 --- a/charts/neuvector/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: core - repository: https://neuvector.github.io/neuvector-helm/ - version: 2.7.2 -digest: sha256:216f13c14e54bf2e3d73049e10d935dcc347b98589ce682c1ee285435a8b2cff -generated: "2024-02-07T22:49:51.801454843+01:00" diff --git a/charts/neuvector/Chart.yaml b/charts/neuvector/Chart.yaml deleted file mode 100644 index c9f6844..0000000 --- a/charts/neuvector/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v2 -name: neuvector -description: Helm chart for managing NeuVector -type: application -version: "0.2.3" -appVersion: "5.3.0" -dependencies: - - name: core - version: 2.7.2 - repository: https://neuvector.github.io/neuvector-helm/ -maintainers: - - name: devpro - email: bertrand@devpro.fr diff --git a/charts/neuvector/README.md b/charts/neuvector/README.md deleted file mode 100644 index c9af4ef..0000000 --- a/charts/neuvector/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# NeuVector - -This Helm chart will install [NeuVector](https://github.com/neuvector/neuvector) ([GitHub](https://github.com/neuvector/neuvector-helm)). - -💡 Kubernetes objects will be installed in `neuvector` namespace - -## How to update the chart - -```bash -# (only once) adds official chart repository -helm repo add neuvector https://neuvector.github.io/neuvector-helm/ - -# updates repository information -helm repo update - -# lists available charts -helm search repo neuvector - -# updates Chart.yaml with the lastest version available -``` - -## How to deploy manually - -```bash -# installs locally the related charts -helm dependency update - -# checks the Kubernetes objects generated from the chart -helm template neuvector . -f values.yaml \ - --namespace neuvector > temp.yaml - -# get ingress controller public IP -NGINX_PUBLIC_IP=`kubectl get service -n ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'` - -# installs the chart with helm -helm upgrade --install --create-namespace \ - --set core.manager.ingress.host=neuvector.${NGINX_PUBLIC_IP}.sslip.io \ - --set core.containerd.enabled=true \ - -f values.yaml --namespace neuvector neuvector . - -# watchs objects being created -kubectl get all -n neuvector - -# open https://neuvector.40.115.47.172.sslip.io/ and do first login with login/login (if connection timeout, wait a little and retry) - -# if needed, deletes the chart and deletes the namespace -helm uninstall neuvector -n neuvector -kubectl delete ns neuvector -``` - -## How to get parameter values - -* RKE2 cluster - -```yaml -core: - k3s: - enabled: true -``` - -* AKS cluster - -```yaml -core: - containerd: - enabled: true -``` - -* NGINX Ingress Controller with a cert-manager ClusterIssue - -```yaml -core: - manager: - ingress: - enabled: true - ingressClassName: nginx - annotations: - cert-manager.io/cluster-issuer: selfsigned-cluster-issuer - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - tls: true - secretName: neuvector-tls-secret -``` diff --git a/charts/neuvector/values.yaml b/charts/neuvector/values.yaml deleted file mode 100644 index a10e6d3..0000000 --- a/charts/neuvector/values.yaml +++ /dev/null @@ -1,13 +0,0 @@ -# https://github.com/neuvector/neuvector-helm/blob/master/charts/core/values.yaml -core: - controller: - replicas: 2 - cve: - scanner: - replicas: 2 - manager: - ingress: - enabled: true - ingressClassName: nginx - tls: true - secretName: neuvector-tls diff --git a/charts/nfs-ganesha/CONTRIBUTING.md b/charts/nfs-ganesha/CONTRIBUTING.md deleted file mode 100644 index 95d7eb6..0000000 --- a/charts/nfs-ganesha/CONTRIBUTING.md +++ /dev/null @@ -1,18 +0,0 @@ -# Contribute - -## How to check the manifest before deployment - -```bash -# checks the Kubernetes objects generated from the chart -helm template nfs-ganesha . -f values.yaml \ ---namespace nfs-ganesha > temp.yaml -``` - -## How to check the chart - -```bash -# applies the manifest on a cluster -helm upgrade --install nfs-ganesha . -f values.yaml --create-namespace \ ---namespace nfs-ganesha -# --debug > output.yaml -``` diff --git a/charts/nfs-ganesha/Chart.lock b/charts/nfs-ganesha/Chart.lock new file mode 100644 index 0000000..f156d05 --- /dev/null +++ b/charts/nfs-ganesha/Chart.lock @@ -0,0 +1,3 @@ +dependencies: [] +digest: sha256:643d5437104296e21d906ecb15b2c96ad278f20cfc4af53b12bb6069bd853726 +generated: "2025-07-29T10:49:11.328317142Z" diff --git a/charts/nfs-ganesha/Chart.yaml b/charts/nfs-ganesha/Chart.yaml index a9dc294..d4c1714 100644 --- a/charts/nfs-ganesha/Chart.yaml +++ b/charts/nfs-ganesha/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: nfs-ganesha description: Helm chart for managing NFS-Ganesha type: application -version: "0.1.0" +version: "0.1.1" appVersion: "1.0.0" dependencies: [] maintainers: diff --git a/charts/nfs-ganesha/README.md b/charts/nfs-ganesha/README.md index ebe7226..5fd5ceb 100644 --- a/charts/nfs-ganesha/README.md +++ b/charts/nfs-ganesha/README.md @@ -2,13 +2,10 @@ This Helm chart will install [NFS-Ganesha](https://nfs-ganesha.github.io/) ([code](https://github.com/nfs-ganesha/nfs-ganesha)) on a Kubernetes cluster. -## Installation +## Usage + +Installs the application: ```bash -# installs the chart with default parameters -helm upgrade --install nfs-ganesha devpro/nfs-ganesha --create-namespace --namespace nfs-ganesha +helm upgrade --install nfs-ganesha devpro/nfs-ganesha --namespace nfs-ganesha --create-namespace ``` - -## Open collaboration - -Look at the [contributing guide](CONTRIBUTING.md). diff --git a/charts/nfs-ganesha/templates/deployment.yaml b/charts/nfs-ganesha/templates/deployment.yaml index 23eeded..ddc9b45 100644 --- a/charts/nfs-ganesha/templates/deployment.yaml +++ b/charts/nfs-ganesha/templates/deployment.yaml @@ -7,6 +7,8 @@ metadata: name: {{ .Values.name }} spec: replicas: 1 + strategy: + type: RollingUpdate selector: matchLabels: app: {{ .Values.name }} diff --git a/charts/nfs-ganesha/templates/service.yaml b/charts/nfs-ganesha/templates/service.yaml index 777bf1b..3bcf296 100644 --- a/charts/nfs-ganesha/templates/service.yaml +++ b/charts/nfs-ganesha/templates/service.yaml @@ -1,18 +1,18 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ .Values.name }}-nodeport -spec: - selector: - app: {{ .Values.name }} - type: NodePort - ports: - - name: nfsv4 - nodePort: 32049 - port: 2049 - protocol: TCP - targetPort: 2049 +# --- +# apiVersion: v1 +# kind: Service +# metadata: +# name: {{ .Values.name }}-nodeport +# spec: +# selector: +# app: {{ .Values.name }} +# type: NodePort +# ports: +# - name: nfsv4 +# nodePort: 32049 +# port: 2049 +# protocol: TCP +# targetPort: 2049 --- apiVersion: v1 kind: Service diff --git a/charts/nfs-ganesha/values.yaml b/charts/nfs-ganesha/values.yaml index e896138..c5113f4 100644 --- a/charts/nfs-ganesha/values.yaml +++ b/charts/nfs-ganesha/values.yaml @@ -1,3 +1,4 @@ name: nfs-ganesha image: janeczku/nfs-ganesha +# images are hosted on DockerHub: https://hub.docker.com/r/janeczku/nfs-ganesha/tags tag: latest diff --git a/charts/opentelemetry-collector/Chart.lock b/charts/opentelemetry-collector/Chart.lock deleted file mode 100644 index 9aa098a..0000000 --- a/charts/opentelemetry-collector/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: opentelemetry-collector - repository: https://open-telemetry.github.io/opentelemetry-helm-charts - version: 0.80.1 -digest: sha256:af954f7c73578491ff653fad69148b57f983d67180fb4a78fead63ffdb2cbea7 -generated: "2024-02-12T14:32:43.391983924+01:00" diff --git a/charts/opentelemetry-collector/Chart.yaml b/charts/opentelemetry-collector/Chart.yaml deleted file mode 100644 index acaaf7f..0000000 --- a/charts/opentelemetry-collector/Chart.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v2 -name: opentelemetry-collector -description: Helm chart for managing OpenTelemetry Collector -type: application -version: "0.2.2" -appVersion: "0.93.0" -dependencies: - - name: opentelemetry-collector - version: 0.80.1 - repository: https://open-telemetry.github.io/opentelemetry-helm-charts -maintainers: - - name: devpro - email: bertrand@devpro.fr -home: https://github.com/devpro/helm-charts/tree/main/charts/opentelemetry-collector diff --git a/charts/opentelemetry-collector/README.md b/charts/opentelemetry-collector/README.md deleted file mode 100644 index e84fb96..0000000 --- a/charts/opentelemetry-collector/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Helm chart for OpenTelemetry Collector - -This Helm chart will install [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) -by using the [official Helm chart](https://github.com/open-telemetry/opentelemetry-helm-charts). - -💡 By default, [OpenTelemetry Collector Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) will be installed (which is a good think 😊) - -## How to use - -- Review the default configuration from [values.yaml](values.yaml) and identify the changes specific to your environment - -- With Helm CLI (see [README](../../README.md#from-helm-cli) for requirements) - -```bash -# install with optional parameters -helm upgrade --install opentelemetry-collector devpro/opentelemetry-collector --create-namespace \ ---namespace opentelemetry-collector -# --set myvariable=xxx -# -f myvalues.yaml - -# watches the installation and checks all pods are running after some time -kubectl get pod -n opentelemetry-collector --watch -``` - -## How to create or update the chart - -```bash -# adds & updates upstream repository -helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts -helm repo update - -# searches for the latest version -helm search repo -l open-telemetry/opentelemetry-collector - -# manual: update version number in Chart.yaml - -# updates Chart.lock -helm dependency update -``` - -## How to deploy manually from the sources - -```bash -# creates the release from the local files -kubectl create ns opentelemetry-collector -helm upgrade --install opentelemetry-collector . -f values.yaml --namespace opentelemetry-collector - -# (optional) forwards port for local access -kubectl port-forward daemonsets/opentelemetry-collector-agent 4317:4317 -n opentelemetry-collector - -# if needed, deletes the release -helm uninstall opentelemetry-collector -n opentelemetry-collector -kubectl delete ns opentelemetry-collector -``` diff --git a/charts/opentelemetry-collector/values.yaml b/charts/opentelemetry-collector/values.yaml deleted file mode 100644 index b6de1c0..0000000 --- a/charts/opentelemetry-collector/values.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# https://github.com/open-telemetry/opentelemetry-helm-charts/blob/main/charts/opentelemetry-collector/values.yaml -opentelemetry-collector: - mode: daemonset - config: - receivers: - jaeger: null - zipkin: null - service: - pipelines: - logs: - exporters: - - logging - processors: - - memory_limiter - - batch - receivers: - - otlp - metrics: - exporters: - - logging - processors: - - memory_limiter - - batch - receivers: - - otlp - # - prometheus - traces: - exporters: - - logging - processors: - - memory_limiter - - batch - receivers: - - otlp - ports: - jaeger-compact: - enabled: false - jaeger-thrift: - enabled: false - jaeger-grpc: - enabled: false - zipkin: - enabled: false diff --git a/charts/promyze/CONTRIBUTING.md b/charts/promyze/CONTRIBUTING.md deleted file mode 100644 index 4a3b85c..0000000 --- a/charts/promyze/CONTRIBUTING.md +++ /dev/null @@ -1,43 +0,0 @@ -# Contribute - -## How to update the dependencies - -```bash -# makes sure the repository has been added and refreshed -helm repo add promyze https://promyze.github.io/helm-charts -helm repo update - -# searches for the latest version -helm search repo -l promyze --versions - -# manual: update version number in Chart.yaml - -# updates Chart.lock -helm dependency update -``` - -## How to check the manifest code quality - -```bash -# checks code style -helm lint - -# checks the Kubernetes objects generated from the chart -helm template promyze . -f values.yaml --namespace promyze-beta > temp.yaml -``` - -## How to deploy the chart from the sources - -### Example with NGINX Ingress Controller - -```bash -# gets Ingress Controller external IP -NGINX_PUBLIC_IP=`kubectl get service -n ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'` - -# installs on a cluster -helm upgrade --install promyze . -f values.yaml --create-namespace \ - --namespace promyze-beta \ - --debug - -# manual: open http://promyze.${NGINX_PUBLIC_IP}.sslip.io/ -``` diff --git a/charts/promyze/Chart.yaml b/charts/promyze/Chart.yaml deleted file mode 100644 index be5b2a8..0000000 --- a/charts/promyze/Chart.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v2 -name: promyze -description: Helm chart for managing Promyze -type: application -version: "0.1.1" -appVersion: "4.12.1" -dependencies: - - name: promyze - version: 0.3.4 - repository: https://promyze.github.io/helm-charts -maintainers: - - name: devpro - email: bertrand@devpro.fr -home: https://github.com/devpro/helm-charts/tree/main/charts/promyze diff --git a/charts/promyze/README.md b/charts/promyze/README.md deleted file mode 100644 index 9aa9c3b..0000000 --- a/charts/promyze/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Helm chart for Promyze - -This Helm chart will install [Promyze](https://www.promyze.com/) in a Kubernetes cluster. -It is based on the [official Helm chart](https://promyze.github.io/helm-charts/) ([code](https://github.com/promyze/helm-charts), -[docs](https://docs.promyze.com/on-premise-version/install-the-self-hosted-version)). - -## Usage - -```bash -# if not already done, adds devpro repository in helm -helm repo add promyze https://promyze.github.io/helm-charts -helm repo update - -# installs the chart with default parameters -helm upgrade --install promyze devpro/promyze --create-namespace --namespace promyze - -# cleans up -helm uninstall promyze -n promyze -kubectl delete ns promyze -``` - -## Going further - -Look at [Contributing](CONTRIBUTING.md) page. diff --git a/charts/promyze/values.yaml b/charts/promyze/values.yaml deleted file mode 100644 index 3bbee65..0000000 --- a/charts/promyze/values.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# https://github.com/promyze/helm-charts/blob/main/charts/promyze/values.yaml -promyze: {} diff --git a/charts/r2devops/CONTRIBUTING.md b/charts/r2devops/CONTRIBUTING.md deleted file mode 100644 index 87aaf86..0000000 --- a/charts/r2devops/CONTRIBUTING.md +++ /dev/null @@ -1,45 +0,0 @@ -# Contribute - -## How to update the dependencies - -```bash -# makes sure the repository has been added and refreshed -helm repo add r2devops https://charts.r2devops.io -helm repo update - -# searches for the latest version -helm search repo -l r2devops --versions - -# manual: update version number in Chart.yaml - -# updates Chart.lock -helm dependency update -``` - -## How to check the manifest code quality - -```bash -# checks code style -helm lint - -# checks the Kubernetes objects generated from the chart -helm template r2devops . -f values.yaml --namespace r2devops-beta > temp.yaml -``` - -## How to deploy the chart from the sources - -### Example with NGINX Ingress Controller and sslip.io - -```bash -# gets Ingress Controller external IP -NGINX_PUBLIC_IP=`kubectl get service -n ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'` - -# manual steps: follow https://github.com/r2devops/self-managed/blob/main/charts/r2devops/CONTIBUTING.md - -# installs on a cluster -helm upgrade --install r2devops . -f values.yaml --create-namespace \ ---namespace r2devops-beta \ ---debug - -# manual step: open http://r2devops.${NGINX_PUBLIC_IP}.sslip.io/ -``` diff --git a/charts/r2devops/Chart.lock b/charts/r2devops/Chart.lock deleted file mode 100644 index d2e4815..0000000 --- a/charts/r2devops/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: r2devops - repository: https://charts.r2devops.io - version: 0.2.3 -digest: sha256:f8aceadb79f7ca74fece51320b95c43a9df3d82dfa11938efc02d4f6a64aea5d -generated: "2023-08-02T15:36:19.705603475+02:00" diff --git a/charts/r2devops/Chart.yaml b/charts/r2devops/Chart.yaml deleted file mode 100644 index c309ca2..0000000 --- a/charts/r2devops/Chart.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v2 -name: r2devops -description: Helm chart for managing R2Devops -type: application -version: "0.1.1" -appVersion: "1.14.1" -dependencies: - - name: r2devops - version: 0.2.3 - repository: https://charts.r2devops.io -maintainers: - - name: devpro - email: bertrand@devpro.fr -home: https://github.com/devpro/helm-charts/tree/main/charts/r2devops diff --git a/charts/r2devops/README.md b/charts/r2devops/README.md deleted file mode 100644 index 714c7d5..0000000 --- a/charts/r2devops/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Helm chart for R2Devops - -This Helm chart will install [R2Devops](https://r2devops.io/) in a Kubernetes cluster. -It is based on the [official Helm chart](https://charts.r2devops.io) ([code](https://github.com/r2devops/self-managed), [docs](https://docs.r2devops.io/self-managed/kubernetes/)). - -## Usage - -```bash -# if not already done, adds devpro repository in helm -helm repo add r2devops https://charts.r2devops.io -helm repo update - -# installs the chart with default parameters -helm upgrade --install r2devops devpro/r2devops --create-namespace --namespace r2devops - -# cleans up -helm uninstall r2devops -n r2devops -kubectl delete ns r2devops -``` - -## Going further - -Look at [Contributing](CONTRIBUTING.md) page. diff --git a/charts/r2devops/values.yaml b/charts/r2devops/values.yaml deleted file mode 100644 index 6fcbe8f..0000000 --- a/charts/r2devops/values.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# https://github.com/r2devops/self-managed/blob/main/charts/r2devops/values.yaml -r2devops: {} diff --git a/charts/rancher-cluster-templates/CONTRIBUTING.md b/charts/rancher-cluster-templates/CONTRIBUTING.md deleted file mode 100644 index 9068d48..0000000 --- a/charts/rancher-cluster-templates/CONTRIBUTING.md +++ /dev/null @@ -1,53 +0,0 @@ -# Contribution guide - -## How to check the manifest code quality - -```bash -# checks code style -helm lint - -# checks the Kubernetes objects generated from the chart on a specific case defined in values_mine.yaml -helm template my-cluster . -f values.yaml -f values_mine.yaml --namespace fleet-default > temp.yaml -``` - -## How to deploy the chart from the sources - -💡 This commands must be run on the Kubernetes cluster hosting Rancher (called `local` by default). - -### Azure example - -```bash -# copies the example -cp examples/values_azure.yaml values_mine.yaml -resourcekey=$(openssl rand -hex 6) -sed -i "s/CLUSTER_NAME/az-rke2-$resourcekey/g" values_mine.yaml -sed -i "s/AZURE_PREFIX/$USER-$resourcekey/g" values_mine.yaml -sed -i "s/CLOUD_CREDENTIAL_SECRET//g" values_mine.yaml - -# runs the installation with Helm -helm upgrade --install rke2-azure01 . -f values.yaml -f values_mine.yaml --namespace fleet-default - -# removes the installation -helm uninstall rke2-azure01 -n fleet-default -``` - -### Outscale example - -```bash -# copies the example -cp examples/values_outscale.yaml values_mine.yaml -resourcekey=$(openssl rand -hex 6) -sed -i "s/CLUSTER_NAME/az-rke2-$resourcekey/g" values_mine.yaml -sed -i "s/CLOUD_CREDENTIAL_SECRET//g" values_mine.yaml - -# runs the installation with Helm -helm upgrade --install rke2-outscale01 . -f values.yaml -f values_mine.yaml --namespace fleet-default - -# removes the installation -helm uninstall rke2-outscale01 -n fleet-default -``` - -## How to troubleshoot - -* Follow the steps from the start by looking at the machine-provision job (in `fleet-default` namespace) -* In case of issue with remaining Kubernetes resources even after helm uninstall, force delete the machine diff --git a/charts/rancher-cluster-templates/Chart.yaml b/charts/rancher-cluster-templates/Chart.yaml index 708ad96..4c78518 100644 --- a/charts/rancher-cluster-templates/Chart.yaml +++ b/charts/rancher-cluster-templates/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: rancher-cluster-templates description: Helm chart for managing Rancher cluster templates type: application -version: "0.1.5" +version: "0.1.6" appVersion: "0.1.0" annotations: catalog.cattle.io/type: cluster-template diff --git a/charts/rancher-cluster-templates/README.md b/charts/rancher-cluster-templates/README.md index f74d16a..f6e62af 100644 --- a/charts/rancher-cluster-templates/README.md +++ b/charts/rancher-cluster-templates/README.md @@ -2,112 +2,45 @@ This Helm chart gives the possibility to create and manage a Kubernetes cluster from Rancher thanks to [Rancher Cluster Templates](https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/manage-clusters/manage-cluster-templates). -## Usage - -### Quickstart - -```bash -# makes sure adds devpro Helm repository has been added -helm repo add devpro https://devpro.github.io/helm-charts -helm repo update - -# double checks you are connected to the Kubernetes cluster hosting Rancher -kubectl get nodes +> [!NOTE] +> Inspired by examples from [bloriot](https://github.com/bloriot/rancher-cluster-templates) and [rancher](https://github.com/rancher/cluster-template-examples). -# installs the chart with default parameters -helm upgrade --install my-cluster rancher-cluster-templates -f values.yaml --namespace fleet-default +## Getting started -# removes the installation -helm uninstall my-cluster -n fleet-default -``` +Start with the [documentation](https://kwt.devpro.fr/custom-charts/rancher-cluster-templates.html). -### Infrastructure providers +## Configuration 💡 Node driver must be enabled in Rancher prior to Helm chart installation -Provider | Example | Template | Node Driver ----------------------------------|----------------------------------------------------------|---------------------------------------------------------------------|---------------- -**Amazon Web Services (AWS)** | [values_aws](examples/values_aws.yaml) | [amazonec2config](templates/amazonec2config.yaml) | `Amazon EC2` -[**Azure**](docs/azure.md) | [values_azure](examples/values_azure.yaml) | [azureconfig](templates/azureconfig.yaml) | `Azure` -**CloudScale** | [values_cloudscale](examples/values_cloudscale.yaml) | [cloudscaleconfig](templates/cloudscaleconfig.yaml) | `Cloudscale` -**Digitial Ocean** | [values_digitalocean](examples/values_digitalocean.yaml) | [digitaloceanconfig](templates/digitaloceanconfig.yaml) | `DigitalOcean` -**Exoscale** | [values_digitalocean](examples/values_digitalocean.yaml) | [digitaloceanconfig](templates/digitaloceanconfig.yaml) | `Exoscale` -**Equinix Metal (prev. Packet)** | [values_equinix](examples/values_equinix.yaml) | [packetconfig](templates/packetconfig.yaml) | `Equinix Metal` -**Harvester** | [values_harvester](examples/values_harvester.yaml) | [harvesterconfig](templates/harvesterconfig.yaml) | `Harvester` -**Linode** | [values_linode](examples/values_linode.yaml) | [linodeconfig](templates/linodeconfig.yaml) | `Linode` -**Nutanix** | [values_nutanix](examples/values_nutanix.yaml) | [nutanixconfig](templates/nutanixconfig.yaml) | `Nutanix` -**OpenStack** | [values_openstack](examples/values_openstack.yaml) | [openstackconfig](templates/openstackconfig.yaml) | `OpenStack` -**Outscale** | [values_aws](examples/values_outscale.yaml) | [outscaleconfig](templates/outscaleconfig.yaml) | `Outscale` -**VMware vSphere** | [values_vsphere](examples/values_vsphere.yaml) | [vmwarevsphereconfig.yaml](templates/vmwarevsphereconfig.yaml.yaml) | `vSphere` - -### Automation - -This chart can be installed and managed by GitOps tools like [ArgoCD](https://github.com/devpro/helm-charts#from-argocd) and [Fleet](https://github.com/devpro/helm-charts#from-fleet). -It can also be installed in [Rancher Apps](https://github.com/devpro/helm-charts#from-rancher). +Provider | Example | Template | Node Driver +---------------------------------|----------------------------------------------------------|-----------------------------------------------------------|---------------- +**Amazon Web Services (AWS)** | [values_aws](examples/values_aws.yaml) | [amazonec2config](templates/amazonec2config.yaml) | `Amazon EC2` +**Azure** | [values_azure](examples/values_azure.yaml) | [azureconfig](templates/azureconfig.yaml) | `Azure` +**CloudScale** | [values_cloudscale](examples/values_cloudscale.yaml) | [cloudscaleconfig](templates/cloudscaleconfig.yaml) | `Cloudscale` +**Digitial Ocean** | [values_digitalocean](examples/values_digitalocean.yaml) | [digitaloceanconfig](templates/digitaloceanconfig.yaml) | `DigitalOcean` +**Exoscale** | [values_digitalocean](examples/values_digitalocean.yaml) | [digitaloceanconfig](templates/digitaloceanconfig.yaml) | `Exoscale` +**Equinix Metal (prev. Packet)** | [values_equinix](examples/values_equinix.yaml) | [packetconfig](templates/packetconfig.yaml) | `Equinix Metal` +**Harvester** | [values_harvester](examples/values_harvester.yaml) | [harvesterconfig](templates/harvesterconfig.yaml) | `Harvester` +**Linode** | [values_linode](examples/values_linode.yaml) | [linodeconfig](templates/linodeconfig.yaml) | `Linode` +**Nutanix** | [values_nutanix](examples/values_nutanix.yaml) | [nutanixconfig](templates/nutanixconfig.yaml) | `Nutanix` +**OpenStack** | [values_openstack](examples/values_openstack.yaml) | [openstackconfig](templates/openstackconfig.yaml) | `OpenStack` +**Outscale** | [values_aws](examples/values_outscale.yaml) | [outscaleconfig](templates/outscaleconfig.yaml) | `Outscale` +**VMware vSphere** | [values_vsphere](examples/values_vsphere.yaml) | [vmwarevsphereconfig](templates/vmwarevsphereconfig.yaml) | `vSphere` -#### Fleet example for creating RKE2 cluster in Azure - -- Git repository > `fleet.yaml` - -```yaml -helm: - repo: https://devpro.github.io/helm-charts - chart: rancher-cluster-templates - version: 0.1.1 - releaseName: rke2-azure-demo - values: - cluster: - name: "azurevm-rke2-01" - cloudprovider: azure - cloudCredentialSecretName: cattle-global-data:cc-xxxx - kubernetesVersion: "v1.24.14+rke2r1" - nodepools: - - etcd: true - controlplane: true - worker: true - quantity: 1 - name: nodepool-1 - region: westeurope - machineImage: "Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:20.04.202307240" - instanceType: Standard_DS2_v2 - storageType: Standard_LRS - sshUser: azureuser - availabilitySet: "avs-someprefix-rke2-01" - azureEnvironment: AzurePublicCloud - managedDisks: true - networkSecurityGroup: "nsg-someprefix-rke2-01" - resourceGroup: "rg-someprefix-rke2-01" - subnet: rke2 - subnetPrefix: "192.168.0.0/16" - virtualNetwork: "vnet-someprefix-rke2-01" -``` +## Usage -- Rancher > Continuous Delivery > Git Repo +Add chart repository: -```yaml -apiVersion: fleet.cattle.io/v1alpha1 -kind: GitRepo -metadata: - name: cluster-templates - namespace: fleet-local -spec: - branch: release/demo - clientSecretName: auth-xxxx - insecureSkipTLSVerify: false - paths: - - fleet/rke2-azure-demo - repo: https://github.com/my-account/my-kubernetes-definitions.git - targets: - - clusterSelector: - matchExpressions: - - key: provider.cattle.io - operator: NotIn - values: - - harvester +```bash +helm repo add devpro https://devpro.github.io/helm-charts +helm repo update ``` -## Going further +Create the `values.yaml` file by looking at configuration examples. -If you feel like it, have a look at the [contribution guide](CONTRIBUTING.md). +Install the chart in the Kubernetes cluster hosting Rancher: -This chart has been inspired by two examples: [bloriot/rancher-cluster-templates](https://github.com/bloriot/rancher-cluster-templates) and [rancher/cluster-template-examples](https://github.com/rancher/cluster-template-examples). +```bash +helm upgrade --install my-cluster devpro/rancher-cluster-templates -f values.yaml --namespace fleet-default +``` diff --git a/charts/terraform-backend-mongodb/CONTRIBUTING.md b/charts/terraform-backend-mongodb/CONTRIBUTING.md index 952f747..e6bbcaa 100644 --- a/charts/terraform-backend-mongodb/CONTRIBUTING.md +++ b/charts/terraform-backend-mongodb/CONTRIBUTING.md @@ -22,42 +22,3 @@ Update `Chart.lock`: ```bash helm dependency update ``` - -## Check the manifest code quality - -```bash -# checks code style -helm lint - -# checks the Kubernetes objects generated from the chart on a specific case defined in values_mine.yaml -helm template my-app . -f values.yaml --namespace temp > temp.yaml -``` - -## Deploy the chart from the sources - -### Installation with MongoDB & Ingress - -```bash -# installs/updates -helm upgrade --install tfbackend . -f values.yaml --namespace farseer --create-namespace \ ---set mongodb.enabled=true \ ---set mongodb.auth.rootPassword=admin \ ---set webapi.host=tfbackend.mydomain \ ---set webapi.db.connectionString=mongodb://root:admin@tfbackend-mongodb:27017/terraform_backend_beta?authSource=admin \ ---set webapi.db.databaseName=terraform_backend_beta \ ---set ingress.enabled=true \ ---set ingress.className=traefik \ ---set ingress.annotations.'cert-manager\.io/cluster-issuer'=letsencrypt-prod \ ---set dotnet.environment=Development \ ---set dotnet.enableSwagger=true \ ---set dotnet.enableOpenTelemetry=false - -# (optional) forwards MongoDB port for local access -kubectl port-forward service/tfbackend-mongodb 27017:27017 -n farseer - -# (manual) open in a browser the URL/swagger - -# uninstalls -helm delete tfbackend -n farseer -kubectl delete ns farseer -``` diff --git a/charts/terraform-backend-mongodb/Chart.yaml b/charts/terraform-backend-mongodb/Chart.yaml index 78aad3f..7c6246f 100644 --- a/charts/terraform-backend-mongodb/Chart.yaml +++ b/charts/terraform-backend-mongodb/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: terraform-backend-mongodb description: Helm chart for Terraform Backend MongoDB type: application -version: 0.1.0 +version: 0.1.1 appVersion: "1.1.0" dependencies: - name: mongodb diff --git a/charts/terraform-backend-mongodb/README.md b/charts/terraform-backend-mongodb/README.md index 1345175..de47826 100644 --- a/charts/terraform-backend-mongodb/README.md +++ b/charts/terraform-backend-mongodb/README.md @@ -2,26 +2,27 @@ This Helm chart will deploy [Terraform Backend MongoDB](https://github.com/devpro/terraform-backend-mongodb) on a Kubernetes cluster. +## Getting started + +Start with the [documentation](https://kwt.devpro.fr/custom-charts/terraform-backend-mongodb.html). + ## Usage -Add [Helm](https://helm.sh) repository: +Add the chart repository: ```bash helm repo add devpro https://devpro.github.io/helm-charts helm repo update ``` -Install the chart: - -```bash -helm upgrade --install tfbackend devpro/terraform-backend-mongodb --create-namespace --namespace tfbackend -``` +Create the `values.yaml` file to override [default values](values.yaml). -Uninstall the chart: +Install the application: ```bash -helm delete tfbackend -kubectl delete ns tfbackend +helm upgrade --install tfbackend devpro/terraform-backend-mongodb -f values.yaml --namespace tfbackend --create-namespace ``` -More information on the [contribution guide](CONTRIBUTING.md). +## Going further + +Check the [contribution guide](CONTRIBUTING.md). diff --git a/charts/terraform-backend-mongodb/templates/deployment.yaml b/charts/terraform-backend-mongodb/templates/deployment.yaml index c0a18a5..cb67347 100644 --- a/charts/terraform-backend-mongodb/templates/deployment.yaml +++ b/charts/terraform-backend-mongodb/templates/deployment.yaml @@ -12,6 +12,8 @@ metadata: app.kubernetes.io/name: {{ .name }} spec: replicas: {{ .replicaCount }} + strategy: + type: RollingUpdate selector: matchLabels: app: {{ .name }} @@ -39,7 +41,7 @@ spec: imagePullPolicy: Always ports: - name: http - containerPort: {{ .targetPort }} + containerPort: {{ .containerPort }} protocol: TCP livenessProbe: httpGet: @@ -51,6 +53,11 @@ spec: port: http resources: {{- toYaml .resources | nindent 12 }} + securityContext: + runAsNonRoot: true + runAsUser: 1654 # "app" user + runAsGroup: 1654 # "app" group + allowPrivilegeEscalation: false env: {{- if .extraEnv }} {{- toYaml .extraEnv | nindent 12 }} @@ -87,5 +94,6 @@ spec: - name: MongoDb__DatabaseName value: {{ .db.databaseName }} {{- end }} + restartPolicy: Always {{- end }} {{ end }} diff --git a/charts/terraform-backend-mongodb/templates/service.yaml b/charts/terraform-backend-mongodb/templates/service.yaml index b2233e7..27e5b7d 100644 --- a/charts/terraform-backend-mongodb/templates/service.yaml +++ b/charts/terraform-backend-mongodb/templates/service.yaml @@ -13,7 +13,7 @@ spec: type: ClusterIP ports: - port: {{ .port }} - targetPort: {{ .targetPort }} + targetPort: {{ .containerPort }} protocol: TCP name: http selector: diff --git a/charts/terraform-backend-mongodb/values.yaml b/charts/terraform-backend-mongodb/values.yaml index d549f03..68fd17e 100644 --- a/charts/terraform-backend-mongodb/values.yaml +++ b/charts/terraform-backend-mongodb/values.yaml @@ -3,10 +3,11 @@ webapi: host: tfbackend.random name: tfbackend image: docker.io/devprofr/terraform-backend-mongodb - tag: latest + # images are hosted on DockerHub: https://hub.docker.com/r/devprofr/terraform-backend-mongodb/tags + tag: 1.1.16541432676 replicaCount: 1 port: 80 - targetPort: 8080 + containerPort: 8080 healthEndpoint: /health db: connectionString: "someconnstring" diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 09f248d..05ffe18 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -6,13 +6,12 @@ export default defineConfig({ lang: 'en-US', title: "Kube Workload Toolkit", description: "Deploy on Kubernetes with confidence using tested charts and clear recipes", - base: '/helm-charts/', + // base: '/helm-charts/docs/', outDir: '../public', themeConfig: { // https://vitepress.dev/reference/default-theme-config nav: [ { text: 'Home', link: '/' }, - { text: 'Setup', link: '/setup' }, { text: 'Application guides', link: '/application-guides' }, { text: 'Custom charts', link: '/custom-charts' } ], @@ -24,7 +23,8 @@ export default defineConfig({ excludeByGlobPattern: ['examples'], useFolderLinkFromIndexFile: true, useFolderTitleFromIndexFile: true, - useTitleFromFileHeading: true + useTitleFromFileHeading: true, + sortMenusByFrontmatterOrder: true }), socialLinks: [ { icon: 'github', link: 'https://github.com/devpro/helm-charts' } diff --git a/docs/application-guides/code-quality/promyze.md b/docs/application-guides/code-quality/promyze.md new file mode 100644 index 0000000..537ddb5 --- /dev/null +++ b/docs/application-guides/code-quality/promyze.md @@ -0,0 +1,31 @@ +# Promyze + +Let's see how to run [Promyze](https://www.promyze.com/) in a Kubernetes cluster. + +We'll use the [official Helm chart](https://promyze.github.io/helm-charts/) ([code](https://github.com/promyze/helm-charts), [docs](https://docs.promyze.com/on-premise-version/install-the-self-hosted-version)). + +## Configuration + +Create the `values.yaml` file to override [default parameters](https://github.com/promyze/helm-charts/blob/main/charts/promyze/values.yaml). + +## Deployment + +Add Helm chart repository: + +```bash +helm repo add promyze https://promyze.github.io/helm-charts +helm repo update +``` + +Install the application: + +```bash +helm upgrade --install promyze promyze/promyze -f values.yaml --namespace promyze --create-namespace +``` + +Uninstall and clean the cluster: + +```bash +helm uninstall promyze -n promyze +kubectl delete ns promyze +``` diff --git a/docs/application-guides/sonarqube.md b/docs/application-guides/code-quality/sonarqube.md similarity index 100% rename from docs/application-guides/sonarqube.md rename to docs/application-guides/code-quality/sonarqube.md diff --git a/docs/application-guides/consul.md b/docs/application-guides/consul.md deleted file mode 100644 index 81cf118..0000000 --- a/docs/application-guides/consul.md +++ /dev/null @@ -1,3 +0,0 @@ -# Consul - -[Consul on Kubernetes](https://github.com/hashicorp/consul-k8s) diff --git a/docs/application-guides/elasticsearch.md b/docs/application-guides/databases/elasticsearch.md similarity index 100% rename from docs/application-guides/elasticsearch.md rename to docs/application-guides/databases/elasticsearch.md diff --git a/docs/application-guides/mariadb.md b/docs/application-guides/databases/mariadb.md similarity index 100% rename from docs/application-guides/mariadb.md rename to docs/application-guides/databases/mariadb.md diff --git a/docs/application-guides/memcached.md b/docs/application-guides/databases/memcached.md similarity index 100% rename from docs/application-guides/memcached.md rename to docs/application-guides/databases/memcached.md diff --git a/docs/application-guides/mongodb-percona.md b/docs/application-guides/databases/mongodb-percona.md similarity index 100% rename from docs/application-guides/mongodb-percona.md rename to docs/application-guides/databases/mongodb-percona.md diff --git a/docs/application-guides/postgresql.md b/docs/application-guides/databases/postgresql.md similarity index 100% rename from docs/application-guides/postgresql.md rename to docs/application-guides/databases/postgresql.md diff --git a/docs/application-guides/redis.md b/docs/application-guides/databases/redis.md similarity index 100% rename from docs/application-guides/redis.md rename to docs/application-guides/databases/redis.md diff --git a/docs/application-guides/podinfo.md b/docs/application-guides/demo/podinfo.md similarity index 80% rename from docs/application-guides/podinfo.md rename to docs/application-guides/demo/podinfo.md index 2e75b56..8e411a6 100644 --- a/docs/application-guides/podinfo.md +++ b/docs/application-guides/demo/podinfo.md @@ -4,7 +4,8 @@ Let's see how to run [Podinfo](https://github.com/stefanprodan/podinfo) in a Kub ## Introduction -> Podinfo is a tiny web application made with Go that showcases best practices of running microservices in Kubernetes. Podinfo is used by CNCF projects like Flux and Flagger for end-to-end testing and workshops. ([github.com](https://github.com/stefanprodan/podinfo)) +> Podinfo is a tiny web application made with Go that showcases best practices of running microservices in Kubernetes. +> Podinfo is used by CNCF projects like Flux and Flagger for end-to-end testing and workshops. ([github.com](https://github.com/stefanprodan/podinfo)) See also [golang.ch](https://golang.ch/a-tiny-web-application-golang-showcases-best-practices-of-running-microservices-in-kubernetes/) diff --git a/docs/application-guides/developer-platforms/backstage.md b/docs/application-guides/developer-platforms/backstage.md new file mode 100644 index 0000000..f09ba76 --- /dev/null +++ b/docs/application-guides/developer-platforms/backstage.md @@ -0,0 +1,3 @@ +# Backstage + +[backstage.io](https://backstage.io/) diff --git a/docs/application-guides/drupal.md b/docs/application-guides/developer-platforms/drupal.md similarity index 100% rename from docs/application-guides/drupal.md rename to docs/application-guides/developer-platforms/drupal.md diff --git a/docs/application-guides/epinio.md b/docs/application-guides/developer-platforms/epinio.md similarity index 100% rename from docs/application-guides/epinio.md rename to docs/application-guides/developer-platforms/epinio.md diff --git a/docs/application-guides/knative.md b/docs/application-guides/developer-platforms/knative.md similarity index 100% rename from docs/application-guides/knative.md rename to docs/application-guides/developer-platforms/knative.md diff --git a/docs/application-guides/elastic-stack.md b/docs/application-guides/elastic-stack.md deleted file mode 100644 index 049631d..0000000 --- a/docs/application-guides/elastic-stack.md +++ /dev/null @@ -1 +0,0 @@ -# Elastic Stack diff --git a/docs/application-guides/index.md b/docs/application-guides/index.md index 14673f6..8c065fc 100644 --- a/docs/application-guides/index.md +++ b/docs/application-guides/index.md @@ -1,105 +1,107 @@ -# Application guides +--- +order: 2 +--- + +# Application Guides > [!NOTE] > The CNCF provides the [Cloud Native Interactive Landscape](https://landscape.cncf.io/) for a more complete view on Cloud Native components -## Applications +## Code quality -* [Drupal](drupal) - -* [Podinfo](podinfo) -* WordPress +* [Promyze](code-quality/promyze) +* [SonarQube](code-quality/sonarqube) -## Authentication / Identity +## Databases -* Keycloak -* Kratos +* [Elasticsearch](databases/elasticsearch) +* [MariaDB](databases/mariadb) + +* [MongoDB (Percona)](databases/mongodb-percona) +* [PostgreSQL](databases/postgresql) +* [Redis](databases/redis) -## Cloud providers +## Demo -* Azure Storage - +* [Podinfo](demo/podinfo) -## Data stores +## Developer platforms -* [Elasticsearch](elasticsearch) -* [MariaDB](mariadb) - -* MongoDB -* [PostgreSQL](postgresql) -* [RabbitMQ](rabbitmq) -* [Redis](redis) - -## Networking & Messaging - -* [cert-manager](cert-manager) - -* [external-dns](external-dns) - - -* [NATS](nats) -* [NGINX (Ingress Controller)](ingress-nginx) -* [Traefik](traefik) - -## Management - -* [Rancher](rancher) + +* [Drupal](developer-platforms/drupal) +* [Epinio](developer-platforms/epinio) + + +## Kubernetes management + +* [Rancher](kubernetes-management/rancher) + +## Messaging + + + +* [NATS](messaging/nats) +* [RabbitMQ](messaging/rabbitmq) + +## Networking + +* [external-dns](networking/external-dns) + + + +* [NGINX](networking/nginx.md) + +* [Traefik](networking/traefik) ## Observability -* OpenTelemetry Collector -* [Prometheus](prometheus) +* [OpenTelemetry Collector](observability/opentelemetry-collector) +* [Prometheus](observability/prometheus) -## Platforms +## Pipeline orchestration -* [Epinio](epinio) - -## Secrets +* [Argo CD](pipeline-orchestration/argo-cd) + +* [CloudBees CI](pipeline-orchestration/cloudbees-ci) +* [Concourse](pipeline-orchestration/concourse) + + + + +* [Jenkins](pipeline-orchestration/jenkins) + -* [Sealed Secrets](sealed-secrets) +## Quality assurance -## Security +* [Report Portal](quality-assurance/reportportal) -* NeuVector -* [Rancher CIS Benchmark](rancher-cis-benchmark) +## Registries - +* [Artifactory](registries/artifactory) +* [Harbor](registries/harbor) + + -## Storage +## Security -* [Kasten](kasten) -* [Longhorn](longhorn) -* MinIO -* [s3gw](s3gw) +* [cert-manager](security/cert-manager) +* [NeuVector](security/neuvector) +* [R2Devops](security/r2devops) +* [Rancher CIS Benchmark](security/rancher-cis-benchmark) +* [Sealed Secrets](security/sealed-secrets) -## Supply Chain (Software Factory) + -* [Argo CD](argo-cd) - -* [CloudBees CI](cloudbees-ci) -* [Concourse](concourse) - -* GitLab -* GitLab Runner -* [Harbor](harbor) -* [Jenkins](jenkins) - -* R2Devops -* Promyze -* [SonarQube](sonarqube) - + + -## Testing +## Storage -* [Report Portal](reportportal) +* [Kasten](storage/kasten) +* [Longhorn](storage/longhorn) +* [MinIO](storage/minio) + +* [s3gw](storage/s3gw) diff --git a/docs/application-guides/jira.md b/docs/application-guides/jira.md deleted file mode 100644 index 7258111..0000000 --- a/docs/application-guides/jira.md +++ /dev/null @@ -1,3 +0,0 @@ -# Jira - -[docs](https://atlassian.github.io/data-center-helm-charts/userguide/INSTALLATION/) diff --git a/docs/application-guides/rancher.md b/docs/application-guides/kubernetes-management/rancher.md similarity index 100% rename from docs/application-guides/rancher.md rename to docs/application-guides/kubernetes-management/rancher.md diff --git a/docs/application-guides/kafka.md b/docs/application-guides/messaging/kafka.md similarity index 100% rename from docs/application-guides/kafka.md rename to docs/application-guides/messaging/kafka.md diff --git a/docs/application-guides/mqtt.md b/docs/application-guides/messaging/mqtt.md similarity index 100% rename from docs/application-guides/mqtt.md rename to docs/application-guides/messaging/mqtt.md diff --git a/docs/application-guides/nats.md b/docs/application-guides/messaging/nats.md similarity index 100% rename from docs/application-guides/nats.md rename to docs/application-guides/messaging/nats.md diff --git a/docs/application-guides/rabbitmq.md b/docs/application-guides/messaging/rabbitmq.md similarity index 100% rename from docs/application-guides/rabbitmq.md rename to docs/application-guides/messaging/rabbitmq.md diff --git a/docs/application-guides/external-dns.md b/docs/application-guides/networking/external-dns.md similarity index 100% rename from docs/application-guides/external-dns.md rename to docs/application-guides/networking/external-dns.md diff --git a/docs/application-guides/haproxy.md b/docs/application-guides/networking/haproxy.md similarity index 100% rename from docs/application-guides/haproxy.md rename to docs/application-guides/networking/haproxy.md diff --git a/docs/application-guides/kong.md b/docs/application-guides/networking/kong.md similarity index 100% rename from docs/application-guides/kong.md rename to docs/application-guides/networking/kong.md diff --git a/docs/application-guides/metallb.md b/docs/application-guides/networking/metallb.md similarity index 100% rename from docs/application-guides/metallb.md rename to docs/application-guides/networking/metallb.md diff --git a/docs/application-guides/ingress-nginx.md b/docs/application-guides/networking/nginx.md similarity index 100% rename from docs/application-guides/ingress-nginx.md rename to docs/application-guides/networking/nginx.md diff --git a/docs/application-guides/networking/ngrok.md b/docs/application-guides/networking/ngrok.md new file mode 100644 index 0000000..8721016 --- /dev/null +++ b/docs/application-guides/networking/ngrok.md @@ -0,0 +1 @@ +# ngrok diff --git a/docs/application-guides/traefik.md b/docs/application-guides/networking/traefik.md similarity index 100% rename from docs/application-guides/traefik.md rename to docs/application-guides/networking/traefik.md diff --git a/docs/application-guides/observability/opentelemetry-collector.md b/docs/application-guides/observability/opentelemetry-collector.md new file mode 100644 index 0000000..86a5f40 --- /dev/null +++ b/docs/application-guides/observability/opentelemetry-collector.md @@ -0,0 +1,99 @@ +# OpenTelemetry Collector + +Let's see how to run [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) in a Kubernetes cluster. + +> [!NOTE] +> [OpenTelemetry Collector Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) will be installed by default + +## Repository + +We'll use the [official Helm chart](https://github.com/open-telemetry/opentelemetry-helm-charts): + +```bash +helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts +helm repo update +``` + +## Configuration + +Create the `values.yaml` file to override [default parameters](https://github.com/open-telemetry/opentelemetry-helm-charts/blob/main/charts/opentelemetry-collector/values.yaml). + +::: code-group + +```yaml [Daemonset] +opentelemetry-collector: + mode: daemonset + config: + receivers: + jaeger: null + zipkin: null + service: + pipelines: + logs: + exporters: + - logging + processors: + - memory_limiter + - batch + receivers: + - otlp + metrics: + exporters: + - logging + processors: + - memory_limiter + - batch + receivers: + - otlp + # - prometheus + traces: + exporters: + - logging + processors: + - memory_limiter + - batch + receivers: + - otlp + ports: + jaeger-compact: + enabled: false + jaeger-thrift: + enabled: false + jaeger-grpc: + enabled: false + zipkin: + enabled: false +``` + +::: + +## Deployment + +Install the application: + +```bash +helm upgrade --install otel-collector open-telemetry/opentelemetry-collector -f values.yaml --namespace otel-collector --create-namespace +``` + +Watch objects being created: + +```bash +kubectl get pod -n opentelemetry-collector --watch +``` + +## Optional check + +Forwards port for local access: + +```bash +kubectl port-forward daemonsets/opentelemetry-collector-agent 4317:4317 -n opentelemetry-collector +``` + +## Clean-up + +Uninstall the application and delete the namespace: + +```bash +helm uninstall otel-collector -n otel-collector +kubectl delete ns otel-collector +``` diff --git a/docs/application-guides/prometheus.md b/docs/application-guides/observability/prometheus.md similarity index 100% rename from docs/application-guides/prometheus.md rename to docs/application-guides/observability/prometheus.md diff --git a/docs/application-guides/argo-cd.md b/docs/application-guides/pipeline-orchestration/argo-cd.md similarity index 100% rename from docs/application-guides/argo-cd.md rename to docs/application-guides/pipeline-orchestration/argo-cd.md diff --git a/docs/application-guides/argo-rollouts.md b/docs/application-guides/pipeline-orchestration/argo-rollouts.md similarity index 100% rename from docs/application-guides/argo-rollouts.md rename to docs/application-guides/pipeline-orchestration/argo-rollouts.md diff --git a/docs/application-guides/azure-devops-agent.md b/docs/application-guides/pipeline-orchestration/azure-devops-agent.md similarity index 100% rename from docs/application-guides/azure-devops-agent.md rename to docs/application-guides/pipeline-orchestration/azure-devops-agent.md diff --git a/docs/application-guides/cloudbees-ci.md b/docs/application-guides/pipeline-orchestration/cloudbees-ci.md similarity index 100% rename from docs/application-guides/cloudbees-ci.md rename to docs/application-guides/pipeline-orchestration/cloudbees-ci.md diff --git a/docs/application-guides/concourse.md b/docs/application-guides/pipeline-orchestration/concourse.md similarity index 100% rename from docs/application-guides/concourse.md rename to docs/application-guides/pipeline-orchestration/concourse.md diff --git a/docs/application-guides/drone.md b/docs/application-guides/pipeline-orchestration/drone.md similarity index 100% rename from docs/application-guides/drone.md rename to docs/application-guides/pipeline-orchestration/drone.md diff --git a/docs/application-guides/jenkins.md b/docs/application-guides/pipeline-orchestration/jenkins.md similarity index 100% rename from docs/application-guides/jenkins.md rename to docs/application-guides/pipeline-orchestration/jenkins.md diff --git a/docs/application-guides/tekton.md b/docs/application-guides/pipeline-orchestration/tekton.md similarity index 100% rename from docs/application-guides/tekton.md rename to docs/application-guides/pipeline-orchestration/tekton.md diff --git a/docs/application-guides/reportportal.md b/docs/application-guides/quality-assurance/reportportal.md similarity index 100% rename from docs/application-guides/reportportal.md rename to docs/application-guides/quality-assurance/reportportal.md diff --git a/docs/application-guides/artifactory.md b/docs/application-guides/registries/artifactory.md similarity index 100% rename from docs/application-guides/artifactory.md rename to docs/application-guides/registries/artifactory.md diff --git a/docs/application-guides/harbor.md b/docs/application-guides/registries/harbor.md similarity index 100% rename from docs/application-guides/harbor.md rename to docs/application-guides/registries/harbor.md diff --git a/docs/application-guides/nexus.md b/docs/application-guides/registries/nexus.md similarity index 100% rename from docs/application-guides/nexus.md rename to docs/application-guides/registries/nexus.md diff --git a/docs/application-guides/cert-manager.md b/docs/application-guides/security/cert-manager.md similarity index 100% rename from docs/application-guides/cert-manager.md rename to docs/application-guides/security/cert-manager.md diff --git a/docs/application-guides/security/neuvector.md b/docs/application-guides/security/neuvector.md new file mode 100644 index 0000000..2d42274 --- /dev/null +++ b/docs/application-guides/security/neuvector.md @@ -0,0 +1,80 @@ +# NeuVector + +Let's see how to run [NeuVector](https://github.com/neuvector/neuvector) in a Kubernetes cluster. + +> [!NOTE] +> Kubernetes objects will be installed in `neuvector` namespace + +## Repository + +We'll use the [official Helm chart](https://neuvector.github.io/neuvector-helm/): + +```bash +helm repo add neuvector https://neuvector.github.io/neuvector-helm/ +helm repo update +``` + +## Configuration + +Create the `values.yaml` file to override [default parameters](https://github.com/neuvector/neuvector-helm/blob/master/charts/core/values.yaml). + +::: code-group + +```yaml [Runtime] +# for RKE2 +k3s: + enabled: true +# for AKS +containerd: + enabled: true +``` + +```yaml [Replicas] +controller: + replicas: 2 +cve: + scanner: + replicas: 2 +``` + +```yaml [Ingress] +manager: + ingress: + enabled: true + host: neuvector.somedomain + ingressClassName: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" + tls: true + secretName: neuvector-tls +``` + +::: + +## Deployment + +Install the application: + +```bash +helm upgrade --install neuvector neuvector/core -f values.yaml --namespace neuvector --create-namespace +``` + +Watch objects being created: + +```bash +kubectl get all -n neuvector +``` + +## First steps + +Open the website in a browser and by default use admin/admin for the initial login (if a connection timeout message is displayed, wait a little and retry). + +## Clean-up + +Uninstall the application and delete the namespace: + +```bash +helm uninstall neuvector -n neuvector +kubectl delete ns neuvector +``` diff --git a/docs/application-guides/security/r2devops.md b/docs/application-guides/security/r2devops.md new file mode 100644 index 0000000..314f4c5 --- /dev/null +++ b/docs/application-guides/security/r2devops.md @@ -0,0 +1,31 @@ +# R2Devops + +Let's see how to run [R2Devops](https://r2devops.io/) in a Kubernetes cluster. + +We'll use the [official Helm chart](https://charts.r2devops.io) ([code](https://github.com/r2devops/self-managed), [docs](https://docs.r2devops.io/docs/self-managed/kubernetes/)). + +## Configuration + +Create the `values.yaml` file to override [default parameters](https://github.com/r2devops/self-managed/blob/main/charts/r2devops/values.yaml). + +## Deployment + +Add Helm chart repository: + +```bash +helm repo add r2devops https://charts.r2devops.io +helm repo update +``` + +Install the application: + +```bash +helm upgrade --install r2devops r2devops/r2devops -f values.yaml --namespace r2devops --create-namespace +``` + +Uninstall and clean the cluster: + +```bash +helm uninstall r2devops -n r2devops +kubectl delete ns r2devops +``` diff --git a/docs/application-guides/rancher-cis-benchmark.md b/docs/application-guides/security/rancher-cis-benchmark.md similarity index 100% rename from docs/application-guides/rancher-cis-benchmark.md rename to docs/application-guides/security/rancher-cis-benchmark.md diff --git a/docs/application-guides/sealed-secrets.md b/docs/application-guides/security/sealed-secrets.md similarity index 100% rename from docs/application-guides/sealed-secrets.md rename to docs/application-guides/security/sealed-secrets.md diff --git a/docs/application-guides/istio.md b/docs/application-guides/services-meshes/istio.md similarity index 100% rename from docs/application-guides/istio.md rename to docs/application-guides/services-meshes/istio.md diff --git a/docs/application-guides/linkerd.md b/docs/application-guides/services-meshes/linkerd.md similarity index 100% rename from docs/application-guides/linkerd.md rename to docs/application-guides/services-meshes/linkerd.md diff --git a/docs/application-guides/kasten.md b/docs/application-guides/storage/kasten.md similarity index 100% rename from docs/application-guides/kasten.md rename to docs/application-guides/storage/kasten.md diff --git a/docs/application-guides/longhorn.md b/docs/application-guides/storage/longhorn.md similarity index 100% rename from docs/application-guides/longhorn.md rename to docs/application-guides/storage/longhorn.md diff --git a/docs/application-guides/storage/minio.md b/docs/application-guides/storage/minio.md new file mode 100644 index 0000000..6b9784b --- /dev/null +++ b/docs/application-guides/storage/minio.md @@ -0,0 +1,82 @@ +# MinIO + +Let's see how to run [MinIO](https://min.io/) ([code](https://github.com/minio/minio)) in a Kubernetes cluster. + +## Repository + +We'll use the [the official Helm chart](https://github.com/minio/minio/tree/master/helm/minio): + +```bash +helm repo add minio https://charts.min.io/ +helm repo update +``` + +## Configuration + +Create the `values.yaml` file to override [default parameters](https://github.com/minio/minio/blob/master/helm/minio/values.yaml). + +::: code-group + +```yaml [Minimal] +resources: + requests: + memory: 512Mi +replicas: 1 +mode: standalone +persistence: + enabled: false +# access key length should be at least 3 character long +rootUser: admin +# secret key length should be at least 8 character long +rootPassword: pasWd8char +``` + +```yaml [Stateful] +persistence: + enabled: true + size: 10Gi +``` + +```yaml [Ingress] +ingress: + enabled: true + ingressClassName: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + hosts: + - minio.somedomain + tls: + - secretName: minio-tls + hosts: + - minio.somedomain +consoleIngress: + enabled: true + ingressClassName: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + hosts: + - minio-console.somedomain + tls: + - secretName: minio-console-tls + hosts: + - minio-console.somedomain +``` + +::: + +## Deployment + +Install the application: + +```bash +helm upgrade --install minio minio/minio -f values.yaml --namespace minio --create-namespace +``` + +## Clean-up + +Uninstall the application and delete the namespace: + +```bash +helm uninstall minio -n minio +kubectl delete ns minio +``` diff --git a/docs/application-guides/s3gw.md b/docs/application-guides/storage/s3gw.md similarity index 100% rename from docs/application-guides/s3gw.md rename to docs/application-guides/storage/s3gw.md diff --git a/charts/rancher-cluster-templates/docs/azure.md b/docs/cloud-providers/azure.md similarity index 98% rename from charts/rancher-cluster-templates/docs/azure.md rename to docs/cloud-providers/azure.md index a0086cd..f22e3de 100644 --- a/charts/rancher-cluster-templates/docs/azure.md +++ b/docs/cloud-providers/azure.md @@ -1,4 +1,4 @@ -# Azure Cloud +# Microsoft Azure ## Design diff --git a/docs/cloud-providers/index.md b/docs/cloud-providers/index.md new file mode 100644 index 0000000..8764a55 --- /dev/null +++ b/docs/cloud-providers/index.md @@ -0,0 +1,11 @@ +--- +order: 2 +--- + +# Cloud Providers + +This section will provide information that could help using charts described in Kube Workload Toolkit. + +## US providers + +* [Microsoft Azure](azure.md) diff --git a/charts/capi-templates/CONTRIBUTING.md b/docs/custom-charts/capi-templates.md similarity index 51% rename from charts/capi-templates/CONTRIBUTING.md rename to docs/custom-charts/capi-templates.md index 059fabf..d6cbfd7 100644 --- a/charts/capi-templates/CONTRIBUTING.md +++ b/docs/custom-charts/capi-templates.md @@ -1,16 +1,22 @@ -# Contribute +# Cluster API Templates -## Quality check +Let's see how to simplify the use of [Cluster API (CAPI)] to manage your Kubernetes clusters. -Check code style +> [!NOTE] +> Cluster API is a Kubernetes sub-project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters. + +## Repository + +Make sure to have the **devpro** Helm repository: ```bash -helm lint +helm repo add devpro https://devpro.github.io/helm-charts +helm repo update ``` -## Deployment from the sources +## Usage -### GKE (Google Cloud Kubernetes Engine) +### Create GKE (Google Cloud Kubernetes Engine) cluster Initialize CAPI: @@ -20,7 +26,7 @@ export EXP_CAPG_GKE=true clusterctl init --infrastructure gcp ``` -Configure the cluster: +Create the configuration file: ```bash cat < values_gke.yaml @@ -36,26 +42,10 @@ googlecloud: EOF ``` -Generate the manifest file for review: - -```bash -helm template capi-gke-demo . -f values.yaml -f values_gke.yaml > temp.yaml -``` - -Can be compared with the one generated with clusterctl: - -```bash -export GCP_PROJECT=$GCLOUD_PROJECT_ID -export GCP_REGION=$GCLOUD_REGION -export GCP_NETWORK_NAME=$GCLOUD_VPC -export WORKER_MACHINE_COUNT=1 -clusterctl generate cluster gke-capi-bthomas-demo --flavor gke -i gcp > capi-gke-quickstart.yaml -``` - -Apply changes with Helm: +Create the cluster: ```bash -helm upgrade --install capi-gke-demo . -f values.yaml -f values_gke.yaml --namespace demo --create-namespace +helm upgrade --install capi-gke-demo devpro/capi-templates -f values_gke.yaml --namespace demo --create-namespace ``` Look at the cluster provisioning: diff --git a/docs/custom-charts/grafana-stack.md b/docs/custom-charts/grafana-stack.md new file mode 100644 index 0000000..555676e --- /dev/null +++ b/docs/custom-charts/grafana-stack.md @@ -0,0 +1,60 @@ +# Grafana stack + +Let's see how to run [Grafana stack](https://grafana.com/about/grafana-stack/) ([GitHub](https://github.com/grafana)) in a Kubernetes cluster, from a custom chart based on the [community repository](https://github.com/grafana/helm-charts). + +## Repository + +Make sure to have the **devpro** Helm repository: + +```bash +helm repo add devpro https://devpro.github.io/helm-charts +helm repo update +``` + +## Configuration + +Create the `values.yaml` file to override [default parameters](https://github.com/devpro/helm-charts/blob/main/charts/grafana-stack/values.yaml). + +::: code-group + +```yaml [Ingress] +# https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml +grafana: + ingress: + enabled: true + ingressClassName: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" + hosts: + - grafana.somedomain + tls: + - secretName: grafana-tls + hosts: + - grafana.somedomain +``` + +::: + +## Deployment + +Install the application: + +```bash +helm upgrade --install grafana-stack devpro/grafana-stack -f values.yaml --namespace grafana --create-namespace +``` + +Watch objects being created: + +```bash +kubectl get pod -n grafana +``` + +## Clean-up + +Uninstall the application and delete the namespace: + +```bash +helm uninstall grafana-stack -n grafana +kubectl delete ns grafana +``` diff --git a/docs/custom-charts/index.md b/docs/custom-charts/index.md index 1df776a..b39bd68 100644 --- a/docs/custom-charts/index.md +++ b/docs/custom-charts/index.md @@ -1,4 +1,8 @@ -# Custom charts +--- +order: 2 +--- + +# Custom Charts ## Databases @@ -13,12 +17,13 @@ ## Infrastructure automation -* Rancher Cluster Templates +* [Cluster API (CAPI) Templates](capi-templates) +* [Rancher Cluster Templates](rancher-cluster-templates) * [Terraform Backend MongoDB](terraform-backend-mongodb) ## Observability -* Grafana Stack +* [Grafana Stack](grafana-stack) ## Persistant storage diff --git a/docs/custom-charts/rancher-cluster-templates.md b/docs/custom-charts/rancher-cluster-templates.md new file mode 100644 index 0000000..4d74d36 --- /dev/null +++ b/docs/custom-charts/rancher-cluster-templates.md @@ -0,0 +1,143 @@ +# Rancher Cluster Templates + +Let's see how to automate [Rancher Cluster Templates](https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/manage-clusters/manage-cluster-templates) to ease cluster management with Rancher. + +## Infrastructure providers + +> [!IMPORTANT] +> Node driver must be enabled in Rancher prior to Helm chart installation. + +Provider | Template | Node Driver +---------------------------------|-----------------------|---------------- +**Amazon Web Services (AWS)** | `amazonec2config` | `Amazon EC2` +**Azure** | `azureconfig` | `Azure` +**CloudScale** | `cloudscaleconfig` | `Cloudscale` +**Digitial Ocean** | `digitaloceanconfig` | `DigitalOcean` +**Exoscale** | `digitaloceanconfig` | `Exoscale` +**Equinix Metal (prev. Packet)** | `packetconfig` | `Equinix Metal` +**Harvester** | `harvesterconfig` | `Harvester` +**Linode** | `linodeconfig` | `Linode` +**Nutanix** | `nutanixconfig` | `Nutanix` +**OpenStack** | `openstackconfig` | `OpenStack` +**Outscale** | `outscaleconfig` | `Outscale` +**VMware vSphere** | `vmwarevsphereconfig` | `vSphere` + +## Repository + +Make sure to have the **devpro** Helm repository: + +```bash +helm repo add devpro https://devpro.github.io/helm-charts +helm repo update +``` + +## Configuration + +Create the `values.yaml` file to override [default parameters](https://github.com/devpro/helm-charts/blob/main/charts/rancher-cluster-templates/values.yaml). + +::: code-group + +```bash [Azure] +cp examples/values_azure.yaml values_mine.yaml +resourcekey=$(openssl rand -hex 6) +sed -i "s/CLUSTER_NAME/az-rke2-$resourcekey/g" values_mine.yaml +sed -i "s/AZURE_PREFIX/$USER-$resourcekey/g" values_mine.yaml +sed -i "s/CLOUD_CREDENTIAL_SECRET//g" values_mine.yaml +``` + +```bash [Outscale] +cp examples/values_outscale.yaml values_mine.yaml +resourcekey=$(openssl rand -hex 6) +sed -i "s/CLUSTER_NAME/az-rke2-$resourcekey/g" values_mine.yaml +sed -i "s/CLOUD_CREDENTIAL_SECRET//g" values_mine.yaml +``` + +::: + +## Deployment + +> [!IMPORTANT] +> Make sure you are connected to the Kubernetes cluster hosting Rancher (called `local` by default in Rancher). + +Install the application: + +```bash +helm upgrade --install mycluster devpro/rancher-cluster-templates -f values.yaml --namespace fleet-default +``` + +## Troubleshooting + +Start by looking at the machine-provision job (in `fleet-default` namespace). + +If there are remaining Kubernetes resources even after helm uninstall, force delete the machine. + +## Automation (GitOps) + +### Fleet example for creating RKE2 cluster in Azure + +::: code-group + +```yaml [fleet.yaml] +helm: + repo: https://devpro.github.io/helm-charts + chart: rancher-cluster-templates + version: 0.1.1 + releaseName: rke2-azure-demo + values: + cluster: + name: "azurevm-rke2-01" + cloudprovider: azure + cloudCredentialSecretName: cattle-global-data:cc-xxxx + kubernetesVersion: "v1.24.14+rke2r1" + nodepools: + - etcd: true + controlplane: true + worker: true + quantity: 1 + name: nodepool-1 + region: westeurope + machineImage: "Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:20.04.202307240" + instanceType: Standard_DS2_v2 + storageType: Standard_LRS + sshUser: azureuser + availabilitySet: "avs-someprefix-rke2-01" + azureEnvironment: AzurePublicCloud + managedDisks: true + networkSecurityGroup: "nsg-someprefix-rke2-01" + resourceGroup: "rg-someprefix-rke2-01" + subnet: rke2 + subnetPrefix: "192.168.0.0/16" + virtualNetwork: "vnet-someprefix-rke2-01" +``` + +```yaml [GitRepo] +apiVersion: fleet.cattle.io/v1alpha1 +kind: GitRepo +metadata: + name: cluster-templates + namespace: fleet-local +spec: + branch: release/demo + clientSecretName: auth-xxxx + insecureSkipTLSVerify: false + paths: + - fleet/rke2-azure-demo + repo: https://github.com/my-account/my-kubernetes-definitions.git + targets: + - clusterSelector: + matchExpressions: + - key: provider.cattle.io + operator: NotIn + values: + - harvester +``` + +::: + +## Clean-up + +Uninstall the application and delete the namespace: + +```bash +helm uninstall mycluster -n fleet-default +``` diff --git a/docs/custom-charts/terraform-backend-mongodb.md b/docs/custom-charts/terraform-backend-mongodb.md index a44470c..8605032 100644 --- a/docs/custom-charts/terraform-backend-mongodb.md +++ b/docs/custom-charts/terraform-backend-mongodb.md @@ -1,32 +1,19 @@ # Terraform Backend MongoDB -This Helm chart will deploy [Terraform Backend MongoDB](https://github.com/devpro/terraform-backend-mongodb) on a Kubernetes cluster. +Let's see how to deploy [Terraform Backend MongoDB](https://github.com/devpro/terraform-backend-mongodb) on a Kubernetes cluster. -## Usage +## Repository -Add Helm chart repository: +Make sure to have the **devpro** Helm repository: ```bash helm repo add devpro https://devpro.github.io/helm-charts helm repo update ``` -Install the chart: - -```bash -helm upgrade --install tfbackend devpro/terraform-backend-mongodb -f values.yaml -namespace tfbackend --create-namespace -``` - -Uninstall the chart: - -```bash -helm delete tfbackend -kubectl delete ns tfbackend -``` - ## Configuration -### `values.yaml` file +Create the `values.yaml` file to override [default parameters](https://github.com/devpro/helm-charts/blob/main/charts/terraform-backend-mongodb/values.yaml). ::: code-group @@ -54,8 +41,37 @@ mongodb: rootPassword: admin webapi: db: - connectionString: mongodb://root:admin@tfbackend-mongodb:27017/terraform_backend_beta?authSource=admin - databaseName: terraform_backend_beta + connectionString: mongodb://root:admin@tfbackend-mongodb:27017/tfbackend_beta?authSource=admin + databaseName: tfbackend_beta ``` ::: + +## Deployment + +Install the application: + +```bash +helm upgrade --install tfbackend devpro/terraform-backend-mongodb -f values.yaml -namespace tfbackend --create-namespace +``` + +## Optional checks + +If enabled, open the Swagger page from the browser (`/swagger`). + +Forward MongoDB port for local access: + +```bash +kubectl port-forward service/tfbackend-mongodb 27017:27017 -n tfbackend +``` + +Use MongoDB Compass to look at the database. + +## Clean-up + +Uninstall the application and delete the namespace: + +```bash +helm delete tfbackend -n tfbackend +kubectl delete ns tfbackend +``` diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md new file mode 100644 index 0000000..86c0c0c --- /dev/null +++ b/docs/getting-started/index.md @@ -0,0 +1,41 @@ +--- +order: 1 +--- + +# Getting Started + +## Setup + +### kubectl + +[kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl), Kubernetes command-line tool, must be installed. + +::: code-group + +```bash [Linux (binary)] +# ref. https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-kubectl-binary-with-curl-on-linux +curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" +sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl +``` + +::: + +### Helm + +[Helm](https://helm.sh/), Kubernetes package manager, must be installed. + +::: code-group + +```bash [Linux (script)] +curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 +chmod 700 get_helm.sh +./get_helm.sh +``` + +::: + +## Content + +### Helm Charts + +Helm Charts help define, install, and upgrade even the most complex Kubernetes application. diff --git a/docs/setup/maintenance.md b/docs/getting-started/maintenance.md similarity index 100% rename from docs/setup/maintenance.md rename to docs/getting-started/maintenance.md diff --git a/docs/getting-started/solution-design.md b/docs/getting-started/solution-design.md new file mode 100644 index 0000000..1986624 --- /dev/null +++ b/docs/getting-started/solution-design.md @@ -0,0 +1,16 @@ +# Solution design + +## Cluster setup logic + +* Create a Kubernetes Cluster and get CLI access (download `kubectl` configuration) +* Install & configure kube add-ons + * Install certificate issuer ([cert-manager](../application-guides/security/cert-manager)) + * Create storage class + * Create Ingress Controller ([NGINX](../application-guides/networking/nginx) or HAProxy) + * Create load balancer + * Install secret management ([Sealed Secrets](../application-guides/security/sealed-secrets)) + * Deploy GitOps tool ([ArgoCD](../application-guides/pipeline-orchestration/argo-cd) or Fleet) +* Setup Security ([NeuVector](../application-guides/security/neuvector)) +* Install Observability ([OpenTelemetry](../application-guides/observability/opentelemetry-collector), [Granafa](../custom-charts/grafana-stack)) +* Setup Continuous Deployment + * Configure GitOps repositories and deploy backing services and applications diff --git a/docs/index.md b/docs/index.md index 4db8a92..113c6f8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,7 +9,7 @@ hero: actions: - theme: brand text: Getting started - link: /setup + link: /getting-started # - theme: alt # text: Application guides # link: /application-guides diff --git a/docs/setup/index.md b/docs/setup/index.md deleted file mode 100644 index feae8cb..0000000 --- a/docs/setup/index.md +++ /dev/null @@ -1 +0,0 @@ -# Setup diff --git a/docs/setup/solution-design.md b/docs/setup/solution-design.md deleted file mode 100644 index 02fb8eb..0000000 --- a/docs/setup/solution-design.md +++ /dev/null @@ -1 +0,0 @@ -# Solution design diff --git a/scripts/add_helm_repo.sh b/scripts/add_helm_repo.sh index b284325..867d427 100755 --- a/scripts/add_helm_repo.sh +++ b/scripts/add_helm_repo.sh @@ -1,36 +1,12 @@ #!/bin/bash -helm repo add argo https://argoproj.github.io/argo-helm helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add blob-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts -helm repo add cloudbees https://public-charts.artifacts.cloudbees.com/repository/public -helm repo add elastic https://helm.elastic.co -helm repo add epinio https://epinio.github.io/helm-charts helm repo add gitlab https://charts.gitlab.io/ helm repo add grafana https://grafana.github.io/helm-charts -helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx -helm repo add harbor https://helm.goharbor.io helm repo add hobbyfarm https://hobbyfarm.github.io/hobbyfarm -helm repo add jenkinsci https://charts.jenkins.io -helm repo add jetstack https://charts.jetstack.io -helm repo add kasten https://charts.kasten.io/ -helm repo add longhorn https://charts.longhorn.io helm repo add minio https://charts.min.io/ helm repo add mongodb https://mongodb.github.io/helm-charts -helm repo add nats https://nats-io.github.io/k8s/helm/charts -helm repo add neuvector https://neuvector.github.io/neuvector-helm -helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo add ory https://k8s.ory.sh/helm/charts -helm repo add percona https://percona.github.io/percona-helm-charts/ -helm repo add podinfo https://stefanprodan.github.io/podinfo -helm repo add prometheus-community https://prometheus-community.github.io/helm-charts -helm repo add promyze https://promyze.github.io/helm-charts -helm repo add r2devops https://charts.r2devops.io -helm repo add rancher-charts https://charts.rancher.io -helm repo add rancher-latest https://releases.rancher.com/server-charts/latest -helm repo add reportportal https://reportportal.github.io/kubernetes -helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets -helm repo add sonarqube https://sonarsource.github.io/helm-chart-sonarqube -helm repo add traefik https://traefik.github.io/charts helm repo update