安裝 OpenShift 4 之前,您必須更新某些 NCP 組態檔。
這些 YAML 檔案會包含在 download.vmware.com 上提供的 NCP 下載檔案中。您可以移至 https://github.com/vmware/nsx-container-plugin-operator/releases,找到對應的 Operator 版本 (例如 v3.1.1),然後下載 openshift4.tar.gz。
- configmap.yaml - 使用 NSX-T 資訊更新此檔案。
- operator.yaml - 在此檔案中指定 NCP 映像位置。
- namespace.yaml - Operator 的命名空間規格。請勿編輯此檔案。
- role_binding.yaml - Operator 的角色繫結規格。請勿編輯此檔案。
- role.yaml - Operator 的角色規格。請勿編輯此檔案。
- service_account.yaml - Operator 的服務帳戶規格。請勿編輯此檔案。
- lb-secret.yaml - 用於預設 NSX-T 負載平衡器憑證的密碼。
- nsx-secret.yaml - 用於對 NSX-T 進行憑證型驗證的密碼。這會用來取代 configmap.yaml 中的 nsx_api_user 與 nsx_api_password。
- operator.nsx.vmware.com_ncpinstalls_crd.yaml - Operator 擁有的客戶資源定義。
- operator.nsx.vmware.com_v1_ncpinstall_cr.yaml - Operator 擁有的客戶資源。
- cluster
- nsx_api_managers
- nsx_api_user
- nsx_api_password
- external_ip_pools
- tier0_gateway
- overlay_tz
- edge_cluster
- apiserver_host_ip
- apiserver_host_port
kind: ConfigMap metadata: name: nsx-ncp-operator-config namespace: nsx-system-operator data: ncp.ini: | [vc] [coe] # Container orchestrator adaptor to plug in. adaptor = openshift4 # Specify cluster name. cluster = ocp [DEFAULT] [nsx_v3] policy_nsxapi = True # Path to NSX client certificate file. If specified, the nsx_api_user and # nsx_api_password options will be ignored. Must be specified along with # nsx_api_private_key_file option #nsx_api_cert_file = <None> # Path to NSX client private key file. If specified, the nsx_api_user and # nsx_api_password options will be ignored. Must be specified along with # nsx_api_cert_file option #nsx_api_private_key_file = <None> nsx_api_managers = 10.114.209.10,10.114.209.11,10.114.209.12 nsx_api_user = admin nsx_api_password = VMware1! # Do not use in production insecure = True # Choices: ALL DENY <None> log_firewall_traffic = DENY external_ip_pools = 10.114.17.0/25 #top_tier_router = <None> tier0_gateway = t0a single_tier_topology = True overlay_tz = 3efa070d-3870-4eb1-91b9-a44416637922 edge_cluster = 3088dc2b-d097-406e-b9de-7a161e8d0e47 [ha] [k8s] # Kubernetes API server IP address. apiserver_host_ip = api-int.ocp.yasen.local # Kubernetes API server port. apiserver_host_port = 6443 client_token_file = /var/run/secrets/kubernetes.io/serviceaccount/token # Choices: <None> allow_cluster allow_namespace baseline_policy_type = allow_cluster enable_multus = False process_oc_network = False [nsx_kube_proxy] [nsx_node_agent] ovs_bridge = br-int # The OVS uplink OpenFlow port ovs_uplink_port = ens192 [operator] # The default certificate for HTTPS load balancing. # Must be specified along with lb_priv_key option. # Operator will create lb-secret for NCP based on these two options. #lb_default_cert = <None> # The private key for default certificate for HTTPS load balancing. # Must be specified along with lb_default_cert option. #lb_priv_key = <None>
kind: Deployment metadata: name: nsx-ncp-operator namespace: nsx-system-operator spec: replicas: 1 selector: matchLabels: name: nsx-ncp-operator template: metadata: labels: name: nsx-ncp-operator spec: hostNetwork: true serviceAccountName: nsx-ncp-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master - effect: NoSchedule key: node.kubernetes.io/not-ready containers: - name: nsx-ncp-operator # Replace this with the built image name image: vmware/nsx-container-plugin-operator:latest command: ["/bin/bash", "-c", "nsx-ncp-operator --zap-time-encoding=iso8601"] imagePullPolicy: Always env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: OPERATOR_NAME value: "nsx-ncp-operator" - name: NCP_IMAGE value: "{NCP Image}"
針對 Operator 映像,請指定需要安裝的 NCP 版本。例如,若為 NCP 3.1.1,則 Operator 映像是 vmware/nsx-container-plugin-operator:v3.1.1。
請注意,不建議在生產環境中直接提取 dockerhub,因為其具有速率限制原則。從 dockerhub 提取後,便可將映像推送至本機登錄,而其位置可能與 NCP 映像相同。
或者,您也可以使用從 download.vmware.com 下載的 NCP 檔案中所包含的 Operator 映像檔案,並將其匯入至本機登錄。此映像與 VMware 的 dockerhub 上所發佈的映像相同。
若要設定 CNI 的 MTU 值,請在 Operator ConfigMap 的 [nsx-node-agent] 區段中修改 mtu 參數。Operator 會觸發 nsx-ncp-boostrap 網繭的重新建立,以確保會在所有節點上正確更新 CNI 組態檔。您也必須相應地更新節點 MTU。節點與網繭 MTU 不符可能會導致節點與網繭的通訊出現問題,進而影響到 TCP 活躍度和整備情形探查 (舉例而言)。
若要在節點中的介面上更新 MTU,您可以執行 ovs-vsctl set Interface <interface-name> mtu_request=<mtu-value> 命令,其中,interface-name 可以是正在 nsx-node-agent 網繭上執行的 nsx-ovs 容器中的 OVS 介面或實體介面。例如,oc -n nsx-system exec -it nsx-node-agent-dqqm9 -c nsx-ovs -- ovs-vsctl set Interface ens192 mtu_request=9000。
附註:在 Operator ConfigMap 中啟用 HA 將會建立單一 NCP 網繭,因為 ncpReplicas 參數依預設會設定為 1。若要建立 3 個 NCP 網繭,您可以將其變更為 3。安裝叢集後,您可以使用 oc edit ncpinstalls ncp-install -n nsx-system 命令變更 NCP 複本的數目。
apiVersion: operator.nsx.vmware.com/v1 kind: NcpInstall metadata: name: ncp-install namespace: nsx-system-operator spec: ncpReplicas: 1 # Note that if one node has multiple attached VirtualNetworkInterfaces, this function is not supported and should be set to false addNodeTag: true nsx-ncp: # Uncomment below to add user-defined nodeSelector for NCP Deployment #nodeSelector: #<node_label_key>: <node_label_value> tolerations: # Please don't modify below default tolerations for NCP Deployment - key: node-role.kubernetes.io/master effect: NoSchedule - key: node.kubernetes.io/network-unavailable effect: NoSchedule # Uncomment below to add user-defined tolerations for NCP Deployment #<toleration_specification> nsx-node-agent: tolerations: # Please don't modify below default tolerations # for nsx-ncp-bootstrap and nsx-node-agent DaemonSet - key: node-role.kubernetes.io/master effect: NoSchedule - key: node.kubernetes.io/not-ready effect: NoSchedule - key: node.kubernetes.io/unreachable effect: NoSchedule - operator: Exists effect: NoExecute # Uncomment below to add user-defined tolerations for nsx-ncp-bootstrap and nsx-node-agent DaemonSet #<toleration_specification>
使用主體身分識別將憑證型驗證設定為 NSX-T
在生產環境中,建議您不要使用 nsx_api_user 和 nsx_api_password 參數公開 configmap.yaml 中的管理員認證。下列步驟說明如何建立主體身分識別並允許 NCP 使用憑證進行驗證。
- 產生憑證和金鑰。
- 在 NSX Manager 中,導覽至 ,然後按一下 。新增主體身分識別並貼上在步驟 1 中產生的憑證。
- 在 nsx-secret.yaml 中,新增 Base64 編碼的 crt 和金鑰值。
- 在 [nsx_v3] 區段下方的 configmap.yaml 中,設定憑證和金鑰檔案的位置:
nsx_api_cert_file = /etc/nsx-ujo/nsx-cert/tls.crt nsx_api_private_key_file = /etc/nsx-ujo/nsx-cert/tls.key
附註:不支援在已執行啟動程序的叢集上變更驗證方法。
(選用) 設定預設 NSX-T 負載平衡器憑證
NSX-T 負載平衡器可以實作 OpenShift HTTPS 路由物件以及卸載 OCP HAProxy。若要執行此操作,則需要預設憑證。執行下列步驟以設定預設憑證:
- 在 lb-secret.yaml 中,新增 Base64 編碼的 crt 和金鑰值。
- 在 [nsx_v3] 區段下方的 configmap.yaml 中,設定憑證和金鑰的位置:
lb_default_cert_path = /etc/nsx-ujo/lb-cert/tls.crt lb_priv_key_path = /etc/nsx-ujo/lb-cert/tls.key
(選用) 設定對 NSX Manager 的憑證型驗證
如果您在 ConfigMap 中設定了 insecure = False,則必須為 NSX Manager 叢集中所有的三個管理程式指定憑證指紋。下列程序是說明如何執行此作業的範例。
將三個 NSX Manager 的憑證複製到某個檔案:
ssh -l admin 10.114.209.10 -f 'get certificate api' > nsx1.crt ssh -l admin 10.114.209.11 -f 'get certificate api' > nsx2.crt ssh -l admin 10.114.209.12 -f 'get certificate api' > nsx3.crt NSX1=`openssl x509 -in nsx1.crt -fingerprint -noout|awk -F"=" '{print $2}'` NSX2=`openssl x509 -in nsx2.crt -fingerprint -noout|awk -F"=" '{print $2}'` NSX3=`openssl x509 -in nsx3.crt -fingerprint -noout|awk -F"=" '{print $2}'` THUMB="$NSX1,$NSX2,$NSX3" echo $THUMB
編輯 ConfigMap,並在 [nsx_v3] 區段中新增指紋:
oc edit cm nsx-ncp-operator-config -n nsx-system-operator nsx_api_managers = 10.114.209.10,10.114.209.11,10.114.209.12 nsx_api_user = admin nsx_api_password = VMwareVMware1! insecure = False thumbprint = E0:A8:D6:06:88:B9:65:7D:FB:F8:14:CF:D5:E5:23:98:C9:43:10:71,A7:B0:26:B5:B2:F6:72:2B:39:86:19:84:E6:DD:AB:43:16:0E:CE:BD,52:9B:99:90:88:4C:9F:9B:83:5E:F7:AF:FC:60:06:50:BE:9E:32:08