OVAのharborをデプロイして、IPアドレスでdocker pushする。

ITのブログ

概要

コンテナレジストリにhttpsで接続する場合、証明書が必要となります。IPアドレスで証明書を作成して、docker pushを行う場合の手順を記載しました。harborは仮想アプライアンスを使用しています。

環境

#ソフトウェアバージョン
2Rocky Linux9.1
3docker-ce3:23.0.2-1
4containerd.io1.6.20-3.1
5docker-compose-plugin2.17.2-1
6harbor2.6.3

前提

  • Rocky Linuxのインストールで「最小限のインストール」を選択
  • 検証であるため、firewalldを無効化
  • インターネットに接続できる環境で実施
  • 証明書作成用のRockey Linuxは事前に作成

手順

証明書の作成

1.ディレクトリ作成と移動

mkdir /harbor ; cd /harbor

2.CA証明書のプライベートキーを作成

openssl genrsa -out ca.key 4096

3.CA証明書の作成
※サブジェクトは所属している組織に合わせて修正が必要です。

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Tokyo/L=Tokyo/O=example/OU=Personal/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt

4.プライベートキーの作成

openssl genrsa -out yourdomain.com.key 4096

5.CSRの作成
※サブジェクトは所属している組織に合わせて修正が必要です。

openssl req -sha512 -new \
    -subj "/C=CN/ST=Tokyo/L=Tokyo/O=example/OU=Personal/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr

6.x509 v3 拡張ファイルの作成

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
IP.1=<IPアドレス>
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=harbor
EOF

7.v3.extファイルを使用して証明書の作成

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt


harborのデプロイ

1.vSphere Clientを開く
2.ESXiホストのインベントリを右クリックし、「OVFテンプレートのデプロイ」をクリックする。
3.「ローカルファイル」をチェックし、「ファイルのアップロード」をクリックする。
4.対象のOVAを選択し、「開く」をクリックする。
5.「OVFテンプレートの選択」画面で「次へ」をクリックする。
6.仮想マシン名を変更し、配置先を選択して、「次へ」をクリックする。
7.配置先のESXiを選択して、「次へ」をクリックする。
8.「詳細の確認」画面は、「次へ」をクリックする。
9.「使用許諾契約書」画面は、「すべての使用許諾契約書に同意します。」にチェックを入れ、「次へ」をクリックする。
10.「データストア」を選択し、必要に応じて、ディスクフォーマットを変更して、「次へ」をクリックする。
11.「ネットワークの選択」画面は必要に応じてポートグループを変更して「次へ」をクリックする。
12.「テンプレートのカスタマイズ」画面は以下を入力して「次へ」をクリックする。

#設定項目パラメータ
1Root Password (required)<パスワードを入力>
2Allow SSH via Rootチェック有
3HostnameIPアドレス
例:192.168.xxx.xxx
4Administrator Password (required)<パスワードを入力>
5Harbor Database Password<パスワードを入力>
7Enable Harbor Default Scannerチェック無
8Use Self-signed Certificate For Harborチェック無
9CA Certificateca.crtのcatコマンドで表示される内容を入力
10Server Certificateyourdomain.com.csrのcatコマンドで表示される内容を入力
11Server Keyyourdomain.com.keyのcatコマンドで表示される内容を入力
12IP Address<IPアドレス>
13Subnet Mask<ネットネットマスク>
14Gateway<ゲートウェイのIPアドレス>
15DNS<DNSのIPアドレス>
16DNS Domain<ドメイン名>

14.「最近のタスク」画面で「OVFテンプレートのデプロイ」が「完了」となっていることを確認する。
15.デプロイした仮想マシンを右クリックし「電源」-「パワーオン」をクリックする。

docker pushの実施

1.dockerのrepoを登録

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

2.dockerのインストール
※対話は全て「y」を押下する。

dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

3.dockerの起動と自動起動設定

systemctl enable --now docker

4.dockerクライアントの証明書配置ディレクトリを作成

mkdir -p /etc/docker/cert.d/192.168.222.185:443

5.dockerクライアントが使用する証明書の名称変更

mv yourdomain.com.crt yourdomain.com.cert

6.dockerクライアントが使用する証明書の配置

cp ca.crt yourdomain.com.cert yourdomain.com.key /etc/docker/cert.d/<IPアドレス>:443/

7.systemctlのdaemon-reload

systemctl daemon-reload

8.dockerの再起動

systemctl restart docker

9.nginxをdocker pull

docker pull nginx

10.nginxのtag変更

docker tag nginx:latest <IPアドレス>:443/library/nginx:latest

11.harborへのログイン

docker login <IPアドレス>:443

12.docker pushの実行

docker push 192.168.222.120:443/library/nginx

コメント

タイトルとURLをコピーしました