HelmでローカルにHarborを構築してみる
はじめに
Helmを使ってローカルにHarborを構築して、色々試せる環境を作りたいと思います。
今回はHelmとhelmfileを使います。helmfileについては、下記で解説していますが、Helmチャートを宣言的にデプロイできるツールです。
【Helm】helmfile使ってみる
:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。
Harborとは
Harborとは、オープンソースのコンテナレジストリです。
Harbor
Our mission is to be the trusted cloud native repository for Kubernetes
レジストリについては下記で解説しています。
【Docker】レジストリとリポジトリ
はじめに Dockerを勉強していて、レジストリとリポジトリの違いで混乱してしまったので、それぞ
セキュリティや脆弱性診断、ロールベースのアクセスコントロールの機能などがついており、プライベートレジストリとして使われています。
用意するファイルとディレクトリ構成
今回用意するファイルは2つのみです。
1.
2├── helmfile.yaml
3└── values.yaml
helmfile.yamlの作成
helmfile.yaml
は下記の通りです。
1releases:
2 - chart: harbor/harbor
3 name: harbor
4 namespace: harbor
5 values:
6 - ./values.yaml
harbor
Namespaceにデプロイするようにしています。
values.yamlの作成
values.yaml
は下記の通りです。
1expose:
2 type: nodePort
3 tls:
4 auto:
5 commonName: "localhost"
NodePortでアクセスできるように設定を上書きします。
デフォルトのvalues.yaml
の値は下記から確認できます。
harbor-helm/values.yaml at main · goharbor/harbor-helm
The helm chart to deploy Harbor. Contribute to goharbor/harbor-helm development by creating an account on GitHub.
helmfileの適用
最初にharbor
Namespaceを作成します。
1kubectl create ns harbor
次にHelmのリポジトリを追加します。
1helm repo add harbor https://helm.goharbor.io
必要なファイルは揃っているので、helmfileを使ってデプロイします。
1helmfile apply
全てのPodがREADYになれば完了です。最初だけ時間がかかるかもしれません。
1❯ kubectl get pod -n harbor
2NAME READY STATUS RESTARTS AGE
3harbor-chartmuseum-5cd489c6c4-qftpt 1/1 Running 0 30m
4harbor-core-86c47cb456-9kl88 1/1 Running 0 30m
5harbor-database-0 1/1 Running 0 51m
6harbor-jobservice-6f9b744849-gjqwg 1/1 Running 0 30m
7harbor-nginx-7df588d499-5x589 1/1 Running 0 30m
8harbor-notary-server-8465c99d7c-pvvdg 1/1 Running 1 (25m ago) 30m
9harbor-notary-signer-6ffdbcdf5f-tpf4f 1/1 Running 0 30m
10harbor-portal-64c4b987b9-hrbdb 1/1 Running 0 51m
11harbor-redis-0 1/1 Running 0 51m
12harbor-registry-54d5f8f4c7-4zp84 2/2 Running 0 30m
13harbor-trivy-0 1/1 Running 0 51m
アクセスしてみる
NodePortのポートを確認します。
1❯ kubectl get svc -n harbor
2NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
3harbor NodePort 10.98.224.199 <none> 80:30002/TCP,443:30003/TCP,4443:30004/TCP 53m
4harbor-chartmuseum ClusterIP 10.106.235.188 <none> 80/TCP 53m
5harbor-core ClusterIP 10.106.158.75 <none> 80/TCP 53m
6harbor-database ClusterIP 10.102.104.157 <none> 5432/TCP 53m
7harbor-jobservice ClusterIP 10.111.212.100 <none> 80/TCP 53m
8harbor-notary-server ClusterIP 10.105.207.163 <none> 4443/TCP 53m
9harbor-notary-signer ClusterIP 10.105.142.192 <none> 7899/TCP 53m
10harbor-portal ClusterIP 10.99.214.61 <none> 80/TCP 53m
11harbor-redis ClusterIP 10.106.52.137 <none> 6379/TCP 53m
12harbor-registry ClusterIP 10.110.225.164 <none> 5000/TCP,8080/TCP 53m
13harbor-trivy ClusterIP 10.107.94.202 <none> 8080/TCP 53m
https://localhost:30003/
でアクセスできます。
ログイン情報は、デフォルトで下記のように設定されています。ユーザー名はadmin
です。
1# The initial password of Harbor admin. Change it from portal after launching Harbor
2harborAdminPassword: "Harbor12345"
harbor-helm/values.yaml at main · goharbor/harbor-helm
The helm chart to deploy Harbor. Contribute to goharbor/harbor-helm development by creating an account on GitHub.
参考
- Harbor
- goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.
- goharbor/harbor-helm: The helm chart to deploy Harbor