provider-harbor

module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 12, 2025 License: Apache-2.0

README

Provider Harbor

✅ BUILD STATUS: STABLE - Successfully migrated to modern stable dependencies (v0.3.0)

provider-harbor is a Crossplane provider that is built using Upjet v1.9.0 and exposes XRM-conformant managed resources for the Harbor container registry API.

Migration Success ✅

2025-01-27: Successfully migrated from RC dependencies to stable versions

  • Upjet: v0.11.0-rc → v1.9.0 (stable)
  • Crossplane Runtime: v1.16.0-rc → v1.20.0 (stable)
  • Generated Resources: 20 Harbor resources with modern Crossplane patterns
  • Build Status: ✅ Successful compilation and generation

Features

  • Registry Management: External container registry integration (Docker Hub, AWS, Azure, etc.)
  • Project Management: Projects, repositories, and member access control
  • Security Scanning: Vulnerability scanning, CVE allowlists, and compliance policies
  • Webhooks: HTTP/Slack notifications for project events
  • Replication: Cross-registry replication with filtering
  • Robot Accounts: Automated service accounts for CI/CD

Container Registry

  • Primary: ghcr.io/rossigee/provider-harbor:v0.3.0
  • Harbor: Available via environment configuration
  • Upbound: Available via environment configuration

Getting Started

Install the provider by using the following command:

up ctp provider install ghcr.io/rossigee/provider-harbor:v0.3.0

Alternatively, you can use declarative installation:

cat <<EOF | kubectl apply -f -
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-harbor
spec:
  package: ghcr.io/rossigee/provider-harbor:v0.3.0
EOF

Notice that in this example Provider resource is referencing ControllerConfig with debug enabled.

You can see the API reference here.

Provider Config

Note, that the ProviderConfig uses basic auth and requires a local user. A robot user can be used, but has restrictions around what can be created (e.g. a Robot cannot create other Robots).

Developing

Run code-generation pipeline:

go run cmd/generator/main.go "$PWD"

Run against a Kubernetes cluster:

make run

Build, push, and install:

make all

Build binary:

make build

Report a Bug

For filing bugs, suggesting improvements, or requesting new features, please open an issue.

Directories

Path Synopsis
Package apis contains Kubernetes API for the provider.
Package apis contains Kubernetes API for the provider.
config/v1alpha1
+kubebuilder:object:generate=true +groupName=config.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=config.harbor.crossplane.io +versionName=v1alpha1
garbagecollection/v1alpha1
+kubebuilder:object:generate=true +groupName=garbagecollection.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=garbagecollection.harbor.crossplane.io +versionName=v1alpha1
group/v1alpha1
+kubebuilder:object:generate=true +groupName=group.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=group.harbor.crossplane.io +versionName=v1alpha1
interrogationservices/v1alpha1
+kubebuilder:object:generate=true +groupName=interrogationservices.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=interrogationservices.harbor.crossplane.io +versionName=v1alpha1
label/v1alpha1
+kubebuilder:object:generate=true +groupName=label.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=label.harbor.crossplane.io +versionName=v1alpha1
preheatinstance/v1alpha1
+kubebuilder:object:generate=true +groupName=preheatinstance.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=preheatinstance.harbor.crossplane.io +versionName=v1alpha1
project/v1alpha1
+kubebuilder:object:generate=true +groupName=project.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=project.harbor.crossplane.io +versionName=v1alpha1
purgeauditlog/v1alpha1
+kubebuilder:object:generate=true +groupName=purgeauditlog.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=purgeauditlog.harbor.crossplane.io +versionName=v1alpha1
registry/v1alpha1
+kubebuilder:object:generate=true +groupName=registry.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=registry.harbor.crossplane.io +versionName=v1alpha1
robotaccount/v1alpha1
+kubebuilder:object:generate=true +groupName=robotaccount.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=robotaccount.harbor.crossplane.io +versionName=v1alpha1
tasks/v1alpha1
+kubebuilder:object:generate=true +groupName=tasks.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=tasks.harbor.crossplane.io +versionName=v1alpha1
user/v1alpha1
+kubebuilder:object:generate=true +groupName=user.harbor.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=user.harbor.crossplane.io +versionName=v1alpha1
v1alpha1
Package v1alpha1 contains the core resources of the harbor jet provider.
Package v1alpha1 contains the core resources of the harbor jet provider.
v1beta1
Package v1beta1 contains the core resources of the harbor upjet provider.
Package v1beta1 contains the core resources of the harbor upjet provider.
cmd
generator command
provider command
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL