hero

Sunstone

Deploy Kubernetes resources with ease

Get Started →

Simplicity First

Minimal setup required, just host your template on Github, Gitlab, S3, Google Storage buckets or any static file hosting provider. No CLI, UI required.

Open Source & Self-Hosted

Template manifests are always hosted by authors, Sunstone just retrieves template and doesn't store any information. This allows you to quickly update templates without any middle-man.

Intelligent Defaults

Sunstone can either generate templates based on supplied tags or retrieve latest semver versioned tags from Docker registries. This means that your docs are always showing latest version installation instructions.

How does it work?

You upload a file to a publicly accessible server such as GitHub: https://raw.githubusercontent.com/sunstone-dev/example/master/deployment.yaml. Feel free to use object storage or just a simple static website.

Then, point sunstone.dev at it by appending the template URL (just remove the https:// or http:// parts) to a path: https://sunstone.dev/raw.githubusercontent.com/sunstone-dev/example/master/deployment.yaml.

Any template variables can be populated by amending query arguments such as ?port=5000&version=1.0.0 to the final URL. Structure of the URL is:

https://sunstone.dev/<URL to link>?<first arg>=<value>&<second arg>=<value>

Sunstone will fetch the template and generate the final version combined with your supplied values.

Easy as 1, 2, 3

Modify your deployment manifest with variables that you want to modify:

apiVersion: apps/v1
...
    spec:     
      containers:                    
        - image: keelhq/push-workflow-example:{{ .version | latestRegistrySemver "keelhq/push-workflow-example" }}
          imagePullPolicy: Always
          name: pushwf
          ports:
            - containerPort: {{ .port | default 8500 }}
          livenessProbe:
            httpGet:
              path: /
              port: {{ .port | default 8500 }}
            initialDelaySeconds: 10
            timeoutSeconds: 5    

This file is available here: https://github.com/sunstone-dev/example/blob/master/deployment.yaml

Now, check https://sunstone.dev/raw.githubusercontent.com/sunstone-dev/example/master/deployment.yaml

Generated file will look like:

apiVersion: apps/v1
...
    spec:     
      containers:                    
        - image: keelhq/push-workflow-example:0.11.0-alpha
          imagePullPolicy: Always
          name: pushwf
          ports:
            - containerPort: 8500
          livenessProbe:
            httpGet:
              path: /
              port: 8500
            initialDelaySeconds: 10
            timeoutSeconds: 5    

Image tags were retrieved from DockerHub: https://hub.docker.com/r/keelhq/push-workflow-example/tags. You can also override any variables when you retrieve the file:

To override version:

To override port:

Deploy to Kubernetes latest semver tag:

kubectl apply -f https://sunstone.dev/raw.githubusercontent.com/sunstone-dev/example/master/deployment.yaml