Deploying Harbor HA on a K8s cluster
Requirements
Setting up a cluster
Please setup a Kubernetes cluster (please see the following guide: Cluster API Setup ).
Once you have got your cluster up and running you can start deploying Harbor HA.
Adding the Harbor Helm repo
Add the Harbor repo to Helm
helm repo add harbor https://helm.goharbor.io
PostSQL Database
Setup a new PSQL database, please see the following guide (How To Install and Use PostgreSQL on Ubuntu 20.04 | DigitalOcean ) and create a new database called registry
for Harbor Core (this is where Harbor will store information about itself).
You will then also need to create an account for Harbor to access the database with, so it can create new tables and manage itself.
You may also need to configure the fire wall and security groups for your database and cluster to be able to talk to each other.
Configuring the chart
*Note this configuration reflects the current state of development.
For a full list of configurable variables please see: GitHub - goharbor/harbor-helm: The helm chart to deploy Harbor
A full example Harbor values file can be seen here: harbor-helm/values.yaml at main · goharbor/harbor-helm
Our Harbor HA configuration
Please download and configure each section of the harbor-values.yaml
file from cloud-deployed-apps https://github.com/stfc/cloud-deployed-apps/blob/main/prod-values/harbor-values.yaml
S3 configuration
You will need to create EC2 credentials on OpenStack in order to configure S3 in Harbor HA, please see the following guide: Create EC2 Credentials for Swift S3 API Access | OpenMetal Docs
Installing Harbor HA
Once you have saved all the above configuration into a harbor-values.yaml
file we can install Harbor HA onto the cluster.
helm install my-harbor-release harbor/harbor -f harbor-values.yaml
It can take a few minutes to deploy.
Check the status of the deployment with
kubectl get pods
You can continue to update the chart with
You should now be able to connect to Harbor on the browser via the IP address you set in the harbor-values.yaml file.
You should now be able to run kubectl delete storageclass --all
and the deployment will be unaffected.
Harbor replication
“Due to API changes, replication between different versions of Harbor API is not supported.”
Creating replication endpoints are quite straight forward, you will need to configure an account or credentials, then configure an endpoint and replication rules. Which you can define to do either push or pull based replication with various filters, either auto or manual. See:
https://goharbor.io/docs/2.1.0/administration/configuring-replication/create-replication-endpoints/
https://goharbor.io/docs/2.1.0/administration/configuring-replication/create-replication-rules/
https://goharbor.io/docs/2.1.0/administration/configuring-replication/manage-replications/
This does NOT replicate user account, rules, config etc. We may need to do backups and migration separately, some of these guides could be useful. https://goharbor.io/docs/2.9.0/administration/upgrade/helm-upgrade/
References
https://goharbor.io/docs/2.9.0/install-config/harbor-ha-helm/