diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index cf6dd43f..55889407 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,6 +11,6 @@ Thank you for contributing to bedag/helm-charts. **Checklist**: -- [ ] Added documentation in `README.md` +- [ ] Updated documnentation `README.md.gotmpl` and used `helm-docs` - [ ] Chart Version bumped - [ ] All commits are signed-off diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..2286c415 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,41 @@ +name: Helm Documentation +on: + - push +jobs: + documentation: + runs-on: ubuntu-latest + container: + image: alpine + steps: + - name: Install Dependencies + run: | + apk add jq git curl + + - name: Checkout + uses: actions/checkout@v2 + + - name: Fetch history + run: git fetch --prune --unshallow + + - name: Install Helm Docs + run: | + curl -s -L -o /usr/local/bin/helm-docs.tar.gz "https://github.com/norwoodj/helm-docs/releases/download/$(curl --silent "https://api.github.com/repos/norwoodj/helm-docs/releases/latest" | jq -r .tag_name)/helm-docs_$(curl --silent "https://api.github.com/repos/norwoodj/helm-docs/releases/latest" | jq -r .tag_name | cut -d "v" -f2-)_Linux_x86_64.tar.gz" + cd /usr/local/bin/ && tar xfv helm-docs.tar.gz + chmod +x ./helm-docs + + - name: Update Documentation + run: | + git status + CHARTS_ROOT="./charts" + if [ -d "${CHARTS_ROOT}" ]; then + ## Generate Documentation + helm-docs + ## Push Changes + git config user.name "$GITHUB_ACTOR" + git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + git add -A + git commit -sam "Update Documentation" || true + git push || true + else + echo -e "\n\e[33m-- Root Direcoty not found: $CHART_ROOT\e[0m" && exit 0; + fi \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1d0ebf25..f413dfcc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,46 +4,8 @@ on: branches: - master jobs: - documentation: - runs-on: ubuntu-latest - container: - image: alpine - steps: - - name: Install Dependencies - run: | - apk add jq git curl - - name: Checkout - uses: actions/checkout@v2 - - - name: Fetch history - run: git fetch --prune --unshallow - - - name: Install Helm Docs - run: | - curl -s -L -o /usr/local/bin/helm-docs.tar.gz "https://github.com/norwoodj/helm-docs/releases/download/$(curl --silent "https://api.github.com/repos/norwoodj/helm-docs/releases/latest" | jq -r .tag_name)/helm-docs_$(curl --silent "https://api.github.com/repos/norwoodj/helm-docs/releases/latest" | jq -r .tag_name | cut -d "v" -f2-)_Linux_x86_64.tar.gz" - cd /usr/local/bin/ && tar xfv helm-docs.tar.gz - chmod +x ./helm-docs - - - name: Update Documentation - run: | - git status - CHARTS_ROOT="./charts" - if [ -d "${CHARTS_ROOT}" ]; then - ## Generate Documentation - helm-docs - ## Push Changes - git config user.name "$GITHUB_ACTOR" - git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - git add -A - git commit -sam "Update Documentation" || true - git push || true - else - echo -e "\n\e[33m-- Root Direcoty not found: $CHART_ROOT\e[0m" && exit 0; - fi release: runs-on: ubuntu-latest - needs: - - documentation steps: - name: Checkout uses: actions/checkout@v2 diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index f51e4287..290e8cc9 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -3,7 +3,7 @@ # name: Helm Chart Linting and Testing on: pull_request -jobs: +jobs: chart-test: runs-on: ubuntu-latest steps: diff --git a/charts/e2g/Chart.yaml b/charts/e2g/Chart.yaml index 3d97f254..d652ad8b 100644 --- a/charts/e2g/Chart.yaml +++ b/charts/e2g/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: e2g description: "e2guardian Chart" type: application -version: 1.0.0 +version: 1.0.1 appVersion: 5.3.4 home: "https://github.com/e2guardian/e2guardian/" keywords: @@ -26,7 +26,7 @@ sources: annotations: artifacthub.io/containsSecurityUpdates: "false" artifacthub.io/changes: | - - [Added]: init + - "[Added]: README Documentation" artifacthub.io/prerelease: "false" artifacthub.io/images: | - name: e2g-5 diff --git a/charts/e2g/README.md b/charts/e2g/README.md new file mode 100644 index 00000000..5e87bf32 --- /dev/null +++ b/charts/e2g/README.md @@ -0,0 +1,160 @@ +# E2guardian + +![Version: 1.0.1](https://img.shields.io/badge/Version-1.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) + +e2guardian Chart + +The chart is under active development and may contain bugs/unfinished documentation. Any testing/contributions are welcome! :) + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| NOC | noc@bedag.ch | | +| SRE | sre@bedag.ch | | + +## Source Code + +* +* +* + +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| https://bedag.github.io/helm-charts/ | manifests | >=0.4.0 | + +# How to use this Chart? + +You can choose between `deployment`, `statefulset`, `daemonset`. Deployment is per default enabled. You can enable disable those like this: +``` +deployment: + enabled: true +statefulset: + enabled: false +daemonset: + enabled: false +``` + +All important E2guardian variables are under `e2g`. Go to [Values](#Values) for more information. + +See the [Examples](./examples) to get a better idea, of how tests could look like. + +# Major Changes + +Major Changes to functions are documented with the version affected. **Before upgrading the dependency version, check this section out!** + +| **Change** | **Chart Version** | **Description** | **Commits/PRs** | +| :--------- | :---------------- | :-------------- | :-------------- | +||||| + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| commonLabels | object | `{}` | Common Labels are added to each kubernetes resource manifest. | +| daemonset.apiVersion | string | `""` | Configure the api version used for the DaemonSet resource | +| daemonset.enabled | bool | `false` | Enable daemonset | +| daemonset.labels | object | `{}` | Merges given labels with common labels | +| daemonset.minReadySeconds | string | `""` | DaemonSet [Min Ready in Seconds](https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/#performing-a-rolling-update). **DaemonSet only** | +| daemonset.rollingUpdatemaxUnavailable | string | `""` | | +| daemonset.selectorLabels | object | `{}` | Define SelectorLabels for the Pod Template | +| daemonset.updateStrategy | string | `"RollingUpdate"` | DaemonSet [Update Strategy](https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/#performing-a-rolling-update). **DaemonSet only** | +| deployment.apiVersion | string | `""` | Configure the api version used for the Deployment resource | +| deployment.deploymentExtras | object | `{}` | Extra Fields for Deployment Manifest | +| deployment.enabled | bool | `true` | Enable deployment | +| deployment.labels | object | `{}` | Merges given labels with common labels | +| deployment.replicaCount | int | 1 | Amount of Replicas deployed | +| deployment.selectorLabels | object | `{}` | Define SelectorLabels for the Pod Template | +| deployment.strategy | object | `{}` | Deployment [Update Strategy](https://kubernetes.io/docs/concepts/services-networking/ingress/#resource-backend). **Deployments only** | +| e2g.config | string | `nil` | e2g config as string | +| e2g.lists | list | `[]` | Array of e2g stories as string | +| e2g.story | list | `[]` | Array of e2g stories as string | +| fullnameOverride | string | `""` | Overwrite `lib.utils.common.fullname` output | +| global.defaultTag | string | `""` | Global Docker Image Tag declaration. Will be used as default tag, if no tag is given by child | +| global.imagePullPolicy | string | `""` | Global Docker Image Pull Policy declaration. Will overwrite all child .pullPolicy fields. | +| global.imagePullSecrets | list | `[]` | Global Docker Image Pull Secrets declaration. Added to local Docker Image Pull Secrets. | +| global.imageRegistry | string | `""` | Global Docker Image Registry declaration. Will overwrite all child .registry fields. | +| global.storageClass | string | `""` | Global StorageClass declaration. Can be used to overwrite StorageClass fields. | +| kubeCapabilities | string | `$.Capabilities.KubeVersion.GitVersion` | Overwrite the Kube GitVersion | +| nameOverride | string | `""` | Overwrite "lib.internal.common.name" output | +| overwriteLabels | object | `{}` | Overwrites default labels, but not resource specific labels and common labels | +| pod.affinity | object | `{}` | Pod [Affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) | +| pod.apiVersion | string | `""` | Configure the api version used for the Pod resource | +| pod.args | object | `{}` | Configure arguments for executed command | +| pod.command | object | `{}` | Configure executed container command | +| pod.containerFields | object | `{}` | Extra fields used on the container definition | +| pod.containerName | string | `.Chart.Name` | Configure Container Name | +| pod.environment | list | `[]` | Configure Environment Variables (Refer to values.yaml) | +| pod.forceRedeploy | bool | `false` | | +| pod.image.pullPolicy | string | `nil` | Configure Docker Pull Policy. Will be overwritten if set by global variable. | +| pod.image.registry | string | `"docker.io"` | Configure Docker Registry. Will be overwritten if set by global variable. | +| pod.image.repository | string | `"bedag/e2g"` | Configure Docker Repository | +| pod.image.tag | string | Tag defaults to `.Chart.Appversion`, if not set | Configure Docker Image tag | +| pod.imagePullSecrets | list | `[]` | Define [ImagePullSecrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). Will be overwritten if set by global variable. | +| pod.initContainers | list | `[]` | Pod [initContainers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) | +| pod.lifecycle | object | `{}` | Container [Lifecycle](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/) | +| pod.livenessProbe | object | `{"initialDelaySeconds":15,"periodSeconds":1,"tcpSocket":{"port":1344}}` | Container [LivenessProbe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-command) | +| pod.nodeSelector | object | `{}` | Pod [NodeSelector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | +| pod.podAnnotations | object | `{}` | Pod [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) are only added for the pod | +| pod.podFields | object | `{"terminationGracePeriodSeconds":0}` | Add extra field to the [Pod Template](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#podtemplate-v1-core) if not available as value. | +| pod.podLabels | object | `{}` | Pod [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) are only added for the pod | +| pod.podSecurityContext | object | `{"runAsNonRoot":true,"runAsUser":65534}` | Pod [SecurityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) | +| pod.ports | list | `[{"containerPort":1344,"name":"icap","protocol":"TCP"},{"containerPort":8080,"name":"http","protocol":"TCP"},{"containerPort":8443,"name":"https","protocol":"TCP"}]` | Configure Container Ports | +| pod.priorityClassName | string | `""` | Pod [priorityClassName](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass) | +| pod.readinessProbe | object | `{"initialDelaySeconds":5,"periodSeconds":1,"tcpSocket":{"port":1344}}` | Container [ReadinessProbe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes) | +| pod.resources | object | `{}` | Configure Container [Resource](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | +| pod.restartPolicy | string | `nil` | Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy | +| pod.securityContext | object | `{}` | Container [SecurityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) | +| pod.serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| pod.serviceAccount.apiVersion | string | v1 | Configure the api version used | +| pod.serviceAccount.automountServiceAccountToken | bool | `true` | (bool) AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. | +| pod.serviceAccount.create | bool | `false` | Specifies whether a service account should be created | +| pod.serviceAccount.enabled | bool | `false` | Specifies whether a service account is enabled or not | +| pod.serviceAccount.globalPullSecrets | bool | `false` | Evaluate global set pullsecrets and mount, if set | +| pod.serviceAccount.imagePullSecrets | list | `[]` | ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. | +| pod.serviceAccount.labels | object | `{}` | Merges given labels with common labels | +| pod.serviceAccount.name | string | `""` | If not set and create is true, a name is generated using the fullname template | +| pod.serviceAccount.secrets | list | `[]` | Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount | +| pod.sidecars | list | `[]` | Allows to add sidecars to your [maincar]](https://kubernetes.io/docs/concepts/workloads/pods/#using-pods) | +| pod.startupProbe | object | `{}` | Container [StartupProbe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes) | +| pod.tolerations | object | `{}` | Pod [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) | +| pod.volumeMounts | list | `[]` | Configure Container [volumeMounts](https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/) | +| pod.volumes | list | `[]` | Additional [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) | +| proxy.httpProxy.host | string | `""` | Configure HTTP Proxy Hostname/IP (without protocol://) | +| proxy.httpProxy.port | int | `nil` | Configure HTTP Proxy Port | +| proxy.httpProxy.protocol | string | http | Configure HTTP Proxy Protocol (http/https) | +| proxy.httpsProxy.host | string | `""` | Configure HTTPS Proxy Hostname/IP (without protocol://) | +| proxy.httpsProxy.port | int | `nil` | Configure HTTPS Proxy Port | +| proxy.httpsProxy.protocol | string | http | Configure HTTPS Proxy Protocol (http/https) | +| proxy.noProxy | list | `[]` | Configure No Proxy Hosts noProxy: [ "localhost", "127.0.0.1" ] | +| selectorLabels | object | `{}` | Define default [selectorLabels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) | +| service.annotations | object | `{}` | Configure Service additional Annotations ([Monitor Labels](https://www.weave.works/docs/cloud/latest/tasks/monitor/configuration-k8s/)) | +| service.apiVersion | string | v1 | Configure the api version used | +| service.enabled | bool | `true` | Enable Service Resource | +| service.extraPorts | list | `[{"name":"http","port":8080,"protocol":"TCP","targetPort":"http"},{"name":"https","port":8443,"protocol":"TCP","targetPort":"https"}]` | Add additional ports to the service | +| service.labels | object | `{}` | Configure Service additional Labels | +| service.loadBalancerIP | string | `""` | Configure Service [loadBalancerIP](https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer). Set the LoadBalancer service type to internal only. | +| service.loadBalancerSourceRanges | list | `[]` | Configure Service [loadBalancerSourceRanges](https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service) | +| service.nodePort | string | `nil` | Specify the nodePort value for the LoadBalancer and NodePort service types | +| service.port | int | 80 | Configure Service Port (Required) | +| service.portName | string | http | Configure Service Port name | +| service.protocol | string | TCP | Configure Service Port Protocol | +| service.selector | object | `{}` | Configure Service Selector Labels | +| service.targetPort | string | http | Configure Service TargetPort | +| service.type | string | `""` | Configure Service [Type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). | +| statefulset.apiVersion | string | `""` | Configure the api version used for the Statefulset resource | +| statefulset.enabled | bool | `false` | Enable statefulset | +| statefulset.labels | object | `{}` | Merges given labels with common labels | +| statefulset.podManagementPolicy | string | `""` | Statefulset [Management Policy](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies). **Statefulset only** | +| statefulset.replicaCount | int | `1` | Amount of Replicas deployed | +| statefulset.rollingUpdatePartition | string | `""` | Statefulset [Update Pratition](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions). **Statefulset only** | +| statefulset.selectorLabels | object | `{}` | Define SelectorLabels for the Pod Template | +| statefulset.serviceName | string | `""` | Define a Service for the Statefulset | +| statefulset.statefulsetExtras | object | `{}` | Extra Fields for Statefulset Manifest | +| statefulset.updateStrategy | string | `"RollingUpdate"` | Statefulset [Update Strategy](https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets). **Statefulset only** | +| statefulset.volumeClaimTemplates | list | `[]` | Statefulset [volumeClaimTemplates](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#components). **Statefulset only** | +| timezone | string | `"Europe/Zurich"` | Define Container Timezone (Sets TZ Environment) | diff --git a/charts/manifests/README.md.gotmpl b/charts/manifests/README.md.gotmpl index 7b4be10f..dc820982 100644 --- a/charts/manifests/README.md.gotmpl +++ b/charts/manifests/README.md.gotmpl @@ -7,6 +7,7 @@ This library's purpose is to have more flexibility as chart author but at the sa {{ template "chart.homepageLine" . }} + {{/* Chart Maintainers */}}