Skip navigation
2017

vSphere Integrated Containers (VIC) 1.0 では、デフォルトでは ESXi に登録されていない

ESXi Firewall のルールが必要になります。

ESXi から VCH の Serial Over LAN の通信のため、TCP 2377 番ポートの解放が必要です。

※もしくは、esxcli network firewall set --enabled false で ESXi Firewall を無効にしてしまいます・・・

Firewall Validation Error | VMware vSphere Integrated Containers Engine 0.8 Installation

 

ファイアウォール ルールが設定されていない場合は、

vic-machine で Virtual Container Host (VCH) をデプロイするときに下記のようなメッセージが表示されます。

INFO[2017-01-12T02:51:32+09:00] Firewall status: ENABLED on "/dc01/host/cluster-vsan01/hv-i23.godc.lab"

WARN[2017-01-12T02:51:32+09:00] Firewall configuration on "/dc01/host/cluster-vsan01/hv-i23.godc.lab" may prevent connection on dst 2377/tcp outbound with allowed IPs: [192.168.51.161 192.168.51.239]

 

VCH のデプロイについては、こちらもどうぞ。

vSphere Integrated Containers (VIC) 1.0 をためしてみる。

 

今回は、下記の KB を参考に、ESXi Firewall にルールを追加してみます。

Creating custom firewall rules in VMware ESXi 5.x (2008226) | VMware KB

 

設定するファイアウォール ルール。

  • 発信接続 (outbound)
  • ポート: TCP 2377
  • ルール ID:  vicoutgoing ※これは別の名前でもよい。

 

ファイアウォールルールの追加方法。

ESXi の /etc/vmware/firewall/ ディレクトリ配下の xml ファイルにルールを記載します。

/etc/vmware/firewall/service.xml に追記すればよいですが、今回はあえて

/etc/vmware/firewall/vicoutgoing.xml という別ファイルを作成しました。

 

ESXi 6.0 U2 に設定しています。

[root@hv-i23:~] vmware -vl

VMware ESXi 6.0.0 build-4192238

VMware ESXi 6.0.0 Update 2

 

まだ ファイアウォール ルールは設定されていません。

[root@hv-i23:~] esxcli network firewall ruleset list | grep vic

[root@hv-i23:~]

[root@hv-i23:~] esxcli network firewall ruleset rule list | grep vic

[root@hv-i23:~]

 

vi などのエディタによる編集か、もしくは下記のように、

ファイアウォール ルールを記載した xml ファイルを作成します。

service id は、空いていそうな 300 番を選びました。

cat << EOF > /etc/vmware/firewall/vicoutgoing.xml

<ConfigRoot>

  <service id='0300'>

    <id>vicoutgoing</id>

    <rule id='0000'>

      <direction>outbound</direction>

      <protocol>tcp</protocol>

      <port type='dst'>2377</port>

    </rule>

    <enabled>true</enabled>

    <required>true</required>

  </service>

</ConfigRoot>

EOF

 

xml ファイルが作成されています。

[root@hv-i23:~] cat /etc/vmware/firewall/vicoutgoing.xml

<ConfigRoot>

  <service id='0300'>

    <id>vicoutgoing</id>

    <rule id='0000'>

      <direction>outbound</direction>

      <protocol>tcp</protocol>

      <port type='dst'>2377</port>

    </rule>

    <enabled>true</enabled>

    <required>true</required>

  </service>

</ConfigRoot>

 

ESXi Firewall をリフレッシュすると、ルールが追加されます。

[root@hv-i23:~] esxcli network firewall refresh

[root@hv-i23:~] esxcli network firewall ruleset list | grep vic

vicoutgoing                  true

[root@hv-i23:~] esxcli network firewall ruleset rule list | grep vic

vicoutgoing               Outbound   TCP       Dst              2377      2377

 

vSphere Web Client でも、発信接続のルールが追加されたことが確認できます。

vic-fw-rule-01.png

 

ESXi Firewall ルールの永続化について。

 

上記の方法だと、ESXi の再起動によりルールが消えてしまうので、再起動のたびに登録が必要になります。

そこで私の環境では、やむなく ESXi 起動時に実行される /etc/rc.local.d/local.sh ファイルに

赤字部分 (xml ファイル生成と firewall の reflesh) を記載しています。

[root@hv-i23:~] cat /etc/rc.local.d/local.sh


#!/bin/sh


# local configuration options


# Note: modify at your own risk!  If you do/use anything in this

# script that is not part of a stable API (relying on files to be in

# specific places, specific tools, specific output, etc) there is a

# possibility you will end up with a broken system after patching or

# upgrading.  Changes are not supported unless under direction of

# VMware support.

 

cat << EOF > /etc/vmware/firewall/vicoutgoing.xml

<ConfigRoot>

  <service id='0300'>

    <id>vicoutgoing</id>

    <rule id='0000'>

      <direction>outbound</direction>

      <protocol>tcp</protocol>

      <port type='dst'>2377</port>

    </rule>

    <enabled>true</enabled>

    <required>true</required>

  </service>

</ConfigRoot>

EOF


esxcli network firewall refresh


exit 0

 

以上、VIC の ESXi Firewall ルール設定についての話でした。

vSphere Integrated Containers (VIC) 1.0 には、Harbor という Container Registry が含まれています。

vSphere Integrated Containers


Harbor は、GitHub で公開されています。

Harbor by VMware®


今回は、インストレーション ガイドを参考に、Harbor をセットアップしてみます。

harbor/installation_guide.md at master · vmware/harbor · GitHub


Harbor のセットアップには、3通りのセットアップ方法があります。

  • Online installer ※Harbor のコンテナイメージをインターネットからダウンロードする。
  • Offline installer ※インストール対象のサーバがインターネット接続できない場合はこれ。
  • Virtual Appliance ※OVA をデプロイ。

今回は、Harbor のソフトウェア構成が分かりやすい Online installer を使用しています。

ただし、VIC の製品サポートが必要な場合は、
MyVMware からダウンロードした OVA を使用することになります。

 

今回の構成。

Harbor と Docker Host の2台の VM を、VMware Workstation 12 にデプロイします。

ただし、Harbor のサーバでも Docker Engine が起動するので 1台 だけでも大丈夫です。


Harbor は、VIC 1.0 に含まれるバージョンと同じ、
Harbor 0.5 を GitHub からダウンロードして使用します。

 

Harbor と、そこにアクセスする Docker Host の OS は、どちらも Photon OS 1.0 を使用しています。

下記にある「OVA with virtual hardware v11」を使用しています。

Downloading Photon OS · vmware/photon Wiki · GitHub

 

Docker 環境の準備。

まず、Harbor と Docker Host 両方で Docker Engine を設定します。

 

Photon の OVA ファイルを 2つデプロイします・・・

デプロイした Photon を起動して、root/changeme ログインして初期パスワード変更をします。

ホスト名はわかりやすいものに変更しておきます。

今回は、下記のホスト名にしています。

  • Harbor: harbor01
  • Docker Host: photon01

 

ホスト名を設定し、OS にログインしなおすか、OS を再起動すると
プロンプトにホスト名が反映されます。

 

Harbor サーバ

# hostnamectl set-hostname harbor01

 

Docker Host

# hostnamectl set-hostname photon01

 

IP アドレスとホスト名を /etc/hosts ファイルに追記しておきます。

※Harbor と Docker Host 両方で設定します。

※今回の Harbor の IP アドレスは 192.168.254.130 です。

# echo "192.168.254.130 harbor01" >> /etc/hosts


tdnf コマンドで RPM をアップグレードしておきます。

# tdnf upgrade -y


OS を再起動します。

# reboot


アップグレード後の環境です。

root@harbor01 [ ~ ]# cat /etc/photon-release

VMware Photon Linux 1.0

PHOTON_BUILD_NUMBER=62c543d

root@harbor01 [ ~ ]# uname -a

Linux harbor01 4.4.41-1.ph1-esx #1-photon SMP Tue Jan 10 23:46:44 UTC 2017 x86_64 GNU/Linux

root@harbor01 [ ~ ]# rpm -q docker

docker-1.12.1-1.ph1.x86_64


docker サービスを起動します。

root@harbor01 [ ~ ]# systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

root@harbor01 [ ~ ]# systemctl start docker

root@harbor01 [ ~ ]# docker info

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 1.12.1

Storage Driver: overlay

Backing Filesystem: extfs

Logging Driver: json-file

Cgroup Driver: cgroupfs

Plugins:

Volume: local

Network: host bridge overlay null

Swarm: inactive

Runtimes: runc

Default Runtime: runc

Security Options: seccomp

Kernel Version: 4.4.41-1.ph1-esx

Operating System: VMware Photon/Linux

OSType: linux

Architecture: x86_64

CPUs: 1

Total Memory: 1.958 GiB

Name: harbor01

ID: E3H3:PD22:G5DK:RMMJ:NJ2Z:EXJJ:MPZO:4A6D:2YBX:FWNW:GWXO:FR2K

Docker Root Dir: /var/lib/docker

Debug Mode (client): false

Debug Mode (server): false

Registry: https://index.docker.io/v1/

Insecure Registries:

127.0.0.0/8


Harbor サーバへの docker-compose インストール。

Harbor を構成するコンテナ群は、docker-compose で起動/停止するので、
下記を参考に、docker-compose をインストールします。

Install Docker Compose - Docker


docker-compose ファイルをダウンロードして、chmod コマンドで実行権限を付与します。

root@harbor01 [ ~ ]# curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

root@harbor01 [ ~ ]# chmod +x /usr/local/bin/docker-compose


ファイルが実行できるようになったことを確認しておきます。

root@harbor01 [ ~ ]# docker-compose --version

docker-compose version 1.9.0, build 2585387

 

Harbor サーバへの tar インストール。

デフォルトでは Photon OS に tar コマンドがインストールされていません。

Harbor のインストーラを展開するために tdnf でインストールしておきます。

root@harbor01 [ ~ ]# tdnf install -y tar

 

Harbor のインストール。

まず、「harbor-online-installer-0.5.0.tgz」を GitHub からダウンロードします。

root@harbor01 [ ~ ]# curl -L https://github.com/vmware/harbor/releases/download/0.5.0/harbor-online-installer-0.5.0.tgz -o harbor-online-installer-0.5.0.tgz

root@harbor01 [ ~ ]# tar zxf harbor-online-installer-0.5.0.tgz

root@harbor01 [ ~ ]# ls -lh harbor

total 248K

-rw-r--r-- 1 root root 212K Dec  6 08:58 LICENSE

-rw-r--r-- 1 root root  483 Dec  6 08:58 NOTICE

drwxr-xr-x 3 root root 4.0K Dec  6 08:58 common

-rw-r--r-- 1 root root 2.2K Dec  6 08:58 docker-compose.yml

-rw-r--r-- 1 root root 3.7K Dec  6 08:58 harbor.cfg

-rwxr-xr-x 1 root root 4.4K Dec  6 08:58 install.sh

-rwxr-xr-x 1 root root  12K Dec  6 08:58 prepare


harbor.cfg を編集します。

今回は Harbor に HTTP で接続するので、hostname だけ編集します。

デフォルトでは下記のようになっています。

root@harbor01 [ ~ ]# cd harbor/

root@photon01 [ ~/harbor ]# grep ^hostname harbor.cfg

hostname = reg.mydomain.com

 

ちなみに、admin ユーザのデフォルト パスワードもこのファイルで指定します。

root@harbor01 [ ~/harbor ]# grep harbor_admin_password harbor.cfg

harbor_admin_password = Harbor12345

 

hostname を Harbor サーバのアドレスに修正します。

root@harbor01 [ ~/harbor ]# vi harbor.cfg

root@harbor01 [ ~/harbor ]# grep ^hostname harbor.cfg

hostname = 192.168.254.130

 

install.sh を実行して、インストールします。

Harbor のコンテナイメージが Docker Hub からダウンロードされ、docker-compose で起動されます。

root@harbor01 [ ~/harbor ]# ./install.sh


[Step 0]: checking installation environment ...


Note: docker version: 1.12.1


Note: docker-compose version: 1.9.0



[Step 1]: preparing environment ...

generated and saved secret key

Generated configuration file: ./common/config/nginx/nginx.conf

Generated configuration file: ./common/config/ui/env

Generated configuration file: ./common/config/ui/app.conf

Generated configuration file: ./common/config/registry/config.yml

Generated configuration file: ./common/config/db/env

Generated configuration file: ./common/config/jobservice/env

Generated configuration file: ./common/config/jobservice/app.conf

Generated configuration file: ./common/config/ui/private_key.pem

Generated configuration file: ./common/config/registry/root.crt

The configuration files are ready, please use docker-compose to start the service.

 

 

[Step 2]: checking existing instance of Harbor ...

 

 

[Step 3]: starting Harbor ...

Creating network "harbor_default" with the default driver

Pulling log (vmware/harbor-log:0.5.0)...

0.5.0: Pulling from vmware/harbor-log

93b3dcee11d6: Pull complete

5c14e4bdfb0b: Pull complete

e4dee8a574ca: Pull complete

64897311fadc: Pull complete

9b18f82d0181: Pull complete

Digest: sha256:81db268fa32ed35274f88f0e9f6e8c8fe36fdfe3247a7c75cef3d526814755ad

Status: Downloaded newer image for vmware/harbor-log:0.5.0

Pulling ui (vmware/harbor-ui:0.5.0)...

0.5.0: Pulling from vmware/harbor-ui

93b3dcee11d6: Already exists

a91de92f52f5: Pull complete

341612b46e3b: Pull complete

c1a53f812656: Pull complete

9a9aa413559a: Pull complete

e1b377650dfc: Pull complete

be5517028022: Pull complete

726f4e0b4799: Pull complete

08639f4ec97a: Pull complete

Digest: sha256:677776af19c774f665565486ef0ec3ab37e55c6738a471942e3ea841b3e1821c

Status: Downloaded newer image for vmware/harbor-ui:0.5.0

Pulling mysql (vmware/harbor-db:0.5.0)...

0.5.0: Pulling from vmware/harbor-db

43c265008fae: Pull complete

d7abd54d3b34: Pull complete

92b527830a1b: Pull complete

44839710d611: Pull complete

3828a16bed5c: Pull complete

fb91763f6b4e: Pull complete

892bfb27c685: Pull complete

02874ec7a2dc: Pull complete

861c1296cc0d: Pull complete

d611998d5598: Pull complete

09037dc5a941: Pull complete

448973dd2180: Pull complete

c0a51ede01de: Pull complete

54c4b53ba168: Pull complete

Digest: sha256:4bc45566b8aab9288e76ac8a36e604aecf05ba9b25e22f5a9cd5e9686978b78b

Status: Downloaded newer image for vmware/harbor-db:0.5.0

Pulling jobservice (vmware/harbor-jobservice:0.5.0)...

0.5.0: Pulling from vmware/harbor-jobservice

93b3dcee11d6: Already exists

a91de92f52f5: Already exists

cdeb4de41efe: Pull complete

ce3594a70659: Pull complete

Digest: sha256:9c2d927f6e59fafcc930a5f738d713bde7d101cecd4e110a570a7b499d69ff68

Status: Downloaded newer image for vmware/harbor-jobservice:0.5.0

Pulling registry (library/registry:2.5.0)...

2.5.0: Pulling from library/registry

e110a4a17941: Pull complete

2ee5ed28ffa7: Pull complete

d1562c23a8aa: Pull complete

06ba8e23299f: Pull complete

802d2a9c64e8: Pull complete

Digest: sha256:1b68f0d54837c356e353efb04472bc0c9a60ae1c8178c9ce076b01d2930bcc5d

Status: Downloaded newer image for registry:2.5.0

Pulling proxy (nginx:1.11.5)...

1.11.5: Pulling from library/nginx

386a066cd84a: Pull complete

7bdb4b002d7f: Pull complete

49b006ddea70: Pull complete

Digest: sha256:9038d5645fa5fcca445d12e1b8979c87f46ca42cfb17beb1e5e093785991a639

Status: Downloaded newer image for nginx:1.11.5

Creating harbor-log

Creating harbor-db

Creating harbor-ui

Creating registry

Creating harbor-jobservice

Creating nginx


? ----Harbor has been installed and started successfully.----


Now you should be able to visit the admin portal at http://192.168.254.130.

For more details, please visit https://github.com/vmware/harbor .


root@harbor01 [ ~/harbor ]#

 

Harbor 関連のイメージです。

root@harbor01 [ ~/harbor ]# docker images

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE

vmware/harbor-log          0.5.0               eebc987a891b        5 weeks ago         190.5 MB

vmware/harbor-jobservice   0.5.0               995368e96860        5 weeks ago         169.4 MB

vmware/harbor-ui           0.5.0               232a8664541a        5 weeks ago         233 MB

vmware/harbor-db           0.5.0               84c4ce8e9b6c        5 weeks ago         326.8 MB

nginx                      1.11.5              05a60462f8ba        9 weeks ago         181.4 MB

registry                   2.5.0               c6c14b3960bd        5 months ago        33.28 MB

 

Harbor を構成するコンテナ群が起動しています。

root@harbor01 [ ~/harbor ]# docker ps

CONTAINER ID        IMAGE                            COMMAND                  CREATED              STATUS              PORTS                                      NAMES

fd39c3b81527        nginx:1.11.5                     "nginx -g 'daemon off"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx

271c78450675        vmware/harbor-jobservice:0.5.0   "/harbor/harbor_jobse"   About a minute ago   Up About a minute                                              harbor-jobservice

8fd149da1a89        library/registry:2.5.0           "/entrypoint.sh serve"   About a minute ago   Up About a minute   5000/tcp                                   registry

ceb3f0f450dc        vmware/harbor-ui:0.5.0           "/harbor/harbor_ui"      About a minute ago   Up About a minute                                              harbor-ui

926e637f2f34        vmware/harbor-db:0.5.0           "docker-entrypoint.sh"   About a minute ago   Up About a minute   3306/tcp                                   harbor-db

bd44e1d40ef7        vmware/harbor-log:0.5.0          "/bin/sh -c 'crond &&"   About a minute ago   Up About a minute   0.0.0.0:1514->514/tcp                      harbor-log

 

Harbor Registry へのプロジェクト作成。

Web ブラウザから Harbor の HTTP (TCP 80 番)ポートにアクセスします。

admin ユーザ(今回のパスワードは Harbor12345)でログインします。

harbor-01.png

 

「Projects」を開きます。

harbor-02.png

 

「New Project」をクリックします。

harbor-03.png

 

Project の名前を入力して、「Save」します。今回は「pj01」という名前にしました。

harbor-04.png


pj01 が作成されました。

harbor-05.png

 

まだ pj01 にコンテナ イメージはありません。

harbor-06.png

 

Docker Host からのアクセスするための準備。

Docker Host から、Harbor に接続してみます。

今回は HTTP で接続するので、docker サービスの「--insecure-registry」に

Harbor のアドレス(今回は 192.168.254.130:80)を指定しておきます。


docker.serive を編集します。

root@photon01 [ ~ ]# cp /usr/lib/systemd/system/docker.service /etc/systemd/system/

root@photon01 [ ~ ]# vi /etc/systemd/system/docker.service

 

/etc/systemd/system/docker.service ファイルの内容

※赤字が、追記した部分です。

[Unit]

Description=Docker Daemon

Documentation=http://docs.docker.com

Wants=network-online.target

After=network-online.target docker-containerd.service

Requires=docker-containerd.service


[Service]

Type=notify

EnvironmentFile=-/etc/default/docker

ExecStart=/usr/bin/docker daemon $DOCKER_OPTS \

          --containerd /run/containerd.sock \

          --insecure-registry 192.168.254.130:80

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-abnormal

LimitNOFILE=1048576

LimitNPROC=1048576

LimitCORE=infinity


[Install]

WantedBy=multi-user.target

 

docker サービスを再起動して、設定を読み込みます。

root@photon01 [ ~ ]# systemctl daemon-reload

root@photon01 [ ~ ]# systemctl restart docker

root@photon01 [ ~ ]# docker info | grep Insecure -A2

Insecure Registries:

192.168.254.130:80

127.0.0.0/8

 

Harbor Registry を使用してみる。

まず Dcoker Host で、Docker Hub からイメージをダウンロードします。

今回は、Docker 公式の oraclelinux イメージをダウンロードしています。

root@photon01 [ ~ ]# docker pull oraclelinux

Using default tag: latest

latest: Pulling from library/oraclelinux

2c48edfee2a0: Pull complete

Digest: sha256:d447e228f31c753842d0de64a610a0b480b6c7b850c27813a67fd8e7a938ccee

Status: Downloaded newer image for oraclelinux:latest

root@photon01 [ ~ ]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

oraclelinux         latest              27a5201e554e        3 weeks ago         225.1 MB

 

Harbor にログインします。

今回は新規ユーザを作成していないので、admin ユーザを使用しています。

root@photon01 [ ~ ]# docker login 192.168.254.130:80

Username: admin

Password: ★パスワード入力

Login Succeeded

 

イメージに Harbor のアドレスと、先ほど作成したプロジェクト「pj01」を指定して
イメージに tag を追加します。

root@photon01 [ ~ ]# docker tag oraclelinux:latest 192.168.254.130:80/pj01/oraclelinux:latest

root@photon01 [ ~ ]# docker images

REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE

192.168.254.130:80/pj01/oraclelinux   latest              27a5201e554e        3 weeks ago         225.1 MB

oraclelinux                           latest              27a5201e554e        3 weeks ago         225.1 MB

 

Harbor に push します。

root@photon01 [ ~ ]# docker push 192.168.254.130:80/pj01/oraclelinux:latest

The push refers to a repository [192.168.254.130:80/pj01/oraclelinux]

89587f215a9e: Pushed

latest: digest: sha256:d447e228f31c753842d0de64a610a0b480b6c7b850c27813a67fd8e7a938ccee size: 529

 

Harbor の 「pj01」 Project にイメージが追加されました。

harbor-07.png

 

いったんローカルのイメージを削除してから・・・

root@photon01 [ ~ ]# docker rmi 192.168.254.130:80/pj01/oraclelinux oraclelinux

Untagged: 192.168.254.130:80/pj01/oraclelinux:latest

Untagged: 192.168.254.130:80/pj01/oraclelinux@sha256:d447e228f31c753842d0de64a610a0b480b6c7b850c27813a67fd8e7a938ccee

Untagged: oraclelinux:latest

Untagged: oraclelinux@sha256:d447e228f31c753842d0de64a610a0b480b6c7b850c27813a67fd8e7a938ccee

Deleted: sha256:27a5201e554e153245d57333ed509141512ff5c1aaf3552bc53a983a72210ef6

Deleted: sha256:89587f215a9e2692b6674efc86247e15d8cb0f04690712fbdcac63d136b95e2b

 

Harbor からイメージをダウンロードしてみます。

oraclelinux のイメージが Harbor からダウンロードされて、コンテナとして起動しました。

root@photon01 [ ~ ]# docker run -it 192.168.254.130:80/pj01/oraclelinux:latest /bin/bash

Unable to find image '192.168.254.130:80/pj01/oraclelinux:latest' locally

latest: Pulling from pj01/oraclelinux

2c48edfee2a0: Pull complete

Digest: sha256:d447e228f31c753842d0de64a610a0b480b6c7b850c27813a67fd8e7a938ccee

Status: Downloaded newer image for 192.168.254.130:80/pj01/oraclelinux:latest

[root@6bde61e50c8a /]# cat /etc/oracle-release

Oracle Linux Server release 7.3

 

このような感じで、registry イメージによるものと同様に使用することができて、

さらにアクセス制御機能などが追加されています。

 

VIC については、こちらもどうぞ。

vSphere Integrated Containers (VIC) 1.0 をためしてみる。

vSphere Integrated Containers Engine の vSphere Web Client Plug-In から見る Docker 情報。

 

以上。Harbor による Docker Registry 構築でした。

vSphere Integrated Containers Engine (VIC Engine) の vSphere Web Client Plug-In をインストールしてみました。

Flash 版の Web Client から、VIC Engine による Docker 環境の情報がわかるようになります。

Installing the vSphere Web Client Plug-in | VMware vSphere Integrated Containers Engine 0.8 Installation

 

VIC Engine については、こちらもどうぞ。

vSphere Integrated Containers (VIC) 1.0 をためしてみる。

 

今回の環境は下記です。

  • VMware vCenter Server Appliance 6.0 Update 2
  • vSphere Integrated Containers 1.0 (vSphere Integrated Containers Engine 0.8)

 

1. ソフトウェア のダウンロードと配置。

 

MyVMware サイトから、VIC Engine (vic_0.8.0-7315-c8ac999.tar.gz) をダウンロードして、

vCenter Server Appliance (VCSA) に転送しておきます。

※VCSA は、事前に SSH & bash でアクセスできるようにしておきます。

※Plug-In ファイルを配置する Web サーバは用意せず、VCSA のローカルからファイルをインストールします。

 

2. VCSA でのインストール。

 

今回の VCSA の名前は、(IP アドレスは 192.168.1.82) にしてあります。

VCSA に SSH でログインして、転送しておいた tar.gz ファイルを展開します。

vc01:~ # tar zxf vic_0.8.0-7315-c8ac999.tar.gz

vc01:~ # cd vic/ ui/VCSA/

vc01:~/vic/ui/VCSA # ls

configs  install.sh  uninstall.sh  upgrade.sh

 

config ファイルを vi などで編集して、VCENTER_IP に VCSA のアドレスを指定します。

今回は下記のようにしました。

vc01:~/vic/ui/VCSA # cat configs | head -n 2

# Enter the IP of the server running VCSA

VCENTER_IP="192.168.1.82"

 

インストールスクリプトを実行します。

途中で、VCSA の管理者ユーザ / パスワード、VCSA の root ユーザ / パスワード を入力します。

vc01:~/vic/ui/VCSA # ./install.sh

Enter your vCenter Administrator Username: administrator@vsphere.local

Enter your vCenter Administrator Password: ★パスワード入力

----------------------------------------

Checking if VCSA has Bash shell enabled...

Please enter the root password

----------------------------------------

The authenticity of host '192.168.1.82 (192.168.1.82)' can't be established.

ECDSA key fingerprint is 28:a4:8b:6a:c3:fd:8d:ef:b9:54:df:b2:f2:b6:6c:fb [MD5].

Are you sure you want to continue connecting (yes/no)? yes

root@192.168.1.82's password: ★パスワード入力

Reading plugin-package.xml...

----------------------------------------

Registering vCenter Server Extension...

----------------------------------------

INFO[2017-01-05T15:05:42Z] ### Installing UI Plugin ####

INFO[2017-01-05T15:05:42Z] Installing plugin

INFO[2017-01-05T15:05:51Z] Installed UI plugin

-------------------------------------------------------------

Copying plugin contents to the vSphere Web Client...

Please enter the root password

-------------------------------------------------------------

root@192.168.1.82's password: ★パスワード入力

--------------------------------------------------------------

Updating ownership of the plugin folders...

Please enter the root password

--------------------------------------------------------------


VMware vCenter Server Appliance 6.0.0.20000


Type: vCenter Server with an external Platform Services Controller


root@192.168.1.82's password: ★パスワード入力

Connection to 192.168.1.82 closed.

--------------------------------------------------------------

VIC UI registration was successful

 

インストールが成功しました。Plug-In のファイルが配置されています。

vc01:~ # ls -d /etc/vmware/vsphere-client/vc-packages/vsphere-client-serenity/*vic*

/etc/vmware/vsphere-client/vc-packages/vsphere-client-serenity/com.vmware.vicui.Vicui-0.8.0

 

Web Client のサービスを再起動しておきます。

vc01:~ # service vsphere-client restart

 

3. vSphere Web Client での確認。

 

vSphere Web Client にログインすると、

ホーム → 管理 → ソリューション → クライアント プラグイン

を開くと、VicUI がインストールされて、有効になっていることがわかります。

vic-web-plugin-0.png

 

Virtual Container Host (VCH) Endpoint VM のサマリ画面を開くと、

「Virtual Container Host」 に Docker Engine にアクセスするためのアドレスが表示されるようになります。

vic-web-plugin-1.png

 

Plug-In で表示されている「DOCKER_HOST=tcp://192.168.1.4:2376」に、

VIC とは関係ない Linux にインストールされている docker コマンドからアクセスしてみます。

[gowatana@client01 ~]$ rpm -qf `which docker`

docker-engine-1.12.2-1.0.1.el7.x86_64

 

環境変数を設定してから、docker run で nginx のコンテナを起動してみます。

[gowatana@client01 ~]$ export DOCKER_HOST=tcp://192.168.1.4:2376

[gowatana@client01 ~]$ export DOCKER_API_VERSION=1.23

[gowatana@client01 ~]$ docker --tls run -itd -p 80:80 nginx

Unable to find image 'nginx:latest' locally

Pulling from library/nginx

75a822cd7888: Pull complete

a3ed95caeb02: Pull complete

0aefb9dc4a57: Pull complete

046e44ee6057: Pull complete

Digest: sha256:2b942f7dd01a57ceeb5985a0472a2f92735eb81a910dec70c2183c61fc54298c

Status: Downloaded newer image for library/nginx:latest

33990261c1bd5b182962a621903dc66799577a25cdd284057518f9a2d029167e

[gowatana@client01 ~]$ docker --tls ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES

33990261c1bd        nginx               "nginx -g daemon off;"   2 minutes ago       Up 2 minutes        192.168.1.4:80->80/tcp   prickly_northcutt

 

vSphere Web Client から見ると、先ほどの VCH に、Container VM が作成されていて、

nginx のコンテナ イメージから起動されたことがわかるようになりました。

80 番ポートを公開したことも表示されます。

vic-web-plugin-2.png

 

Plug-In をインストールすることで、vSphere Web Client から

vSphere の管理者が VIC Engine の Docker に関わる情報を確認しやすくなります。

ただし、Web Client からコンテナの操作をできるわけではなく、

Docker コンテナは API や他のツールから利用することになります。

 

以上、VIC の Web Client Plug-In をインストールしてみる話でした。