Skip to the content.

Helm Charts

Chart Publish License: MIT

Introduction

This repository contains a collection of Helm charts for deploying and managing various applications on Kubernetes.

Usage

Add Helm Repository

To install a chart from this repository, first add the repository to your Helm client:

helm repo add helm-charts https://browol.github.io/helm-charts
helm repo update

Once the repository is added, you can install a chart using its name:

helm install myapp helm-charts/general-purpose

Installing a Specific Chart Version

To install a specific version of a chart, use the --version flag:

helm install myapp helm-charts/general-purpose --version 0.3.0

Configuration Example

The following example shows how to configure the chart to deploy a simple nginx container:

app:
  name: myapp
  image:
    registry: docker.io
    repository: nginxinc/nginx-unprivileged
    tag: latest
    pullPolicy: Always
    pullSecret: null
    containerPort: 8080
  readinessProbe:
    enabled: true
    path: /
  livenessProbe:
    enabled: true
    path: /
    initialDelaySeconds: 300

  securityContext:
    enabled: true
    spec:
      runAsUser: 1001
      runAsGroup: 1001
      allowPrivilegeEscalation: false
      readOnlyRootFilesystem: true

securityContext:
  enabled: true
  spec:
    fsGroup: 1001
    supplementalGroups:
    - 1001

initContainers:
  enabled: true
  containers:
  - name: install
    image: busybox
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - http://info.cern.ch
    volumeMounts:
    - name: workdir
      mountPath: /work-dir

volumeMounts:
  enabled: true
  volumes:
  - name: env-volume
    type: configMap
    mountPath: /app/dist/app/browser/assets/env/
    spec:
      name: env-from-file
      asEnvVar: ENV_FROM_FILE
      fileName: config.json
      value: |
        {
          "hello": "world"
        }
  - name: workdir
    type: emptyDir
    mountPath: /work-dir

service:
  enabled: true
  name: nginx
  ports:
  - name: proxy
    port: 80
    targetPort: 8080
    protocol: TCP

ingress:
  enabled: true
  ingresses:
  - name: my-internal-ingress
    annotations:
      nginx.ingress.kubernetes.io/service-upstream: "true"
      nginx.ingress.kubernetes.io/upstream-vhost: nginx.myabc-ns.svc.cluster.local
    ingressClassName: nginx
    paths:
    - path: /
      pathType: ImplementationSpecific
      backend:
        serviceName: nginx
        servicePort: 80
    http:
    - domainName:
      - example.com
      tls: null
  - name: my-internet-ingress
    annotations:
      nginx.ingress.kubernetes.io/service-upstream: "true"
      nginx.ingress.kubernetes.io/upstream-vhost: nginx.myabc-ns.svc.cluster.local
    ingressClassName: nginx-internet
    paths:
    - path: /
      pathType: ImplementationSpecific
      backend:
        serviceName: nginx
        servicePort: 80
    http:
    - domainName:
      - example3.com
      - example4.com

configMap:
  enabled: true
  data:
  - name: NODE_ENV
    value: "dynamic"
  - name: PRODUCTION
    value: false
  - name: USEMOCK
    value: false
  - name: AUTH_METHOD
    value: "saml"
  - name: INTERNAL_URL
    value: "http://myabc-app:8080"
  - name: PORTAL_URL
    value: "https://example.com"
  - name: LOG_LEVEL
    value: "debug"

env:
  enabled: true
  data:
  - name: MY_NODE_NAME
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName
  - name: ABC
    value: "haha"