From 7e7070b74375cd9cd9bd9e4747c8cc224f0afa02 Mon Sep 17 00:00:00 2001 From: Leo Q Date: Wed, 1 Feb 2023 16:03:24 +0800 Subject: [PATCH] add new chart healthchecks (#44) * add new chart healthchecks * fix lint * fix lint * fix lint * f --- charts/healthchecks/.helmignore | 27 ++++ charts/healthchecks/Chart.lock | 6 + charts/healthchecks/Chart.yaml | 31 ++++ charts/healthchecks/ci/override-values.yaml | 105 ++++++++++++++ charts/healthchecks/templates/NOTES.txt | 21 +++ charts/healthchecks/templates/_helpers.tpl | 91 ++++++++++++ charts/healthchecks/templates/configmap.yaml | 72 ++++++++++ charts/healthchecks/templates/deployment.yaml | 99 +++++++++++++ charts/healthchecks/templates/hpa.yaml | 28 ++++ charts/healthchecks/templates/ingress.yaml | 53 +++++++ .../healthchecks/templates/networkpolicy.yaml | 18 +++ charts/healthchecks/templates/service.yaml | 15 ++ .../templates/tests/test-connection.yaml | 15 ++ charts/healthchecks/values.yaml | 135 ++++++++++++++++++ 14 files changed, 716 insertions(+) create mode 100644 charts/healthchecks/.helmignore create mode 100644 charts/healthchecks/Chart.lock create mode 100644 charts/healthchecks/Chart.yaml create mode 100644 charts/healthchecks/ci/override-values.yaml create mode 100644 charts/healthchecks/templates/NOTES.txt create mode 100644 charts/healthchecks/templates/_helpers.tpl create mode 100644 charts/healthchecks/templates/configmap.yaml create mode 100644 charts/healthchecks/templates/deployment.yaml create mode 100644 charts/healthchecks/templates/hpa.yaml create mode 100644 charts/healthchecks/templates/ingress.yaml create mode 100644 charts/healthchecks/templates/networkpolicy.yaml create mode 100644 charts/healthchecks/templates/service.yaml create mode 100644 charts/healthchecks/templates/tests/test-connection.yaml create mode 100644 charts/healthchecks/values.yaml diff --git a/charts/healthchecks/.helmignore b/charts/healthchecks/.helmignore new file mode 100644 index 0000000..86a9c55 --- /dev/null +++ b/charts/healthchecks/.helmignore @@ -0,0 +1,27 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +*values-override* +*healthchecks-secret* +*fleet* +ci diff --git a/charts/healthchecks/Chart.lock b/charts/healthchecks/Chart.lock new file mode 100644 index 0000000..d404372 --- /dev/null +++ b/charts/healthchecks/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: postgresql + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + version: 10.14.3 +digest: sha256:e80104c17223a610ecc6321428640116bf1489a787db881afeb8080ad4b5f91d +generated: "2023-01-30T18:21:38.917546622+08:00" diff --git a/charts/healthchecks/Chart.yaml b/charts/healthchecks/Chart.yaml new file mode 100644 index 0000000..1b0cb3e --- /dev/null +++ b/charts/healthchecks/Chart.yaml @@ -0,0 +1,31 @@ +version: 1.0.6 +apiVersion: v2 +name: healthchecks +description: A Helm chart for Kubernetes +maintainers: + - email: rakshit@improwised.com + name: rakshit +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +appVersion: 1.16.0 +sources: + - https://github.com/healthchecks/healthchecks +dependencies: + - name: postgresql + version: 10.14.3 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + condition: postgresql.enabled,global.postgresql.enabled diff --git a/charts/healthchecks/ci/override-values.yaml b/charts/healthchecks/ci/override-values.yaml new file mode 100644 index 0000000..bec237f --- /dev/null +++ b/charts/healthchecks/ci/override-values.yaml @@ -0,0 +1,105 @@ +# Default values for healthchecks. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: linuxserver/healthchecks + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "amd64-version-v1.16.0" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +# override site root url (SITE_ROOT env) see below for more details +# https://github.com/healthchecks/healthchecks +siterootOverride: "" +# override site name (SITE_NAME env) see below for more details +sitenameOverride: "" + +# for postgres password, email host password, superuser email, superuser password +existingSecret: false + +# pass more environment variables, more details below +# https://github.com/healthchecks/healthchecks#configuration +# extraenvs: +# EMAIL_USE_TLS: "False" + +probs: + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 50 + + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 50 + +service: + type: ClusterIP + port: 8000 + +ingress: + enabled: false + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: [] + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +postgresql: + enabled: false + persistence: + enabled: true + postgresqlDatabase: healthchecks + postgresqlUsername: healthchecks + postgresqlPassword: healthchecks # pragma: allowlist secret + # existingSecret: healthchecks-secret + +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 + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +podAnnotations: {} +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/charts/healthchecks/templates/NOTES.txt b/charts/healthchecks/templates/NOTES.txt new file mode 100644 index 0000000..a0cca52 --- /dev/null +++ b/charts/healthchecks/templates/NOTES.txt @@ -0,0 +1,21 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range $.Values.ingress.paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host }}{{ . }} + {{- 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 "healthchecks.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 "healthchecks.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "healthchecks.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 "healthchecks.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80 +{{- end }} diff --git a/charts/healthchecks/templates/_helpers.tpl b/charts/healthchecks/templates/_helpers.tpl new file mode 100644 index 0000000..6dce471 --- /dev/null +++ b/charts/healthchecks/templates/_helpers.tpl @@ -0,0 +1,91 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "healthchecks.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "healthchecks.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "healthchecks.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "healthchecks.labels" -}} +helm.sh/chart: {{ include "healthchecks.chart" . }} +{{ include "healthchecks.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "healthchecks.selectorLabels" -}} +app.kubernetes.io/name: {{ include "healthchecks.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Return the appropriate apiVersion for ingress. +*/}} +{{- define "ingress.apiVersion" -}} +{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.Version -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.Version -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{- define "ingress.backend" -}} +{{- $apiVersion := (include "ingress.apiVersion" .context) -}} +{{- if or (eq $apiVersion "extensions/v1beta1") (eq $apiVersion "networking.k8s.io/v1beta1") -}} +serviceName: {{ .serviceName }} +servicePort: {{ .servicePort }} +{{- else -}} +service: + name: {{ .serviceName }} + port: + {{- if typeIs "string" .servicePort }} + name: {{ .servicePort }} + {{- else if or (typeIs "int" .servicePort) (typeIs "float64" .servicePort) }} + number: {{ .servicePort | int }} + {{- end }} +{{- end -}} +{{- end -}} + +{{- define "ingress.pathtype" -}} +{{- $apiVersion := (include "ingress.apiVersion" .) -}} +{{- if (eq $apiVersion "networking.k8s.io/v1") -}} +pathType: ImplementationSpecific +{{- end -}} +{{- end -}} + + diff --git a/charts/healthchecks/templates/configmap.yaml b/charts/healthchecks/templates/configmap.yaml new file mode 100644 index 0000000..2fac256 --- /dev/null +++ b/charts/healthchecks/templates/configmap.yaml @@ -0,0 +1,72 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "healthchecks.fullname" . }} + labels: + {{- include "healthchecks.labels" . | nindent 4 }} +data: + {{- if .Values.postgresql.enabled }} + DB: "postgres" + DB_HOST: "{{ .Release.Name }}-postgresql.{{ .Release.Namespace }}.svc.cluster.local" + DB_PORT: {{ default "5432" .Values.postgresql.service.port | quote }} + DB_NAME: {{ default "healthckecks" .Values.postgresql.postgresqlDatabase | quote }} + DB_USER: {{ default "healthckecks" .Values.postgresql.postgresqlUsername | quote }} + {{- end }} + {{- if .Values.siterootOverride }} + SITE_ROOT: {{ .Values.siterootOverride | quote }} + {{- else if .Values.ingress.enabled }} + {{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + SITE_ROOT: "http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ trimSuffix "/" . }}" + {{- end }} + {{- end }} + {{- else }} + SITE_ROOT: "http://localhost:8000" + {{- end }} + {{- if .Values.sitenameOverride }} + SITE_NAME: {{ .Values.sitenameOverride | quote }} + {{- else }} + SITE_NAME: "localhost" + {{- end }} + {{- range $key, $val := .Values.extraConfigs }} + {{ $key }}: {{ $val | quote }} + {{- end }} + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "healthchecks.fullname" . }}-docker-folder + labels: + {{- include "healthchecks.labels" . | nindent 4 }} +data: + # override healthcheck default uwsgi config + uwsgi.ini: | + [uwsgi] + master + die-on-term + http-socket = :8000 + harakiri = 10 + post-buffering = 4096 + processes = 4 + enable-threads + threads = 1 + chdir = /opt/healthchecks + module = hc.wsgi:application + thunder-lock + disable-write-exception + + # workaround for https://github.com/unbit/uwsgi/issues/2299 + max-fd = 10000 + + hook-pre-app = exec:./manage.py migrate + if-env = HEALTHCHECK_UWSGI_SENDALERTS + attach-daemon = ./manage.py sendalerts + endif = + if-env = HEALTHCHECK_UWSGI_SENDREPORTS + attach-daemon = ./manage.py sendreports --loop + endif = + if-env = HEALTHCHECK_UWSGI_SMTPD + attach-daemon = ./manage.py smtpd + endif = + diff --git a/charts/healthchecks/templates/deployment.yaml b/charts/healthchecks/templates/deployment.yaml new file mode 100644 index 0000000..8411f2c --- /dev/null +++ b/charts/healthchecks/templates/deployment.yaml @@ -0,0 +1,99 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "healthchecks.fullname" . }} + labels: + {{- include "healthchecks.labels" . | nindent 4 }} + {{- with .Values.deployment.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: +{{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} +{{- end }} + selector: + matchLabels: + {{- include "healthchecks.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "healthchecks.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + envFrom: + - configMapRef: + name: {{ include "healthchecks.fullname" . }} + optional: true + env: + {{- if .Values.existingSecret }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ default .Values.existingSecret }} + key: postgresql-password + - name: EMAIL_HOST_PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.existingSecret }} + key: email-host-password + - name: SUPERUSER_EMAIL + valueFrom: + secretKeyRef: + name: {{ .Values.existingSecret }} + key: superuser-email + - name: SUPERUSER_PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.existingSecret }} + key: superuser-password + {{- else }} + - name: ENV_PLACEHOLDER + value: "1" + {{- end }} + {{- with .Values.extraEnvs }} + {{ toYaml . | nindent 12 }} + {{- end}} + volumeMounts: + - name: docker-folder + mountPath: /opt/healthchecks/docker + ports: + - name: http + containerPort: 8000 + protocol: TCP + {{- if .Values.probs }} +{{ toYaml .Values.probs | indent 10 }} + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + volumes: + - name: docker-folder + configMap: + name: {{ include "healthchecks.fullname" . }}-docker-folder + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/healthchecks/templates/hpa.yaml b/charts/healthchecks/templates/hpa.yaml new file mode 100644 index 0000000..fc649e1 --- /dev/null +++ b/charts/healthchecks/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "healthchecks.fullname" . }} + labels: + {{- include "healthchecks.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "healthchecks.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/healthchecks/templates/ingress.yaml b/charts/healthchecks/templates/ingress.yaml new file mode 100644 index 0000000..ce60928 --- /dev/null +++ b/charts/healthchecks/templates/ingress.yaml @@ -0,0 +1,53 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "healthchecks.fullname" . -}} +{{- $ingressPaths := .Values.ingress.paths -}} +{{- $servicePort := .Values.service.port -}} +{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} +apiVersion: networking.k8s.io/v1 +{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }} +apiVersion: networking.k8s.io/v1beta1 +{{- else }} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + app.kubernetes.io/name: {{ include "healthchecks.name" . }} + helm.sh/chart: {{ include "healthchecks.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + {{- $url := splitList "/" . }} + - host: {{ first $url }} + http: + paths: + - path: /{{ rest $url | join "/" }} + backend: + {{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} + service: + name: {{ $fullName }} + port: + number: {{ $servicePort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $servicePort }} + {{- end }} + {{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} + pathType: Prefix + {{- end }} + {{- end -}} + {{- if .Values.ingress.tls }} + tls: +{{ toYaml .Values.ingress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/charts/healthchecks/templates/networkpolicy.yaml b/charts/healthchecks/templates/networkpolicy.yaml new file mode 100644 index 0000000..8109b35 --- /dev/null +++ b/charts/healthchecks/templates/networkpolicy.yaml @@ -0,0 +1,18 @@ +{{- if .Values.networkpolicy.enabled }} +kind: NetworkPolicy +apiVersion: {{ .Values.networkpolicy.apiVersion }} +metadata: + name: {{ include "healthchecks.fullname" . }} + labels: + {{- include "healthchecks.labels" . | nindent 4 }} +spec: + podSelector: + matchLabels: + {{- include "healthchecks.selectorLabels" . | nindent 6 }} + policyTypes: + - Ingress + {{- with .Values.networkpolicy.ingress }} + ingress: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/healthchecks/templates/service.yaml b/charts/healthchecks/templates/service.yaml new file mode 100644 index 0000000..ab56b2c --- /dev/null +++ b/charts/healthchecks/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "healthchecks.fullname" . }} + labels: + {{- include "healthchecks.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "healthchecks.selectorLabels" . | nindent 4 }} diff --git a/charts/healthchecks/templates/tests/test-connection.yaml b/charts/healthchecks/templates/tests/test-connection.yaml new file mode 100644 index 0000000..349583e --- /dev/null +++ b/charts/healthchecks/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "healthchecks.fullname" . }}-test-connection" + labels: + {{- include "healthchecks.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test-success +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "healthchecks.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/healthchecks/values.yaml b/charts/healthchecks/values.yaml new file mode 100644 index 0000000..3f461f5 --- /dev/null +++ b/charts/healthchecks/values.yaml @@ -0,0 +1,135 @@ +# Default values for healthchecks. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: healthchecks/healthchecks + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "latest" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +# override site root url (SITE_ROOT env) see below for more details +# https://github.com/healthchecks/healthchecks +siterootOverride: "" +# override site name (SITE_NAME env) see below for more details +sitenameOverride: "" + +# for postgres password, email host password, superuser email, superuser password +# healthchecks-secret +existingSecret: "" # pragma: allowlist secret + +# pass more environment variables, more details below +# https://github.com/healthchecks/healthchecks#configuration +# These environments varibles will be stored in configmap and then passed to container environtment +extraConfigs: + EMAIL_USE_TLS: "False" + +# These environment will be directly passed to container +extraEnvs: [] +# - name: DB_PASSWORD +# value: "healthchecks" +# - name: EMAIL_HOST_PASSWORD +# value: "healthchecks" +# - name: foo +# value: bar + +probs: + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 50 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 50 + +service: + type: ClusterIP + port: 8000 + +ingress: + enabled: false + className: nginx + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + paths: + - / + hosts: + - host: chart-example.local + paths: [] + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +postgresql: + enabled: true + persistence: + enabled: true + postgresqlDatabase: healthchecks + postgresqlUsername: healthchecks + postgresqlPassword: healthchecks # pragma: allowlist secret + # existingSecret: healthchecks-secret + +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 + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +deployment: + annotations: {} + +podAnnotations: {} +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +networkpolicy: + enabled: false + apiVersion: networking.k8s.io/v1 + ingress: [] + # allow oauth-proxy ingress if you want + # if network policy is enabled , and ingress rule is not set ,all ingress traffic will be dropped + # - from: + # - namespaceSelector: + # matchLabels: + # kubernetes.io/metadata.name: my-namespace + # podSelector: + # matchLabels: + # foo: bar