Déploiement

Vonage Cloud Runtime vous permet de créer rapidement une instance en cours d'exécution sur la plateforme en déployant. Le déploiement regroupe votre code source avec un fichier de configuration, ce qui crée un paquetage. Le paquet est ensuite téléchargé sur la plateforme et devient une instance en cours d'exécution.

Fichier de configuration

Les fichiers de configuration donnent des informations à la plateforme sur la manière de déboguer et de déployer votre application. Voici un exemple de fichier de configuration :

project:
    name: app
instance:
    name: dev
    runtime: nodejs22
    region: aws.use1
    application-id: 773c2b45-c20a-4d6b-8afe-24ce29ba6f92
    entrypoint: [node, index.js]
    build-script: "./build.sh"
    capabilities:
        - voice
        - messages-v1
    environment:
        - name: VONAGE_NUMBER
          value: "44700000000"
        - name: INTEGRATION_API_KEY
          secret: MY_SECRET_API_KEY
    secrets:
        - MY_SECRET_API_KEY
debug:
    name: debug
    application-id: 884c2b45-c20a-4d6b-8afe-24ce29ba6f93
    environment:
        - name: DEBUG_VONAGE_NUMBER
          value: "4471111111"
    entrypoint: [nodemon, --inspect, index.js]
    preserve-data: false
  • Le nom du projet est l'espace de noms unique pour votre projet qui peut contenir plusieurs instances.
  • Le nom de l'instance est un identifiant unique pour votre instance.
  • region est l'endroit où l'instance sera exécutée.
  • entrypoint donne à la plateforme Vonage Cloud Runtime des informations sur la façon de démarrer votre application.
  • build-script vous permet de spécifier un script à exécuter pendant que la plateforme construit votre application.

Vous pouvez en savoir plus sur les options qui vous sont offertes en consultant la rubrique guide du fichier de configuration.

Variables d'environnement injectées

Lorsque vous déployez votre projet dans Cloud Runtime (ou que vous utilisez la fonction vcr debug), la plate-forme injectera quelques variables d'environnement pour vous avec le fichier environment de votre fichier de configuration.

VCR_PORT
VCR_REGION
VCR_DEBUG
VCR_CODE_DIR
VCR_REGION_ID
VCR_PRIVATE_KEY
VCR_API_REGION_ID
VCR_API_ACCOUNT_ID
VCR_API_ACCOUNT_SECRET
VCR_API_APPLICATION_ID
VCR_INSTANCE_PUBLIC_URL
VCR_INSTANCE_SERVICE_NAME

Adresse et port de l'application

Votre application doit écouter sur le port fourni par l'option VCR_PORT et la lier à la variable d'environnement 0.0.0.0. Le VCR achemine le trafic entrant par l'intermédiaire d'un proxy interne - qui se lie à localhost ou 127.0.0.1 rendra votre application inaccessible.

Node.js (Express) :

const port = process.env.VCR_PORT || 8080;
app.listen(port, '0.0.0.0');

Python (FastAPI) :

import os, uvicorn
port = int(os.environ.get('VCR_PORT', 8080))
uvicorn.run(app, host='0.0.0.0', port=port)

Allez-y :

port := os.Getenv("VCR_PORT")
if port == "" { port = "8080" }
http.ListenAndServe("0.0.0.0:"+port, nil)

Java (Spring Boot) :

# application.properties
server.port=${VCR_PORT:8080}
server.address=0.0.0.0

Ruby (Sinatra) :

PHP :

# vcr.yml entrypoint
entrypoint:
  - php
  - -S
  - "0.0.0.0:${VCR_PORT}"
  - -t
  - public

Itinéraire du bilan de santé

La plateforme Vonage Cloud Runtime attend un itinéraire, /_/healthLa route doit être disponible sur votre application, ce qui permet de vérifier l'état de santé de votre application déployée. La route ne doit pas être liée à une authentification. Votre application sera redémarrée si cette route ne renvoie pas un statut 200. Si la route est manquante, votre déploiement échouera.

Vous pouvez en profiter pour effectuer vos propres vérifications et demander à la plateforme de redémarrer automatiquement votre application si elle se trouve dans un mauvais état en renvoyant un statut autre que 200 dans les 30 secondes.

Node.js (Express) :

app.get('/_/health', (req, res) => res.sendStatus(200));

Node.js (Fastify) :

fastify.get('/_/health', async () => ({ status: 'ok' }));

Python (Flask) :

@app.route('/_/health')
def health():
    return 'OK', 200

Python (FastAPI) :

@app.get('/_/health')
async def health():
    return {'status': 'ok'}

Allez-y :

http.HandleFunc("/_/health", func(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w.Write([]byte("OK"))
})

Java (Spring Boot) :

@RestController
public class HealthController {
    @GetMapping("/_/health")
    public ResponseEntity<String> health() {
        return ResponseEntity.ok("OK");
    }
}

Ruby (Sinatra) :

PHP :

Comment déployer

Vous pouvez procéder au déploiement à l'aide de la CLI de Vonage Cloud Runtime. Pour déployer, exécutez :

vcr deploy

Si vous obtenez un message d'erreur "credentials not found", exécutez vcr app generate-keys pour régénérer les informations d'identification de votre application Vonage pour Vonage Cloud Runtime.

Cette commande permet d'effectuer les opérations suivantes :

  • Configure les rappels de votre Application Vonage comme décrit dans la section capabilities objet.
  • Remplit le répertoire actuel.
  • Le télécharge vers la Cloud Runtime Platform.
  • Exécute votre script de construction s'il est fourni dans votre fichier de configuration.
  • Si tout se passe bien, exécutez la commande dans votre entrypoint.

Pour éviter de télécharger des fichiers volumineux ou non désirés dans le cadre de votre déploiement, utilisez un fichier de type .vcrignore pour les exclure.

Par défaut, la commande deploy recherche un fichier de configuration appelé vcr.yml dans le répertoire courant. Pour utiliser un fichier de configuration différent, vous pouvez exécuter :

vcr deploy --filename <path/to/file>

Par exemple, pour déployer votre code actuel avec un fichier de configuration appelé production.yml vous courriez :

vcr deploy --filename production.yml

Déploiement avec une action GitHub

Si vous souhaitez intégrer le déploiement dans votre flux de travail GitHub, vous pouvez ajouter une action GitHub pour déployer pour vous. Les principales étapes de l'action consistent à extraire votre code, à installer le fichier CLI du moteur d'exécution Cloudpuis exécutez la commande de déploiement. Voici un exemple de flux de travail qui suppose l'utilisation d'un serveur script de construction pour gérer les aspects personnalisés de votre projet :

name: Deploy to Cloud Runtime

on:
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    
    env:
      VONAGE_API_KEY: ''
      VCR_REGION: 'euw1'
      VCR_SHORT_REGION: 'eu'   # eu | us | ap
    
    steps:
      - name: Checkout code
        uses: actions/checkout@v3.0.2
      - name: Install Cloud Runtime CLI
        uses: Vonage/cloud-runtime-cli@main
      - name: Deploy
        run: |
          vcr deploy --api-key ${{env.VONAGE_API_KEY}} --api-secret ${{ secrets.VONAGE_API_SECRET }} --region aws.${{env.VCR_REGION}} --graphql-endpoint https://api-${{env.VCR_SHORT_REGION}}.vonage.com/v1/vcr/${{env.VCR_REGION}}/api/graphql/v1/graphql

Vous devrez remplacer VONAGE_API_KEY, VCR_REGIONet VCR_SHORT_REGION avec votre clé API et les valeurs de votre région cible :

Région VCR_REGION VCR_SHORT_REGION Point d'arrivée GraphQL
UE Ouest (Irlande) euw1 eu https://api-eu.vonage.com/v1/vcr/euw1/api/graphql/v1/graphql
Est des États-Unis (Virginie) use1 us https://api-us.vonage.com/v1/vcr/use1/api/graphql/v1/graphql
AP Sud-Est (Singapour) apse1 ap https://api-ap.vonage.com/v1/vcr/apse1/api/graphql/v1/graphql
AP Southeast (Sydney) apse2 ap https://api-ap.vonage.com/v1/vcr/apse2/api/graphql/v1/graphql

Ce flux de travail est exécuté manuellement mais vous pouvez le modifier pour qu'il s'exécute lorsque les PR sont fermés, etc. Vous pouvez en savoir plus sur les actions GitHub sur la page Actions Documentation.

Dépannage du déploiement

Vous pouvez obtenir une erreur "credentials not found" si la plateforme Vonage Cloud Runtime n'a pas accès aux informations d'identification de votre application Vonage. Vous pouvez générer une nouvelle paire de clés privées à l'aide du CLI :

vcr app generate-keys --app-id <app-id> 

Voir votre déploiement

Pour examiner plus en détail votre projet et vos déploiements, vous pouvez utiliser la commande Tableau de bord Vonage Cloud Runtime.

Screenshot of the Vonage Cloud Runtime dashboard home page

En cliquant sur votre instance déployée, vous aurez accès aux journaux, aux événements et à l'historique du déploiement. Par exemple, l'onglet Historique vous montrera l'historique du déploiement de cette instance :

Screenshot of an instance's history page

Si vous déployez plus d'une instance pour votre projet, elles apparaîtront toutes sur le tableau de bord :

Screenshot of the cloud runtime dashboard showing multiple instances

Il s'agit d'un projet intitulé vapiqui possède deux fichiers de configuration. L'un des fichiers de configuration contient une instance nommée dev et l'autre a une instance nommée prod. Cela vous permet d'avoir plusieurs instances exécutant le même code mais avec des environnements différents.

Supprimer une instance

Si vous souhaitez supprimer une instance déployée, vous pouvez utiliser la commande instance remove de la CLI de Vonage Cloud Runtime :

vcr instance remove --project-name <project-name> --instance-name <instance-name> 

Ainsi, pour supprimer le dev Dans l'exemple de la capture d'écran ci-dessus, vous devez exécuter :

vcr instance remove --project-name vapi --instance-name dev

Vous pouvez également supprimer une instance en utilisant l'identifiant de l'instance :

vcr instance remove --id <instance-id>

AVERTISSEMENT : Cette action est irréversible ! Les états et les planificateurs attachés seront également supprimés de manière permanente.

Liste des instances

Pour voir toutes les instances déployées pour votre Account, exécutez :

vcr instance list

Visualiser les journaux d'instance

Vous pouvez récupérer les journaux d'une instance déployée à l'aide de la CLI :

# Print the last logs by project and instance name vcr instance log --project-name <project-name> --instance-name <instance-name> # Print the last logs by instance ID vcr instance log --id <instance-id>

Journaux en continu

Utiliser le --follow (-f) afin de diffuser en continu les nouvelles entrées du journal au fur et à mesure qu'elles arrivent, comme dans le cas de l'option tail -f:

vcr instance log --project-name <project-name> --instance-name <instance-name> --follow

Appuyez sur Ctrl+C pour arrêter la diffusion.

Filtrage des journaux

Vous pouvez limiter la sortie des journaux à l'aide de ces drapeaux optionnels :

Drapeau Court Description
--history <n> Nombre d'entrées historiques à récupérer en premier (par défaut : 300)
--log-level <level> -l Niveau minimum de journalisation : trace, debug, info, warn, error, fatal
--source-type <type> -s Filtrer par source : application ou provider

Exemples :

# Show only errors and above, streaming vcr instance log -p <project-name> -n <instance-name> --log-level error --follow # Show only application logs (exclude provider logs) vcr instance log -p <project-name> -n <instance-name> --source-type application # Fetch the last 500 entries and exit vcr instance log --id <instance-id> --history 500

Liste d'autorisation des adresses IP

Si vous souhaitez restreindre l'accès à vos systèmes, les adresses IP de Vonage Cloud Runtime pour chaque région sont :

UE Ouest - aws.euw1

  • 52.215.68.46
  • 46.137.9.43
  • 54.72.25.154

Ouest des États-Unis - aws.use1

  • 54.87.47.119
  • 3.224.186.73
  • 35.153.45.51

APAC Sud-Est - aws.apse1

  • 13.251.207.33
  • 52.76.50.31
  • 54.169.132.8

APAC Sud-Est (Sydney) - aws.apse2

  • 52.62.122.28
  • 13.236.199.68
  • 52.63.14.36