Contents
概要
公式サイトはこちらです。
Kubernetesクラスター上にHelm対応のHarborを構築します。HarborはHelmコマンド使用してインストールします。Kubernetesクラスターの構築についてはこちらを参照して下さい。
手順
手順はこちらを参考にさせて頂きました。
Helmレポジトリの追加
Helmレポジトリを追加します。
root@k8s-01:~# helm repo add harbor https://helm.goharbor.io "harbor" has been added to your repositories root@k8s-01:~# helm repo list NAME URL harbor https://helm.goharbor.io root@k8s-01:~# helm repo update ...Successfully got an update from the "harbor" chart repository Update Complete. ⎈Happy Helming!⎈
HarborのChart取得と設定値の編集
HarborのChartを取得します。–untarは.tgzを展開した状態でカレントディレクトリ(今回は/root)にダウンロードします。
root@k8s-01:~# helm pull harbor/harbor --untar
各ノードのIPアドレスを確認します。
root@k8s-01:~# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-01 Ready control-plane,master 13d v1.22.2 192.168.68.11Ubuntu 20.04.3 LTS 5.4.0-89-generic containerd://1.5.2 k8s-02 Ready 13d v1.22.2 192.168.68.12 Ubuntu 20.04.3 LTS 5.4.0-89-generic containerd://1.5.2 k8s-03 Ready 13d v1.22.2 192.168.68.13 Ubuntu 20.04.3 LTS 5.4.0-89-generic containerd://1.5.2
下記の設定値を環境に合わせて変更します。今回は簡易的にnodePortを使用して外部に公開しますが、Loadblancerが望ましいですね。尚、commonName, externalURLでMasterノードのIPアドレスを設定していますが、これはHarbor(nginx)自体の設定であり、nodePortは関係ありません。nodePortはどのノードに接続しても問題ない為です。HarborにはSSLでアクセスする為、そのcommonNameを指定しているだけです。
root@k8s-01:~# vim /root/harbor/values.yaml expose: type: nodePort tls: auto: commonName: "192.168.68.11" externalURL: https://192.168.68.11:30003 persistence: enabled: false
Namespaceの追加
Harbor用のNamespaceを追加します。
root@k8s-01:~# kubectl create namespace harbor-system namespace/harbor created root@k8s-01:~# kubectl get namespace NAME STATUS AGE calico-apiserver Active 32h calico-system Active 32h default Active 32h harbor-system Active 31h kube-node-lease Active 32h kube-public Active 32h kube-system Active 32h metallb-system Active 5h40m tigera-operator Active 32h
Harborのインストール
Harborをインストールします。
root@k8s-01:~# helm install harbor -n harbor-system -f /root/harbor/values.yaml harbor/harbor
Harborの状態確認
下記の通り、多くのオブジェクトが作成されます。環境にもよりますが、リソースが少ない環境では、全てがRunningになるまで10分ほどかかるかもしれません。
root@k8s-01:~# kubectl get all -n harbor-system pod/harbor-chartmuseum-8cb94889b-ccctz 1/1 Running 0 31h pod/harbor-core-687b977854-nfb4g 1/1 Running 0 31h pod/harbor-database-0 1/1 Running 0 31h pod/harbor-jobservice-648cb9b764-t7fzb 1/1 Running 0 31h pod/harbor-nginx-597c4987c8-4ppft 1/1 Running 0 31h pod/harbor-notary-server-b78c46799-28mcn 1/1 Running 1 (31h ago) 31h pod/harbor-notary-signer-6fc5b88fd6-z4rlw 1/1 Running 2 (31h ago) 31h pod/harbor-portal-7dcf769575-t9zgr 1/1 Running 0 31h pod/harbor-redis-0 1/1 Running 0 31h pod/harbor-registry-5d56d8d4d9-2f76f 2/2 Running 0 31h pod/harbor-trivy-0 1/1 Running 0 31h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/harbor NodePort 10.109.133.8080:30002/TCP,443:30003/TCP,4443:30004/TCP 31h service/harbor-chartmuseum ClusterIP 10.103.79.118 80/TCP 31h service/harbor-core ClusterIP 10.105.55.144 80/TCP 31h service/harbor-database ClusterIP 10.111.57.215 5432/TCP 31h service/harbor-jobservice ClusterIP 10.107.99.54 80/TCP 31h service/harbor-notary-server ClusterIP 10.103.168.131 4443/TCP 31h service/harbor-notary-signer ClusterIP 10.101.70.251 7899/TCP 31h service/harbor-portal ClusterIP 10.106.117.130 80/TCP 31h service/harbor-redis ClusterIP 10.107.158.78 6379/TCP 31h service/harbor-registry ClusterIP 10.107.193.95 5000/TCP,8080/TCP 31h service/harbor-trivy ClusterIP 10.98.178.100 8080/TCP 31h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/harbor-chartmuseum 1/1 1 1 31h deployment.apps/harbor-core 1/1 1 1 31h deployment.apps/harbor-jobservice 1/1 1 1 31h deployment.apps/harbor-nginx 1/1 1 1 31h deployment.apps/harbor-notary-server 1/1 1 1 31h deployment.apps/harbor-notary-signer 1/1 1 1 31h deployment.apps/harbor-portal 1/1 1 1 31h deployment.apps/harbor-registry 1/1 1 1 31h NAME DESIRED CURRENT READY AGE replicaset.apps/harbor-chartmuseum-8cb94889b 1 1 1 31h replicaset.apps/harbor-core-687b977854 1 1 1 31h replicaset.apps/harbor-jobservice-648cb9b764 1 1 1 31h replicaset.apps/harbor-nginx-597c4987c8 1 1 1 31h replicaset.apps/harbor-notary-server-b78c46799 1 1 1 31h replicaset.apps/harbor-notary-signer-6fc5b88fd6 1 1 1 31h replicaset.apps/harbor-portal-7dcf769575 1 1 1 31h replicaset.apps/harbor-registry-5d56d8d4d9 1 1 1 31h NAME READY AGE statefulset.apps/harbor-database 1/1 31h statefulset.apps/harbor-redis 1/1 31h statefulset.apps/harbor-trivy 1/1 31h
Harborにアクセス確認
ブラウザから”https://192.168.68.11:30003″を指定してHarborのダッシュボードにアクセスできます。
Helm Chartのアップロード
Harborのダッシュボード内でHelm Chartをアップロードできますが、元のHelm Chartは.tgzでダウンロードしておく必要があります。helm pullを–untarをつけずに実行することで.tgzでダウンロードできます。
root@k8s-01:~# helm pull harbor/harbor