h2. POC steps
* Create the file with the name "memcachedoperator.0.0.1.csv.yaml" and add the following content.
{code:java} # This file defines the ClusterServiceVersion (CSV) to tell the catalog how to display, create and # manage the application as a whole. If changes are made to the CRD for this application kind, # make sure to replace those references below as well. apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: name: memcachedoperator.v0.0.1 namespace: memcached-operator spec: install: strategy: deployment spec: permissions: - serviceAccountName: memcached-operator rules: - apiGroups: - "*" resources: - "*" verbs: - "*" deployments: - name: memcached-app-operator spec: replicas: 1 selector: matchLabels: app: memcached-app-operator template: metadata: labels: app: memcached-app-operator spec: containers: - name: memcached image: cmacedo/memcached-operator:v0.0.1 command: - /usr/local/bin/memcached-operator ports: - containerPort: 8080 protocol: TCP imagePullPolicy: Always restartPolicy: Always terminationGracePeriodSeconds: 5 serviceAccountName: memcached-operator serviceAccount: memcached-operator customresourcedefinitions: owned: - description: Represents a cluster of Memcached apps displayName: Memcached App kind: Memcached name: memcacheds.cache.example.com version: v1alpha1 resources: - kind: Deployment version: v1beta2 - kind: ReplicaSet version: v1beta2 - kind: Pod version: v1 specDescriptors: - description: The desired number of member Pods for the deployment. displayName: Size path: size x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:podCount' statusDescriptors: - description: The current status of the application. displayName: Status path: phase x-descriptors: - 'urn:alm:descriptor:io.kubernetes.phase' - description: Explanation for the current status of the application. displayName: Status Details path: reason x-descriptors: - 'urn:alm:descriptor:io.kubernetes.phase:reason' keywords: - memcached - app installModes: - supported: true type: OwnNamespace - supported: true type: SingleNamespace - supported: true type: MultiNamespace - supported: true type: AllNamespaces displayName: Memcached Application provider: name: Example url: www.example.com maturity: alpha version: 0.0.1 maintainers: - email: corp@example.com name: Some Corp description: Main enterprise application providing business critical features with high availabilty and no manual intervention. labels: alm-owner-enterprise-app: memcached-app-operator alm-status-descriptors: memcached-app-operator.v0.0.1 {code}
* Create the namespace memcached-operator
* Add ClusterServiceVersion
It will add the operator in the Developer Catalogue
{code:java} $ kubectl apply -f memcachedoperator.0.0.1.csv.yaml {code}
* Add CRD - ( Customer Resource Definition) It will add the type of the operator in the cluster/namespace
{code:java} kubectl create -f deploy/crds/cache_v1alpha1_memcached_crd.yaml {code}
* Add the RBAC rules created for the operator
{code:java} $ kubectl create -f deploy/service_account.yaml $ kubectl create -f deploy/role.yaml $ kubectl create -f deploy/role_binding.yaml $ kubectl create -f deploy/operator.yaml {code}
* |
|