Sunstone
Deploy Kubernetes resources with ease
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:
- https://sunstone.dev/raw.githubusercontent.com/sunstone-dev/example/master/deployment.yaml?port=5555
Deploy to Kubernetes latest semver tag:
kubectl apply -f https://sunstone.dev/raw.githubusercontent.com/sunstone-dev/example/master/deployment.yaml