Canary-OKE-Deployment
Erstellen Sie die Deployment-Pipeline mit der kanarischen 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 Canary-Deployment-Strategie ein NGINX-Ingress-Controller eingerichtet werden. 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.
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.
- Öffnen Sie das Navigationsmenü, und klicken Sie auf Entwicklerservices. Klicken Sie unter DevOps auf Projekte.
- Wählen Sie ein Projekt und eine Deployment-Pipeline aus.
- Um der Pipeline eine Phase hinzuzufügen, klicken Sie auf das Plussymbol, und wählen Sie Phase hinzufügen aus.
- Wählen Sie als Phasentyp Canary-Strategie aus, und klicken Sie auf Weiter.
- Wählen Sie OKE als Deployment-Typ aus.
- Geben Sie einen Namen und eine Beschreibung für die Phase ein. Das Hinzufügen einer Beschreibung ist optional.
- Wählen Sie unter Umgebung eine vorhandene Clusterumgebung aus, in der der Canary-Traffic verlagert wird.
- Geben Sie den Canary-Namespace ein. Beispiel:
canary-env
.Mit dem Namespace wird die Canary-Deployment-Umgebung im OKE-Cluster definiert.
- Klicken Sie auf Artefakt auswählen, und wählen Sie mindestens eine Artefaktressource im DevOps-Projekt 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.
- 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.
- Klicken Sie Weiter.
- Sie können die Deployment-Ausführung validieren oder die Validierung nicht durchführen, indem Sie Kein Wert auswählen.
Zur Validierung der Anwendung wird der Pipeline eine benutzerdefinierte Funktion hinzugefügt. Wählen Sie Benutzerdefinierte Logik über eine Funktion ausführen aus. Geben Sie folgende Werte ein:
- Geben Sie einen Namen und eine Beschreibung für die Phase ein. Das Hinzufügen einer Beschreibung ist optional.
- 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.
- (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 Format, UFF) aufweisen. Parameter im Artefakt müssen im JSON-Format vorliegen und können Platzhalter enthalten. Wenn Sie die Artefaktressource DevOps konfigurieren, müssen Sie das Kontrollkästchen Parametrisierung zulassen auswählen, um die Platzhalter beim Deployment durch den Argumentwert zu ersetzen. 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}"}
- Parameter:
- 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.
- 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
oderfalse
. Wenn der Rückgabewerttrue
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.
- (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.
- Klicken Sie Weiter.
- Geben Sie einen Namen und eine optionale Beschreibung für die Phase Traffic umlegen ein, um einen Teil des Traffics in die Canary-Umgebung zu verlagern.
- Geben Sie das Ramp-up-Limit in Prozent ein, um den maximal zu verlagernden Traffic anzugeben. Der Wert muss zwischen 1 und 25 liegen.
Beispiel: Wenn das Ramp-up-Limit "20" beträgt, werden 20 % des Traffics in die Canary-Umgebung verlagert.
- Klicken Sie Weiter.
- Geben Sie einen Namen und eine Beschreibung für die Phase zur manuellen Genehmigung ein. Das Hinzufügen einer Beschreibung ist optional.
- Geben Sie die Anzahl der Genehmiger ein, und klicken Sie auf Weiter.
- Geben Sie einen Namen und eine Beschreibung für die Phase Produktions-Canary ein. Das Hinzufügen einer Beschreibung ist optional.
- Wählen Sie unter Produktionsumgebung eine vorhandene Clusterumgebung aus, mit der die Anwendung bereitgestellt wird, die in der Canary-Umgebung validiert wurde.
- Geben Sie den Produktions-Namespace ein.
- Um das Deployment bei nicht erfolgreicher Phase automatisch auf die letzte erfolgreiche Version zurückzusetzen, aktivieren Sie das Kontrollkästchen Automatisches Rollback durchführen.
- (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.
Weitere Informationen finden Sie unter Ressourcentags.
- 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 Canary-Deployment-Strategie für OKE sind. Dazu gehören die Phasen für Canary-Deployment, Trafficwechsel, Genehmigung und Produktions-Deployment. 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.
Hinweis
Für das erste Canary-OKE-Deployment wird während der Deployment-Ausführung die Fehlermeldung "Service vorübergehend nicht verfügbar" angezeigt, nachdem die Anwendung in der Canary-Umgebung bereitgestellt wurde. Dabei handelt es sich um erwartetes Verhalten, da die Ingress-Ressource in der Produktionsumgebung noch nicht vorhanden ist. Sie können diese Meldung ignorieren und mit dem Deployment fortfahren, da der Fehler in der Produktionsphase behoben ist.Um eine OKE-Canary-Phase zu erstellen, führen Sie den Befehl
create-deploy-oke-canary-stage
aus:oci devops deploy-stage create-deploy-oke-canary-stage
Erforderliche Parameter:
--canary-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-canary-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 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 eine OKE-Canary-Genehmigungsphase zu erstellen, führen Sie den Befehl
create-oke-canary-approval-stage
aus:oci devops deploy-stage create-oke-canary-approval-stage
Erforderliche Parameter:
--oke-canary-traffic-shift-stage-id
--approval-policy
--pipeline-id
--stage-predecessor-collection
So rufen Sie Hilfe zu diesem Befehl ab:
oci devops deploy-stage create-oke-canary-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:- Canary-Deployment-Version der Kubernetes-Engine (OKE):
OKE_CANARY_DEPLOYMENT
- Phase "Funktion aufrufen":
INVOKE_FUNCTION
- Canary-Trafficwechselphase für OKE:
OKE_CANARY_TRAFFIC_SHIFT
- Canary-Genehmigungsphase für OKE:
OKE_CANARY_APPROVAL
- Canary-Deployment-Version der Kubernetes-Engine (OKE):