From d7f9bd07ae72062596c759fbb3d8cfe7e043d75c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 26 May 2020 16:46:31 +0200 Subject: [PATCH] added documentation fo the helm chart --- docs/en/installation/helm.md | 50 +++++++++++++++++ docs/en/installation/index.md | 2 +- scm-packaging/helm/src/main/chart/values.yaml | 25 +++++++-- scm-packaging/helm/src/main/docs/docs.sh | 54 +++++++++++++++++++ .../helm/src/main/docs/helm.md.gotmpl | 28 ++++++++++ 5 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 docs/en/installation/helm.md create mode 100755 scm-packaging/helm/src/main/docs/docs.sh create mode 100644 scm-packaging/helm/src/main/docs/helm.md.gotmpl diff --git a/docs/en/installation/helm.md b/docs/en/installation/helm.md new file mode 100644 index 0000000000..07142a26d9 --- /dev/null +++ b/docs/en/installation/helm.md @@ -0,0 +1,50 @@ +--- +title: Helm/Kubernetes +subtitle: Install scm-manager on kubernetes with helm +displayToc: true +--- + +To install SCM-Manager on Kubernetes we offer a [Helm](https://helm.sh) chart. +The chart is only tested with v3 of helm. + +## Quickstart + +```bash +helm repo add scm-manager https://packages.scm-manager.org/repository/helm-v2-releases/ +helm repo update +helm install scm-manager scm-manager/scm-manager +``` + +## Configuration + +If you want to customize the installation you can use a values files e.g.: + +```bash +helm install scm-manager scm-manager/scm-manager --values=custom.yml +``` + +The following table list the configurable parameters of the SCM-Manager chart and their default values. + +## Chart Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity settings | +| fullnameOverride | string | `""` | Override the full resource names | +| image.pullPolicy | string | `"IfNotPresent"` | SCM-Manager image pull policy | +| image.repository | string | `"scmmanager/scm-manager"` | Name of SCM-Manager image | +| image.tag | string | `"version-off Chart"` | Tag of SCM-Manager image | +| ingress.annotations | object | `{}` | Ingress annotations | +| ingress.enabled | bool | `false` | Enables ingress | +| ingress.hosts | list | `["scm-manager.local"]` | Ingress hosts | +| ingress.path | string | `"/"` | Ingress path | +| ingress.tls | list | `[]` | Ingress TLS configuration | +| nameOverride | string | `""` | Override the resource name prefix | +| nodeSelector | object | `{}` | Node labels for pod assignment | +| persistence.accessMode | string | `"ReadWriteOnce"` | The PVC access mode | +| persistence.enabled | bool | `true` | Enable the use of a PVC for SCM-Manager home | +| persistence.size | string | `"40Gi"` | The size of the PVC | +| resources | object | `{}` | Resources allocation (Requests and Limits) | +| service.port | int | `80` | k8s service port | +| service.type | string | `"LoadBalancer"` | k8s service type | +| tolerations | list | `[]` | Toleration labels for pod assignment | diff --git a/docs/en/installation/index.md b/docs/en/installation/index.md index fe91fe80d8..1982cec6b3 100644 --- a/docs/en/installation/index.md +++ b/docs/en/installation/index.md @@ -8,6 +8,6 @@ partiallyActive: true * [Red Hat/CentOS/Fedora](redhat/) * [Linux General](linux/) * [Docker](docker/) -* Kubernetes +* [Helm/Kubernetes](helm/) * Mac OS X * Windows diff --git a/scm-packaging/helm/src/main/chart/values.yaml b/scm-packaging/helm/src/main/chart/values.yaml index 89d081e028..6aedd2ccc7 100644 --- a/scm-packaging/helm/src/main/chart/values.yaml +++ b/scm-packaging/helm/src/main/chart/values.yaml @@ -22,32 +22,42 @@ # SOFTWARE. # -# Default values for scm-manager. +# Default values for SCM-Manager. # This is a YAML-formatted file. # Declare variables to be passed into your templates. -# replicaCount: 1 - image: + # image.repository -- Name of SCM-Manager image repository: ${docker.repository} + # image.tag -- Tag of SCM-Manager image tag: ${docker.tag} - pullPolicy: Always + # image.pullPolicy -- SCM-Manager image pull policy + pullPolicy: IfNotPresent +# nameOverride -- Override the resource name prefix nameOverride: "" +# fullnameOverride -- Override the full resource names fullnameOverride: "" service: + # service.type -- k8s service type type: LoadBalancer + # service.port -- k8s service port port: 80 ingress: + # ingress.enabled -- Enables ingress enabled: false + # ingress.annotations -- Ingress annotations annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" + # ingress.path -- Ingress path path: / + # ingress.hosts -- Ingress hosts hosts: - scm-manager.local + # ingress.tls -- Ingress TLS configuration tls: [] # - secretName: scm-manager-tls # hosts: @@ -57,6 +67,7 @@ ingress: ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ ## persistence: + # persistence.enabled -- Enable the use of a PVC for SCM-Manager home enabled: true ## ghost data Persistent Volume Storage Class ## If defined, storageClassName: @@ -66,9 +77,12 @@ persistence: ## GKE, AWS & OpenStack) ## # storageClass: "-" + # persistence.accessMode -- The PVC access mode accessMode: ReadWriteOnce + # persistence.size -- The size of the PVC size: 40Gi +# resources -- Resources allocation (Requests and Limits) resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little @@ -81,8 +95,11 @@ resources: {} # cpu: 50m # memory: 256Mi +# nodeSelector -- Node labels for pod assignment nodeSelector: {} +# tolerations -- Toleration labels for pod assignment tolerations: [] +# affinity -- Affinity settings affinity: {} diff --git a/scm-packaging/helm/src/main/docs/docs.sh b/scm-packaging/helm/src/main/docs/docs.sh new file mode 100755 index 0000000000..12480dfc08 --- /dev/null +++ b/scm-packaging/helm/src/main/docs/docs.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# +# MIT License +# +# Copyright (c) 2020-present Cloudogu GmbH and Contributors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +set -euo pipefail +IFS=$'\n\t' + +if helm-docs --version > /dev/null 2>&1; then + SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + MODULE_DIR="$( cd "${SCRIPT_DIR}/../../../" >/dev/null 2>&1 && pwd )" + + CHARTDIR="${MODULE_DIR}/target/chart" + if [ ! -d "${CHARTDIR}" ]; then + echo "chart directory ${CHARTDIR} does not exists" + echo "please run maven package before" + echo "https://github.com/norwoodj/helm-docs" + exit 1 + fi + + cd "${CHARTDIR}" + PAGE="docs/en/installation/helm.md" + echo helm-docs --template-file="${MODULE_DIR}/src/main/docs/helm.md.gotmpl" --output-file="${MODULE_DIR}/../../${PAGE}" + helm-docs --template-file="../../src/main/docs/helm.md.gotmpl" --output-file="../../../../${PAGE}" + echo "The helm documentation was successfully generated" + echo "Please check the results at ${PAGE}" + echo "And don't forget to commit ;)" + +else + echo "helm-docs not found" + echo "please install helm-docs, before running this script" + echo "https://github.com/norwoodj/helm-docs" + exit 1 +fi diff --git a/scm-packaging/helm/src/main/docs/helm.md.gotmpl b/scm-packaging/helm/src/main/docs/helm.md.gotmpl new file mode 100644 index 0000000000..ebc50364ed --- /dev/null +++ b/scm-packaging/helm/src/main/docs/helm.md.gotmpl @@ -0,0 +1,28 @@ +--- +title: Helm/Kubernetes +subtitle: Install scm-manager on kubernetes with helm +displayToc: true +--- + +To install SCM-Manager on Kubernetes we offer a [Helm](https://helm.sh) chart. +The chart is only tested with v3 of helm. + +## Quickstart + +```bash +helm repo add scm-manager https://packages.scm-manager.org/repository/helm-v2-releases/ +helm repo update +helm install scm-manager scm-manager/scm-manager +``` + +## Configuration + +If you want to customize the installation you can use a values files e.g.: + +```bash +helm install scm-manager scm-manager/scm-manager --values=custom.yml +``` + +The following table list the configurable parameters of the SCM-Manager chart and their default values. + +{{ template "chart.valuesSection" . }}