4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ubuntu 18.04にHarbor 1.10をインストールする

Last updated at Posted at 2020-05-06

はじめに

TKGで作成したKubernetesクラスタ用にプライベートレポジトリを試してみたくなったので、vSphere上にUbuntu 18.04仮想マシンを作成してHarborをインストールしてみました。

準備

Harborの公式ドキュメントでは、以下がインストールに必要な最低スペックとして記載されています。このスペックに合わせて、仮想マシンを作成しUbuntu 18.04をインストールします。

  • CPU:2 CPU
  • メモリ:4 GB
  • ストレージ:40GB

ソフトウェア観点では、以下がインストールされている必要があります。

  • Docker:17.06.0+
  • Docker Compose:1.18.0+
  • OpenSSL:できる限り最新のもの

ネットワーク観点では、以下のポートが開放されている必要があります。

  • 443(HTTPS)
  • 4443(HTTPS)
  • 80(HTTP)

なお、今回の環境ではネットワークは以下のような設定になっています。

  • ホスト名:harbor
  • IPアドレス:192.168.7.103
  • FQDN:harbor.tta.local

DockerとDocker Composeのインストール

DockerとDocker Composeのインストールに関しては、公式ドキュメントだけ記載します。

証明書の作成

Harbor自体は証明書がなくてもインストール可能ですが、HTTPSアクセスができないと使用できない機能があります。今回は全ての機能について有効化するため、公式ドキュメントの手順に従って、CA証明書とサーバ証明書を作成します。

  1. 作業用ディレクトリcertをホームディレクトリ配下に作成します。

    $ mkdir ~/cert
    $ cd ~/cert
    
  2. CA用の秘密鍵ca.keyを生成します。

    $ openssl genrsa -out ca.key 4096
    
  3. CA証明書ca.crtを生成します。コモンネームには、Harborをインストールする仮想マシンのFQDNを指定します。

    $ openssl req -x509 -new -nodes -sha512 -days 3650 \
        -subj "/C=JP/ST=Tokyo/L=Tokyo/O=homelab/OU=homelab/CN=harbor.tta.local" \
        -key ca.key \
        -out ca.crt
    
  4. サーバ証明書用の秘密鍵harbor.tta.local.keyを生成します。

    $ openssl genrsa -out harbor.tta.local.key 4096
    
  5. CSRを生成します。

    $ touch ~/.rnd
    $ openssl req -sha512 -new \
        -subj "/C=JP/ST=Tokyo/L=Tokyo/O=homelab/OU=homelab/CN=harbor.tta.local" \
        -key harbor.tta.local.key \
        -out harbor.tta.local.csr
    
  6. X509 v3 extensionファイルv3.extを生成します。[alt_names]には、Harbor用仮想マシンのFQDN、ホスト名、IPアドレスを指定します。

    $ cat > v3.ext <<EOF
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1=harbor.tta.local
    DNS.2=harbor
    IP.1=192.168.7.103
    EOF
    
  7. v3.extを使って、Harbor用のサーバ証明書を生成します。

    $ openssl x509 -req -sha512 -days 3650 \
        -extfile v3.ext \
        -CA ca.crt -CAkey ca.key -CAcreateserial \
        -in harbor.tta.local.csr \
        -out harbor.tta.local.crt
    

証明書の配置

  1. /data/certディレクトリを作成して、サーバ証明書をコピーします。

    $ sudo mkdir -p /data/cert
    $ sudo cp harbor.tta.local.crt /data/cert/
    $ sudo cp harbor.tta.local.key /data/cert/
    
  2. Docker用に証明書と秘密鍵をコピーします。

    $ openssl x509 -inform PEM -in harbor.tta.local.crt -out harbor.tta.local.cert
    $ sudo mkdir -p /etc/docker/certs.d/harbor.tta.local
    $ sudo cp harbor.tta.local.cert /etc/docker/certs.d/harbor.tta.local
    $ sudo cp harbor.tta.local.key /etc/docker/certs.d/harbor.tta.local
    $ sudo cp ca.crt /etc/docker/certs.d/harbor.tta.local
    
  3. Dockerをリスタートします。

    $ sudo systemctl restart docker
    

Harborのインストール

  1. Harborのリリースページからオンラインインストーラーをダウンロードして、展開します。※今回は、1.10.2をインストールします。

    $ wget https://github.com/goharbor/harbor/releases/download/v1.10.2/harbor-online-installer-v1.10.2.tgz
    $ tar -xzvf harbor-online-installer-v1.10.2.tgz
    
  2. インストーラーに含まれているharbor.ymlを以下のように編集します。

    $ cd ./harbor
    $ grep -v -e '^\s*#' -e '^\s*$' harbor.yml 
    hostname: harbor.tta.local
    http:
      port: 80
    https:
      port: 443
      certificate: /etc/docker/certs.d/harbor.tta.local/harbor.tta.local.cert
      private_key: /etc/docker/certs.d/harbor.tta.local/harbor.tta.local.key
    harbor_admin_password: VMware123!
    database:
      password: VMware123!
      max_idle_conns: 50
      max_open_conns: 100
    data_volume: /data
    clair:
      updaters_interval: 12
    jobservice:
      max_job_workers: 10
    notification:
      webhook_job_max_retry: 10
    chart:
      absolute_url: disabled
    log:
      level: info
      local:
        rotate_count: 50
        rotate_size: 200M
        location: /var/log/harbor
    _version: 1.10.0
    proxy:
      http_proxy:
      https_proxy:
      no_proxy:
      components:
        - core
        - jobservice
        - clair
        - trivy
    
  3. インストールスクリプトを実行します。

    $ sudo ./install.sh --with-notary --with-clair --with-chartmuseum
    
  4. インストール完了後、https://harbor.tta.localにアクセスすると以下のようにログイン画面が表示されます。

    harbor_login.png

HarborにDockerイメージをpushする

macOSからnginxイメージをHarborにpushしてみます。

  1. CA証明書をMacにインポートします。

    $ security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ./ca.crt
    
  2. Dockerを一度再起動した後、Harborにログインします。

    $ docker login harbor.tta.local
    Username: admin
    Password: 
    Login Succeeded
    
  3. nginxイメージをpullします。

    $ docker pull nginx:latest
    
  4. nginxイメージをHarborにpushします。

    $ docker tag nginx:latest harbor.tta.local/library/nginx:latest
    $ docker push harbor.tta.local/library/nginx:latest
    
  5. Harborの[Projects]画面からlibraryプロジェクトに移動し、[Repositories]タブから一覧にnginxイメージがpushされていることを確認します。

    nginx_pushed.png
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?