diff --git a/README.md b/README.md index cc7f88d..bcb6d45 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,9 @@ curl https://raw.githubusercontent.com/kubero-dev/ladder/main/docker-compose.yam docker-compose up -d ``` +### Helm +See [README.md](/helm-chart/README.md) in helm-chart sub-directory for more information. + ## Usage ### Browser diff --git a/helm-chart/Chart.yaml b/helm-chart/Chart.yaml new file mode 100644 index 0000000..27d35a8 --- /dev/null +++ b/helm-chart/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +name: ladder +description: A helm chart to deploy kubero-dev/ladder +type: application +version: "1.0" +appVersion: "v0.0.11" diff --git a/helm-chart/README.md b/helm-chart/README.md new file mode 100644 index 0000000..050cbc3 --- /dev/null +++ b/helm-chart/README.md @@ -0,0 +1,27 @@ +# Helm Chart for deployment of Ladder +This folder contains a basic helm chart deployment for the ladder app. + +# Deployment pre-reqs +## Values +Edit the values to your own preferences, with the only minimum requirement being `ingress.HOST` (line 19) being updated to your intended domain name. + +Other variables in `values.yaml` can be updated as to your preferences, with details on each variable being listed in the main [README.md](/README.md) in the root of this repo. + +## Defaults in K8s +No ingress default has been specified. +You can set this manually by adding an annotation to the ingress.yaml - if needed. +For example, to use Traefik - +```yaml +metadata: + name: ladder-ingress + annotations: + kubernetes.io/ingress.class: traefik +``` + +## Helm Install +`helm install -n --create-namespace` +`helm install ladder .\ladder\ -n ladder --create-namespace` + +## Helm Upgrade +`helm upgrade -n ` +`helm upgrade ladder .\ladder\ -n ladder` diff --git a/helm-chart/templates/deployment.yaml b/helm-chart/templates/deployment.yaml new file mode 100644 index 0000000..9986e21 --- /dev/null +++ b/helm-chart/templates/deployment.yaml @@ -0,0 +1,55 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: ladder + name: ladder +spec: + replicas: 1 + selector: + matchLabels: + app: ladder + template: + metadata: + labels: + app: ladder + spec: + containers: + - image: "{{ .Values.image.RELEASE }}" + imagePullPolicy: Always + name: ladder + resources: + limits: + cpu: 250m + memory: 128Mi + requests: + cpu: 250m + memory: 128Mi + env: + - name: PORT + value: "{{ .Values.env.PORT }}" + - name: PREFORK + value: "{{ .Values.env.PREFORK }}" + - name: USER_AGENT + value: "{{ .Values.env.USER_AGENT }}" + - name: X_FORWARDED_FOR + value: "{{ .Values.env.X_FORWARDED_FOR }}" + - name: USERPASS + value: "{{ .Values.env.USERPASS }}" + - name: LOG_URLS + value: "{{ .Values.env.LOG_URLS }}" + - name: DISABLE_FORM + value: "{{ .Values.env.DISABLE_FORM }}" + - name: FORM_PATH + value: "{{ .Values.env.FORM_PATH }}" + - name: RULESET + value: "{{ .Values.env.RULESET }}" + - name: EXPOSE_RULESET + value: "{{ .Values.env.EXPOSE_RULESET }}" + - name: ALLOWED_DOMAINS + value: "{{ .Values.env.ALLOWED_DOMAINS }}" + - name: ALLOWED_DOMAINS_RULESET + value: "{{ .Values.env.ALLOWED_DOMAINS_RULESET }}" + restartPolicy: Always + terminationGracePeriodSeconds: 30 diff --git a/helm-chart/templates/ingress.yaml b/helm-chart/templates/ingress.yaml new file mode 100644 index 0000000..d11fb54 --- /dev/null +++ b/helm-chart/templates/ingress.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ladder-ingress +spec: + rules: + - host: "{{ .Values.ingress.HOST }}" + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: ladder-service + port: + number: {{ .Values.ingress.PORT }} diff --git a/helm-chart/templates/service.yaml b/helm-chart/templates/service.yaml new file mode 100644 index 0000000..38ca95e --- /dev/null +++ b/helm-chart/templates/service.yaml @@ -0,0 +1,14 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: ladder-service +spec: + type: ClusterIP + selector: + app: ladder + ports: + - name: http + port: {{ .Values.ingress.PORT }} + protocol: TCP + targetPort: {{ .Values.env.PORT }} diff --git a/helm-chart/values.yaml b/helm-chart/values.yaml new file mode 100644 index 0000000..7c46af8 --- /dev/null +++ b/helm-chart/values.yaml @@ -0,0 +1,20 @@ +image: + RELEASE: ghcr.io/kubero-dev/ladder:v0.0.11 + +env: + PORT: 8080 + PREFORK: "false" + USER_AGENT: "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" + X_FORWARDED_FOR: + USERPASS: "" + LOG_URLS: "true" + DISABLE_FORM: "false" + FORM_PATH: "" + RULESET: "https://raw.githubusercontent.com/kubero-dev/ladder/main/ruleset.yaml" + EXPOSE_RULESET: "true" + ALLOWED_DOMAINS: "" + ALLOWED_DOMAINS_RULESET: "false" + +ingress: + HOST: "ladder.domain.com" + PORT: 80