1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-06 06:46:26 +01:00
Files
openshift-docs/modules/osdk-init-resource.adoc
2020-10-13 21:01:19 +00:00

87 lines
3.1 KiB
Plaintext

// Module included in the following assemblies:
//
// * operators/operator_sdk/osdk-generating-csvs.adoc
[id="osdk-init-resource_{context}"]
= Initializing required custom resources
An Operator might require the user to instantiate a custom resource before the
Operator can be fully functional. However, it can be challenging for a user to
determine what is required or how to define the resource.
As an Operator developer, you can specify a single required custom resource that
must be created at the time that the Operator is installed by adding the
`operatorframework.io/initialization-resource` annotation to the
ClusterServiceVersion (CSV). The annotation must include a template that
contains a complete YAML definition that is required to initialize the resource
during installation.
If this annotation is defined, after installing the Operator from the
{product-title} web console, the user is prompted to create the resource using
the template provided in the CSV.
.Procedure
* Add the `operatorframework.io/initialization-resource` annotation to the CSV of
your Operator to specify a required custom resource. For example, the following
annotation requires the creation of a `StorageCluster` resource and provides a
full YAML definition:
+
.Initialization resource annotation
[source,yaml]
----
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
name: my-operator-v1.2.3
annotations:
operatorframework.io/initialization-resource: |-
{
"apiVersion": "ocs.openshift.io/v1",
"kind": "StorageCluster",
"metadata": {
"name": "example-storagecluster"
},
"spec": {
"manageNodes": false,
"monPVCTemplate": {
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "10Gi"
}
},
"storageClassName": "gp2"
}
},
"storageDeviceSets": [
{
"count": 3,
"dataPVCTemplate": {
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "1Ti"
}
},
"storageClassName": "gp2",
"volumeMode": "Block"
}
},
"name": "example-deviceset",
"placement": {},
"portable": true,
"resources": {}
}
]
}
}
...
----