From 4be0c1bc585b60b6afdbcb96611346304dfcc4d7 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Mon, 21 Aug 2023 21:34:57 +0200 Subject: [PATCH] Upgraded to version 0.1.8 --- helm/template/Chart.yaml | 11 ++++- helm/template/README.md | 89 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/helm/template/Chart.yaml b/helm/template/Chart.yaml index add1be1..219d6d0 100644 --- a/helm/template/Chart.yaml +++ b/helm/template/Chart.yaml @@ -2,9 +2,18 @@ apiVersion: v2 name: template description: A Helm library chart containing common templates, keeping application templates short type: library -version: 0.1.7 +version: 0.1.8 maintainers: - name: Jim Martens url: https://2martens.de sources: - https://git.2martens.de/2martens/cloud-configuration +annotations: + artifact.io/changes: | + - kind: added + description: Completed README to contain all steps required to jumpstart an application chart + - kind: added + description: Added sign key entry to make verifying easier + artifacthub.io/signKey: | + fingerprint: F0F153B65BAD467201D7544E47393ABD1F96B7C8 + url: https://mafiasi.de/pks/key/47393ABD1F96B7C8.asc diff --git a/helm/template/README.md b/helm/template/README.md index 135972b..257ebdd 100644 --- a/helm/template/README.md +++ b/helm/template/README.md @@ -1,4 +1,91 @@ # Template Helm Chart This helm chart is a library chart that does most of the heavy -lifting for your application chart. \ No newline at end of file +lifting for your application chart. + +## Usage + +1. Copy the values into your own application chart. +2. In your application chart templates folder create the following + files. This allows you to use the values to configure most things and, + more importantly, allows the users of your chart to overwrite + things. Furthermore, that way you can benefit from improvements + in the templates of this library chart by simply updating the + version under dependencies in your chart. + +deployment.yaml +```yaml +{{- include "template.deployment" . -}} +``` + +hpa.yaml +```yaml +{{- include "template.hpa" . -}} +``` + +ingress.yaml +```yaml +{{- include "template.ingress" . -}} +``` + +NOTES.txt +```text +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "template.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "template.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "template.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "template.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} +``` + +secret.yaml: +If you want to use external secrets, you MUST NOT include the secret +template but implement it yourself. +```yaml +{{- include "template.secret" . -}} +``` + +service.yaml +```yaml +{{- include "template.service" . -}} +``` + +serviceaccount.yaml +```yaml +{{- include "template.serviceAccount" . -}} +``` + +tests/test-connection.yaml +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "template.fullname" . }}-test-connection" + labels: + {{- include "template.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "template.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never +```