Manifest Services
Manifest services are the most complex way to define services, but also most flexible option.
They allow you to directly define whatever Kubernetes objects you need for your service directly. Ruckstack does not get in your way, but it also does not make things easier for you.
It’s just you and Kubernetes.
Manifest Syntax
The manifest file contains standard Kubernetes definitions separated by ---
sections
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx # has to match .spec.template.metadata.labels
serviceName: "nginx"
replicas: 3 # by default is 1
template:
metadata:
labels:
app: nginx # has to match .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: k8s.gcr.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "my-storage-class"
resources:
requests:
storage: 1Gi
Defining the Service
Once you have found your service, you add a new service definition to your project.
manifestServices:
- id: users
manifest: users.yaml
Required Fields
id | Unique identifier for this service. Used as the default for filenames and internal descriptors. Must be lowercase alphanumeric (also allows “_” and “-“). |
manifest | The path to your yaml or json object definition. Relative to your ruckstack.yaml file. |