v1.4.0

Change your operator’s finalizer names

The finalizer name format suggested by Kubernetes docs is <qualified-group>/<finalizer-name>, while the format previously documented by Operator SDK docs was <finalizer-name>.<qualified-group>. If your operator uses any finalizers with names matching the incorrect format, change them to match the official format. For example, finalizer.cache.example.com should be changed to cache.example.com/finalizer.

See #4472 for more details.

For Helm and Ansible projects, fix the helm-operator and ansible-operator URLs in the Makefile

  • Helm projects: Old: https://github.com/operator-framework/operator-sdk/releases/download/v1.3.0/helm-operator-v1.3.0-$(ARCHOPER)-$(OSOPER) New: https://github.com/operator-framework/operator-sdk/releases/download/v1.3.1/helm-operator_$(OS)_$(ARCH)
  • Ansible projects: Old: https://github.com/operator-framework/operator-sdk/releases/download/v1.3.0/ansible-operator-v1.3.0-$(ARCHOPER)-$(OSOPER) New: https://github.com/operator-framework/operator-sdk/releases/download/v1.3.1/ansible-operator_$(OS)_$(ARCH)

See #4407 for more details.

For Helm and Ansible projects, fix the helm-operator, ansible-operator, and kustomize Makefile rules

These rules will download a local binary but not use it if a global binary is present. See the diff in this PR for how to fix this.

See #4412 for more details.

For Helm-based operators, add Liveness and Readiness probe

New projects built with the tool will have the probes configured by default. The endpoints /healthz and /readyz are available now in the image based provided. You can update your pre-existing project to use them. For that update the Dockerfile to use the latest release base image, then add the following to the manager container in config/manager/manager.yaml:

  livenessProbe:
    httpGet:
      path: /healthz
      port: 8081
    initialDelaySeconds: 15
    periodSeconds: 20
  readinessProbe:
    httpGet:
      path: /readyz
      port: 8081
    initialDelaySeconds: 5
    periodSeconds: 10

See #4326 for more details.

For Ansible-based operators, add Liveness and Readiness probe

New projects built with the tool will have the probes configured by default. The endpoints /healthz and /readyz are available now in the image based provided. You can update your pre-existing project to use them. For that update the Dockerfile to use the latest release base image, then add the following to the manager container in config/manager/manager.yaml:

  livenessProbe:
    httpGet:
      path: /healthz
      port: 6789
    initialDelaySeconds: 15
    periodSeconds: 20
  readinessProbe:
    httpGet:
      path: /readyz
      port: 6789
    initialDelaySeconds: 5
    periodSeconds: 10

See #4326 for more details.

(go/v2) Change go PROJECT plugin object to manifests and scorecard objects

The manifests and scorecard plugins that create OLM and scorecard manifests, respectively, now have plugin objects that direct create subcommands to create related files. While the old go plugin configuration object is still supported, these new objects will be useful in the future as configuration options are added to their respective plugins:

Old:

version: 3-alpha
...
plugins:
  go.sdk.operatorframework.io/v2-alpha: {}

New:

version: 3-alpha
...
plugins:
  manifests.sdk.operatorframework.io/v2: {}
  scorecard.sdk.operatorframework.io/v2: {}

See #4419 for more details.

(ansible/v1, helm/v1) Add manifests and scorecard plugin objects to your PROJECT

The manifests and scorecard plugins that create OLM and scorecard manifests, respectively, now have plugin objects that direct create subcommands to create related files. While not necessary to add, these new plugin configuration objects in the PROJECT file will be useful in the future as configuration options are added to their respective plugins:

version: 3-alpha
...
plugins:
  manifests.sdk.operatorframework.io/v2: {}
  scorecard.sdk.operatorframework.io/v2: {}

See #4419 for more details.

Move positional directory argument . in docker-build make target

The directory argument . in the docker-build make target was moved to the last positional argument to align with podman's expectations, making substitution cleaner.

Old:

docker-build:
  docker build . -t ${IMG}

New:

docker-build:
  docker build -t ${IMG} .

Alternatively, you could replace it programmatically

sed -i 's/docker build . -t ${IMG}/docker build -t ${IMG} ./' $(git grep -l 'docker.*build \. ')

See #4466 for more details.