HelmでローカルにHarborを構築してみる

2022.04.04
2024.03.24
コンテナ
HarborHelmHelmfile

はじめに

Helmを使ってローカルにHarborを構築して、色々試せる環境を作りたいと思います。

今回はHelmとhelmfileを使います。helmfileについては、下記で解説していますが、Helmチャートを宣言的にデプロイできるツールです。

【Helm】helmfile使ってみる

【Helm】helmfile使ってみる

:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。

Harborとは

Harborとは、オープンソースのコンテナレジストリです。

Harbor

Harbor

Our mission is to be the trusted cloud native repository for Kubernetes

レジストリについては下記で解説しています。

【Docker】レジストリとリポジトリ

【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

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

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.

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee