Traduzione da Amazon Translate
Automazione

Distribuzione blu/verde di CloudFormation

Distribuzione blu/verde

Blue/Green Deployment è una tecnica che consente a un team di apportare modifiche alla propria infrastruttura senza coordinarsi con i clienti per un periodo di manutenzione.

Ad esempio forniamo l'implementazione Blue/Verde per un BastionHost, eventuali modelli esistenti possono essere aggiornati secondo necessità utilizzando la metodologia di cui parleremo in questo post.

Un Bastion Host è un server il cui scopo è fornire l'accesso a una rete privata da una rete esterna, come Internet. A causa della sua esposizione a potenziali attacchi, un bastione ospite deve ridurre al minimo le possibilità di penetrazione.

Scarica l'esempio

Organizzazione file:

  • single-ec2-bastion-blue-green-deploy:
    • Ansible:
      • ansible.cfg
      • padroni di casa
      • public_keys:
        • id_rsa
      • localhost-configure.yml
      • remote-configure.yml
    • bastion-parameters.json
    • bastionhost.yaml
    • dns.yaml

Il Ansible contiene tutto il necessario per configurare il Bastion Host senza dover modificare i dati utente, e quindi essere costretti ad aggiornare lo stack di CloudFormation. I file localhost-configure.yml può essere lanciato direttamente dal Bastion Host, mentre il remote-configure.yml può essere usato per configurare il Bastion Host dalla macchina locale.

Il Bastion Host all'avvio clona il repository Git e si configura usando localhost-configure.yml.

Il bastion-parameters.json contiene i parametri di configurazione del Bastion Host, è in comune tra i due template *.yaml. Il bastionhost.yaml file è un modello standard di CloudFormation a cui è stata aggiunta la configurazione Ansible e Versione parametro. E, il modello dns.yaml, per ogni stack ne abbiamo uno aggiuntivo solo per la parte di mappatura DNS.

ATTENZIONE: AWS identifica alcune risorse per nome, quindi il numero di versione appare anche nel nome della risorsa da duplicare.

Procedura

Fase 1: Crea lo stack Versione 1

Usa il modello bastionhost.yml per creare lo stack CloudFormation associato alla risorsa Bastion Host. Lo stack produrrà un DNS del seguente tipo:

v <Version>.bastion. <Environment>. <HostedZoneName>

che sostituendo i parametri diventa: v1.bastion.development.awscliente.com

Il nome dello stack Cloud Formation appena creato avrà il suffisso *-v1.

Fase 2: Creazione di mapping DNS

Rispetto al non utilizzo di Blue/Green Deploy dovrebbe essere creato uno stack aggiuntivo che definisca una mappatura tra il DNS precedente e il DNS nominale concordato con il cliente, potrebbe essere:

bastione. <Environment>. <HostedZoneName>

che diventa: bastion.development.awscliente.com

L'output di questo passaggio è la seguente configurazione in Route53:

bastion.development.awscliente.com → v1.bastion.development.awscliente.com

v1.bastion.development.awscliente.com → 1.2.3.4 (EIP del BastionHost v1)

che sostituendo i parametri diventa: v2.bastion.development.awscliente.com

Il nome dello stack Cloud Formation appena creato avrà il suffisso *-v2.

L'output di questo passaggio è la seguente configurazione in Route53:

bastion.development.awscliente.com → v1.bastion.development.awscliente.com

v1.bastion.development.awscliente.com → 1.2.3.4 (EIP del BastionHost v1)

v2.bastion.development.awscliente.com → 5.6.7.8 (EIP del BastionHost v2)

Passaggio 4: versione di prova 2

Passeremo alla fase di test della nuova distribuzione, segnalando due casi:

  • La versione v2 fallisce i teste lo stack v2 appena creato viene eliminato.
  • La versione v2 supera i test.
Fase 4: Aggiornamento del mapping DNS

Se la versione 2 supera i test, sarà necessario aggiornare lo stack DNS impostando la versione uguale a 2. Dopo l'aggiornamento del dns.yml stack la configurazione in Route53 sarà la seguente:

bastion.development.awscliente.com → v2.bastion.development.awscliente.com

v1.bastion.development.awscliente.com → 1.2.3.4 (EIP del BastionHost v1)

v2.bastion.development.awscliente.com → 5.6.7.8 (EIP del BastionHost v2)

Al termine delle operazioni la versione v1 può essere cancellata in quanto non è più referenziata. In questo mondo il cliente non avrà visibilità per indicare un BastionHost diverso. Dopo la cancellazione dello stack *-v1, la configurazione in Route53 sarà la seguente:

bastion.development.awscliente.com → v2.bastion.development.awscliente.com

v2.bastion.development.awscliente.com → 5.6.7.8 (EIP del BastionHost v2)

Blue/Green Deploy Steps
Passaggi di distribuzione blu/

Conclusioni

La Blue/Green Deployment è una tecnica efficace per apportare modifiche all'infrastruttura senza interrompere le operazioni dei clienti. La procedura che abbiamo discusso prevede la creazione di due stack CloudFormation e una mappatura DNS per garantire una transizione fluida alla nuova versione. La cartella Ansible fornita nell'esempio può aiutare a configurare Bastion Host senza modificare i dati utente, rendendo il processo più efficiente.

I passaggi necessari a Blue/Green Deployment includono la creazione dello stack della versione 1, la creazione di una mappatura DNS, la creazione dello stack della versione 2, il test della versione 2, l'aggiornamento della mappatura DNS e infine l'eliminazione della versione precedente. Seguendo questi passaggi, è possibile garantire una transizione senza interruzioni a una nuova versione dell'infrastruttura, riducendo al minimo potenziali tempi di inattività o interruzioni.

 

Post correlati