必须在 Ansible hosts 文件中指定 NCP 参数,NCP 才能与 OpenShift 集成。

在 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 节点上的 POD 网络使用辅助 vNIC,且该 vNIC 与管理 vNIC 不同。强烈建议将这两个 vNIC 连接到 NSX-T 逻辑交换机。必须在此处提供辅助(非管理)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

    (可选)默认为 true,因为 NSX Manager 附带不受信任的证书。如果已将证书更改为受信任的证书,则可以设置为 false

  • nsx_api_user='admin'

  • nsx_api_password='super_secret_password'

  • nsx_subnet_prefix=24

    (可选)默认为 24。这是每个 Openshift 项目将专用的子网大小。如果 POD 的数量超过子网大小,则将具有相同子网大小的新逻辑交换机添加到项目。

  • nsx_use_loadbalancer=true

    (可选)默认为 true。如果不希望将 NSX-T 负载平衡器用于 LoadBalancer 类型的 OpenShift 路由和服务,则设置为 false

  • nsx_lb_service_size='SMALL'

    (可选)默认为 SMALL。也可以设置为 MEDIUMLARGE,具体取决于 NSX Edge 大小。

  • 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'

    (必需)SNAT 和负载平衡器的 IP 池(如果未定义 nsx_external_ip_pool_lb)。

  • 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,且必须手动创建使用此证书进行身份验证的主体身份用户。

  • 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'