Distribuzione Canary OKE

Crea una pipeline di distribuzione utilizzando la strategia di release Canary per Kubernetes Engine (OKE).

Prerequisiti

I prerequisiti sono i seguenti:

  • Disporre di una pipeline di distribuzione, di un ambiente cluster Kubernetes da distribuire e di artifact. Gli artifact possono essere definiti in linea o posizionati nel registro artifact.
  • Poiché il cluster OKE non dispone di un controller in entrata per impostazione predefinita, è necessario impostare un controller in entrata NGINX per la strategia di distribuzione Canary. Un controller in entrata è un'applicazione Kubernetes che instrada il traffico in base alla specifica di entrata. Il controller di entrata NGINX monitora le risorse in entrata per il bilanciamento del carico. Il traffico viene spostato dall'area intermedia all'ambiente di produzione aggiornando la risorsa in entrata. Per informazioni, vedere Impostazione di un controller in entrata in un cluster.

Per creare gruppi dinamici e criteri per le pipeline di distribuzione, vedere Criteri di pipeline di distribuzione. Per ulteriori dettagli, consulta DevOps Criteri IAM.

Per accedere a DevOps utilizzando la console di Oracle Cloud, l'API REST e l'interfaccia CLI, vedere Accesso a DevOps.

    1. Aprire il menu di navigazione e fare clic su Servizi per sviluppatori. In DevOps fare clic su Progetti.
    2. Selezionare un progetto e una pipeline di distribuzione.
    3. Per aggiungere una fase alla pipeline, fare clic sull'icona + e selezionare Aggiungi fase.
    4. Per il tipo di fase, selezionare Strategia canary, quindi fare clic su Avanti.
    5. Selezionare OKE per il tipo di distribuzione.
    6. Immettere un nome e una descrizione per lo stadio. L'aggiunta di una descrizione è facoltativa.
    7. Per Ambiente, selezionare un ambiente cluster esistente in cui viene spostato il traffico canary.
    8. Immettere Spazio di nomi canary. Ad esempio, canary-env.

      Lo spazio di nomi viene utilizzato per definire l'ambiente di distribuzione canary nel cluster OKE.

    9. Fare clic su Seleziona artifact, quindi selezionare una o più risorse artifact dal progetto DevOps.

      Il servizio DevOps esegue un'applicazione lato server Kubernetes degli artifact del manifest Kubernetes nell'ordine in cui vengono visualizzati nella console. È inoltre possibile rimuovere gli artifact per selezionarne un altro o riordinare la lista di artifact. La rimozione di un artifact nella fase della pipeline non comporta l'eliminazione della risorsa artifact dal progetto. Per ulteriori informazioni sull'applicazione lato server Kubernetes, vedere Applicazione lato server.

    10. Immettere il nome in entrata GNINX. Ad esempio, ingress-nginx.

      Questo è il nome della risorsa di entrata dell'applicazione. Il servizio DevOps modifica l'annotazione su questa risorsa in entrata per eseguire la strategia di distribuzione.

    11. Fare clic su Successivo.
    12. È possibile scegliere di convalidare l'esecuzione della distribuzione oppure di non eseguire la convalida selezionando Nessuno.

      Per convalidare l'applicazione, viene aggiunta una funzione personalizzata alla pipeline. Selezionare Esegui una logica personalizzata tramite una funzione. Immettere i valori seguenti:

      1. Immettere un nome e una descrizione per lo stadio. L'aggiunta di una descrizione è facoltativa.
      2. Per Ambiente, selezionare una funzione esistente da richiamare.

        Nel campo Nome funzione di sola lettura viene visualizzata la funzione richiamata nella pipeline.

      3. (Facoltativo) Per selezionare e aggiungere artifact allo stadio, fare clic su Seleziona artifact.

        Selezionare una risorsa artifact esistente dal progetto DevOps. L'artifact deve essere di tipo file generico (universale). I parametri nell'artifact devono essere in formato JSON e possono avere segnaposto. È necessario selezionare la casella di controllo Consenti parametrizzazione quando si configura la risorsa artifact DevOps per sostituire i segnaposto con il valore dell'argomento durante la distribuzione. Per ulteriori informazioni, vedere Configurazione di parametri.

        Di seguito è riportato un esempio del contenuto generico dell'artifact per il passaggio di due parametri definiti dall'utente e dei relativi valori.
        • Parametri: test_name, app_version
        • Valori: {"test_name":"verify_production", "app_version":"${app_version}"}
      4. In Modalità di esecuzione stadio, selezionare per eseguire l'esecuzione in modo asincrono o sincrono.

        Se si seleziona Esegui in modo asincrono, il servizio richiama la funzione ma non attende il completamento della funzione. Quando si seleziona Esegui in modo sincrono, il servizio richiama la funzione e attende il completamento della funzione.

      5. Selezionare per disabilitare o abilitare la convalida.

        Se la convalida è abilitata, il servizio verifica il valore restituito della funzione. Il valore restituito è un valore di stringa UTF-8, true o false. Se il valore restituito è true, lo stadio viene contrassegnato come Riuscito, altrimenti lo stadio viene contrassegnato come Non riuscito.

        Se la convalida è disabilitata, il servizio non verifica il valore restituito.

        La convalida viene eseguita solo se è stata selezionata l'opzione "Esegui in modo sincrono" per la modalità di esecuzione della fase.

      6. (Facoltativo) Per aggiungere tag alla pipeline, fare clic su Mostra opzioni di applicazione tag. L'applicazione di tag è un sistema di metadati che consente di organizzare e tenere traccia delle risorse nella tenancy.

        È possibile selezionare uno spazio di nomi tag o aggiungere un tag in formato libero. Immettere la chiave e il valore di tag corrispondenti. È possibile aggiungere più tag.

    13. Fare clic su Successivo.
    14. Immettere un nome e una descrizione facoltativa per la fase Maiusc traffico per spostare parte del traffico nell'ambiente canary.
    15. Immettere Limite rampa in percentuale per specificare il traffico massimo da spostare. Il valore deve essere compreso tra 1 e 25.

      Ad esempio, se il limite di rampa è 20, il 20% del traffico viene spostato nell'ambiente canarino.

    16. Fare clic su Successivo.
    17. Immettere un nome e una descrizione per la fase di approvazione manuale. L'aggiunta di una descrizione è facoltativa.
    18. Immettere il numero di approvatori e fare clic su Avanti.
    19. Immettere un nome e una descrizione per la fase Canary di produzione. L'aggiunta di una descrizione è facoltativa.
    20. Per l'ambiente di produzione, selezionare un ambiente cluster esistente utilizzato per distribuire l'applicazione convalidata nell'ambiente canary.
    21. Immettere lo spazio di nomi di produzione.
    22. Per eseguire automaticamente il rollback della distribuzione all'ultima versione riuscita in caso di errore della fase, selezionare la casella di controllo Routback automatico.
    23. (Facoltativo) Per aggiungere tag alla pipeline, fare clic su Mostra opzioni di applicazione tag. L'applicazione di tag è un sistema di metadati che consente di organizzare e tenere traccia delle risorse nella tenancy.

      Per ulteriori informazioni, vedere Tag delle risorse.

    24. Per aggiungere lo stadio alla pipeline, fare clic su Aggiungi.

      Viene visualizzata una finestra modale che mostra lo stato delle varie configurazioni di fase che fanno parte della strategia di distribuzione OKE canary. Includono, distribuzione canary, spostamento del traffico, approvazione e fasi di distribuzione della produzione. Se la convalida non riesce, è possibile controllare il messaggio di errore specifico di ogni fase non riuscita ed eseguire un'azione correttiva.

      Se la convalida riesce, è possibile eseguire la pipeline di distribuzione o aggiungere altre fasi in sequenza o in parallelo alla pipeline, in base alle esigenze.

    Nota

    Durante l'esecuzione della distribuzione, durante la prima distribuzione OKE canary viene visualizzato un messaggio di errore "Servizio temporaneamente non disponibile" dopo la distribuzione dell'applicazione nell'ambiente canary. Si tratta di un comportamento previsto, poiché la risorsa in entrata nell'ambiente di produzione non esiste ancora. È possibile ignorare questo messaggio e procedere con la distribuzione poiché l'errore viene risolto nella fase di produzione.
  • Per creare una fase canary OKE, eseguire il comando create-deploy-oke-canary-stage:

    oci devops deploy-stage create-deploy-oke-canary-stage

    Parametri obbligatori:

    • --canary-strategy
    • --kubernetes-manifest-artifact-ids
    • --oke-cluster-environment-id
    • --pipeline-id
    • --stage-predecessor-collection

    Per visualizzare la Guida per il comando:

    oci devops deploy-stage create-oke-canary-stage -h

    Per creare una fase di richiamo della funzione, eseguire il comando create-invoke-function-stage:

    oci devops deploy-stage create-invoke-function-stage

    Parametri obbligatori:

    • --function-environment-id
    • --is-async
    • --is-validation-enabled
    • --pipeline-id
    • --stage-predecessor-collection

    Per visualizzare la Guida per il comando:

    oci devops deploy-stage create-invoke-function-stage -h

    Per creare una fase di approvazione manuale, eseguire il comando create-manual-approval-stage:

    oci devops deploy-stage create-manual-approval-stage

    Parametri obbligatori:

    • --approval-policy
    • --pipeline-id
    • --stage-predecessor-collection

    Per visualizzare la Guida per il comando:

    oci devops deploy-stage create-manual-approval-stage -h

    Per creare una fase di approvazione del canary OKE, eseguire il comando create-oke-canary-approval-stage:

    oci devops deploy-stage create-oke-canary-approval-stage

    Parametri obbligatori:

    • --oke-canary-traffic-shift-stage-id
    • --approval-policy
    • --pipeline-id
    • --stage-predecessor-collection

    Per visualizzare la Guida per il comando:

    oci devops deploy-stage create-oke-canary-approval-stage -h

    Per ottenere tutti i comandi per deploy-stage:

    oci devops deploy-stage -h
  • Per creare una fase, utilizzare l'operazione CreateDeployStage. A seconda delle fasi che si desidera aggiungere alla pipeline, selezionare i valori riportati di seguito per il tipo di fase.

    • Fase di distribuzione canary OKE (Kubernetes Engine): OKE_CANARY_DEPLOYMENT
    • Richiama fase funzione: INVOKE_FUNCTION
    • Fase di spostamento del traffico canale OKE: OKE_CANARY_TRAFFIC_SHIFT
    • Fase di approvazione del canale OKE: OKE_CANARY_APPROVAL