Implementare i servizi Amazon ECS utilizzando un controller di terze parti - Amazon Elastic Container Service

Implementare i servizi Amazon ECS utilizzando un controller di terze parti

Il tipo di implementazione esterna consente di usare qualsiasi controller di implementazione di terze parti per il controllo completo sul processo di implementazione per un servizio Amazon ECS. I dettagli del servizio vengono gestiti tramite le operazioni API del servizio di gestione (CreateService, UpdateService e DeleteService) o della gestione dei set di attività (CreateTaskSet, UpdateTaskSet, UpdateServicePrimaryTaskSet e DeleteTaskSet). Ciascuna operazione API gestisce un sottoinsieme di parametri di definizione del servizio.

L'operazione API UpdateService aggiorna i parametri del periodo di tolleranza per il conteggio desiderato e il controllo dell'integrità di un servizio. Se è necessario aggiornare l'opzione di calcolo, la versione della piattaforma, i dettagli del bilanciatore del carico, la configurazione di rete o la definizione di attività, è necessario creare un nuovo set di attività.

L'operazione API UpdateTaskSet aggiorna solo il parametro di dimensionamento per un set di attività.

L'operazione API UpdateServicePrimaryTaskSet modifica il set di attività impostato come principale in un servizio. Chiamando l'operazione API DescribeServices, vengono restituiti tutti i campi specificati per un set di attività principale. Se viene aggiornato il set di attività principale per un servizio, quando viene definito il nuovo set principale eventuali valori del parametro esistenti sul nuovo ma diversi da quelli impostati sul precedente set di attività in un servizio verranno aggiornati ai nuovi valori. Se non viene definito un set di attività principale per un servizio, i relativi campi nella descrizione del servizio sono nulli.

Considerazioni sull'implementazione esterna

Quando si utilizza il tipo di implementazione esterna, tenere conto di quanto segue:

  • I tipi di load balancer supportati sono un Application Load Balancer o un Network Load Balancer.

  • Fargate oppure i tipi di controller di implementazione EXTERNAL non supportano la strategia di pianificazione DAEMON.

  • L'integrazione di Application AutoScaling con Amazon ECS supporta solo il servizio Amazon ECS come destinazione. La dimensione scalabile supportata per Amazon ECS è ecs:service:DesiredCount: il numero di attività di un servizio Amazon ECS. Non è presente un'integrazione diretta tra i set di attività di Application AutoScaling e Amazon ECS. I set di attività di Amazon ECS calcolano il ComputedDesiredCount base al DesiredCount di servizio di Amazon ECS.

Flusso di lavoro dell'implementazione esterna

Di seguito è riportato il flusso di lavoro di base per la gestione di un'implementazione esterna su Amazon ECS.

Come gestire un servizio Amazon ECS tramite un controller di implementazione esterno
  1. Crea un servizio Amazon ECS. L'unico parametro obbligatorio è il nome del servizio. Durante la creazione di un servizio tramite un controller di implementazione esterno, è possibile specificare i parametri indicati di seguito. Tutti gli altri, invece, vengono specificati al momento della creazione di un set di attività nel servizio.

    serviceName

    Tipo: string

    Campo obbligatorio: sì

    Il nome del servizio. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini e caratteri di sottolineatura. I nomi dei servizi devono essere univoci all'interno di un cluster, ma puoi avere servizi dai nomi simili in più cluster all'interno di una Regione o in più Regioni.

    desiredCount

    Il numero di istanze della definizione di attività per il set specificato, da posizionare e mantenere in esecuzione nel servizio.

    deploymentConfiguration

    I parametri di implementazione opzionali che determinano quante attività vengono eseguite durante un'implementazione e l'ordine di arresto e di avvio delle attività.

    tags

    Tipo: matrice di oggetti

    Campo obbligatorio: no

    I metadati applicati al servizio per aiutarti a catalogarli e organizzarli. Ogni tag è composto da una chiave e da un valore opzionale, entrambi personalizzabili. Quando un servizio viene eliminato, vengono eliminati anche i tag. Al servizio è possibile applicare un massimo di 50 tag. Per ulteriori informazioni, consultare Aggiunta di tag alle risorse Amazon ECS.

    Quando si aggiorna un servizio, questo parametro non innesca una nuova implementazione del servizio.

    key

    Tipo: string

    Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 128 caratteri.

    Campo obbligatorio: no

    Una parte di una coppia chiave-valore che costituisce un tag. Una chiave è un'etichetta generale che funge da categoria per più valori di tag specifici.

    value

    Tipo: string

    Limitazioni di lunghezza: lunghezza minima di 0. La lunghezza massima è 256 caratteri.

    Campo obbligatorio: no

    La parte facoltativa di una coppia chiave-valore che costituisce un tag. Un valore agisce come descrittore all'interno di una categoria di tag (chiave).

    enableECSManagedTags

    Specifica se usare i tag gestiti di Amazon ECS per i processi all'interno del servizio. Per ulteriori informazioni, consultare Uso dei tag per la risoluzione dei problemi.

    propagateTags

    Tipo: string

    Valori validi: TASK_DEFINITION | SERVICE

    Campo obbligatorio: no

    Specifica se copiare i tag dalla definizione di attività o dal servizio nelle attività del servizio. Se non viene specificato alcun valore, i tag non vengono copiati. I tag possono essere copiati solo nelle attività all'interno del servizio durante la creazione del servizio. Per aggiungere tag a un processo dopo la creazione di un servizio o di un processo, utilizza l'operazione API TagResource.

    Quando si aggiorna un servizio, questo parametro non innesca una nuova implementazione del servizio.

    schedulingStrategy

    La strategia di pianificazione da utilizzare. I servizi che utilizzano un controller di implementazione esterno supportano solo la strategia di pianificazione REPLICA.

    placementConstraints

    Serie di oggetti vincolo di posizionamento da utilizzare per le attività del servizio. Puoi specificare un massimo di 10 vincoli per attività (questo limite include i vincoli nella definizione di attività e quelli specificati in fase di runtime). Se si utilizza Fargate, i vincoli di posizionamento dei processi non sono supportati.

    placementStrategy

    Gli oggetti strategia di posizionamento da utilizzare per le attività del servizio. Puoi specificare un massimo di quattro regole di strategia per ogni servizio.

    Di seguito è illustrato un esempio di definizione per la creazione di un servizio che utilizza un controller di implementazione esterno.

    { "cluster": "", "serviceName": "", "desiredCount": 0, "role": "", "deploymentConfiguration": { "maximumPercent": 0, "minimumHealthyPercent": 0 }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION" }
  2. Creare un set di attività iniziali. Il set di attività contiene i seguenti i dettagli sul servizio:

    taskDefinition

    La definizione delle attività nel set da utilizzare.

    launchType

    Tipo: string

    Valori validi: EC2 | FARGATE | EXTERNAL

    Campo obbligatorio: no

    Il tipo di avvio con cui eseguire il servizio. Se non viene specificato un tipo di avvio, per impostazione predefinita viene utilizzato il capacityProviderStrategy di default.

    Quando si aggiorna un servizio, questo parametro innesca una nuova implementazione del servizio.

    Se viene specificato un launchType, il parametro capacityProviderStrategy deve essere omesso.

    platformVersion

    Tipo: string

    Campo obbligatorio: no

    La versione della piattaforma su cui sono in esecuzione le attività nel servizio. Viene specificata una versione della piattaforma solo per le attività con tipo di avvio Fargate. Se non è specificata, la versione più recente (LATEST) viene utilizzata di default.

    Quando si aggiorna un servizio, questo parametro innesca una nuova implementazione del servizio.

    Le versioni della piattaforma AWS Fargate vengono utilizzate per fare riferimento a un determinato ambiente di runtime per l'infrastruttura delle attività Fargate. Quando specifichi la versione della piattaforma LATEST durante l'esecuzione di un'attività o la creazione di un servizio, ottieni la versione di piattaforma più aggiornata disponibile per le tue attività. Quando incrementi il servizio, tali attività riceveranno la versione della piattaforma specificata nell'implementazione corrente del servizio. Per ulteriori informazioni, consultare Versioni della piattaforma Fargate per Amazon ECS.

    Nota

    Le versioni della piattaforma non sono specificate per i processi che utilizzano il tipo di avvio EC2.

    loadBalancers

    Un oggetto che rappresenta il load balancer da utilizzare con il tuo servizio. Quando si utilizza un controller di implementazione esterno, sono supportati solo Application Load Balancer e il Network Load Balancer. Se si utilizza un Application Load Balancer, è consentito un solo gruppo di destinazione di Application Load Balancer per ogni set di processi.

    Il frammento di codice seguente mostra un oggetto loadBalancer di esempio da utilizzare.

    "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ]
    Nota

    Quando si specifica un oggetto loadBalancer, è necessario specificare targetGroupArn e omettere i parametri loadBalancerName.

    networkConfiguration

    La configurazione di rete per il servizio. Questo parametro è obbligatorio per le definizioni di attività che utilizzano la modalità di rete awsvpc per ricevere la propria interfaccia di rete elastica e non è supportato per altre modalità. Per ulteriori informazioni sul networking per Fargate, consultare Opzioni di rete di attività di Amazon ECS per Fargate.

    serviceRegistries

    I dettagli dei registri del servizio di individuazione da assegnare a questo servizio. Per ulteriori informazioni, consultare Usare il rilevamento servizi per connettere i servizi Amazon ECS con nomi DNS.

    scale

    Percentuale a virgola mobile del numero desiderato di attività da posizionare e mantenere in esecuzione nel seti di attività. Il valore è specificato come percentuale totale del conteggio desiderato (desiredCount) di un servizio. Come valori sono accettati i numeri da 0 a 100.

    Di seguito è riportato un esempio JSON per la creazione di un set di attività per un controller di implementazione esterno.

    { "service": "", "cluster": "", "externalId": "", "taskDefinition": "", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "scale": { "value": null, "unit": "PERCENT" }, "clientToken": "" }
  3. Quando è necessario modificare il servizio, utilizzare l'operazione API CreateTaskSet, UpdateService o UpdateTaskSet, a seconda dei parametri da aggiornare. Se è stato creato un set di attività, utilizzare il parametro scale per ogni set di attività in un servizio, per determinare il numero di attività da mantenere in esecuzione nel servizio. Ad esempio, se si dispone di un servizio che contiene un tasksetA e si crea un tasksetB, è consigliabile testare la validità del tasksetB prima di trasferire a esso il traffico di produzione. È possibile impostare il parametro scale per entrambi i set di attività su 100e, una volta pronti a spostare tutto il traffico di produzione nel tasksetB, è possibile aggiornare scale per tasksetA su 0 per ridurlo.