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: 15Fü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