Go to file
2024-11-14 08:13:40 +01:00
templates Initial 2024-11-14 08:13:40 +01:00
Chart.yaml Initial 2024-11-14 08:13:40 +01:00
README.md Initial 2024-11-14 08:13:40 +01:00
values.yaml Initial 2024-11-14 08:13:40 +01:00

Basic Application Helm Chart

Overview

This Helm chart deploys a basic application on a Kubernetes cluster with the following components:

  • A deployment with configurable replicas
  • A persistent volume claim for data storage
  • A service for internal communication
  • An ingress for external access with TLS support

Prerequisites

  • Kubernetes 1.19+
  • Helm 3.0+
  • PV provisioner support in the underlying infrastructure
  • Ingress controller (e.g., nginx-ingress)

Installation

Add the repository

# If hosted in a Helm repository
helm repo add my-repo https://charts.example.com
helm repo update

Install the chart

# Using default values
helm install my-release .

# Using custom values file
helm install my-release . -f values.yaml

# Using --set
helm install my-release . --set ingress.hosts[0].host=example.com

Uninstallation

helm uninstall my-release

Configuration

The following table lists the configurable parameters of the chart and their default values.

Parameter Description Default
replicaCount Number of replicas 1
image.repository Image repository nginx
image.tag Image tag latest
image.pullPolicy Image pull policy IfNotPresent
service.type Kubernetes service type ClusterIP
service.port Kubernetes service port 80
ingress.enabled Enable ingress true
ingress.className Ingress class name nginx
ingress.annotations Ingress annotations {}
ingress.hosts[0].host Hostname chart-example.local
ingress.hosts[0].paths[0].path Path /
ingress.hosts[0].paths[0].pathType Path type Prefix
ingress.tls.enabled Enable TLS true
ingress.tls.secretName TLS secret name chart-example-tls
persistence.enabled Enable persistence true
persistence.accessMode PVC access mode ReadWriteOnce
persistence.size PVC size 1Gi
persistence.storageClass PVC storage class ""

Ingress Annotations Examples

For NGINX ingress controller:

ingress:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "true"

For cert-manager SSL certificates:

ingress:
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"

TLS Configuration

To use TLS, create a TLS secret in the namespace:

kubectl create secret tls chart-example-tls \
  --cert=path/to/tls.cert \
  --key=path/to/tls.key

Then enable it in values.yaml:

ingress:
  tls:
    enabled: true
    secretName: chart-example-tls
    hosts:
      - chart-example.local

Persistence

The chart mounts a Persistent Volume at /data. The volume is created using dynamic volume provisioning.

Upgrading

# Upgrade using values file
helm upgrade my-release . -f values.yaml

# Upgrade with --set flag
helm upgrade my-release . --set replicaCount=3

Limitations

  • The chart has been tested on Kubernetes 1.19+
  • Persistent volume provisioning support in underlying infrastructure
  • Ingress controller must be present in the cluster

Contributing

If you find any issues with this chart or want to contribute improvements:

  1. Fork the repository
  2. Create a new branch for your changes
  3. Submit a pull request

License

This Helm chart is licensed under the MIT License.