Einschränken eines SNAT-IP-Pools auf bestimmte Kubernetes-Namespaces oder TAS-Organisationen
- Für einen Kubernetes-Namespace:
scope: ncp/owner, tag: ns:<namespace_UUID>
- Für eine TAS Org:
scope: ncp/owner, tag: org:<org_UUID>
kubectl get ns -o yaml cf org <org_name> --guid
- 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 TAS-Anwendungen ändern oder NCP neu gestartet wird.
- Die Owner-Tags für Namespace und TAS Org sind optional. Ohne diese Tags können jedem Namespace bzw. jeder TAS Org IPs aus dem SNAT-IP-Pool zugeteilt werden.
Konfigurieren eines SNAT-IP-Pools für einen Dienst
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.
- 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_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 nicht das Tag
scope: ncp/owner, tag: cluster:<cluster_name>
auf, oder das Owner-Tag des Pools stimmt nicht mit dem Namespace des Diensts überein, der die Zuteilungsanforderung sendet. Nachdem Sie den Fehler behoben haben, müssen Sie NCP neu starten oder die ncp/snat_pool-Anmerkung entfernen und erneut hinzufügen.
- Der von ncp/snat_pool angegebene Pool sollte bereits in NSX vorhanden sein, bevor der Dienst konfiguriert wird.
- In NSX 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
apiVersion: v1 kind: Namespace metadata: name: ns-sample annotations: ncp/snat_pool: <external IP pool ID or name> ...
- 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 nicht das Tag
scope: ncp/owner, tag: cluster:<cluster_name>
auf, oder das Owner-Tag des Pools stimmt nicht mit dem Namespace überein, der die Zuteilungsanforderung sendet. Nachdem Sie den Fehler behoben haben, müssen Sie NCP neu starten oder die ncp/snat_pool-Anmerkung entfernen und erneut hinzufügen.
- 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 einer SNAT-IP-Adresse für einen Dienst
apiVersion: v1 kind: Service metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED: IP-Adresse wurde bereits zugeteilt.
- IP_NOT_IN_POOL: IP-Adresse befindet sich nicht im SNAT-IP-Pool.
- IP_POOL_EXHAUSTED: Der SNAT-IP-Pool ist ausgeschöpft.
- SNAT_PROCESS_FAILED: Unbekannter Fehler ist aufgetreten.
Konfigurieren einer SNAT-IP-Adresse für einen Namespace
apiVersion: v1 kind: Namespace metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED: IP-Adresse wurde bereits zugeteilt.
- IP_NOT_IN_POOL: IP-Adresse befindet sich nicht im SNAT-IP-Pool.
- IP_NOT_REALIZED: In NSX ist ein Fehler aufgetreten.
- IP_POOL_EXHAUSTED: Der SNAT-IP-Pool ist ausgeschöpft.
- SNAT_PROCESS_FAILED: Unbekannter Fehler ist aufgetreten.
Konfigurieren eines SNAT-Pools für eine TAS-App
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> ...
- Der von NCP_SNAT_POOL angegebene Pool sollte bereits in NSX 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 die App erneut pushen.
Konfigurieren von SNAT für TAS Version 3
Mit TAS 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
Konfigurieren eines SNAT-IP-Pools oder einer IP-Adresse für eine TAS-Organisation
- ncp_snat_pool: Der Pool muss vorhanden sein und das Tag
scope: ncp/owner, tag: cluster:<cluster_name>
aufweisen. - ncp_snat_ip: Eine bestimmte Adresse in einem IP-Pool.
- Wenn sowohl ncp_snat_pool als auch ncp_snat_ip angegeben sind, muss sich die SNAT-IP-Adresse im angegebenen SNAT-IP-Pool befinden.
- Wenn nur ncp_snat_ip angegeben ist, muss sich die SNAT-IP-Adresse im externen IP-Pool befinden, der in ncp.ini angegeben ist.
- Wenn nur ncp_snat_pool angegeben ist, wird die SNAT-IP-Adresse aus dem angegebenen Pool zugeteilt.
cf curl v3/organizations/<org-guid> -X PATCH -d '{"metadata": {"annotations": {"ncp_snat_pool": "ann-ip-pool", "ncp_snat_ip": "1.2.3.4"}}}'
cf org <org-name> --guid
cf curl v3/organizations/<org-guid> -X PATCH -d '{"metadata": {"annotations": {"ncp_snat_ip": null}}}'
Sie können zur NSX Manager-UI wechseln, um zu prüfen, ob die SNAT-Regel erfolgreich erstellt wurde. Wenn Sie auf Fehler prüfen möchten, sehen Sie sich die NCP-Protokolle an.
Wenn der Fehler POOL_ACCESS_DENIED im NCP-Protokoll angezeigt wird, bedeutet dies, dass der von ncp_snat_pool angegebene-IP-Pool nicht über das Tag scope: ncp/owner, tag: cluster:<cluster_name>
verfügt oder dass das Owner-Tag des Pools nicht mit der Organisation übereinstimmt, die die Zuteilungsanforderung sendet. Nachdem Sie den Fehler behoben haben, müssen Sie NCP neu starten oder die ncp_snat_pool-Anmerkung entfernen und erneut hinzufügen.