Utilisation de noeuds finaux de service avec Code Engine

Tous les projets IBM Cloud® Code Engine offrent une intégration avec les points de terminaison des services IBM Cloud®. Ce support vous permet de vous connecter depuis votre infrastructure classique aux charges de travail Code Engine tout en restant dans le réseau IBM Cloud.

Vous pouvez contrôler la visibilité des charges de travail Code Engine et spécifier si l'application ou la fonction doit être exposée à des points d'extrémité publics ou privés. Une application ou une fonction configurée pour visibility = private est accessible via des noeuds finaux de service. Les applications ou fonctions auxquelles on accède par un point final de service ne quittent pas le réseau IBM et restent à l'intérieur du réseau IBM Cloud.

Nœuds finaux publics

Les noeuds finaux publics fournissent une connexion à votre déploiement sur le réseau public. Au moment de la mise à disposition, un noeud final public est l'option par défaut pour tous les déploiements. Votre environnement doit disposer d'un accès Internet pour se connecter à un déploiement.

Nœuds finaux privés

Un déploiement avec un noeud final de service sur le réseau privé obtient un noeud final qui n'est pas accessible depuis le réseau Internet public. Tout le trafic est acheminé vers le matériel dédié aux déploiements Code Engine et reste sur le réseau privé IBM Cloud. Tout le trafic à destination et en provenance de ce point d'extrémité est gratuit et n'entraîne pas de frais, à condition que le trafic reste sur IBM Cloud. Une fois que votre environnement a accès au réseau privé IBM Cloud, une connexion Internet n'est pas nécessaire pour vous connecter à votre déploiement.

Code Engine les déploiements d'applications avec des points d'extrémité privés sont accessibles à partir de n'importe quel compte au sein du réseau privé et l'accès à chaque instance nécessite une authentification. Pour restreindre cet accès à des adresses IP spécifiques, à des plages d'adresses IP, à des services IBM Cloud ou à des VPC, configurez des règles de restriction basées sur le contexte.

Gestion des ressources Code Engine en toute sécurité à l'aide de noeuds finaux de service

  1. Spécifiez un projet Code Engine pour utiliser le nœud final privé. Vous pouvez configurer un projet Code Engine pour utiliser le noeud final privé uniquement avec l'interface de ligne de commande. Pour créer un projet, utilisez la commande ibmcloud ce project create avec l'option --endpoint=private.

    ibmcloud ce project create --name myproject --endpoint=private
    

    Attendez que le projet soit à l'état active. Avec l'interface de ligne de commande, vous pouvez confirmer l'état du projet à l'aide de la commande ibmcloud ce project get .

    Si vous souhaitez qu'un projet Code Engine existant utilise le nœud final privé, utilisez la commande ibmcloud ce project select avec l'option --endpoint=private.

    ibmcloud ce project select --name myproject --endpoint=private
    

    Pour les commandes project create et project select , si l'option --endpoint n'est pas explicitement spécifiée, le comportement est déterminé par le système. Si l'interface de ligne de commande IBM Cloud est connectée à private.cloud.ibm.com, le projet Code Engine se comporte comme si --endpoint était private. Si l'interface de ligne de commande IBM Cloud est connectée à cloud.ibm.com, le projet Code Engine se comporte comme si --endpoint était public.

  2. Si vous n'avez pas créé de nouveau projet et que vous avez sélectionné un projet existant, et que vous souhaitez que votre application ne soit visible que par le point de terminaison privé, confirmez que le projet existant prend en charge les applications à visibilité privée. Utilisez la commande ibmcloud ce project get pour vérifier que la sortie de Application Private Visibility Supported est définie sur true. Si la valeur est false, Contactez le support IBM pour activer cette fonction dans votre projet existant.

    ibmcloud ce project get -n myproject
    

    Exemple de sortie

    Getting project 'myproject'...
    OK
    
    Name:                                      myproject
    ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
    Status:                                    active
    Enabled:                                   true
    Application Private Visibility Supported:  false
    Selected:                                  true
    Region:                                    us-south
    Resource Group:             default
    Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
    Age:                        52d
    Created:                                   Tue, 28 Sep 2021 05:12:16 -0500
    Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500
    
    Quotas:
    Category                                  Used  Limit
    App revisions                             1     60
    Apps                                      1     20
    Build runs                                1     100
    Builds                                    2     100
    Configmaps                                2     100
    CPU                                       0     64
    Ephemeral storage                         0     256G
    Instances (active)                        0     250
    Instances (total)                         0     2500
    Job runs                                  0     100
    Jobs                                      0     100
    Memory                                    0     256G
    Secrets                                   6     100
    Subscriptions (cron)                      0     100
    Subscriptions (IBM Cloud Object Storage)  0     100
    Subscriptions (Kafka)                     0     100
    
  3. Créer une application ou une fonction qui n'est visible que par le point d'accès privé. Utilisez ibmcloud ce application create ou la commande ibmcloud ce function create avec l'option --visibility=private. Vous pouvez également utiliser la console pour créer ou mettre à jour une application ou une fonction et définir la visibilité de votre application.

    ibmcloud ce application create -n myapp --visibility=private
    

Accéder à votre application en toute sécurité avec des points de terminaison de service

  1. A partir de votre projet Code Engine, vérifiez que votre application est configurée avec un paramètre visibility=private. Voir Déployer votre application avec un point de terminaison privé.

  2. Extrayez l'URL de l'application Code Engine qui est exposée au réseau privé. L'URL est au format suivant : <app>.<uuid>.private.<region>.codeengine.appdomain.cloud.

    • Dans la console Code Engine, allez dans l'onglet Domain mappings pour votre application afin de voir la visibilité d'une application et ses URLs disponibles.

    • A partir de l'interface de ligne de commandeCode Engine, utilisez la commande ibmcloud ce application get avec l'option --option url. Dans l'exemple suivant, comme la visibilité de myapp est définie sur visibility=private, le fait de spécifier --option url avec cette commande envoie l' URL vers le réseau privé.

      ibmcloud ce application get -n myapp -output url
      

      Exemple de sortie

      http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
      
  3. Appeler l'application à partir du réseau privé IBM Cloud (par exemple, en appelant l'application à partir du Shell IBM Cloud ).

    L'application myapp est une application Hello World simple. Lorsque vous exécutez l'application myapp à l'aide de cURL,, Hello World est renvoyé. Par exemple, à partir du shell IBM Cloud, exécutez :

    curl http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    

Accès sécurisé à votre fonction avec des noeuds finaux de service

  1. Depuis votre projet Code Engine, confirmez que votre fonction est configurée avec un paramètre visibility=private. Voir Déploiement de votre fonction avec un noeud final privé.

  2. Récupérer le site URL de la fonction Code Engine qui est exposée au réseau privé. L'URL est au format suivant : <function>.<uuid>.private.<region>.codeengine.appdomain.cloud.

    • Dans la console Code Engine, allez à l'onglet Domain mappings pour votre fonction afin de voir la visibilité de la fonction et ses URLs disponibles.

    • A partir de l'interface de ligne de commandeCode Engine, utilisez la commande ibmcloud ce function get. Dans l'exemple suivant, comme la visibilité de myfunction est définie sur visibility=private, cette commande envoie l' URL au réseau privé.

      ibmcloud ce function get -n myfunction
      

      Exemple de sortie

      http://myfunction.1abc23def19.private.us-south.codeengine.appdomain.cloud