Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
Bereitstellung in OCI Container Engine for Kubernetes über GitLab CI/CD
Einführung
In der sich schnell entwickelnden Landschaft von DevOps und der cloudnativen Entwicklung kann die Notwendigkeit einer optimierten Integration zwischen Versionskontrollsystemen und Containerorchestrierungsplattformen von entscheidender Bedeutung sein. Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) bietet eine robuste und skalierbare Lösung für die Verwaltung containerisierter Anwendungen. Einige Teams haben jedoch möglicherweise bestimmte Voreinstellungen und Anforderungen, die sie dazu bringen, nach Alternativen zu nativen DevOps-Services von Oracle Cloud Infrastructure (OCI) zu suchen.
GitLab ist eine vielseitige und umfassende Versionskontroll- und Continuous Integration- und Continuous Delivery/Deployment-(CI/CD-)Plattform, die nicht nur diese Voreinstellungen erfüllt, sondern auch eine überzeugende Alternative zu OCI DevOps-Services bietet. In diesem Tutorial werden Sie durch den Prozess der nahtlosen Verbindung von GitLab mit Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) geführt. Die in diesem Tutorial vorgestellte Integration ist nicht nur auf die Verwendung einer bereits vorhandenen GitLab-Lösung ausgerichtet, die möglicherweise vorhanden ist, sondern ermöglicht dem Team auch eine einheitliche Lösung für Versionskontrolle, kontinuierliche Integration und Kubernetes-Orchestrierung.
In den folgenden Abschnitten werden in diesem Tutorial zwei unterschiedliche Ansätze zur Durchführung dieser Integration vorgestellt.
-
Approach 1: Verwenden Sie ein aus der Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI) generiertes kurzlebiges Token. Wenn Sie die Datei
kubeconfig
mit den OKE-Clusterzugriffsanweisungen für ein Cluster einrichten, enthält sie standardmäßig einen OCI-CLI-Befehl, mit dem ein kurzlebiges, clusterbezogenes und benutzerspezifisches Authentifizierungstoken generiert wird. Das vom CLI-Befehl generierte Authentifizierungstoken eignet sich für die Authentifizierung einzelner Benutzer, die mit dem Kubernetes-Befehlszeilentool (kubectl) und dem Kubernetes-Dashboard auf das Cluster zugreifen. Es wird jedoch empfohlen, diesen Ansatz für Testzwecke zu begrenzen, nicht für Produktionsumgebungen. -
Ansatz 2: Kubernetes-Serviceaccount verwenden. Das kurzlebige generierte Authentifizierungstoken aus Ansatz 1 eignet sich nicht zur Authentifizierung von Prozessen und Tools, die auf das Cluster zugreifen, wie CI/CD-Tools. Um Zugriff auf das Cluster sicherzustellen, erfordern diese Tools langlebige, nicht benutzerspezifische Authentifizierungstoken. Dies kann mit einem Kubernetes-Serviceaccount erreicht werden.
Ziele
-
Konfigurieren Sie den GitLab-Runner.
-
Richten Sie die CI/CD-Pipeline ein.
Voraussetzungen
-
Ein aktiver OCI-Account.
-
Ein ausgeführtes OKE-Cluster mit öffentlichem Endpunkt. Weitere Informationen finden Sie unter Container Engine for Kubernetes - Überblick.
-
GitLab-Account mit ausreichenden Berechtigungen.
Ansatz 1: Deployment in OKE aus GitLab CI/CD mit kurzlebigem generiertem Token
Aufgabe 1: OCI Compute-Instanz vorbereiten
Sie benötigen eine OCI Compute-Instanz für den GitLab-Runner, z.B. eine virtuelle Maschine (VM).
-
Installieren Sie kubectl auf der VM. Weitere Informationen finden Sie unter kubectl unter Linux installieren und einrichten.
-
Installieren Sie die OCI-CLI, und erstellen Sie die Konfigurationsdatei für die Authentifizierung beim OCI-Mandanten (oder Sie werden bei der Ausführung der Clusterzugriffsschritte aufgefordert, sie zu erstellen). Weitere Informationen finden Sie unter OCI-CLI installieren und SDK- und CLI-Konfigurationsdatei.
-
Zugriff auf das OKE-Cluster einrichten. Gehen Sie zu Auf das Cluster zugreifen, und klicken Sie in der OCI-Konsole auf Anweisungen für den lokalen Zugriff.
-
Installieren Sie den GitLab-Runner auf der VM. Führen Sie die folgenden Befehle als Root aus.
sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash sudo yum install -y gitlab-runner
Prüfen Sie, ob der GitLab-Runner funktioniert.
gitlab-runner list
Aufgabe 2: GitLab Runner und Project konfigurieren
-
Melden Sie sich bei GitLab an, gehen Sie zu Projekte, und erstellen Sie ein neues Projekt, oder verwenden Sie ein vorhandenes.
-
Erstellen Sie einen Runner, oder verwenden Sie einen vorhandenen Runner. Um einen neuen Läufer zu erstellen, navigieren Sie zu Einstellungen, CI/CD, Läufer und Einblenden. Klicken Sie auf Neuer Projektläufer, und wählen Sie Plattform (z.B. Linux) aus. Fügen Sie ein Tag hinzu, das Sie später in der Datei
.gitlab-ci.yaml
verwenden werden, wenn Sie die Deployment-Pipeline konfigurieren, und klicken Sie dann auf Runner erstellen. -
Registrieren Sie den Runner bei der VM.
Hinweis: Notieren Sie sich das Runner Authenticaton-Token, falls Sie es später benötigen.
-
Führen Sie den Befehl
gitlab-runner register
aus, und geben Sie die folgenden Informationen ein.- GitLab-Instanz-URL: Übernehmen Sie den Standardwert
https://gitlab.com
. - Runner-Name: Lokal in der Datei
config.toml
gültig. Beispiel:gitlab-oke-runner
. - Eingabe eines Executors: shell. Mit diesem Wert wählen Sie, dass die CI/CD-Anweisungen auf dem lokalen Rechner ausgeführt werden, auf dem kubectl und die OCI-CLI installiert sind.
- GitLab-Instanz-URL: Übernehmen Sie den Standardwert
-
Sie können die Runner-Konfiguration in der Datei
$HOME/.gitlab-runner/config.toml
prüfen.
-
Aufgabe 3: CI/CD-Pipeline einrichten
-
Klonen Sie das Projekt GitLab auf dem lokalen Rechner.
-
Erstellen Sie eine Datei mit dem Namen
.gitlab-ci.yaml
im Projektverzeichnis, die Build- und Deployment-Anweisungen enthält. Stellen Sie sicher, dass Sie im Abschnitt "Bereitstellen" das Runner-Tag einschließen, das Sie beim Erstellen des Runners zuvor festgelegt haben.$ cat ~/demo-oke/.gitlab-ci.yml stages: - build - deploy build_job: stage: build script: - echo "Building the ServiceAccount project..." deploy_job: stage: deploy script: - echo "Deploying an nginx pod to the OKE cluster" - kubectl run nginx --image=nginx tags: - shell-executor
-
Übertragen Sie die Änderungen an Ihr GitLab-Projekt, und gehen Sie zu Erstellen und Jobs, um zu prüfen, ob die Build- und Deployment-Pipelines ausgelöst wurden und erfolgreich ausgeführt wurden.
Die Pipeline stellte einen nginx-Pod im OKE-Cluster bereit.
Hinweise: Notieren Sie sich Tag und Schlüssel. Wir wählen den Shell-Executor, der die lokalen Maschinenressourcen nutzt. Wenn Sie beispielsweise Docker auswählen, müssen Sie in Ihren Anweisungen ein Image angeben, das kubectl (und OCI-CLI für Ansatz 1) im Container installiert.
$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 47h
Ansatz 2: Bereitstellung in OKE über GitLab CI/CD mit einem Kubernetes-Serviceaccount
Wiederholen Sie die Aufgaben 1, 2 und 3 aus Ansatz 1, um die lokale VM einzurichten (Installieren Sie kubectl, OCI-CLI, GitLab Runner), registrieren Sie den Runner, und erstellen Sie die Pipelinedatei .gitlab-ci.yaml
.
Aufgabe 1: Kubernetes-Serviceaccount erstellen und Token hinzufügen
-
Erstellen Sie einen Kubernetes-Serviceaccount, und fügen Sie sein Token der Datei
kubeconfig
hinzu. Weitere Informationen finden Sie unter Authentifizierungstoken von Serviceaccount zu einer Kubeconfig-Datei hinzufügen.Hinweis: Stellen Sie sicher, dass der Serviceaccount verwendet wird, nicht das kurzlebige OCI-CLI-Token.
-
Legen Sie den Benutzer, der in der Datei
kubeconfig
angegeben ist, als den neuen Serviceaccountbenutzer fest, den Sie mit den folgenden kubectl-Befehlen erstellt haben.kubectl config set-context --current --user=<service-account-name>
Beispiel:
kubectl config set-context --current --user=kubeconfig-sa
Wenn Sie einen Kubernetes-Serviceaccount für das Deployment in OKE über GitLab verwenden, umfasst der Prozess die Authentifizierung von GitLab mit dem Kubernetes-Cluster mit den Zugangsdaten des Serviceaccounts.
Nächste Schritte
Mit diesen Aufgaben können Sie die CI/CD-Pipeline GitLab für das Deployment in OKE verwenden. Diese Aufgaben können als Referenz für andere CI/CD-Tools verwendet werden. Die Integration erleichtert die kontinuierliche Integration und Bereitstellung und ermöglicht eine schnelle Iteration und Bereitstellung von Anwendungen in OKE.
In diesem Tutorial verwenden die Anweisungen einen Shell-Executor zum Testen und Bearbeiten von direkten Szenarien. Alternativ können Sie sich für einen anderen Executor entscheiden, z.B. einen Docker-Executor. In diesem Fall wird die Pipeline in einem Docker-Container und nicht auf dem lokalen Rechner ausgeführt. Wenn Sie mit einem Docker-Executor ausgeführt werden, müssen Sie ein Docker-Image angeben, das die erforderlichen Utilitys enthält. Daher ist das Erstellen eines benutzerdefinierten Images möglicherweise von wesentlicher Bedeutung, da Tools wie kubectl und OCI-CLI verwendet werden, um bestimmte Pipelineanforderungen zu erfüllen.
Verwandte Links
-
Überblick über Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)
-
Serviceaccount-Authentifizierungstoken zu einer Kubeconfig-Datei hinzufügen
Bestätigungen
- Autoren - Adina Nicolescu (Senior Cloud Engineer), Guido Alejandro Ferreyra (Principal Cloud Architect)
Weitere Lernressourcen
Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Deploy to OCI Container Engine for Kubernetes from GitLab CI/CD
F92402-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.