Skip to content

v0.2.0

Choose a tag to compare

@jonasz-lasut jonasz-lasut released this 20 Jun 14:47
4d200c8

Highlights

  • Cluster-scoped managed resources are now available. Every Harbor resource can be managed at cluster scope (harbor.crossplane.io) in
    addition to the existing namespaced scope (harbor.m.crossplane.io), bringing the provider in line with the dual-scope layout used by
    official Upjet providers.
  • Upstream Harbor Terraform provider updated from v3.11.6 → v3.12.0.

⬆️ Upstream provider update

  • Harbor Terraform provider bumped to v3.12.0 (TERRAFORM_PROVIDER_VERSION).
  • Corrected the oidcClientSecretSecretRef field documentation on Auth ("secert" → "secret").

⚙️ Compatibility / upgrade notes

  • Backward compatible — existing namespaced (harbor.m.crossplane.io) resources are unchanged. The cluster-scoped CRDs are additive.
  • After upgrading, apply the new cluster-scoped CRDs and a cluster-scoped ProviderConfig before creating cluster-scoped resources.

✨ Cluster-scoped resources (new)

All 20 managed resources previously available only as namespaced types are now also generated as cluster-scoped CRDs (scope: Cluster), mirroring the namespaced set one-for-one:

API group Kinds
harbor.crossplane.io Group, Label, Project, Registry, Replication, Tasks, User
config.harbor.crossplane.io Auth, Security, System
project.harbor.crossplane.io MemberGroup, MemberUser, Webhook
garbage.harbor.crossplane.io Collection
immutable.harbor.crossplane.io TagRule
interrogation.harbor.crossplane.io Services
preheat.harbor.crossplane.io Instance
purge.harbor.crossplane.io AuditLog
retention.harbor.crossplane.io Policy
robot.harbor.crossplane.io Account
  • Cross-resource references (e.g. Replication → Registry, project members → Project/Group/User) and the harbor_registry /
    harbor_replication registryId (*int64) handling carry over identically to the cluster scope.

🧱 Internal / structural changes

  • Adopted the upstream Upjet dual-scope configuration layout:
    • config/provider.go (cluster) and config/provider_namespaced.go (namespaced) entrypoints.
    • Per-scope configure registries aggregated under config/cluster and config/namespaced (configuration.go + provider.go).
  • cmd/provider/main.go now registers the cluster APIs with the manager and resolver schemes and starts the cluster controllers (both
    gated and non-gated paths).
  • The generated *int64 registryId resolver patch now applies to both the cluster and namespaced harbor API groups.
  • Fixed goimports local-prefixes in .golangci.yml to the provider's module path.

📚 Examples

  • Added examples/cluster/ — a full mirror of examples/namespaced/ (21 manifests incl. e2e-full.yaml) adapted for cluster scope:
    harbor.crossplane.io API versions, no metadata.namespace, and an explicit namespace: crossplane-system on every *SecretRef.
  • Added examples/cluster/providerconfig/ (cluster-scoped ProviderConfig + secret template).

Full Changelog: v0.1.0...v0.2.0