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 でも、発信接続のルールが追加されたことが確認できます。
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 ルール設定についての話でした。