- Kubernetes 1.19+
- Helm 3.2.0+
- [If enabled] A persistent storage resource and RW access to it
- [If enabled] Kubernetes StorageClass for dynamic provisioning
helm repo add harbor https://helm.goharbor.io
helm repo update
instance_public_ip="$(curl ifconfig.me --silent)"
helm install harbor harbor/harbor \
--create-namespace \
--namespace=harbor \
--set expose.type=nodePort \
--set expose.nodePort.ports.http.nodePort=32080 \
--set expose.nodePort.ports.https.nodePort=32443 \
--set expose.nodePort.ports.notary.nodePort=32081 \
--set externalURL=https://${instance_public_ip}:32443 \
--set expose.tls.enabled=false \
--set ipFamily.ipv6.enabled=false \
--set harborAdminPassword=Password
Docker Login
# docker login YOUR_IP:32443
Tag an image for this project:
# docker tag SOURCE_IMAGE[:TAG] YOUR_IP:32443/library/REPOSITORY[:TAG]
Push an image to this project:
# docker push YOUR_IP:32443/library/REPOSITORY[:TAG]
Package a chart for this project:
# helm package CHART_PATH
Push a chart to this project:
# helm push CHART_PACKAGE oci://YOUR_IP:32443/library
/etc/docker/daemon.json
{
"insecure-registries":["YOUR_IP:32443"]
}
systemctl restart docker
kubectl patch configmap/harbor-core \
-n harbor \
--type merge \
-p '{"data":{"EXT_ENDPOINT":"https://repo.taking.kr"}}'
kubectl rollout restart deployment harbor-core -n harbor
(Option) Containerd Only - Nerdctl (Not Yet)
Nerdctl download
containerd insecure setting
service restart
private registry login
# nerdctl login -u <USERNAME> YOUR_IP:32443
Pushing an image