Prise en charge des API Amazon VPC sur Contrail OpenStack
Présentation d’Amazon Virtual Private Cloud
La version actuelle de Grizzly d’OpenStack prend en charge la traduction de l’API Elastic Compute Cloud (EC2) en appels OpenStack Nova, Quantum et Keystone. Les API EC2 sont utilisées dans Amazon Web Services (AWS) et les clouds privés virtuels (VPC) pour lancer des machines virtuelles, attribuer des adresses IP à des machines virtuelles, etc. Un VPC est un conteneur dans lequel les applications peuvent être lancées et où les ressources sont accessibles via les services réseau fournis par le VPC.
Contrail améliore son utilisation des API EC2 pour prendre en charge les API VPC d’Amazon.
Amazon VPC prend en charge des structures de mise en réseau telles que : les sous-réseaux, les options DHCP, les adresses IP élastiques, les ACL réseau, les groupes de sécurité et les tables de routage. Les API Amazon VPC sont désormais prises en charge sur la distribution Openstack Contrail, de sorte que les utilisateurs des API Amazon EC2 pour leur VPC peuvent utiliser les mêmes scripts pour passer à une solution Openstack Contrail.
Euca2ools sont des outils en ligne de commande permettant d’interagir avec Amazon Web Services (AWS) et d’autres services Web compatibles AWS, tels qu’OpenStack. Euca2ools a été étendu dans OpenStack Contrail pour ajouter la prise en charge d’Amazon VPC, similaire à la prise en charge qui existe déjà pour la CLI Amazon EC2.
Pour plus d’informations sur Amazon VPC et AWS EC2, consultez :
Documentation Amazon VPC : http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html
Liste des API VPC Amazon : http://docs.aws.amazon.com/AWSEC2/latest/APIReference/query-apis.html
Mappage des fonctionnalités d’Amazon VPC aux fonctionnalités OpenStack Contrail
Le tableau suivant compare les fonctionnalités Amazon VPC à leurs fonctionnalités équivalentes dans OpenStack Contrail.
Fonctionnalité Amazon VPC |
Fonctionnalité OpenStack Contrail |
---|---|
VPC |
Projet |
Sous-réseaux |
Réseaux (réseaux virtuels) |
Options DHCP |
IPAM |
IP élastique |
IP flottant |
Listes de contrôle d’accès réseau |
Listes de contrôle d’accès réseau |
Groupes de sécurité |
Groupes de sécurité |
Table de routage |
Table de routage |
Exemple de VPC et de sous-réseaux
Lors de la création d’un VPC, l’utilisateur doit fournir un bloc CIDR (Inter-Domain Routing) sans classe dont tous les sous-réseaux de ce VPC feront partie.
Dans l’exemple suivant, un VPC est créé avec un bloc CIDR de 10.1.0.0/16. Un sous-réseau est créé dans le bloc CIDR VPC, avec un bloc CIDR 10.1.1.0/24. Le VPC dispose d’une liste de contrôle d’accès réseau par défaut nommée acl-default
.
Tous les sous-réseaux créés dans le VPC sont automatiquement associés à la liste de contrôle d’accès réseau par défaut. Cette association peut être modifiée lors de la création d’une nouvelle liste de contrôle d’accès réseau. La dernière commande de la liste ci-dessous crée une machine virtuelle à l’aide de l’image ami-00000003
et se lance avec une interface en subnet-5eb34ed2
.
# euca-create-vpc 10.1.0.0/16 VPC VPC:vpc-8352aa59 created # euca-describe-vpcs VpcId CidrBlock DhcpOptions ----- --------- ----------- vpc-8352aa59 10.1.0.0/16 None # euca-create-subnet -c 10.1.1.0/24 vpc-8352aa59 Subnet: subnet-5eb34ed2 created # euca-describe-subnets Subnet-id Vpc-id CidrBlock --------- ------ --------- subnet-5eb34ed2 vpc-8352aa59 10.1.1.0/24 # euca-describe-network-acls AclId ----- acl-default(def) vpc-8352aa59 Rule Dir Action Proto Port Range Cidr ---- --- ------ ----- ---- ----- ---- 100 ingress allow -1 0 65535 0.0.0.0/0 100 egress allow -1 0 65535 0.0.0.0/0 32767 ingress deny -1 0 65535 0.0.0.0/0 32767 egress deny -1 0 65535 0.0.0.0/0 Assocation SubnetId AclId ---------- -------- ------------ aclassoc-0c549d66 subnet-5eb34ed2 acl-default # euca-run-instances -s subnet-5eb34ed2 ami-00000003
CLI Euca2ools pour VPC et sous-réseaux
Les commandes CLI suivantes euca2ools
permettent de créer, définir et supprimer des VPC et des sous-réseaux :
euca-create-vpc
euca-delete-vpc
euca-describe-vpcs
euca-create-subnet
euca-delete-subnet
euca-describe-subnets
Sécurité dans les VPC : exemple de listes de contrôle d’accès réseau
Les listes de contrôle d’accès réseau prennent en charge les règles d’entrée et de sortie pour la classification et le filtrage du trafic. Les listes de contrôle d’accès réseau sont appliquées au niveau du sous-réseau.
Dans l’exemple suivant, une nouvelle liste de contrôle d’accès, acl-ba7158
, est créée et un sous-réseau existant est associé à la nouvelle liste de contrôle d’accès.
# euca-create-network-acl vpc-8352aa59 acl-ba7158c # euca-describe-network-acls AclId ----- acl-default(def) vpc-8352aa59 Rule Dir Action Proto Port Range Cidr ---- --- ------ ----- ---- ----- ---- 100 ingress allow -1 0 65535 0.0.0.0/0 100 egress allow -1 0 65535 0.0.0.0/0 32767 ingress deny -1 0 65535 0.0.0.0/0 32767 egress deny -1 0 65535 0.0.0.0/0 Assocation SubnetId AclId ---------- -------- ------------ aclassoc-0c549d66 subnet-5eb34ed2 acl-default AclId ----- acl-ba7158c vpc-8352aa59 Rule Dir Action Proto Port Range Cidr ---- --- ------ ----- ---- ----- ---- 32767 ingress deny -1 0 65535 0.0.0.0/0 32767 egress deny -1 0 65535 0.0.0.0/0 # euca-replace-network-acl-association -a aclassoc-0c549d66 acl-ba7158c aclassoc-0c549d66 # euca-describe-network-acls AclId ----- acl-default(def) vpc-8352aa59 Rule Dir Action Proto Port Range Cidr ---- --- ------ ----- ---- ----- ---- 100 ingress allow -1 0 65535 0.0.0.0/0 100 egress allow -1 0 65535 0.0.0.0/0 32767 ingress deny -1 0 65535 0.0.0.0/0 32767 egress deny -1 0 65535 0.0.0.0/0 Assocation SubnetId AclId ---------- -------- ------------ AclId ----- acl-ba7158c vpc-8352aa59 Rule Dir Action Proto Port Range Cidr ---- --- ------ ----- ---- ----- ---- 32767 ingress deny -1 0 65535 0.0.0.0/0 32767 egress deny -1 0 65535 0.0.0.0/0 Assocation SubnetId AclId ---------- -------- ------------ aclassoc-0c549d66 subnet-5eb34ed2 acl-ba7158c
Euca2ools CLI pour les ACLs réseau
Les commandes CLI suivantes euca2ools
permettent de créer, définir et supprimer des VPC et des sous-réseaux :
euca-create-network-acl
euca-delete-network-acl
euca-replace-network-acl-association
euca-describe-network-acls
euca-create-network-acl-entry
euca-delete-network-acl-entry
euca-replace-network-acl-entry
Sécurité dans un VPC : exemple de groupes de sécurité
Les groupes de sécurité fournissent des contrôles d’entrée/sortie au niveau des machines virtuelles. Les groupes de sécurité sont appliqués aux interfaces des machines virtuelles.
Dans l’exemple suivant, un nouveau groupe de sécurité est créé. Les règles peuvent être ajoutées ou supprimées pour le groupe de sécurité en fonction des commandes répertoriées pour euca2ools
. La dernière ligne lance une machine virtuelle à l’aide du groupe de sécurité nouvellement créé.
# euca-describe-security-groups GroupId VpcId Name Description ------- ----- ---- ----------- sg-6d89d7e2 vpc-8352aa59 default Direction Proto Start End Remote --------- ----- ----- --- ------ Ingress any 0 65535 [0.0.0.0/0] Egress any 0 65535 [0.0.0.0/0] # euca-create-security-group -d "TestGroup" -v vpc-8352aa59 testgroup GROUP sg-c5b9d22a testgroup TestGroup # euca-describe-security-groups GroupId VpcId Name Description ------- ----- ---- ----------- sg-6d89d7e2 vpc-8352aa59 default Direction Proto Start End Remote --------- ----- ----- --- ------ Ingress any 0 65535 [0.0.0.0/0] Egress any 0 65535 [0.0.0.0/0] GroupId VpcId Name Description ------- ----- ---- ----------- sg-c5b9d22a vpc-8352aa59 testgroup TestGroup Direction Proto Start End Remote --------- ----- ----- --- ------ Egress any 0 65535 [0.0.0.0/0] # euca-run-instances -s subnet-5eb34ed2 -g testgroup ami-00000003
Euca2ools CLI pour les groupes de sécurité
Les commandes CLI suivantes euca2ools
permettent de créer, définir et supprimer des groupes de sécurité :
euca-create-security-group
euca-delete-security-group
euca-describe-security-groups
euca-authorize-security-group-egress
euca-authorize-security-group-ingress
euca-revoke-security-group-egress
euca-revoke-security-group-ingress
IP élastiques dans les VPC
Les adresses IP élastiques des VPC sont équivalentes aux adresses IP flottantes de la solution Contrail Openstack.
Dans l’exemple suivant, une adresse IP flottante est demandée au système et attribuée à une machine virtuelle particulière. La condition préalable est que le fournisseur ou l’administrateur Contrail ait provisionné un réseau nommé « public » et lui ait alloué un pool IP flottant. Ce pool d’adresses IP flottantes « publiques » est ensuite utilisé en interne par les locataires pour demander des adresses IP publiques qu’ils peuvent utiliser et attacher aux machines virtuelles.
# euca-allocate-address --domain vpc ADDRESS 10.84.14.253 eipalloc-78d9a8c9 # euca-describe-addresses --filter domain=vpc Address Domain AllocationId InstanceId(AssociationId) ------- ------ ------------ ------------------------- 10.84.14.253 vpc eipalloc-78d9a8c9 # euca-associate-address -a eipalloc-78d9a8c9 i-00000008 ADDRESS eipassoc-78d9a8c9 # euca-describe-addresses --filter domain=vpc Address Domain AllocationId InstanceId(AssociationId) ------- ------ ------------ ------------------------- 10.84.14.253 vpc eipalloc-78d9a8c9 i-00000008(eipassoc-78d9a8c9)
CLI Euca2ools pour les adresses IP élastiques
Les commandes CLI suivantes euca2ools
sont utilisées pour créer, définir et supprimer des adresses IP élastiques :
euca-allocate-address
euca-release-address
euca-describe-addresses
euca-associate-address
euca-disassociate-address
Euca2ools CLI pour les tables de routage
Les tables de routage peuvent être créées dans un Amazon VPC et associées à des sous-réseaux. Le trafic sortant d’un sous-réseau est ensuite recherché dans la table de routage et, en fonction du résultat de la recherche d’itinéraire, le saut suivant est choisi.
Les commandes CLI suivantes euca2ools
permettent de créer, définir et supprimer des tables de routage :
euca-create-route-table
euca-delete-route-table
euca-describe-route-tables
euca-associate-route-table
euca-disassociate-route-table
euca-replace-route-table-association
euca-create-route
euca-delete-route
euca-replace-route
Sauts Next pris en charge
Les sauts suivants pris en charge pour la version actuelle sont les suivants :
Saut suivant local
La désignation d’un tronçon suivant local indique que tous les sous-réseaux du VPC sont accessibles pour le préfixe de destination.
Passerelle Internet saut suivant
Ce saut suivant est utilisé pour le trafic destiné à Internet. Toutes les machines virtuelles utilisant le saut suivant de la passerelle Internet doivent utiliser une adresse IP élastique pour accéder à Internet, car les adresses IP du sous-réseau sont des adresses IP privées.
Instance NAT
Pour créer ce tronçon suivant, l’utilisateur doit lancer une machine virtuelle qui fournit le service de traduction d’adresses réseau (NAT). La machine virtuelle dispose de deux interfaces : une interne et une externe, toutes deux créées automatiquement. La seule exigence ici est qu’un réseau « public » ait été provisionné par l’administrateur, car la deuxième interface de la machine virtuelle est créée dans le réseau « public ».
Passerelle Internet Next Hop Euca2ools CLI
Les commandes CLI suivantes euca2ools
permettent de créer, définir et supprimer le tronçon suivant de la passerelle Internet :
euca-attach-internet-gateway
euca-create-internet-gateway
euca-delete-internet-gateway
euca-describe-internet-gateways
euca-detach-internet-gateway
Instance NAT tronçon suivant CLI Euca2ools
Les commandes CLI suivantes euca2ools
permettent de créer, définir et supprimer des sauts suivants d’instance NAT :
euca-run-instances
euca-terminate-instances
Exemple : Création d’une instance NAT avec l’interface de ligne de commande Euca2ools
L’exemple suivant crée une instance NAT et crée une route par défaut pointant vers l’instance NAT.
# euca-describe-route-tables RouteTableId Main VpcId AssociationId SubnetId ------------ ---- ----- ------------- -------- rtb-default yes vpc-8352aa59 rtbassoc-0c549d66 subnet-5eb34ed2 Prefix NextHop ------ ------- 10.1.0.0/16 local # euca-describe-images IMAGE ami-00000003 None (ubuntu) 2c88a895fdea4461a81e9b2c35542130 IMAGE ami-00000005 None (nat-service) 2c88a895fdea4461a81e9b2c35542130 # euca-run-instances ami-00000005 # euca-create-route --cidr 0.0.0.0/0 -i i-00000006 rtb-default # euca-describe-route-tables RouteTableId Main VpcId AssociationId SubnetId ------------ ---- ----- ------------- -------- rtb-default yes vpc-8352aa59 rtbassoc-0c549d66 subnet-5eb34ed2 Prefix NextHop ------ ------- 10.1.0.0/16 local 0.0.0.0/0 i-00000006