Blue/Green Deployment für OKE

Erstellen Sie die Deployment-Pipeline mit der Blue/Green-Releasestrategie für die Kubernetes Engine (OKE).

Voraussetzungen

Die Voraussetzungen lauten wie folgt:

  • Sie verfügen über eine Deployment-Pipeline, eine Kubernetes-Clusterumgebung für das Deployment und Artefakte. Artefakte können inline definiert oder in der Artefakt-Registry gespeichert werden.
  • Da das OKE-Cluster standardmäßig keinen Ingress-Controller enthält, muss für die Blue/Green-Deployment-Strategie ein NGINX-Ingress-Controller eingerichtet werden. Der NGINX-Ingress-Name muss im Kubernetes-Manifest definiert sein. Ein Ingress-Controller ist eine Kubernetes-Anwendung, die Traffic basierend auf einer Ingress-Spezifikation weiterleitet. Der NGINX-Ingress-Controller überwacht Ingress-Ressourcen für Load Balancing. Der Traffic wird von der Staging- in die Produktionsumgebung verlagert, indem die Ingress-Ressource aktualisiert wird. Weitere Informationen finden Sie unter Ingress-Controller in einem Cluster einrichten.
  • Um die Blue/Green-Deployment-Umgebungen zu definieren, müssen Sie zwei Namespaces im Kubernetes-Cluster erstellen. Sie dürfen keine Namespaces in den Kubernetes-Manifesten angeben, da sie in der Konsole angegeben werden. Weitere Informationen zu Namespaces finden Sie in der Kubernetes-Dokumentation.
Hinweis

Um den inaktiven oder Standby-Namespace nach dem Deployment horizontal zu skalieren, müssen Sie mindestens ein Replikat verwalten, um Probleme zu vermeiden.

Informationen zum Erstellen dynamischer Gruppen und Policys für Deployment-Pipelines finden Sie unter Deployment-Pipeline-Policys. Weitere Informationen finden Sie unter DevOps-IAM-Policys.

Informationen zum Zugriff auf DevOps über die Oracle Cloud-Konsole, die REST-API und die CLI finden Sie unter Auf DevOps zugreifen.

    1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Entwicklerservices. Klicken Sie unter DevOps auf Projekte.
    2. Wählen Sie ein Projekt und eine Deployment-Pipeline aus.
    3. Um der Pipeline eine Phase hinzuzufügen, klicken Sie auf das Plussymbol, und wählen Sie Phase hinzufügen aus.
    4. Wählen Sie als Phasentyp Blue/Green-Strategie aus, und klicken Sie auf Weiter.
    5. Wählen Sie OKE als Deployment-Typ aus.
    6. Geben Sie einen Namen und eine Beschreibung für die Phase ein. Das Hinzufügen einer Beschreibung ist optional.
    7. Wählen Sie unter Umgebung eine vorhandene Clusterumgebung aus.
    8. Geben Sie vorhandene Namespaces für Namespace A und Namespace B ein, die mit der ausgewählten OKE-Umgebung verknüpft sind. Beispiel: blue-env, green-env.

      Mit den Namespaces werden die Blue/Green-Deployment-Umgebung im OKE-Cluster definiert.

    9. Klicken Sie auf Artefakt auswählen, und wählen Sie mindestens eine Artefaktressource im Projekt DevOps aus.

      Der DevOps-Service führt ein Kubernetes Server-Side Apply der Kubernetes-Manifestartefakte in der Reihenfolge aus, in der sie in der Konsole angezeigt werden. Sie können Artefakte auch entfernen, um ein anderes Artefakt auszuwählen oder die Artefaktliste neu anzuordnen. Wenn Sie ein Artefakt in der Pipelinephase entfernen, wird die Artefaktressource nicht aus Ihrem Projekt gelöscht. Weitere Informationen zu Kubernetes Server-Side Apply finden Sie unter Server-Side Apply.

    10. Geben Sie den NGINX-Ingress-Namen ein. Beispiel: ingress-nginx.

      Das ist der Name der Ingress-Ressource Ihrer Anwendung. Der DevOps-Service ändert die Anmerkung zu dieser Ingress-Ressource, um die Deployment-Strategie umzusetzen. Der NGINX-Ingress-Name muss im Kubernetes-Manifest definiert sein.

    11. Klicken Sie Weiter.
    12. Validieren Sie die Deployment-Ausführung. Zur Validierung wird der Pipeline eine benutzerdefinierte Funktion hinzugefügt. Wählen Sie Benutzerdefinierte Logik über eine Funktion ausführen aus, und geben Sie die folgenden Werte ein:
      1. Geben Sie einen Namen und eine Beschreibung für die Phase ein. Das Hinzufügen einer Beschreibung ist optional.
      2. Wählen Sie unter Umgebung eine vorhandene Funktion aus, die aufgerufen werden soll.

        Im schreibgeschützten Feld Funktionsname wird die Funktion angezeigt, die in der Pipeline aufgerufen wird.

      3. (Optional) Um Artefakte auszuwählen und der Phase hinzuzufügen, klicken Sie auf Artefakt auswählen.

        Wählen Sie eine vorhandene Artefaktressource im DevOps-Projekt aus. Das Artefakt muss einen generischen Dateityp (Universal File) sein. Parameter im Artefakt müssen im JSON-Format vorliegen und können Platzhalter enthalten. Wählen Sie beim Konfigurieren der Artefaktressource DevOps die Option Parametrisierung zulassen aus. Wenn Sie dieses Kontrollkästchen aktivieren, wird sichergestellt, dass die Platzhalter während des Deployments durch den Argumentwert ersetzt werden. Weitere Informationen finden Sie unter Parameter konfigurieren.

        Hier ist ein Beispiel für den Inhalt des generischen Artefakts, um zwei benutzerdefinierte Parameter und die zugehörigen Werte zu übergeben:
        • Parameter: test_name, app_version
        • Werte: {"test_name":"verify_production", "app_version":"${app_version}"}
      4. Wählen Sie unter Phasenausführungsmodus die asynchrone oder synchrone Ausführung aus.

        Wenn Sie Asynchron ausführen auswählen, ruft der Service die Funktion auf, wartet jedoch nicht, bis die Funktion abgeschlossen ist. Wenn Sie Synchron ausführen auswählen, ruft der Service die Funktion auf und wartet, bis die Funktion abgeschlossen ist.

      5. Deaktivieren oder aktivieren Sie die Validierung.

        Wenn die Validierung aktiviert ist, prüft der Service den Rückgabewert der Funktion. Der Rückgabewert ist ein UTF-8-Zeichenfolgenliteral, true oder false. Wenn der Rückgabewert true lautet, wird die Phase als Erfolgr. markiert. Andernfalls wird die Phase als Nicht erfolgreich markiert.

        Wenn die Validierung deaktiviert ist, prüft der Service den Rückgabewert nicht.

        Die Validierung erfolgt nur, wenn Sie die Option "Synchron ausführen" für den Phasenlaufmodus ausgewählt haben.

      6. (Optional) Um der Pipeline Tags hinzuzufügen, klicken Sie auf Taggingoptionen anzeigen. Tagging ist ein Metadatensystem, mit dem Sie die Ressourcen in Ihrem Mandanten organisieren und verfolgen können.

        Sie können einen Tag-Namespace auswählen oder ein Freiformtag hinzufügen. Geben Sie den entsprechenden Tagschlüssel und Tagwert ein. Sie können mehrere Tags hinzufügen.

      Hinweis

      Wenn Sie die Deployment-Ausführung nicht validieren möchten, wählen Sie Keine aus.
    13. Sie können eine manuelle Genehmigung für das Deployment aktivieren oder deaktivieren. Wenn Sie eine Genehmigung aktivieren, geben Sie folgende Werte ein:
      1. Geben Sie einen Namen und eine Beschreibung für die Phase ein. Das Hinzufügen einer Beschreibung ist optional.
      2. Geben Sie die Anzahl der Genehmiger ein.
      3. (Optional) Um der Pipeline Tags hinzuzufügen, klicken Sie auf Taggingoptionen anzeigen. Tagging ist ein Metadatensystem, mit dem Sie die Ressourcen in Ihrem Mandanten organisieren und verfolgen können.

        Sie können einen Tag-Namespace auswählen oder ein Freiformtag hinzufügen. Geben Sie den entsprechenden Tagschlüssel und Tagwert ein. Sie können mehrere Tags hinzufügen.

    14. Um der Pipeline die Phase hinzuzufügen, klicken Sie auf Hinzufügen.

      In einem modalen Fenster wird der Status verschiedener Phasenkonfigurationen angezeigt, die Teil der Blue/Green-Deployment-Strategie für OKE sind. Sie können die Phasen "Blue/Green Deployment für OKE", Funktion aufrufen", "Genehmigung" und "Trafficwechsel" umfassen. Wenn die Validierung nicht erfolgreich ist, können Sie die spezifische Fehlermeldung für jede nicht erfolgreiche Phase prüfen und Korrekturmaßnahmen ergreifen.

      Wenn die Validierung erfolgreich war, können Sie die Deployment-Pipeline ausführen oder bei Bedarf weitere Phasen nacheinander oder parallel zur Pipeline hinzufügen.

  • Um eine Blue/Green-Phase für OKE zu erstellen, führen Sie den Befehl create-deploy-oke-blue-green-stage aus:

    oci devops deploy-stage create-deploy-oke-blue-green-stage

    Erforderliche Parameter:

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

    So rufen Sie Hilfe zu diesem Befehl ab:

    oci devops deploy-stage create-oke-blue-green-stage -h

    Um die Phase "Funktion aufrufen" zu erstellen, führen Sie den Befehl create-invoke-function-stage aus:

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

    Erforderliche Parameter:

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

    So rufen Sie Hilfe zu diesem Befehl ab:

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

    Um eine Load-Balancer-Trafficwechselphase zu erstellen, führen Sie den Befehl create-load-balancer-traffic-shift-stage aus:

    oci devops deploy-stage create-load-balancer-traffic-shift-stage

    Erforderliche Parameter:

    • --blue-backend-ips
    • --green-backend-ips
    • --load-balancer-config
    • --traffic-shift-target
    • --rollout-policy
    • --pipeline-id
    • --stage-predecessor-collection

    So rufen Sie Hilfe zu diesem Befehl ab:

    oci devops deploy-stage create-load-balancer-traffic-shift-stage -h

    Um eine Phase für die manuelle Genehmigung zu erstellen, führen Sie den Befehl create-manual-approval-stage aus:

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

    Erforderliche Parameter:

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

    So rufen Sie Hilfe zu diesem Befehl ab:

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

    Um alle Befehle für deploy-stage abzurufen:

    oci devops deploy-stage -h
  • Um eine Phase zu erstellen, verwenden Sie den Vorgang CreateDeployStage. Wählen Sie, je nachdem, welche Phasen Sie der Pipeline hinzufügen möchten, die folgenden Werte für den Phasentyp aus:

    • Blue/Green-Deployment-Phase für Kubernetes-Engine (OKE): OKE_BLUE_GREEN_DEPLOYMENT
    • Blue/Green-Trafficwechselphase für OKE: OKE_BLUE_GREEN_TRAFFIC_SHIFT
    • Phase "Funktion aufrufen": INVOKE_FUNCTION
    • Phase für manuelle Genehmigung: MANUAL_APPROVAL