Einschränken eines SNAT-IP-Pools auf bestimmte Kubernetes-Namespaces oder PCF-Organisationen

Sie können durch Hinzufügen der folgenden Tags zum IP-Pool festlegen, welchem Kubernetes-Namespace oder welcher PCF Org IPs aus dem SNAT-IP-Pool zugeteilt werden können.
  • Für einen Kubernetes-Namespace: scope: ncp/owner, tag: ns:<namespace_UUID>
  • Für eine PCF Org: Geltungsbereich: scope: ncp/owner, tag: org:<org_UUID>
Sie können die Namespace- oder Org-UUID mit einem der folgenden Befehle abrufen:
kubectl get ns -o yaml
cf org <org_name> --guid
Beachten Sie Folgendes:
  • Jedes Tag sollte eine UUID enthalten. Sie können mehrere Tags für denselben Pool erstellen.
  • Wenn Sie die Tags ändern, nachdem einigen Namespaces oder Orgs IPs basierend auf den alten Tags zugewiesen wurden, werden diese IPs nicht wiederhergestellt, bis sich die SNAT-Konfigurationen der Kubernetes-Dienste oder PCF-Anwendungen ändern oder NCP neu gestartet wird.
  • Die Owner-Tags für Namespace und PCF Org sind optional. Ohne diese Tags können jedem Namespace bzw. jeder PCF Org IPs aus dem SNAT-IP-Pool zugeteilt werden.

Konfigurieren eines SNAT-IP-Pools für einen Dienst

Sie können einen SNAT-IP-Pool für einen Dienst konfigurieren, indem Sie dem Dienst eine Anmerkung hinzufügen. Beispiel:
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-example
      annotations:
        ncp/snat_pool: <external IP pool ID or name>
      selector:
        app: example
    ...

Der von ncp/snat_pool angegebene-IP-Pool muss über das Tag scope: ncp/owner, tag: cluster:<cluster_name> verfügen.

NCP konfiguriert die SNAT-Regel für diesen Dienst. Bei der Quell-IP der Regel handelt es sich um die Gruppe der Backend-Pods. Bei der Ziel-IP handelt es sich um die SNAT-IP, die aus dem angegebenen externen IP-Pool zugeteilt wurde. Falls bei der Konfiguration der SNAT-Regel durch NCP ein Fehler auftritt, wird der Dienst mit der Anmerkung ncp/error.snat: <error> versehen. Dies sind die möglichen Fehler:
  • IP_POOL_NOT_FOUND: Der SNAT-IP-Pool wurde in NSX Manager nicht gefunden.
  • IP_POOL_EXHAUSTED: Der SNAT-IP-Pool ist ausgeschöpft.
  • IP_POOL_NOT_UNIQUE: Der durch ncp/snat_pool angegebene Pool verweist auf mehrere Pools in NSX Manager.
  • SNAT_POOL_ACCESS_DENY: Das Owner-Tag des Pools stimmt nicht mit dem Namespace des Diensts überein, der die Zuteilungsanforderung sendet.
  • SNAT_RULE_OVERLAPPED: Eine neue SNAT-Regel wird erstellt, aber der Pod des SNAT-Diensts gehört auch zu einem anderen SNAT-Dienst, d. h., für denselben Pod sind mehrere SNAT-Regeln vorhanden.
  • POOL_ACCESS_DENIED – Der von ncp/snat_pool angegebene IP-Pool weist das Tag scope: ncp/owner, tag: cluster:<cluster_name> nicht auf, oder das Owner-Tag des Pools stimmt nicht mit dem Namespace des Diensts überein, der die Zuteilungsanforderung sendet.
Beachten Sie Folgendes:
  • Der von ncp/snat_pool angegebene Pool sollte bereits in NSX-T Data Center vorhanden sein, bevor der Dienst konfiguriert wird.
  • In NSX-T Data Center ist die Priorität der SNAT-Regel für den Dienst höher als die für das Projekt.
  • Wenn ein Pod mit mehreren SNAT-Regeln konfiguriert wird, funktioniert nur eine der Regeln.
  • Sie können zu einem anderen IP-Pool wechseln, indem Sie die Anmerkung ändern und NCP neu starten.

Konfigurieren eines SNAT-IP-Pools für einen Namespace

Sie können einen SNAT-IP-Pool für einen Namespace konfigurieren, indem Sie dem Namespace eine Anmerkung hinzufügen. Beispiel:
    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns-sample
      annotations:
        ncp/snat_pool: <external IP pool ID or name>
    ...
NCP konfiguriert die SNAT-Regel für diesen Namespace. Bei der Quell-IP der Regel handelt es sich um die Gruppe der Backend-Pods. Bei der Ziel-IP handelt es sich um die SNAT-IP, die aus dem angegebenen externen IP-Pool zugeteilt wurde. Falls bei der Konfiguration der SNAT-Regel durch NCP ein Fehler auftritt, wird der Namespace mit der Anmerkung ncp/error.snat: <error> versehen. Dies sind die möglichen Fehler:
  • IP_POOL_NOT_FOUND: Der SNAT-IP-Pool wurde in NSX Manager nicht gefunden.
  • IP_POOL_EXHAUSTED: Der SNAT-IP-Pool ist ausgeschöpft.
  • IP_POOL_NOT_UNIQUE: Der durch ncp/snat_pool angegebene Pool verweist auf mehrere Pools in NSX Manager.
  • POOL_ACCESS_DENIED – Der von ncp/snat_pool angegebene IP-Pool weist das Tag scope: ncp/owner, tag: cluster:<cluster_name> nicht auf, oder das Owner-Tag des Pools stimmt nicht mit dem Namespace überein, der die Zuteilungsanforderung sendet.
Beachten Sie Folgendes:
  • Sie können nur einen SNAT-IP-Pool in der Anmerkung angeben.
  • Der SNAT-IP-Pool muss nicht in ncp.ini konfiguriert sein.
  • Der von ncp/snat_pool angegebene-IP-Pool muss über das Tag scope: ncp/owner, tag: cluster:<cluster_name> verfügen.
  • Der mit ncp/snat_pool angegebene IP-Pool kann auch ein Namespace-Tag, scope: ncp/owner, tag: ns:<namespace_UUID>, aufweisen.
  • Wenn die Anmerkung ncp/snat_pool fehlt, verwendet der Namespace den SNAT-IP-Pool für den Cluster.
  • Sie können zu einem anderen IP-Pool wechseln, indem Sie die Anmerkung ändern und NCP neu starten.

Konfigurieren eines SNAT-Pools für eine PAS-App

Standardmäßig konfiguriert NCP die SNAT-IP für eine PAS-Organisation (Pivotal Application Service). Sie können eine SNAT-IP für eine App konfigurieren, indem Sie eine App mit einer manifest.xml erstellen, die die SNAT-IP-Pool-Informationen enthält. Beispiel:
    applications:
      - name: frontend
        memory: 32M
        disk_quota: 32M
        buildpack: go_buildpack
        env:
          GOPACKAGENAME: example-apps/cats-and-dogs/frontend
          NCP_SNAT_POOL: <external IP pool ID or name>
    ...
NCP konfiguriert die SNAT-Regel für diese Anwendung. Die Quell-IP der Regel ist der Satz von IP-Adressen der Instanzen, und ihre Ziel-IP ist die SNAT-IP, die aus einem externen IP-Pool zugewiesen wurde. Beachten Sie Folgendes:
  • Der von NCP_SNAT_POOL angegebene Pool sollte bereits in NSX-T Data Center vorhanden sein, bevor die Anwendung mithilfe von Push übertragen wird.
  • Die SNAT-Regel für eine Anwendung hat eine höhere Priorität als diejenige für eine Organisation.
  • Eine Anwendung kann nur mit einer SNAT-IP konfiguriert werden.
  • Sie können zu einem anderen IP-Pool wechseln, indem Sie die Konfiguration ändern und NCP neu starten.

Konfigurieren von SNAT für PCF Version 3

Mit PCF Version 3 können Sie SNAT auf zwei Arten konfigurieren:

  • Konfigurieren Sie NCP_SNAT_POOL in manifest.yml, wenn Sie die App erstellen.
    Die App trägt beispielsweise den Namen bread und die manifest.yml enthält die folgenden Informationen:
    applications:
    - name: bread
      stack: cflinuxfs2
      random-route: true
      env:
        NCP_SNAT_POOL: AppSnatExternalIppool
      processes:
      - type: web
        disk_quota: 1024M
        instances: 2
        memory: 512M
        health-check-type: port
      - type: worker
        disk_quota: 1024M
        health-check-type: process
        instances: 2
        memory: 256M
        timeout: 15
    Führen Sie die folgenden Befehle aus:
    cf v3-push bread
    cf v3-apply-manifest -f manifest.yml
    cf v3-apps
    cf v3-restart bread
  • Konfigurieren Sie NCP_SNAT_POOL mithilfe des Befehls cf v3-set-env.
    Führen Sie die folgenden Befehle aus (unter der Annahme, dass die App den Namen app3 trägt):
    cf v3-set-env app3 NCP_SNAT_POOL AppSnatExternalIppool
    (optional) cf v3-stage app3 -package-guid <package-guid> (You can get package-guid with "cf v3-packages app3".)
    cf v3-restart app3