Anfang dieser Woche haben wir Akamai App Platform auf den Markt gebracht, eine Ein-Klick-Erweiterung für Linode Kubernetes Engine (LKE), mit der Sie auf einfache Weise entwicklungs- und betriebsorientierte Tools, Automatisierung und Selbstbedienung hinzufügen können, um Ihren Anwendungslebenszyklus bei der Verwendung von Kubernetes zu optimieren. Akamai App Platform verbindet viele der Technologien, die in der Cloud Native Computing Foundation (CNCF) zu finden sind, auf eine Weise, die einen direkten Nutzen bietet.
In diesem Blog-Beitrag führen wir Sie durch die Schritte der Bereitstellung eines LKE-Clusters mit der Akamai App Platform und der anschließenden Erstellung, Bereitstellung und öffentlichen Freigabe einer Anwendung.
Bereitstellung eines Kubernetes-Clusters mit Akamai App Platform
Die Akamai App Platform ist jetzt als Beta-Version verfügbar. Bevor wir also beginnen können, sollten Sie sich zunächst bei Ihrem Konto anmelden oder ein Akamai-Cloud-Computing-Konto einrichten. Nachdem Sie sich angemeldet haben, registrieren Sie sich für das Beta-Programm auf der Seite Betas.
Wählen Sie nun Kubernetes aus dem linken Navigationsmenü und wählen Sie Cluster erstellen. Die Seite Kubernetes-Cluster erstellen wird angezeigt. Oben auf der Seite müssen Sie die folgenden Optionen auswählen:
- Geben Sie im Feld Cluster-Bezeichnung einen Namen für Ihren Cluster ein. Der Name muss für alle Cluster in Ihrem Konto eindeutig sein. Mit diesem Namen können Sie Ihren Cluster im Cloud Manager-Dashboard identifizieren.
- Wählen Sie Ihre Region aus dem Dropdown-Menü.
- Wählen Sie aus dem Dropdown-Menü die Kubernetes-Version aus, die in Ihrem Cluster bereitgestellt werden soll.
- Wählen Sie im Abschnitt App-Plattform für LKE die Option "Ja, App-Plattform für LKE aktivieren".
- Wählen Sie im Abschnitt "Add Node Pools" die Hardwareressourcen für die Linode-Arbeitsknoten aus, aus denen Ihr LKE-Cluster besteht. Während der Beta-Phase erfordert die App-Plattform für LKE einen Knotenpool mit mindestens 3 Arbeitsknoten mit mindestens 16 GB Speicher pro Knoten. Shared CPU wird derzeit nicht unterstützt.
- Wählen Sie Hinzufügen, um den Knotenpool in Ihre Konfiguration aufzunehmen.
- Nachdem ein Node-Pool zu Ihrer Konfiguration hinzugefügt wurde, wird er in der Cluster-Zusammenfassung auf der rechten Seite des Cloud Managers aufgelistet, wobei die Hardware-Ressourcen Ihres Clusters und die monatlichen Kosten angegeben sind.
- Wenn Sie mit der Konfiguration Ihres Clusters zufrieden sind, wählen Sie Cluster erstellen auf der rechten Seite des Bildschirms. Die Detailseite Ihres Clusters wird angezeigt, und Ihre Knotenpools werden auf dieser Seite aufgeführt.
Nun wird der LKE-Cluster erstellt und, sobald er fertig ist, wird die App Platform installiert. Die Installation von App Platform for LKE dauert etwa 10 bis 15 Minuten. Wenn die Installation abgeschlossen ist, wird die URL des Portal-Endpunkts im Abschnitt App Platform for LKE auf der Detailseite des Clusters angezeigt. Der Fortschritt der Installation wird alle 60 Sekunden überprüft. Wenn die Installation noch im Gange ist, wird die URL des Portal-Endpunkts nicht angezeigt. Stattdessen wird die Meldung "Installation in progress" angezeigt.
Wenn die Installation sowohl des LKE-Clusters als auch der App-Plattform abgeschlossen ist, klicken Sie auf die angegebene URL des Portal-Endpunkts:
Sie werden nun die folgende Anmeldeseite sehen:
Um sich anzumelden, müssen Sie zunächst die ersten Anmeldedaten erhalten. Navigieren Sie auf der Detailseite des Clusters zum Optionsmenü mit den Ellipsen und wählen Sie Kubeconfig herunterladen. Die Datei wird im Ordner Downloads auf Ihrem Computer gespeichert.
Öffnen Sie eine Terminal-Shell und speichern Sie den Pfad zu Ihrer Kubeconfig-Datei in der Umgebungsvariablen $KUBECONFIG. Im Beispielbefehl befindet sich die Kubeconfig-Datei im Ordner Downloads, aber Sie sollten diese Zeile mit dem Speicherort dieses Ordners auf Ihrem Computer abändern:
export KUBECONFIG=~/Downloads/kubeconfig.yaml
Führen Sie nun den folgenden Befehl aus, um den Benutzernamen zu erhalten:
kubectl get secret platform-admin-initial-credentials -n keycloak --template={{.data.username}} | base64 -d
Führen Sie den folgenden Befehl aus, um das Passwort zu erhalten:
kubectl get secret platform-admin-initial-credentials -n keycloak --template={{.data.password}} | base64 -d
Verwenden Sie nun die erhaltenen Anmeldedaten, um sich bei der Konsole anzumelden und das ursprüngliche Passwort zu ändern.
Konfigurieren Sie Object Storage für die App-Plattform
Wenn Sie in der Konsole angemeldet sind, müssen Sie als erstes Object Storage konfigurieren. Es wird eine Meldung angezeigt, in der Sie gefragt werden, ob die App-Plattform den Objektspeicher für Sie konfigurieren soll.
Dies ist zwar nicht erforderlich, wird aber dringend empfohlen, da dadurch Fehler wegen mangelnden Speicherplatzes bei der Verwendung von Storage Volumes für integrierte Anwendungen vermieden werden. Die Verwendung von Object Storage hat auch den Vorteil, dass Backups aller von der Plattform verwendeten Datenbanken und aller Git-Repositories erstellt werden können.
Wenn Sie nicht möchten, dass die App-Plattform den Objektspeicher für Sie konfiguriert, dann wählen Sie Jetzt überspringen. Beachten Sie, dass in diesem Fall einige Funktionen wie das Erstellen von Sicherungskopien von Datenbanken nicht verfügbar sind. Sie können den Assistenten jederzeit im Bereich Wartung starten.
- Klicken Sie auf
Yes
. - Befolgen Sie die Anweisungen zum Erstellen eines persönlichen Zugangstokens und stellen Sie sicher, dass Sie für die Kategorie Object Storage die Option Lesen/Schreiben auswählen. Kopieren Sie das API-Token.
- Fügen Sie das Zugriffstoken in den Assistenten ein und wählen Sie den Bereich aus, in dem die Buckets erstellt werden sollen:
- Dann klicken Sie auf
Submit
.
Alle erforderlichen Object Storage Buckets und ein Zugangsschlüssel werden nun in Ihrem Konto erstellt und die App-Plattform wird so konfiguriert, dass sie die Buckets zum Speichern von Backups, Protokollen, Metriken, Traces und Bildern verwendet. Das bereitgestellte persönliche Zugriffstoken wird nicht gespeichert. Die erstellten Buckets haben die lke<cluster-id>
Vorwahl.
Hafen freigeben
Jetzt, da der Objektspeicher konfiguriert ist, können wir die App-Plattform zusammenstellen, indem wir die erforderlichen Apps aktivieren. In diesem Beitrag wollen wir ein Image aus dem Quellcode erstellen, also müssen wir die Harbor-App aktivieren, da die Build-Self-Service-Funktion Harbor zum Speichern aller Container-Images verwendet.
- Klicken Sie im linken Menü auf
Apps
. - Bewegen Sie den Mauszeiger über die Harbor-App und klicken Sie auf die Schaltfläche "Aktivieren".
- Klicken Sie oben links auf
Deploy Changes
.
Harbor wird nun installiert und für die Verwendung konfiguriert.
Ein Team bilden
Als Nächstes müssen Sie ein Team erstellen. Ein Team ist ein Mieter auf der Plattform. Es ist wie ein Namespace als Service. Jedes Team kann seine eigenen Teammitglieder haben, und die Mitglieder erhalten Zugriff auf die Konsole, um alle Selbstbedienungsfunktionen zu nutzen. Wir werden in späteren Beiträgen mehr über Teams sprechen. Lassen Sie uns ein Team erstellen:
- Achten Sie darauf, dass Sie
platform
imview
in der oberen Leiste. - Klicken Sie auf
Teams
im linken Menü. - Klicken Sie auf
Create Team
. - Geben Sie einen Namen für das Team ein. In den Beispielen verwenden wir den Teamnamen demo. Beachten Sie, dass ein Teamname maximal 12 Zeichen lang sein darf und der erstellte Namespace den Namen
team-<team-name>
. - Überspringen Sie alle anderen Optionen und klicken Sie auf
Submit
. - Klicken Sie auf
Deploy Changes
oben links in der Konsole.
Ein Repository erstellen
Nachdem wir nun ein Team erstellt haben, können wir zur team
Ansicht und wählen Sie unser neu erstelltes Team aus. In der Team-Ansicht sehen Sie im linken Menü ebenfalls einen Abschnitt "Apps", genau wie in der Plattform-Ansicht. Die Apps in der Teamansicht sind Apps, die von allen Teams auf der App-Plattform gemeinsam genutzt werden, und Apps, die nur für das Team bestimmt sind.
Alle Teammitglieder haben Zugriff auf die Apps im Team. Da wir ein Bild erstellen wollen, werden wir zunächst ein Repository mit einer einfachen App erstellen, die Nginx verwendet, um eine einzelne HTML-Seite bereitzustellen:
- Klicken Sie auf die Gitea-App. Gitea ist ein selbst gehosteter Git-Dienst, der auf der App-Plattform läuft und sofort genutzt werden kann.
- Wählen Sie "Mit OpenID anmelden":
- Wählen Sie "+ Neues Repository":
- Fügen Sie einen Namen für das Repository hinzu. Nennen wir das Repository
demo
- Auswählen
Make Repository Private
und wählen SieInitialize Repository
. - Klicken Sie auf Repository erstellen.
Fügen wir nun etwas Code zum Repository hinzu. Wir werden eine einfache Anwendung mit Nginx erstellen, um eine HTML-Seite auszuliefern.
Hinzufügen der Datei demo.html
mit folgendem Inhalt:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Sample Deployment</title>
<style>
body {
color: #ffffff;
background-color: #0099cc;
font-family: Arial, sans-serif;
font-size: 14px;
}
h1 {
font-size: 500%;
font-weight: normal;
margin-bottom: 0;
}
h2 {
font-size: 200%;
font-weight: normal;
margin-bottom: 0;
}
.centered-text {
text-align: center;
}
</style>
</head>
<body>
<div class="centered-text">
<h1>Welcome to the App Platform</h1>
</div>
</body>
</html>
Und fügen Sie die Datei Dockerfile mit folgendem Inhalt hinzu:
FROM nginxinc/nginx-unprivileged:stable
COPY demo.html /usr/share/nginx/html/index.html
EXPOSE 8080
Erstellen, Bereitstellen und öffentliches Zugänglichmachen der Anwendung
Jetzt werden wir die Anwendung erstellen, bereitstellen und öffentlich zugänglich machen. Hierfür bietet die App-Plattform eine Reihe von Selbstbedienungsformularen. Sie können das Self-Service-Formular Builds verwenden, um Images aus dem Quellcode zu erstellen, eine der Helm-Schnellstartvorlagen aus dem Katalog verwenden, um Ihre Anwendung bereitzustellen, und das Self-Service-Formular Services verwenden, um die Anwendung öffentlich zugänglich zu machen.
Schritt 1: Aufbau des Bildes
- Achten Sie darauf, dass Sie
team
imview
in der oberen Leiste. Denken Sie daran, dass Sie als Plattformadministrator angemeldet sind und sowohl die Plattform als auch die Teamansicht sehen können. - Klicken Sie auf
Builds
im linken Menü. - Klicken Sie auf
Create Build
. - Fügen Sie einen Namen für den Build hinzu. Nennen wir dieses Build
demo
. - Verwenden Sie den (standardmäßigen) Docker Build-Modus und fügen Sie die URL des soeben erstellten Git-Repositorys hinzu. In der nächsten Version der App-Plattform können Sie die URL anhand der verfügbaren Repositories auswählen.
- Klicken Sie auf
Submit
. - Klicken Sie auf
Deploy Changes
oben in der linken Menüleiste.
Die App-Plattform wird nun eine Tekton-Pipeline erstellen und ausführen, um die Anwendung aus dem Repository zu klonen, das Image zu erstellen und an Harbor zu übertragen. Das Image wird in die private Registry in Harbor übertragen, auf die nur Teammitglieder Zugriff haben.
Sie können nun den Status des Builds verfolgen, indem Sie das Tekton Dashboard im Bereich Apps öffnen (in der Teamansicht!). Sie können auch auf Builds im linken Menü klicken. Dort sehen Sie den vom Projekt erstellten Build. Klicken Sie auf den Link PipelineRun, um den Status des Builds zu sehen.
Wenn die Pipeline fertig ist, können Sie das Bild in Harbor sehen. Go zum Abschnitt Apps im linken Menü und klicken Sie auf Harbor. Denken Sie daran, dass Sie als Plattformadministrator angemeldet sind, und Sie sehen alle Projekte, die von der App-Plattform erstellt wurden. Klicken Sie auf das Projekt des Teams, das wir erstellt haben. Hier sehen Sie ein Repository namens team-demo/demo
.
Schritt 2: Erstellen eines Workloads zum Bereitstellen unseres Images
- Gehen Sie zunächst in die Liste der Builds und kopieren Sie den Repository-Namen des Images:
- Klicken Sie nun auf
Catalog
im linken Menü. - Klicken Sie im Katalog auf das Symbol
Quickstart-K8s-Deployment
Karte. - Klicken Sie auf die Registerkarte Werte.
- Fügen Sie einen Namen für den Workload hinzu. Bleiben wir bei dem Namen
demo
. - In der
Chart values fil
e setzen dieimage.repository
auf den Registrierungsnamen, den wir in der Zwischenablage gespeichert haben, und verwenden Sielatest
für dieimage.tag
. - Klicken Sie auf
Submit
am unteren Rand der Diagrammwerte. - Klicken Sie auf
Deploy Changes
oben in der linken Menüleiste
Die App Platform wird nun ein Argo CD ApplicationSet erstellen, um die Anwendung einzusetzen. Beachten Sie, dass die Werte und das Diagramm in separaten Git-Repositories gespeichert sind.
Um die Demo-Anwendung in Argo CD zu sehen, klicken Sie auf Workloads im linken Menü. Dort sehen Sie den vom Projekt erstellten Workload. Klicken Sie auf den Link Anwendung, um den Status des Workloads zu sehen.
Schritt 3: Veröffentlichen Sie die Anwendung
Um unsere Anwendung live zu sehen, müssen einige Dinge getan werden. Die App-Plattform nutzt eine fortschrittliche Ingress-Architektur mit Nginx Ingress und Istio. Um die Anwendung bereitzustellen, müssen wir einen Ingress- und einen Istio VirtualService erstellen. Glücklicherweise automatisiert die App-Plattform dies alles.
- Klicken Sie nun auf
Services
im Menü. - Klicken Sie auf
Create Service
. - Wählen Sie in der Dropdown-Liste die Option
demo
Dienstleistung - Unter
Exposure
anklicken.External
. - Klicken Sie auf
Submit
und dannDeploy Changes
.
In der Liste der Dienste sehen Sie den soeben erstellten Dienst und die URL, die zur Veröffentlichung des Dienstes verwendet wurde. Klicken Sie auf die URL.
Rekapitulation
In diesem Beitrag haben wir einen LKE-Cluster eingerichtet und die App-Plattform aktiviert. Dann haben wir den Objektspeicher konfiguriert, die Harbor-App aktiviert, ein Team erstellt und ein Code-Repository angelegt. Dann haben wir die Self-Service-Formulare in der App-Plattform verwendet, um eine Anwendung zu erstellen, bereitzustellen und öffentlich zugänglich zu machen.
Nach der Installation der App Platform können Sie den Objektspeicher so konfigurieren, dass alle in die App Platform integrierten Anwendungen diese Konfiguration nutzen können. Kein Ausprobieren mehr, um den Objektspeicher für Anwendungen wie Grafana Loki, Thanos, Harbor und Tempo zu konfigurieren. Mit App Platform auf Akamai wird dies alles für Sie erledigt.
Die Verwendung von Teams für die Mandantenfähigkeit ermöglicht es Ihnen, mehrere Benutzergruppen unabhängig voneinander arbeiten zu lassen und ihnen die gleiche Infrastruktur und Plattformfunktionen zur Verfügung zu stellen. Benutzer können die Self-Service-Formulare verwenden, um ihre Anwendungen innerhalb von Minuten zu erstellen, bereitzustellen und zu veröffentlichen.
Beachten Sie, dass wir hier nur die Spitze des Eisbergs zeigen. App Platform hat noch viel mehr zu bieten. In Kürze werden wir weitere Artikel veröffentlichen, die tiefer in die App Platform eintauchen und Ihnen zeigen, wie Sie Geheimnisse erstellen, Netzwerkrichtlinien konfigurieren, mit Sicherheitsrichtlinien arbeiten und die Plattformfunktionen für CI/CD, Beobachtbarkeit und Sicherheit nutzen.
Kommentare