NSX Container Plug-in (NCP) を OpenShift と統合するには、Ansible の hosts ファイルに NCP パラメータを指定する必要があります。

Ansible の hosts ファイルに次のパラメータを指定した後、OpenShift をインストールすると自動的に NCP がインストールされます。

  • openshift_use_nsx=True

  • openshift_use_openshift_sdn=False

  • os_sdn_network_plugin_name='cni'

  • nsx_openshift_cluster_name='ocp-cluster1'

    (必須)複数の Openshift/Kubernetes クラスタが同じ NSX Manager に接続できるため、これは必須です。

  • nsx_api_managers='10.10.10.10'

    (必須)NSX Manager の IP アドレス。NSX Manager クラスタの場合は、カンマ区切りの IP アドレスを指定します。

  • nsx_tier0_router='MyT0Router'

    (必須)プロジェクトの Tier-1 ルーターが接続する Tier-0 ルーターの名前または UUID。

  • nsx_overlay_transport_zone='my_overlay_tz'

    (必須)論理スイッチの作成に使用されるオーバーレイ トランスポート ゾーンの名前または UUID。

  • nsx_container_ip_block='ip_block_for_my_ocp_cluster'

    (必須)NSX-T 上で設定されている IP アドレス ブロックの名前または UUID。この IP アドレス ブロックにプロジェクトごとのサブネットがあります。これらのネットワークは SNAT の背後にあり、ルーティングできません。

  • nsx_ovs_uplink_port='ens224'

    (必須)HOSTVM モードの場合。NSX-T には、OCP ノードでのポッド ネットワーク用に管理 vNIC とは別の vNIC が必要です。両方の vNIC を NSX-T 論理スイッチに接続することを強くお勧めします。2 番目の(非管理用の)vNIC をここに指定する必要があります。ベア メタルの場合は、このパラメータは必要ありません。

  • nsx_cni_url='http://myserver/nsx-cni.rpm'

    (必須)NCP がノードのブートストラップを行えるようになるまでの一時的な要件。nsx-cni を http サーバに配置する必要があります。

  • nsx_ovs_url='http://myserver/openvswitch.rpm'

  • nsx_kmod_ovs_url='http://myserver/kmod-openvswitch.rpm'

    (必須)NCP がノードのブートストラップを行えるようになるまでの一時的なパラメータ。ベア メタルのセットアップでは無視できます。

  • nsx_node_type='HOSTVM'

    (オプション)デフォルトは HOSTVM です。OpenShift が仮想マシンで実行されていない場合は、BAREMETAL に設定します。

  • nsx_k8s_api_ip=192.168.10.10

    (オプション)設定すると、NCP はこの IP アドレスと通信します。設定しないと、Kubernetes サービス IP アドレスと通信します。

  • nsx_k8s_api_port=192.168.10.10

    (オプション)Kubernetes サービスのデフォルトは 443 です。nsx_k8s_api_ip と組み合わせて使用して、マスター ノード IP アドレスを指定するには、8443 に設定します。

  • nsx_insecure_ssl=true

    (オプション)NSX Manager には信頼されていない証明書が付属しているため、デフォルトは true です。信頼されている証明書に変更した場合は false に設定できます。

  • nsx_api_user='admin'

  • nsx_api_password='super_secret_password'

  • nsx_subnet_prefix=24

    (オプション)デフォルトは 24 です。これは、Openshift プロジェクトごとに割り当てられるサブネット サイズです。ポッドの数がサブネット サイズを超えると、同じサブネット サイズの新しい論理スイッチがプロジェクトに追加されます。

  • nsx_use_loadbalancer=true

    (オプション)デフォルトは true です。OpenShift ルートおよび LoadBalancer タイプのサービスに NSX-T ロード バランサを使用しない場合は、false に設定します。

  • nsx_lb_service_size='SMALL'

    (オプション)デフォルトは SMALL です。NSX Edge のサイズによっては、MEDIUM または LARGE も可能です。

  • nsx_no_snat_ip_block='router_ip_block_for_my_ocp_cluster'

    (オプション)ncp/no_snat=true アノテーションがプロジェクトまたは名前空間に適用されている場合、サブネットはこの IP アドレス ブロックから取得され、SNAT はありません。ルーティング可能であることが想定されます。

  • nsx_external_ip_pool='external_pool_for_snat'

    (必須)nsx_external_ip_pool_lb が定義されていない場合の SNAT およびロード バランサの IP アドレス プール。

  • nsx_external_ip_pool_lb='my_ip_pool_for_lb'

    (オプション)RouterSvcTypeLB に異なる IP アドレス プールが必要な場合に設定します。

  • nsx_top_fw_section='top_section'

    (オプション)Kubernetes ネットワーク ポリシー ルールは NSX-T ファイアウォール ルールに変換され、このセクションの下に配置されます。

  • nsx_bottom_fw_section='bottom_section'

    (オプション)Kubernetes ネットワーク ポリシー ルールは NSX-T ファイアウォール ルールに変換され、このセクションの上に配置されます。

  • nsx_api_cert='/path/to/cert/nsx.crt'

  • nsx_api_private_key='/path/to/key/nsx.key

    (オプション)設定すると、nsx_api_usernsx_api_password は無視されます。証明書を NSX-T にアップロードし、この証明書を使用して認証を行うプリンシパル ID ユーザーを手動で作成する必要があります。

  • nsx_lb_default_cert='/path/to/cert/nsx.crt'

  • nsx_lb_default_key='/path/to/key/nsx.key

    (オプション)NSX-T ロード バランサは、TLS ベースのルートの SNI を作成するためにデフォルトの証明書を必要とします。この証明書は、ルートが設定されていない場合にのみ表示されます。指定しない場合、自己署名証明書が生成されます。

Ansible の hosts ファイルのサンプル

[OSEv3:children]
masters
nodes
etcd

[OSEv3:vars]
ansible_ssh_user=root
openshift_deployment_type=origin

openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
openshift_master_htpasswd_users={'yasen' : 'password'}

openshift_master_default_subdomain=demo.corp.local
openshift_use_nsx=true
os_sdn_network_plugin_name=cni
openshift_use_openshift_sdn=false
openshift_node_sdn_mtu=1500

# NSX specific configuration
nsx_openshift_cluster_name='ocp-cluster1'
nsx_api_managers='192.168.110.201'
nsx_api_user='admin'
nsx_api_password='VMware1!'
nsx_tier0_router='DefaultT0Router'
nsx_overlay_transport_zone='overlay-tz'
nsx_container_ip_block='ocp-pod-networking'
nsx_no_snat_ip_block='ocp-nonat-pod-networking'
nsx_external_ip_pool='ocp-external'
nsx_top_fw_section='openshift-top'
nsx_bottom_fw_section='openshift-bottom'
nsx_ovs_uplink_port='ens224'
nsx_cni_url='http://1.1.1.1/nsx-cni-2.3.2.x86_64.rpm'
nsx_ovs_url='http://1.1.1.1/openvswitch-2.9.1.rhel75-1.x86_64.rpm'
nsx_kmod_ovs_url='http://1.1.1.1/kmod-openvswitch-2.9.1.rhel75-1.el7.x86_64.rpm'

[masters]
ocp-master.corp.local

[etcd]
ocp-master.corp.local

[nodes]
ocp-master.corp.local ansible_ssh_host=10.1.0.10 openshift_node_group_name='node-config-master'
ocp-node1.corp.local ansible_ssh_host=10.1.0.11 openshift_node_group_name='node-config-infra'
ocp-node2.corp.local ansible_ssh_host=10.1.0.12 openshift_node_group_name='node-config-infra'
ocp-node3.corp.local ansible_ssh_host=10.1.0.13 openshift_node_group_name='node-config-compute'
ocp-node4.corp.local ansible_ssh_host=10.1.0.14 openshift_node_group_name='node-config-compute'