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.2.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.