/Dynamodb

helm chart for dynamodb

Primary LanguageSmartyApache License 2.0Apache-2.0

Dynamodb helm chart

This helm chart converts Amazon's dynamodb-local into a k8s deployable application. It creates a 2 container pod with one running a dynamodb table and the other running a dynamodb admin app

The intent is to provide a quick easy way to enable a local dynamo db instance for local development/testing.

prerequisites

  • helm 3 @ a modern working k8s cluster

Install

helm repo add keyporttech https://keyporttech.github.io/helm-charts/
helm install my-release keyporttech/dynamo-db

or clone this repo and install from the file system.

Contributing

Contributions are welcome, but please note that all pull-requests must Pass CI. The Makefile contains targets that execute cicd tooling locally. This includes the chart-testing and chart-releaser tooling provided by helm.

  make build

Values.yaml Configuration

Most configurable values are similar to other helm charts generated via helm create. The configurations specific to this chart are listed below.

Ingress controller

When the ingress controller is enabled the admin UI is available via:

http(s)://host.domain.com/dynamodb

Example with with using nginx controller and CertificateManager letsencrypt TLS issuer:

ingress:
  enabled: true
  host: dynamodb.myhost.com
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/ingress.allow-http: "false"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    cert-manager.io/cluster-issuer: cert-issuer-letsencrypt-prod
  tls:
  # Secrets must be manually created in the namespace.
  - secretName: dynamodb-tls
    hosts:
      - dynamodb.myhost.com

Storage

This chart allows for 3 types of storage: pvc, directVolume, and emptyDir set via: storageType.

If no configuration is provided the chart will store data on the node using emptyDir.

If storageType is set to directVolume then directVolume msut be set in the chart vaules.

Example:

directVolume:
  nfs:
    server: 10.10.10.10
    path: "/dynamodb-data"

The following is an example of storage type pvc:

storage: "500Mi"
storageClassName: ""
Parameter Description Default
dynamodb.image.repository dynamo db local image amazon/dynamodb-local

| | dynamodb.image.pullPolicy | image pull policy | IfNotPresent |
| dynamodb.image.tag | image tag | 1.12.0 | | admin.image.repository | admin web UI image | aaronshaf/dynamodb-admin | | admin.image.pullPolicy | image pull policy | IfNotPresent |
| admin.image.tag | image tag | latest | | imagePullSecrets | image pull secrets | | | `nameOverride` | `name override` | | | fullnameOverride | fullname override | | | `serviceAccount.create` | `creates service account if true` | `true` | | `serviceAccount.annotations` | `service account annotations if created` | | | serviceAccount.name | service account name if created | | | `podAnnotations` | `pod annotations` | | | podSecurityContext | pod security context | | | `securityContext` | `security context` | | | service.type | k8s service type | ClusterIP | | ingress.enabled | enable ingress | false | | ingress.annotations' | ingress annotations |{}| |ingress.tls |list of tls secret names and known_hosts |[]| |ingress.host |ingress host | `` | |autoscaling.enabled |enable autoscaling |false| |autoscaling.minReplicas |min replicas |1| |autoscaling.maxReplicas |max replicas |100| |autoscaling.targetCPUUtilizationPercentage |autoscaling target CPU |80| |autoscaling.targetMemoryUtilizationPercentage |autoscaling target memory |unset| |resources |pod resources |[]| |nodeSelector |node selector |{}| |tolerations |node selector |[]| |affinity |affinity |{}| |storageType |type of storage pvc, directVolume emptyDir |emptyDir| |storage |size of pvc storage |unset| |storageClassName |pvc storage class name |unset| |directVolume |yaml definings k8s volume |unset` |