Limitazione di un pool di IP SNAT a organizzazioni TAS o spazi dei nomi Kubernetes specifici
- Per uno spazio dei nomi Kubernetes:
scope: ncp/owner, tag: ns:<namespace_UUID>
- Per un'organizzazione TAS:
scope: ncp/owner, tag: org:<org_UUID>
kubectl get ns -o yaml cf org <org_name> --guid
- Ogni tag deve specificare un UUID. È possibile creare più tag per lo stesso pool.
- Se si modificano i tag dopo che ad alcuni spazi dei nomi oppure organizzazioni sono stati allocati IP in base ai tag precedenti, tali IP non verranno recuperati finché le configurazioni SNAT dei servizi Kubernetes o delle app TAS non verranno modificate o NCP non verrà riavviato.
- I tag dei proprietari degli spazi dei nomi e delle organizzazioni TAS sono facoltativi. Senza questi tag, a qualsiasi spazio dei nomi oppure organizzazione TAS possono essere allocati IP dal pool di IP SNAT.
Configurazione di un pool di IP SNAT per un servizio
apiVersion: v1 kind: Service metadata: name: svc-example annotations: ncp/snat_pool: <external IP pool ID or name> selector: app: example ...
Il pool di IP specificato da ncp/snat_pool deve avere il tag scope: ncp/owner, tag: cluster:<cluster_name>
.
- IP_POOL_NOT_FOUND: il pool di IP SNAT non è stato trovato in NSX Manager.
- IP_POOL_EXHAUSTED: il pool di IP SNAT è esaurito.
- IP_POOL_NOT_UNIQUE: il pool specificato da ncp/snat_pool fa riferimento a più pool in NSX Manager.
- SNAT_RULE_OVERLAPPED: viene creata una nuova regola SNAT, ma il pod del servizio SNAT appartiene anche a un altro servizio SNAT, ovvero sono presenti più regole SNAT per lo stesso pod.
- POOL_ACCESS_DENIED: il pool di IP specificato da ncp/snat_pool non dispone del tag
scope: ncp/owner, tag: cluster:<cluster_name>
oppure il tag del proprietario del pool non corrisponde allo spazio dei nomi del servizio che invia la richiesta di allocazione. Dopo aver corretto l'errore, è necessario riavviare NCP oppure rimuovere l'annotazione ncp/snat_pool e aggiungerla di nuovo.
- Il pool specificato da ncp/snat_pool dovrebbe già esistere in NSX-T Data Center prima che il servizio venga configurato.
- In NSX-T Data Center la priorità della regola SNAT per il servizio è più alta di quella per il progetto.
- Se un pod è configurato con più regole SNAT, ne funzionerà solo una.
- È possibile passare a un pool di IP diverso modificando l'annotazione e riavviando NCP.
Configurazione di un pool di IP SNAT per uno spazio dei nomi
apiVersion: v1 kind: Namespace metadata: name: ns-sample annotations: ncp/snat_pool: <external IP pool ID or name> ...
- IP_POOL_NOT_FOUND: il pool di IP SNAT non è stato trovato in NSX Manager.
- IP_POOL_EXHAUSTED: il pool di IP SNAT è esaurito.
- IP_POOL_NOT_UNIQUE: il pool specificato da ncp/snat_pool fa riferimento a più pool in NSX Manager.
- POOL_ACCESS_DENIED: il pool di IP specificato da ncp/snat_pool non dispone del tag
scope: ncp/owner, tag: cluster:<cluster_name>
oppure il tag del proprietario del pool non corrisponde allo spazio dei nomi che invia la richiesta di allocazione. Dopo aver corretto l'errore, è necessario riavviare NCP oppure rimuovere l'annotazione ncp/snat_pool e aggiungerla di nuovo.
- È possibile specificare un solo pool di IP SNAT nell'annotazione.
- Non è necessario configurare il pool di IP SNAT in ncp.ini.
- Il pool di IP specificato da ncp/snat_pool deve avere il tag
scope: ncp/owner, tag: cluster:<cluster_name>
. - Anche il pool di IP specificato da ncp/snat_pool può avere un tag dello spazio dei nomi
scope: ncp/owner, tag: ns:<namespace_UUID>
. - Se l'annotazione ncp/snat_pool non è presente, lo spazio dei nomi utilizzerà il pool di IP SNAT per il cluster.
- È possibile passare a un pool di IP diverso modificando l'annotazione e riavviando NCP.
Configurazione di un indirizzo IP SNAT per un servizio
apiVersion: v1 kind: Service metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED: l'indirizzo IP è già stato allocato.
- IP_NOT_IN_POOL: l'indirizzo IP non si trova nel pool di IP SNAT.
- IP_POOL_EXHAUSTED: il pool di IP SNAT è esaurito.
- SNAT_PROCESS_FAILED: si è verificato un errore sconosciuto.
Configurazione di un indirizzo IP SNAT per uno spazio dei nomi
apiVersion: v1 kind: Namespace metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED: l'indirizzo IP è già stato allocato.
- IP_NOT_IN_POOL: l'indirizzo IP non si trova nel pool di IP SNAT.
- IP_NOT_REALIZED: si è verificato un errore in NSX-T.
- IP_POOL_EXHAUSTED: il pool di IP SNAT è esaurito.
- SNAT_PROCESS_FAILED: si è verificato un errore sconosciuto.
Configurazione di un pool SNAT per un'app TAS
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> ...
- Il pool specificato da NCP_SNAT_POOL deve già esistere in NSX-T Data Center prima del push dell'app.
- La priorità della regola SNAT per un'app è più alta di quella per un'organizzazione.
- Un'app può essere configurata con un solo IP SNAT.
- È possibile passare a un pool di IP diverso modificando la configurazione ed eseguendo nuovamente il push dell'app.
Configurazione di SNAT per TAS versione 3
Con TAS versione 3, è possibile configurare SNAT in uno dei due modi seguenti:
- Configurare NCP_SNAT_POOL in manifest.yml durante la creazione dell'app.
Ad esempio, l'app è denominata bread e manifest.yml ha le informazioni seguenti:
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
Eseguire i comandi seguenti:cf v3-push bread cf v3-apply-manifest -f manifest.yml cf v3-apps cf v3-restart bread
- Configurare NCP_SNAT_POOL utilizzando il comando cf v3-set-env.
Eseguire i comandi seguenti (supponendo che l'app sia denominata app3):
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
Configurazione di un pool di IP SNAT o di un indirizzo IP per un'organizzazione TAS
- ncp_snat_pool: il pool deve esistere e disporre del tag
scope: ncp/owner, tag: cluster:<cluster_name>
. - ncp_snat_ip: un indirizzo specifico in un pool di IP.
- Se sono specificati ncp_snat_pool e ncp_snat_ip, l'indirizzo IP SNAT deve essere presente nel pool DI IP SNAT specificato.
- Se è specificato solo ncp_snat_ip, l'indirizzo IP SNAT deve trovarsi nel pool di IP esterno specificato in ncp.ini.
- Se è specificato solo ncp_snat_pool, l'indirizzo IP SNAT verrà allocato dal pool specificato.
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}}}'
È possibile passare all'interfaccia utente di NSX Manager per verificare se la regola SNAT è stata creata correttamente. Per verificare la presenza di errori, esaminare i registri di NCP.
Se nel registro di NCP è presente l'errore POOL_ACCESS_DENIED, significa che il pool di IP specificato da ncp_snat_pool non dispone del tag scope: ncp/owner, tag: cluster:<cluster_name>
oppure il tag del proprietario del pool non corrisponde all'organizzazione che invia la richiesta di allocazione. Dopo aver corretto l'errore, è necessario riavviare NCP oppure rimuovere l'annotazione ncp_snat_pool e aggiungerla di nuovo.