provider-harbor

module
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Sep 17, 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 with Docker config JSON support

Container Registry

  • Primary: ghcr.io/rossigee/provider-harbor:v0.5.3
  • 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.5.3

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.5.3
EOF

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

You can see the API reference here.

Docker Config JSON Support

New in v0.5.3: RobotAccount resources now support creating Docker config JSON style secrets while maintaining 100% backward compatibility.

Enhanced Connection Details

All RobotAccount resources now provide:

  • Legacy fields: username, password, robot_id (unchanged)
  • Docker config helpers: docker-config-template, docker-auth, etc. (new)
Quick Example
apiVersion: robotaccount.harbor.crossplane.io/v1alpha1
kind: RobotAccount
metadata:
  name: docker-config-robot
spec:
  forProvider:
    level: project
    name: my-robot
    permissions:
      - access:
          - action: pull
            resource: repository
        kind: project
        namespace: myproject
  writeConnectionSecretToRef:
    name: robot-credentials
    namespace: default

The resulting secret contains both legacy fields and Docker config JSON helpers that can be used to create kubernetes.io/dockerconfigjson secrets for image pull authentication.

📖 Full Documentation: RobotAccount Docker Config JSON Guide

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
scanner/v1alpha1
Package v1alpha1 contains the core resources of the harbor upjet provider.
Package v1alpha1 contains the core resources of the harbor upjet provider.
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