Installing CFM Operator (internet)

You can install CFM Operator after meeting all prerequisites and installing dependencies, either using the cfmctl CLI tool or Helm.

  • You have a Kubernetes cluster up and runing.
  • You have obtained a license from Cloudera.

  • You have valid credentials to access the required artifact repositories.

  1. Install cert-manager.

    Follow the instructions for installing the cert-manager Operator for RedHat OpenShift.

    helm install cert-manager jetstack/cert-manager \
    --version [***CERT MANAGER VERSION***]\
    --namespace cert-manager \
    --create-namespace \
    --set installCRDs=true

    Replace ***CERT MANAGER VERSION***] with the certificate manager version you want to install.

  2. Create a namespace for the operator.
    kubectl create namespace [***CFM OPERATOR NAME***]
    Replace [***CFM OPERATOR NAME***] with the desired namespace.

    For example:

    $ kubectl create namespace cfm-operator-system
  3. Create an image pull secret.
    kubectl create secret docker-registry docker-pull-secret \
      --namespace [***CFM OPERATOR NAMESPACE***] \
      --docker-server \
      --docker-username [***USERNAME***] \
      --docker-password [***PASSWORD***]


    • [***USERNAME***] and [***PASSWORD***] with your Cloudera credentials.

    • [***CFM OPERATOR NAMESPACE***] with the desired operator installation namespace, typically cfm-operator-system.

    For example:
    kubectl create secret docker-registry docker-pull-secret \
      --namespace cfm-operator-system \
      --docker-server \
      --docker-username my-username \
      --docker-password my-password
  4. Optional: Install the cfmctl CLI tool.
    1. Download the CLI tool from
    2. Copy and run it in the CFM installation directory.
    3. Give the tool +x permissions.

    The cfmctl tool allows you to:

    • Manage your environment

    • Check the current state and existence of prerequisites in an environment

    • Install and uninstall the operator

    • Quickstart install NiFi clusters

    • Perform common configuration tasks using flags, with the ability to provide a helmvalues.yaml file

    • Install using default image location without the need to provide it manually

  5. Install CFM Operator.
    Install CFM Operator using the cfmctl install command:
    ./cfmctl install --license [***LICENSE***] \
    --image-repository "[***IMAGE REPOSITORY***]" \
    --image-tag "[***OPERATOR VERSION***]" \
    –values [***VALUES.YAML***] \
    --namespace [***CFM OPERATOR NAMESPACE***]


    • [***LICENSE***] with the license file. This flag is mandatory.

    • [***IMAGE REPOSITORY***] Defaults to “” unless a Helm values.yaml is provided. This flag is optional.

    • [***OPERATOR TAG***] Defaults to “latest” unless a Helm values.yaml is provided. This flag is optional.

    • [***VALUES.YAML***] with a Helm values.yaml file to supply any variables to the underlying helm chart that is not available through cfmctl command flags. This flag is optional.

    • [***CFM OPERATOR NAMESPACE***] with the desired operator installation namespace. Defaults to "cfm-operator-system".

    This command installs the CustomResourceDefinitions and Helm chart for the operator, and starts the operator.

    $ ./cfmctl install --license ./license.txt --image-repository "" --image-tag "2.8.0-b94"
    2024-06-11T21:22:19.678+0200	INFO	cli.install	cmd/install.go:90	installing chart	{"namespace": "cfm-operator-system"}
    2024-06-11T21:22:23.820+0200	INFO	cli.install.helmclient	cmd/install.go:162	creating 1 resource(s)
    2024-06-11T21:22:24.601+0200	INFO	cli.install.helmclient	cmd/install.go:162	creating 18 resource(s)
    2024-06-11T21:22:26.063+0200	INFO	cli.install.helmclient	cmd/install.go:162	beginning wait for 18 resources with timeout of 10m0s
    2024-06-11T21:22:26.697+0200	INFO	cli.install.helmclient	cmd/install.go:162	Deployment is not ready: cfm-operator-system/cfm-operator. 0 out of 1 expected pods are ready
    2024-06-11T21:24:28.414+0200	INFO	cli.install.helmclient	cmd/install.go:162	release installed successfully: cfm-operator/cfm-operator-0.0.0-dev
    1. Create your license secret.
      kubectl create secret generic cfm-operator-license --from-file=license.txt=[***PATH/TO/LICENSE.TXT***]
      Replace [***PATH/TO/LICENSE.TXT***] with the relative path to the license file
    2. Run Helm install.
      helm install cfm-operator ./charts/cfm-operator \
             --create-namespace \
             --namespace [***CFM OPERATOR NAMESPACE***] \
             --set installCRDs=true \
             --set image.repository=[***IMAGE REPOSITORY***] \
             --set image.tag=[***CFM OPERATOR VERSION***] \
             --set licenseSecret=cfm-operator-license
      • [***CFM OPERATOR NAMESPACE***] with the desired operator installation namespace, for example "cfm-operator-system".

      • [***IMAGE REPOSITORY***] with your target repository.

      • [***CFM OPERATOR VERSION***] with your desired operator version.

  6. Validate your installation.
    1. Check if CustomResourceDefinitions for NiFi were installed or updated:
      kubectl get crds | grep nifi
    2024-01-25T21:31:28Z 2024-01-25T21:31:29Z
    2. Check if a CFM Operator pod is up and running:
      kubectl get pods -n cfm-operator-system
      NAME                            READY   STATUS    RESTARTS   AGE
      cfm-operator-545bfbc96b-sx4jt   2/2     Running   0          18m

With the operator installed and running, you can create and manage instances of NiFi and NiFi Registry by manipulating the Kubernetes object definitions.