Skip to main content
The operator image has been pushed. The next step is to install the in-cluster manifests that reference that image: a CustomResourceDefinition (CRD), RBAC roles/bindings, a Service for metrics, and the controller Deployment. The operator scaffold’s Makefile provides a deploy target that generates and applies these manifests, using the IMG variable to set the controller image used by Kustomize.
The image is a slide titled "Installing With Make Deploy," featuring a large dark blue shape on the right with the word "Demo." It includes a copyright notice for KodeKloud.

Key Makefile fragments

Top of the Makefile (trimmed) defines the default image and the container tooling:
Inspect the deploy target — the important step is kustomize edit set image, which updates the manager image in config/manager before building and applying the customized manifests:
Always pass the exact IMG value to make deploy that you used when building and pushing the image. If IMG is omitted or incorrect, the generated Deployment can reference a placeholder image and your pods may fail to pull.

Run make deploy

Set IMG to the registry image you pushed and run make deploy. The Make target generates CRDs and RBAC, updates the manager image in Kustomize, builds the final manifests, and applies them to the cluster.
Example trimmed output showing resources being created:
If the image reference is wrong or your cluster cannot pull from the registry, pod events will typically show ImagePullBackOff or similar error messages.
Ensure the registry referenced by IMG is accessible from the cluster nodes (network and authentication). Private registries often require imagePullSecrets or registry credentials configured on the nodes.

Verify rollout and controller readiness

Wait for the controller manager Deployment to roll out. A successful rollout means the controller pod was created and its manager container became ready.
The controller is now running in-cluster as a Pod (not via make run). Inspect its logs to confirm it became leader and started workers:
Typical startup log lines include leader election, metrics server binding, and controller startup, for example:
Worker startup indicates the controller runtime is ready to reconcile WebApp resources.

Confirm the CRD is registered

Verify the API server now understands the webapp custom resource:
A present CRD proves the cluster can accept WebApp objects and the in-cluster controller can reconcile them.

Quick reference: what make deploy creates

Summary / Checklist

  • Build and push your operator image to a registry reachable by the cluster.
  • Use the same image reference when running make deploy via IMG.
  • make deploy updates the Kustomize manager image, builds manifests, and applies them.
  • Wait for the Deployment rollout and confirm the controller Pod is Running.
  • Check controller logs for leader election and worker startup messages.
  • Verify the CRD exists so custom resources can be created and reconciled.

Watch Video

Practice Lab