Defining Kubernetes resources
This section explains how to reference Kubernetes or OpenShift resource lists in devfiles in order to describe complex deployments.
|
Procedure
Kubernetes Ingresses are ignored, but OpenShift routes are supported. A workspace created from a devfile using any other object types fails to start.
|
The following component references a file that is relative to the location of the devfile:
schemaVersion: 2.1.0
metadata:
name: mydevfile
projects:
- name: my-go-project
clonePath: go/src/github.com/acme/my-go-project
git:
remotes:
origin: "https://github.com/acme/my-go-project.git"
components:
- name: mydevfile
kubernetes:
uri: ../relative/path/postgres.yaml
The following is an example of the postgres.yaml file:
apiVersion: v1
kind: List
items:
- apiVersion: v1
kind: Deployment
metadata:
name: postgres
labels:
app: postgres
spec:
template:
metadata:
name: postgres
app:
name: postgres
spec:
containers:
- image: postgres
name: postgres
ports:
- name: postgres
containerPort: 5432
volumeMounts:
- name: pg-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: pg-storage
persistentVolumeClaim:
claimName: pg-storage
- apiVersion: v1
kind: Service
metadata:
name: postgres
labels:
app: postgres
name: postgres
spec:
ports:
- port: 5432
targetPort: 5432
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pg-storage
labels:
app: postgres
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
For a basic example of a devfile with an associated Kubernetes or OpenShift list, see web-nodejs-with-db-sample.