Restriction d'un pool d'adresses IP SNAT à des espaces de noms Kubernetes ou à des organisations TAS spécifiques
- Pour un espace de noms Kubernetes :
scope: ncp/owner, tag: ns:<namespace_UUID>
- Pour une organisation TAS :
scope: ncp/owner, tag: org:<org_UUID>
kubectl get ns -o yaml cf org <org_name> --guid
- Chaque balise doit spécifier un UUID. Vous pouvez créer plusieurs balises pour le même pool.
- Si vous modifiez les balises après l'allocation d'adresses IP à des espaces de noms ou à des organisations selon les anciennes balises, ces adresses IP sont récupérées uniquement après la modification des configurations SNAT des services Kubernetes ou des applications TAS, ou le redémarrage de NCP.
- Les balises de propriétaire de l'espace de noms et de l'organisation TAS sont facultatives. Sans ces balises, les adresses IP du pool IP SNAT peuvent être allouées à n'importe quel espace de noms ou organisation TAS.
Configuration d'un pool d'adresses IP SNAT pour un service
apiVersion: v1 kind: Service metadata: name: svc-example annotations: ncp/snat_pool: <external IP pool ID or name> selector: app: example ...
Le pool d'adresses IP spécifié par ncp/snat_pool doit avoir la balise scope: ncp/owner, tag: cluster:<cluster_name>
.
- IP_POOL_NOT_FOUND - le pool d'adresses IP SNAT est introuvable dans NSX Manager.
- IP_POOL_EXHAUSTED - le pool d'adresses IP SNAT est saturé.
- IP_POOL_NOT_UNIQUE - le pool spécifié par ncp/snat_pool fait référence à plusieurs pools dans NSX Manager.
- SNAT_RULE_OVERLAPPED - une nouvelle règle SNAT est créée, mais l'espace de service SNAT appartient également à un autre service SNAT, autrement dit, il existe plusieurs règles SNAT pour le même espace.
- POOL_ACCESS_DENIED : le pool d'adresses IP spécifié par ncp/snat_pool ne dispose pas de la balise
scope: ncp/owner, tag: cluster:<cluster_name>
ou la balise de propriétaire du pool ne correspond pas à l'espace de noms du service qui envoie la demande d'allocation. Après avoir corrigé l'erreur, vous devez redémarrer NCP ou supprimer l'annotation ncp/snat_pool puis l'ajouter de nouveau.
- Le pool spécifié par ncp/snat_pool doit déjà exister dans NSX-T Data Center avant que le service ne soit configuré.
- Dans NSX-T Data Center, la priorité de la règle SNAT pour le service est supérieure à celle du projet.
- Si un espace est configuré avec plusieurs règles SNAT, une seule fonctionnera.
- Vous pouvez spécifier un pool d'adresses IP différent en modifiant l'annotation et en redémarrant NCP.
Configuration d'un pool d'adresses IP SNAT pour un espace de noms
apiVersion: v1 kind: Namespace metadata: name: ns-sample annotations: ncp/snat_pool: <external IP pool ID or name> ...
- IP_POOL_NOT_FOUND - le pool d'adresses IP SNAT est introuvable dans NSX Manager.
- IP_POOL_EXHAUSTED - le pool d'adresses IP SNAT est saturé.
- IP_POOL_NOT_UNIQUE - le pool spécifié par ncp/snat_pool fait référence à plusieurs pools dans NSX Manager.
- POOL_ACCESS_DENIED : le pool d'adresses IP spécifié par ncp/snat_pool ne dispose pas de la balise
scope: ncp/owner, tag: cluster:<cluster_name>
ou la balise de propriétaire du pool ne correspond pas à l'espace de noms qui envoie la demande d'allocation. Après avoir corrigé l'erreur, vous devez redémarrer NCP ou supprimer l'annotation ncp/snat_pool puis l'ajouter de nouveau.
- Vous pouvez spécifier un seul pool d'adresses IP SNAT dans l'annotation.
- Le pool d'adresses IP SNAT n'a pas besoin d'être configuré dans ncp.ini.
- Le pool d'adresses IP spécifié par ncp/snat_pool doit avoir la balise
scope: ncp/owner, tag: cluster:<cluster_name>
. - Le pool d'adresses IP spécifié par ncp/snat_pool peut également disposer d'une balise d'espace de noms
scope: ncp/owner, tag: ns:<namespace_UUID>
. - Si l'annotation ncp/snat_pool est manquante, l'espace de noms utilisera le pool d'adresses IP SNAT pour le cluster.
- Vous pouvez spécifier un pool d'adresses IP différent en modifiant l'annotation et en redémarrant NCP.
Configuration d'une adresse IP SNAT pour un service
apiVersion: v1 kind: Service metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED - L'adresse IP a déjà été allouée.
- IP_NOT_IN_POOL - L'adresse IP ne se trouve pas dans le pool d'adresses IP SNAT.
- IP_POOL_EXHAUSTED - Le pool d'adresses IP SNAT est saturé.
- SNAT_PROCESS_FAILED - Une erreur inconnue s'est produite.
Configuration d'une adresse IP SNAT pour un espace de noms
apiVersion: v1 kind: Namespace metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED - L'adresse IP a déjà été allouée.
- IP_NOT_IN_POOL - L'adresse IP ne se trouve pas dans le pool d'adresses IP SNAT.
- IP_NOT_REALIZED - Une erreur s'est produite dans NSX-T.
- IP_POOL_EXHAUSTED - Le pool d'adresses IP SNAT est saturé.
- SNAT_PROCESS_FAILED - Une erreur inconnue s'est produite.
Configuration d'un pool SNAT pour une application 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> ...
- Le pool spécifié par NCP_SNAT_POOL doit déjà exister dans NSX-T Data Center avant que l'application ne soit transmise.
- La priorité d'une règle SNAT pour une application est supérieure à celle d'une règle SNAT pour une organisation.
- Une application peut être configurée avec une seule adresse IP SNAT.
- Vous pouvez spécifier un pool d'adresses IP différent en modifiant la configuration et en transférant de nouveau l'application.
Configuration de SNAT pour TAS version 3
Avec TAS version 3, vous pouvez configurer SNAT de l'une des deux manières suivantes :
- Lors de la création de l'application, configurez NCP_SNAT_POOL dans manifest.yml.
Par exemple, l'application est appelée bread et manifest.yml contient les informations suivantes :
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
Exécutez les commandes suivantes :cf v3-push bread cf v3-apply-manifest -f manifest.yml cf v3-apps cf v3-restart bread
- Configurez NCP_SNAT_POOL à l'aide de la commande cf v3-set-env.
Exécutez les commandes suivantes (en supposant que l'application est appelée 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
Configuration d'un pool d'adresses IP SNAT ou d'une adresse IP pour une organisation TAS
- ncp_snat_pool - Le pool doit exister et disposer de la balise
scope: ncp/owner, tag: cluster:<cluster_name>
. - ncp_snat_ip - Une adresse spécifique dans un pool d'adresses IP.
- Si ncp_snat_pool et ncp_snat_ip sont spécifiés, l'adresse IP SNAT doit se trouver dans le pool d'adresses IP SNAT spécifié.
- Si seul ncp_snat_ip est spécifié, l'adresse IP SNAT doit se trouver dans le pool d'adresses IP externe spécifié dans ncp.ini.
- Si seul ncp_snat_pool est spécifié, l'adresse IP SNAT sera allouée à partir du pool spécifié.
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}}}'
Vous pouvez accéder à l'interface utilisateur de NSX Manager pour vérifier si la règle SNAT a été créée. Pour vérifier les erreurs, examinez les journaux NCP.
Si vous voyez l'erreur POOL_ACCESS_DENIED dans le journal NCP, cela signifie que le pool d'adresses IP spécifié par ncp_snat_pool n'a pas la balise scope: ncp/owner, tag: cluster:<cluster_name>
ou que la balise de propriétaire du pool ne correspond pas à l'organisation qui envoie la demande d'allocation. Après avoir corrigé l'erreur, vous devez redémarrer NCP ou supprimer l'annotation ncp_snat_pool puis l'ajouter de nouveau.