Gateway virtuali - AWS App Mesh

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gateway virtuali

Un gateway virtuale consente alle risorse esterne alla mesh di comunicare con le risorse che si trovano all'interno della mesh. Il gateway virtuale rappresenta un proxy Envoy in esecuzione in un servizio Amazon ECS, in un servizio Kubernetes o in un'istanza Amazon EC2. A differenza di un nodo virtuale che rappresenta Envoy in esecuzione con un'applicazione, un gateway virtuale rappresenta Envoy distribuito autonomamente.

Le risorse esterne devono essere in grado di risolvere un nome DNS in un indirizzo IP assegnato al servizio o all'istanza che esegue Envoy. Envoy può quindi accedere a tutta la configurazione di App Mesh per le risorse che si trovano all'interno della mesh. La configurazione per la gestione delle richieste in arrivo presso il Virtual Gateway è specificata utilizzandoPercorsi.

Importante

Un gateway virtuale con un listener HTTP o HTTP2 riscrive il nome host della richiesta in arrivo nel nome del servizio virtuale di destinazione del gateway Route e il prefisso corrispondente dalla rotta del gateway viene riscritto in/, per impostazione predefinita. Ad esempio, se hai configurato la corrispondenza del percorso del gateway con il prefisso a/chaptere, se la richiesta in arrivo è/chapter/1, la richiesta verrebbe riscritta in/1. Per configurare le riscritture, fare riferimento allaCreazione di una route gatewaysezione da Gateway Routes

Quando si crea un gateway virtuale,proxyConfigurationeusernon deve essere configurato.

Per completare una end-to-end procedura passo per passo, vedereConfigurazione di Inbound Gateway.

Creazione di un gateway virtuale

Nota

Quando si crea un gateway virtuale, è necessario aggiungere un selettore di namespace con un'etichetta per identificare l'elenco dei namespace a cui associare i gateway Routes al gateway virtuale creato.

AWS Management Console

Per creare un gateway virtuale utilizzandoAWS Management Console

  1. Apri la console di App Mesh all'indirizzohttps://console.aws.amazon.com/appmesh/.

  2. Scegliere la mesh in cui creare il gateway virtuale. Tutte le mesh che possiedi e che sono statecondivisocon te sono elencati.

  3. ScegliGateway virtualinel menu di navigazione a sinistra.

  4. ScegliCreare un gateway virtuale.

  5. PerNome del gateway virtuale, immetti un nome per il gateway virtuale.

  6. (Facoltativo, ma consigliato) ConfigurazionePolicy Client Policy predefinita.

    1. (Facoltativo) SelezionareApplicazione del protocollo TLSse si desidera che il gateway comunichi solo con i servizi virtuali utilizzando Transport Layer Security (TLS).

    2. (Opzionale) PerPorte, specifica una o più porte su cui applicare la comunicazione TLS con i servizi virtuali.

    3. PerMetodo di convalida, selezionare una delle seguenti opzioni. Il certificato specificato deve esistere già e soddisfare specifici requisiti. Per ulteriori informazioni, consulta la pagina Requisiti del certificato .

      • AWS Certificate Manager Private Certificate Authorityhosting: selezionare una o più esistentiCertificati.

      • Envoy Secret Discovery Service (SDS)hosting: inserisci il nome del segreto che Envoy recupera utilizzando il Secret Discovery Service.

      • Hosting di file locale— Specificare il percorso versoChain di certificatifile sul file system in cui viene distribuito Envoy.

    4. (Facoltativo) Specifica unaNome alternativo dell'oggetto. Per aggiungere altri SAN, selezionareAdd SAN. I SAN devono essere formattati con FQDN o URI.

    5. (Facoltativo) SelezionareFornisci certificato cliente una delle opzioni seguenti per fornire un certificato client quando un server lo richiede e abilitare l'autenticazione TLS reciproca. Per ulteriori informazioni sul protocollo TLS reciproco consulta la pagina di App MeshAutenticazione TLS reciprocadocumenti.

      • Envoy Secret Discovery Service (SDS)hosting: inserisci il nome del segreto che Envoy recupera utilizzando il Secret Discovery Service.

      • Hosting di file locale— Specificare il percorso versoChain di certificatifile, così come ilChiave privata, nel file system in cui è distribuito Envoy. Per un completo, end-to-end descrizione dettagliata della distribuzione di una mesh con un'applicazione di esempio utilizzando la crittografia con file locali, vedereConfigurazione di TLS con certificati TLS forniti da filesul GitHub.

  7. (Facoltativo) Per configurare la registrazione, selezionatoRegistrazione di log. Specifica il valorePercorso dei log di accesso HTTPche vuoi che Envoy utilizzi. Consigliamo la/dev/stdoutpercorso in modo da poter utilizzare i driver di registro Docker per esportare i log di Envoy su un servizio come Amazon CloudWatch Registri.

    Nota

    I log devono ancora essere integrati da un agente nell'applicazione e inviati a una destinazione. Questo percorso file indica a Envoy dove inviare i log.

  8. Configurazione dellaListener.

    1. Select unProtocolloe specificare il valore diPortasu cui Envoy ascolta il traffico. Ilhttpil listener consente la transizione della connessione ai websocket. È possibile fare clic.Add listenerper aggiungere più ascoltatori. IlRimuoviil pulsante rimuoverà quell'ascoltatore.

    2. (Opzionale)Abilita Connection Pool

      Il connection pooling limita il numero di connessioni che Virtual Gateway Envoy può stabilire contemporaneamente. È progettato per proteggere l'istanza Envoy dal sovraccarico di connessioni e consente di adattare la modellazione del traffico in base alle esigenze delle applicazioni.

      È possibile configurare le impostazioni del pool di connessioni lato destinazione per un listener di gateway virtuale. App Mesh imposta le impostazioni del pool di connessioni lato client su infinite per impostazione predefinita, semplificando la configurazione della mesh.

      Nota

      IlconnectionPooleconnectionPoolI protocolli di PortMapping devono essere gli stessi. Se il protocollo del tuo ascoltatore ègrpcohttp2, specificaremaxRequestsSolo. Se il protocollo del tuo ascoltatore èhttp, è possibile specificare entrambimaxConnectionsemaxPendingRequests.

      • PerNumero massimo connessioni, specificare il numero massimo di connessioni in uscita.

      • PerNumero massimo di richieste, specificare il numero massimo di richieste parallel che possono essere stabilite con Virtual Gateway Envoy.

      • (Opzionale) PerNumero massimo di richieste pendenti, specifica il numero di richieste in eccesso dopoNumero massimo connessioniche un inviato fa la fila. Il valore di default è 2147483647.

    3. (Opzionale) Per configurare un controllo dello stato per il listener, selezionaAbilita il controllo dell'integrità.

      Una politica di controllo dello stato è facoltativa, ma se si specifica un valore per una politica sanitaria, è necessario specificare i valori perSoglia integrità,Intervallo del controllo dell'Health,Protocollo di controllo,Periodo di timeout, eSoglia non Integro.

      • PerProtocollo di controllo, scegli un protocollo. Se si selezionagrpc, quindi il servizio deve essere conforme aProtocollo di controllo dello stato GR.

      • Per Health check port (Porta del controllo dello stato), specificare la porta su cui deve essere eseguito il controllo dello stato.

      • Per Healthy threshold (Soglia di integrità), specificare il numero di controlli dello stato andati a buon fine consecutivi che devono verificarsi prima di dichiarare il listener integro.

      • Per Health check interval (Intervallo del controllo dello stato), specificare il periodo di tempo in millisecondi tra ogni esecuzione del controllo dello stato.

      • Per Path (Percorso), specificare il percorso di destinazione per la richiesta di controllo dello stato. Questo valore viene utilizzato solo seProtocollo di controlloèhttpohttp2. Il valore viene ignorato per gli altri protocolli.

      • PerPeriodo di timeout, specificare il periodo di tempo di attesa quando si riceve una risposta dal controllo dello stato in millisecondi.

      • Per Unhealthy threshold (Soglia di mancata integrità), specificare il numero di controlli dello stato non andati consecutivamente a buon fine che sono necessari per dichiarare il listener non integro.

    4. (Facoltativo) Se desideri specificare se i client comunicano con questo gateway virtuale tramite TLS, selezionaAbilitare la terminazione TLS.

      • PerMode, seleziona la modalità per la quale desideri configurare TLS sul listener.

      • PerMetodo di certificazione, selezionare una delle seguenti opzioni. Il certificato deve soddisfare specifici requisiti. Per ulteriori informazioni, consulta la pagina Requisiti del certificato .

        • AWS Certificate Managerospitando— Seleziona un esistenteCertificato.

        • Envoy Secret Discovery Service (SDS)hosting: inserisci il nome del segreto che Envoy recupera utilizzando il Secret Discovery Service.

        • Hosting di file locale— Specificare il percorso versoChain di certificatieChiave privatafile sul file system in cui viene distribuito Envoy.

      • (Facoltativo) SelezionareRichiedi certificato cliente una delle opzioni seguenti per abilitare l'autenticazione TLS reciproca se il client fornisce un certificato. Per ulteriori informazioni sul protocollo TLS reciproco consulta la pagina di App MeshAutenticazione TLS reciprocadocumenti.

        • Envoy Secret Discovery Service (SDS)hosting: inserisci il nome del segreto che Envoy recupera utilizzando il Secret Discovery Service.

        • Hosting di file locale— Specificare il percorso versoChain di certificatifile sul file system in cui viene distribuito Envoy.

      • (Facoltativo) Specifica unaNome alternativo dell'oggetto. Per aggiungere altri SAN, selezionareAdd SAN. I SAN devono essere formattati con FQDN o URI.

  9. ScegliCreazione di gateway virtualeper finire.

AWS CLI

Per creare un gateway virtuale utilizzandoAWS CLI.

Crea un gateway virtuale utilizzando il seguente comando e inserisci JSON (sostituisci ilrossovalori con i tuoi):

  1. aws appmesh create-virtual-gateway \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName \ --cli-input-json file://create-virtual-gateway.json
  2. Contenuto diesempio create-virtual-gateway.json:

    { "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] } }
  3. Output di esempio:

    { "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-06T10:42:42.015000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "ACTIVE" }, "virtualGatewayName": "virtualGatewayName" } }

Per ulteriori informazioni sulla creazione di un gateway virtuale conAWS CLIper App Mesh, vedere lacreate-virtual-gatewaycomando nelAWS CLIriferimento.

Implementazione di gateway virtuale

Implementa un servizio Amazon ECS o Kubernetes che contiene solo ilContenitore Envoy. Puoi inoltre distribuire il container Envoy in un'istanza Amazon EC2. Per ulteriori informazioni, consulta la paginaGuida introduttiva a App Mesh e Amazon EC2. Per ulteriori informazioni su come effettuare la distribuzione in Amazon ECS consulta la paginaNozioni di base su App Mesh e Amazon ECSoNozioni di base suAWSApp Mesh e Kubernetesda distribuire su Kubernetes. È necessario impostare il valore diAPPMESH_RESOURCE_ARNvariabile di ambiente amesh/mesh-name/virtualGateway/virtual-gateway-namee non devi specificare la configurazione del proxy in modo che il traffico del proxy non venga reindirizzato a se stesso. Per impostazione predefinita, App Mesh utilizza il nome della risorsa specificata in APPMESH_RESOURCE_ARN quando Envoy si riferisce a se stesso nei parametri e nelle tracce. È possibile ignorare questo comportamento impostando la variabile di ambiente APPMESH_RESOURCE_CLUSTER con il proprio nome.

Ti consigliamo di distribuire più istanze del contenitore e configurare un Network Load Balancer per bilanciare il carico del traffico verso le istanze. Il nome di service discovery del load balancer è il nome che si desidera che i servizi esterni utilizzino per accedere alle risorse presenti nella mesh, ad esempiomyapp.example.com. Per ulteriori informazioni, consultaCreazione di un Network Load Balancer(Amazon ECS),Creazione di un Load Balancer esterno(Kubernetes), oTutorial: Aumenta la disponibilità della tua applicazione su Amazon EC2. Puoi inoltre trovare ulteriori esempi e procedure dettagliate nel nostroEsempi di App Mesh.

Abilita l'autorizzazione proxy per Envoy. Per ulteriori informazioni, consulta la pagina Envoy Proxy Authorization .

Eliminazione di un gateway virtuale

AWS Management Console

Per eliminare un gateway virtuale utilizzando laAWS Management Console

  1. Apri la console di App Mesh all'indirizzohttps://console.aws.amazon.com/appmesh/.

  2. Scegliere la mesh da cui si desidera eliminare un gateway virtuale. Tutte le mesh che possiedi e che sono statecondivisocon te sono elencati.

  3. ScegliGateway virtualinel menu di navigazione a sinistra.

  4. Scegli il gateway virtuale che desideri eliminare e selezionaElimina. Non è possibile eliminare un gateway virtuale se dispone di percorsi gateway associati. È necessario prima eliminare tutte le rotte gateway associate. Puoi eliminare solo un gateway virtuale in cui il tuo account è elencato comeProprietario della.

  5. Nella casella di conferma, digitaredeletee quindi selezionareElimina.

AWS CLI

Per eliminare un gateway virtuale utilizzando laAWS CLI

  1. Utilizza il comando seguente per eliminare il gateway virtuale (sostituisci ilrossovalori con i tuoi):

    aws appmesh delete-virtual-gateway \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName
  2. Output di esempio:

    { "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-07T10:57:22.638000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "DELETED" }, "virtualGatewayName": "virtualGatewayName" } }

Per ulteriori informazioni sull'eliminazione di un gateway virtuale conAWS CLIper App Mesh, vedere ladelete-virtual-gatewaycomando nelAWS CLIriferimento.