Vor der Installation von OpenShift 4 müssen Sie einige NCP-Konfigurationsdateien aktualisieren.

Die YAML-Dateien sind in der NCP-Download-Datei von download.vmware.com enthalten. Sie können https://github.com/vmware/nsx-container-plugin-operator/releases aufrufen, die entsprechende Operatorversion (z. B. v3.1.1) suchen und openshift4.tar.gz herunterladen.

Die folgenden Dateien befinden sich im Ordner nsx-container-plugin-operator/deploy:
  • configmap.yaml – Diese Datei mit den NSX-T-Informationen aktualisieren.
  • operator.yaml – Geben Sie den Speicherort des NCP in dieser Datei an.
  • namespace.yaml – Die Namespace-Spezifikation für den Operator. Bearbeiten Sie diese Datei nicht.
  • role_binding.yaml – Die Rollenbindungsspezifikation für den Operator. Bearbeiten Sie diese Datei nicht.
  • role.yaml –Die Rollenspezifikation für den Operator. Bearbeiten Sie diese Datei nicht.
  • service_account.yaml – Die Spezifikation des Dienstkontos für den Operator. Bearbeiten Sie diese Datei nicht.
  • lb-secret.yaml – Geheimnis für das standardmäßige NSX-T-Load Balancer-Zertifikat.
  • nsx-secret.yaml – Geheimnis für zertifikatsbasierte Authentifizierung bei NSX-T. Dies wird statt nsx_api_user und nsx_api_password in der configmap.yaml verwendet.
  • operator.nsx.vmware.com_ncpinstalls_crd.yaml – Betreibereigene Kundenressourcendefinition
  • operator.nsx.vmware.com_v1_ncpinstall_cr.yaml – Betreibereigene Kundenressource
Das folgende connfigplan.yaml-Beispiel zeigt eine Basiskonfiguration. Weitere Optionen finden Sie unter connfigplan.yaml im Ordner Bereitstellen. Sie müssen die Werte für die folgenden Parameter entsprechend Ihrer Umgebung angeben:
  • 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>
In der operator.yaml müssen Sie den Speicherort des NCP-Images im Abschnitt env angeben.
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}"

Geben Sie für das Operator-Image die NCP-Version an, die installiert werden muss. Für NCP 3.1.1 lautet das Operator-Image beispielsweise vmware/nsx-container-plugin-operator:v3.1.1.

Beachten Sie, dass das direkte Ziehen von dockerhub in einer Produktionsumgebung aufgrund seiner Ratenbegrenzungsrichtlinie nicht empfohlen wird. Sobald das Image aus Dockerhub gezogen wurde, kann es in eine lokale Registry gepusht werden, möglicherweise in dieselbe, in der auch NCP-Images verfügbar sind.

Alternativ können Sie die Operator-Imagedatei verwenden, die in der NCP-Downloaddatei von download.vmware.com enthalten ist, und sie in eine lokale Registrierung importieren. Dieses Image entspricht dem Image, das auf dem VMware-Dockerhub veröffentlicht ist.

Um den MTU-Wert für CNI festzulegen, bearbeiten Sie den mtu-Parameter im Abschnitt [nsx-node-agent] der Operator ConfigMap. Der Operator löst eine Neuerstellung der nsx-ncp-boostrap-Pods aus, um sicherzustellen, dass CNI-Konfigurationsdateien auf allen Knoten ordnungsgemäß aktualisiert werden. Sie müssen auch die Knoten-MTU entsprechend aktualisieren. Eine Nichtübereinstimmung zwischen Knoten- und Pod-MTU kann Probleme bei der Kommunikation zwischen Knoten und Pod verursachen. Das hat beispielsweise Auswirkungen auf TCP-Livetests und Bereitschaftstests.

Um MTU auf einer Schnittstelle auf einem Knoten zu aktualisieren, können Sie den Befehl ovs-vsctl set Interface <interface-name> mtu_request=<mtu-value> ausführen, wobei interface-name entweder eine OVS-Schnittstelle oder eine physische Schnittstelle im „nsx-ovs“-Container sein kann, der im „nsx-node-agent“-Pod ausgeführt wird. Beispiel: oc -n nsx-system exec -it nsx-node-agent-dqqm9 -c nsx-ovs -- ovs-vsctl set Interface ens192 mtu_request=9000.

Hinweis: Wenn Sie HA in der Operator ConfigMap aktivieren, wird ein einzelner NCP-Pod erstellt, da der ncpReplicas-Parameter standardmäßig auf 1 gesetzt ist. Um 3 NCP-Pods zu erstellen, können Sie ihn in 3 ändern. Nach der Installation des Clusters können Sie die Anzahl der NCP-Replikate mit dem Befehl oc edit ncpinstalls ncp-install -n nsx-system ändern.

Konfigurieren der zertifikatsbasierten Authentifizierung für NSX-T mit Primäridentität.

In einer Produktionsumgebung wird empfohlen, die Administratoranmeldedaten in der configmap.yaml nicht mit den Parametern nsx_api_user und nsx_api_password anzuzeigen. In den folgenden Schritten wird beschrieben, wie Sie eine Primäridentität erstellen und für NCP zulassen, das Zertifikat zur Authentifizierung zu verwenden.

  1. Generieren Sie ein Zertifikat und einen Schlüssel.
  2. Navigieren Sie in NSX Manager zu System > Benutzer und Rollen und klicken Sie auf Hinzufügen > Prinzipalidentität mit Rolle. Fügen Sie eine Primäridentität hinzu und fügen Sie das in Schritt 1 erstellte Zertifikat ein.
  3. Fügen Sie die base64-kodierte crt und die Schlüsselwerte in die nsx-secret.yaml ein.
  4. Legen Sie den Speicherort des Zertifikats und der Schlüsseldateien in der configmap.yaml im Abschnitt [nsx_v3] fest:
    nsx_api_cert_file = /etc/nsx-ujo/nsx-cert/tls.crt
    nsx_api_private_key_file = /etc/nsx-ujo/nsx-cert/tls.key

Hinweis: Das Ändern der Authentifizierungsmethode auf einem Cluster mit Bootstrap wird nicht unterstützt.

(Optional) Konfigurieren des standardmäßigen NSX-T-Load Balancer-Zertifikats

Ein NSX-T Load Balancer kann OpenShift HTTPS-Routenobjekte implementieren und den OCP HAProxy entladen. Dazu ist ein Standardzertifikat erforderlich. Führen Sie die folgenden Schritte aus, um das Standardzertifikat zu konfigurieren:

  1. Fügen Sie die base64-kodierte crt und die Schlüsselwerte in die lb-secret.yaml ein.
  2. Legen Sie den Speicherort für das Zertifikat und den Schlüssel in der configmap.yaml im Abschnitt [nsx_v3] fest:
    lb_default_cert_path = /etc/nsx-ujo/lb-cert/tls.crt
    lb_priv_key_path = /etc/nsx-ujo/lb-cert/tls.key

(Optional) Konfigurieren der zertifikatsbasierten Authentifizierung für NSX Manager

Wenn Sie insecure = False in der ConfigMap festlegen, müssen Sie die Zertifikatsfingerabdrücke aller drei Manager im NSX Manager-Cluster angeben. Beispiel für dieses Verfahren:

Kopieren Sie die Zertifikate aller drei NSX Manager in eine Datei:

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

Bearbeiten Sie die ConfigMap und fügen Sie die Fingerabdrücken im Abschnitt [nsx_v3] hinzu:

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