Skip to content
Kubernetes operator for GRPC or HTTP applications. Simplifies and reduces boilerplate by creating an ingress, service and deployment under the hood for you.
Smarty Makefile Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples chore: Update domain name Sep 8, 2019
helm-charts/application chore: Update domain name Sep 8, 2019
LICENSE docs: License and status Sep 4, 2019
Makefile chore: Sync up correct versions Sep 4, 2019

App Operator

Kubernetes operator for GRPC or HTTP applications. Simplifies and reduces boilerplate by creating an ingress, service and deployment under the hood for you.

Are you tired of copying around complex Helm configuration for deployments? The app-operator is a Helm chart with best practices for deploying http based services to Kubernetes. This is born out of copying similar configuration around to make helm charts that look quite alike one another.

An added benefit of this approach is removing the dependency on a server side Tiller for applying charts.

STATUS: Experimental.


Create's a deployment resource using the image myrepo:v1 to Kubernetes with a service and a corresponding ingress resource.

kind: Application
  name: example-application
    name: example-application
    version: v1
    repository: myrepo
    tag: v1
    enabled: true
      - host:
        paths: ["/"]


kubectl apply -k


Key Type Default Description
affinity object {} Kubernetes affinity resource. string "nginx" Application name: Can be consistent between tracks. (required)
app.version string "v1" Application version: Unique tag for this release. (required)
env list [] Environment variables for the application.
image.pullPolicy string "IfNotPresent"
image.repository string "nginx" Docker image repository.
image.tag string "latest" Docker image tag.
imagePullSecrets list [] Defines secrets to use for pulling docker images.
ingress.annotations object {} Configures annotations for the ingress.
ingress.enabled bool false Enable ingress resource.
ingress.hosts[0].host string "chart-example.local" Host name for routing traffic.
ingress.hosts[0].paths list ["/"] Array of routable paths.
ingress.tls list [] Kubernetes ingress tls resource.
livenessProbe object {"httpGet":{"path":"/","port":"http"}} Customize the livenessProbe.
migrate.command string "rails db:migrate" Command to run on the migrate pod.
migrate.enabled bool false Run a pod before the application is released to migrate.
nodeSelector object {} Kubernetes node selectors for Deployment resources.
readinessProbe object {"httpGet":{"path":"/","port":"http"}} Customize the readiness probe.
replicaCount int 1 Replica count for deployments.
resources object {} Kubernetes resources for Deployment resources.
secret string nil If defined will pull all secrets from this resource using envFrom.
service.enabled bool true Enable service resource.
service.internalPort int 80 Deployment internal port.
service.port int 80 Kubernetes service port.
service.type string "ClusterIP" Kubernetes service type.
tolerations list [] Kubernetes tolerations for Deployment resources.
workers list [] Deploy background jobs with the same config as the main app.
You can’t perform that action at this time.