2017年1月13日金曜日

VMware Integrated Container の VCH (virtual container host) をデプロイする方法

概要

VMware Integrated Container (VIC) は VMware が OSS で提供しているコンテナサービスの一つです
virtual container host (VCH) は VIC を構成する一つの要素です docker デーモンの代わりみたいなものです
今回は公開されている Windows 用の cli ツールを使って vCenter 上に VCH をデプロイするところまでやってみました

環境

  • Windows Server 2012 R2 Standard
  • ESXi 5.5.0
    • CPU: Xeon E5-2690 (Sandy Bridge 世代)
    • Memory: 400GB
  • VMware vCenter Server 5.5.0
  • VMware Integrated Contaier v0.8.0

VIC のダウンロード

まずは VIC をダウンロードします
コードが公開されているので自分でコンパイルしてビルドしても良いのですがビルド後のバイナリも配布されているので今回はそれを使います

https://bintray.com/vmware/vic/Download/v0.8.0
に tar.gz に固められたバイナリがあるのでダウンロードします
ダウンロードして解凍すると vic/vic-machine-windows.exe という CLI ツールがあるのを確認します
deploy_vic_vch1.png

コマンドプロンプトを開いて解凍したフォルダに移動しましょう
CLI ツールの実行はコマンドプロンプトを使って行っていきます

VCH をデプロイ

では CLI ツールを使って VCH をデプロイしていきます
今回は vCetner Server が動作してる環境にデプロイしますが、ESXi 単体の環境へもデプロイ可能です
が、Nested Visualization の環境だと 64bit OS が動かなかったりいろいろと問題が出そうなので、素直にホストマシン上で動作する環境を準備したほうがよいかもしれません

コマンドプロンプトで以下のコマンドを実行してデプロイします

.\vic-machine-windows.exe create --target xxx.xxx.xxx.xxx/dc1 --image-store datastore2 --compute-resource cluster1 --bridge-network "dvs-for-vch" --public-network "lan1" --user "vcenter-user" --password "vcenter-pass" --no-tlsverify --force

です
簡単に各種パラメータを説明します
まず create コマンドで VCH を作成することができます

--target で vCenter のアドレスとデータセンターのパスを指定します
データセンターがない場合は省力して OK です
このパラメータは必須のパラメータです

--image-store で VCH をデプロイするデータストアを指定します
存在しないデータストアを指定するとエラーとなります
このパラメータも必須パラメータです

--compute-resource でクラスタを指定します
クラスタが存在してる場合は指定しましょう、クラスタがない場合は指定を省略できます

--bridge-network でコンテナと通信するためのブリッジネットワーク用のアダプタを指定します
これは Distributed Port Group である必要があります
Standard Network を指定するとエラーになるので注意してください
また、事前に Distributed Port Group が存在する必要があるので、ない場合は先に作成しておくてください
このパラメータは必須パラメータです

--public-network VCH と他の管理用の VM が通信するためのネットワークアダプタを指定します
これは Standard Network でも問題ないです
必須のパラメータではないですが、指定しない場合は「VM Network」が自動で選択されます

--user, --password は vCenter にアクセスするためのユーザ名とパスワードを指定します
必須です

--no-tlsverify --force は証明書のエラーを無視するオプションです
今回のように IP で vCenter にアクセスする場合は指定したほうが幸せになれます

でうまく実行できると以下のようにデバッグログが流れ始めます
最終的に public-network で指定したネットワークアダプタから IP を取得することができれば docker コマンドと VCH の管理画面の URL が表示されます
デバッグログがちょっと長いですが、全部掲載しておきます (重要な部分は伏せています)

INFO[2017-01-11T18:56:26+09:00] ### Installing VCH ####
WARN[2017-01-11T18:56:26+09:00] Using administrative user for VCH operation - use --ops-user to improve security (see -x for advanced help)
INFO[2017-01-11T18:56:26+09:00] Loaded server certificate virtual-container-host\server-cert.pem
WARN[2017-01-11T18:56:26+09:00] Configuring without TLS verify - certificate-based authentication disabled
INFO[2017-01-11T18:56:26+09:00] Validating supplied configuration
INFO[2017-01-11T18:56:26+09:00] vDS configuration OK on "dvs-for-vch"
INFO[2017-01-11T18:56:26+09:00] Firewall status: ENABLED on "/dc1/host/cluster1/host1"
INFO[2017-01-11T18:56:26+09:00] Firewall configuration OK on hosts:
INFO[2017-01-11T18:56:26+09:00]        "/dc1/host/cluster1/host1"
INFO[2017-01-11T18:56:26+09:00] License check OK on hosts:
INFO[2017-01-11T18:56:26+09:00]   "/dc1/host/cluster1/host1"
INFO[2017-01-11T18:56:26+09:00] DRS check OK on:
INFO[2017-01-11T18:56:26+09:00]   "/dc1/host/cluster1/Resources"
WARN[2017-01-11T18:56:26+09:00] Only one host can access all of the image/container/volume datastores. This may be a point of contention/performance degradation
/DRSnot work as intended.
INFO[2017-01-11T18:56:26+09:00]
WARN[2017-01-11T18:56:27+09:00] Disabling xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx vpxd.log collection (ServerFaultCode: A specified parameter was not correct.
INFO[2017-01-11T18:56:27+09:00] Creating virtual app "virtual-container-host"
INFO[2017-01-11T18:56:27+09:00] Creating appliance on target
INFO[2017-01-11T18:56:27+09:00] Network role "management" is sharing NIC with "client"
INFO[2017-01-11T18:56:27+09:00] Network role "public" is sharing NIC with "client"
INFO[2017-01-11T18:56:29+09:00] Uploading images for container
INFO[2017-01-11T18:56:29+09:00]        "appliance.iso"
INFO[2017-01-11T18:56:29+09:00]        "bootstrap.iso"
INFO[2017-01-11T18:56:38+09:00] Waiting for IP information
INFO[2017-01-11T18:56:47+09:00] Waiting for major appliance components to launch
INFO[2017-01-11T18:56:51+09:00] Checking VCH connectivity with vSphere target
WARN[2017-01-11T18:56:51+09:00] Could not run VCH vSphere API target check due to ServerFaultCode: The guest authentication being used does not have sufficient permissions to perform the operation.
INFO[2017-01-11T18:56:53+09:00] Initialization of appliance successful
INFO[2017-01-11T18:56:53+09:00]
INFO[2017-01-11T18:56:53+09:00] VCH Admin Portal:
INFO[2017-01-11T18:56:53+09:00] https://xxx.xxx.xxx.xxx:2378
INFO[2017-01-11T18:56:53+09:00]
INFO[2017-01-11T18:56:53+09:00] Published ports can be reached at:
INFO[2017-01-11T18:56:53+09:00] xxx.xxx.xxx.xxx
INFO[2017-01-11T18:56:53+09:00]
INFO[2017-01-11T18:56:53+09:00] Docker environment variables:
INFO[2017-01-11T18:56:53+09:00] DOCKER_HOST=xxx.xxx.xxx.xxx:2376
INFO[2017-01-11T18:56:53+09:00]
INFO[2017-01-11T18:56:53+09:00] Environment saved in virtual-container-host/virtual-container-host.env
INFO[2017-01-11T18:56:53+09:00]
INFO[2017-01-11T18:56:53+09:00] Connect to docker:
INFO[2017-01-11T18:56:53+09:00] docker -H xxx.xxx.xxx.xxx:2376 --tls info
INFO[2017-01-11T18:56:53+09:00] Installer completed successfully

これでデプロイが完了すると virtual-container-host という vApp 配下に virtual-container-host という VM が作成されていることが確認できると思います
deploy_vic_vch2.png

オプションで --name というオプションがあるのでもうひとつ VCH を作成したい場合は別の名前の VCH を作成しないとすでに「virtual-container-host という VM があります」と言われてエラーとなります

また作成された VCH の VM の CD-ドライブを確認すると接続状態になっており「V0.8.0-7315-C8AC999-appliance.iso」という iso をマウントして起動していることが確認できる

VCH 管理画面へのアクセス

VCH には管理画面がありステータスなどの情報をブラウザで確認できるようになっています
public-network に振られた IP の 2378 に https でアクセスすると見ることができます
ログインは vCenter にログインするユーザ名とパスワードになるようです
ログインできると以下のような画面が確認できると思います
deploy_vic_vch3.png

VCH のステータスが確認できる他主要なログを確認することもできるようです
おそらくですが、VCH に SSH ログインしなくてもデバッグできるような機能を提供しているのだと思います

Tips

作成した VCH を CLI から確認することもできます

.\vic-machine-windows.exe ls --target xxx.xxx.xxx.xxx/dc1 --user "vcenter-user" --password "vcenter-pass" -compute-resource cluster1 --thumbprint xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

これで確認すると VM に振られた ID やデプロイしたパスや VCH のバージョンなどを確認することができます

他にも delete や inspect など VCH を操作できるコマンドがあるので試してみると良いと思います
ちなみに delete は作成した VCH を VM と vApp 両方削除してくれます
inspect は create 時に出力された docker コマンドや管理 UI の URL を再度確認するためのコマンドになります

最後に

VIC の要素の一つである VCH をデプロイしてみました
今回は CLI から行いましたが、UI が API を使ってもおそらくできると思います
また、デプロイした VCH は VMware が提供する Photon OS というゲスト OS で作成された VM になっています
どうやらデフォルトだと root のパスワードがないのかログインできないようです
Github の issue にいろいろとその辺の議論がなされている issue があったので、Photon OS に対するログインの方法も調査して紹介できればと思います
https://github.com/vmware/vic/issues/2952
https://github.com/vmware/vic/issues/3573 -> 0.8.0 でバグがあってできないような気もする

次回は docker コマンドをインストールした Ubuntu を使ってそこから VCH にアクセスして実際に docker コンテナを起動するところまでやってみたいと思います

0 件のコメント:

コメントを投稿