This is a cache of https://docs.openshift.com/container-platform/4.8/operators/operator_sdk/helm/osdk-helm-quickstart.html. It is a snapshot of the page at 2024-11-22T20:19:53.300+0000.
Getting started - Developing Operators | Operators | OpenShift Container Platform 4.8
×

The Operator SDK includes options for generating an Operator project that leverages existing helm charts to deploy Kubernetes resources as a unified application, without having to write any Go code.

To demonstrate the basics of setting up and running an helm-based Operator using tools and libraries provided by the Operator SDK, Operator developers can build an example helm-based Operator for Nginx and deploy it to a cluster.

Prerequisites

  • Operator SDK CLI installed

  • OpenShift CLI (oc) v4.8+ installed

  • Logged into an OpenShift Container Platform 4.8 cluster with oc with an account that has cluster-admin permissions

  • To allow the cluster pull the image, the repository where you push your image must be set as public, or you must configure an image pull secret

Creating and deploying helm-based Operators

You can build and deploy a simple helm-based Operator for Nginx by using the Operator SDK.

Procedure
  1. Create a project.

    1. Create your project directory:

      $ mkdir nginx-operator
    2. Change into the project directory:

      $ cd nginx-operator
    3. Run the operator-sdk init command with the helm plugin to initialize the project:

      $ operator-sdk init \
          --plugins=helm
  2. Create an API.

    Create a simple Nginx API:

    $ operator-sdk create api \
        --group demo \
        --version v1 \
        --kind Nginx

    This API uses the built-in helm chart boilerplate from the helm create command.

  3. Build and push the Operator image.

    Use the default Makefile targets to build and push your Operator. Set IMG with a pull spec for your image that uses a registry you can push to:

    $ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
  4. Run the Operator.

    1. Install the CRD:

      $ make install
    2. Deploy the project to the cluster. Set IMG to the image that you pushed:

      $ make deploy IMG=<registry>/<user>/<image_name>:<tag>
  5. Add a security context constraint (SCC).

    The Nginx service account requires privileged access to run in OpenShift Container Platform. Add the following SCC to the service account for the nginx-sample pod:

    $ oc adm policy add-scc-to-user \
        anyuid system:serviceaccount:nginx-operator-system:nginx-sample
  6. Create a sample custom resource (CR).

    1. Create a sample CR:

      $ oc apply -f config/samples/demo_v1_nginx.yaml \
          -n nginx-operator-system
    2. Watch for the CR to reconcile the Operator:

      $ oc logs deployment.apps/nginx-operator-controller-manager \
          -c manager \
          -n nginx-operator-system
  7. Clean up.

    Run the following command to clean up the resources that have been created as part of this procedure:

    $ make undeploy

Next steps