Tutorial: Herstellen einer Verbindung zu einem Azure Cache for Redis-Dienst in Azure Container Apps (Vorschau)
Mit Azure Container Apps können Sie eine Verbindung mit Diensten herstellen, die Ihre App unterstützen, die in derselben Umgebung wie Ihre Container-App ausgeführt werden.
In der Entwicklung kann Ihre Anwendung schnell eine Verbindung zu Entwicklungsdiensten erstellen und herstellen. Diese Dienste sind einfach zu erstellen und sind Dienste auf Entwicklungsniveau, die für Nichtproduktionsumgebungen entwickelt wurden.
Wenn Sie in die Produktion wechseln, kann Ihre Anwendung eine Verbindung zu verwalteten Diensten auf Produktionsniveau herstellen.
In diesem Tutorial erfahren Sie, wie Sie den Azure Cache for Redis-Dienst auf Entwicklungsniveau und Produktionsniveau mit Ihrer Container-App verbinden.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines neuen Redis-Entwicklungsdiensts
- Verbinden einer Container-App mit dem Redis-Entwicklungsdienst
- Trennen des Diensts von der Anwendung
- Überprüfen des Diensts, der einen In-Memory-Cache ausführt
Voraussetzungen
Resource | BESCHREIBUNG |
---|---|
Azure-Konto | Ein aktives Abonnement ist erforderlich. Falls Sie keins haben, können Sie kostenlos eins erstellen. |
Azure CLI | Installieren Sie die Azure CLI, falls sie auf Ihrem Computer noch nicht vorhanden ist. |
Azure-Ressourcengruppe | Erstellen Sie eine Ressourcengruppe mit dem Namen my-services-resource-group in der Region USA, Osten. |
Azure Cache for Redis | Erstellen Sie eine Azure Cache for Redis-Instanz in der Ressourcengruppe my-services-resource-group. |
Einrichten
Melden Sie sich bei der Azure CLI an.
az login
Aktualisieren Sie die CLI-Erweiterung für Container Apps.
az extension add --name containerapp --upgrade
Registrieren Sie den
Microsoft.App
-Namespace.az provider register --namespace Microsoft.App
Registrieren Sie den
Microsoft.ServiceLinker
-Namespace.az provider register --namespace Microsoft.ServiceLinker
Richten Sie die Ressourcengruppenvariable ein.
RESOURCE_GROUP="my-services-resource-group"
Erstellen Sie eine Variable für den DNS-Namen für Azure Cache for Redis.
Führen Sie den folgenden Befehl aus, um eine Liste der Azure Cache for Redis-Instanzen anzuzeigen.
az redis list --resource-group "$RESOURCE_GROUP" --query "[].name" -o table
Erstellen Sie eine Variable zum Speichern Ihres Umgebungsnamens.
Ersetzen Sie
<MY_ENVIRONMENT_NAME>
durch den Namen Ihrer Container Apps-Umgebung.ENVIRONMENT=<MY_ENVIRONMENT_NAME>
Richten Sie die Standortvariable ein.
LOCATION="eastus"
Erstellen Sie eine neue Umgebung.
az containerapp env create \ --location "$LOCATION" \ --resource-group "$RESOURCE_GROUP" \ --name "$ENVIRONMENT"
Nachdem die CLI konfiguriert und eine Umgebung erstellt wurde, können Sie jetzt eine Anwendung und einen Entwicklungsdienst erstellen.
Erstellen eines Entwicklungsdiensts
Die Beispielanwendung verwaltet eine Reihe von Zeichenfolgen im Arbeitsspeicher oder im Redis-Cache.
Erstellen Sie den Redis-Entwicklungsdienst, und nennen Sie ihn myredis
.
az containerapp add-on redis create \
--name myredis \
--resource-group "$RESOURCE_GROUP" \
--environment "$ENVIRONMENT"
Erstellen einer Container-App
Erstellen Sie als Nächstes Ihre Container-App, auf die über das Internet zugegriffen werden kann.
Erstellen Sie eine neue Container-App, und binden Sie sie an den Redis-Dienst.
az containerapp create \ --name myapp \ --image mcr.microsoft.com/k8se/samples/sample-service-redis:latest \ --ingress external \ --target-port 8080 \ --bind myredis \ --environment "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --query properties.configuration.ingress.fqdn
Dieser Befehl gibt den vollqualifizierten Domänennamen (FQDN, Fully Qualified Domain Name) zurück. Fügen Sie diesen Speicherort in einen Webbrowser ein, damit Sie das Verhalten der Anwendung im Verlauf dieses Tutorials überprüfen können.
Der Befehl
containerapp create
verwendet die Option--bind
, um eine Verknüpfung zwischen der Container-App und dem Redis-Entwicklungsdienst zu erstellen.Die Bindungsanforderung sammelt Verbindungsinformationen, einschließlich Anmeldeinformationen und Verbindungszeichenfolgen, und fügt sie als Umgebungsvariablen in die Anwendung ein. Diese Werte stehen jetzt dem Anwendungscode zur Verwendung zur Verfügung, um eine Verbindung zum Dienst herzustellen.
In diesem Fall stehen der Anwendung die folgenden Umgebungsvariablen zur Verfügung:
REDIS_ENDPOINT=myredis:6379 REDIS_HOST=myredis REDIS_PASSWORD=... REDIS_PORT=6379
Wenn Sie über einen Browser auf die Anwendung zugreifen, können Sie Zeichenfolgen aus der Redis-Datenbank hinzufügen und daraus entfernen. Der Redis-Cache ist für das Speichern von Anwendungsdaten verantwortlich, sodass Daten auch nach dem Neustart der Anwendung nach einer Skalierung auf null verfügbar sind.
Sie können auch eine Bindung aus Ihrer Anwendung entfernen.
Heben Sie die Bindung des Redis-Entwicklungsdiensts auf.
Verwenden Sie die Option
--unbind
, um eine Bindung aus einer Container-App zu entfernen.az containerapp update \ --name myapp \ --unbind myredis \ --resource-group "$RESOURCE_GROUP"
Die Anwendung ist so geschrieben, dass die Textzeichenfolgen im Arbeitsspeicher gespeichert werden, wenn die Umgebungsvariablen nicht definiert sind.
Wenn die Anwendung in diesem Zustand auf null skaliert wird, gehen Daten verloren.
Sie können diese Änderung überprüfen, indem Sie zu Ihrem Webbrowser zurückkehren und die Webanwendung aktualisieren. Sie können nun sehen, dass die angezeigten Konfigurationsinformationen zeigen, dass die Daten im Arbeitsspeicher gespeichert sind.
Jetzt können Sie die Anwendung erneut an den Redis-Dienst binden, um Ihre zuvor gespeicherten Daten anzuzeigen.
Stellen Sie erneut eine Bindung an den Redis-Entwicklungsdienst her.
az containerapp update \ --name myapp \ --bind myredis \ --resource-group "$RESOURCE_GROUP"
Wenn der Dienst wieder verbunden ist, können Sie die Webanwendung aktualisieren, um in Redis gespeicherte Daten anzuzeigen.
Herstellen einer Verbindung mit einem verwalteten Dienst
Wenn Ihre Anwendung bereit ist, in die Produktion zu wechseln, können Sie Ihre Anwendung an einen verwalteten Dienst anstatt eines Entwicklungsdiensts binden.
Die folgenden Schritte binden Ihre Anwendung an eine vorhandene Azure Cache for Redis-Instanz.
Erstellen Sie eine Variable für Ihren DNS-Namen.
Stellen Sie sicher, dass Sie
<YOUR_DNS_NAME>
durch den DNS-Namen Ihrer Azure Cache for Redis-Instanz ersetzen.AZURE_REDIS_DNS_NAME=<YOUR_DNS_NAME>
Stellen Sie eine Bindung zu Azure Cache for Redis her.
az containerapp update \ --name myapp \ --unbind myredis \ --bind "$AZURE_REDIS_DNS_NAME" \ --resource-group "$RESOURCE_GROUP"
Dieser Befehl entfernt gleichzeitig die Entwicklungsbindung und richtet die Bindung an den verwalteten Dienst auf Produktionsniveau ein.
Kehren Sie zum Browser zurück, und aktualisieren Sie die Seite.
Die Konsole gibt Werte wie im folgenden Beispiel aus.
AZURE_REDIS_DATABASE=0 AZURE_REDIS_HOST=azureRedis.redis.cache.windows.net AZURE_REDIS_PASSWORD=il6HI... AZURE_REDIS_PORT=6380 AZURE_REDIS_SSL=true
Hinweis
Die Namen von Umgebungsvariablen, die für Add-Ons und verwaltete Dienste verwendet werden, variieren geringfügig.
Wenn Sie den für dieses Tutorial verwendeten Beispielcode sehen möchten, sehen Sie sich https://github.com/Azure-Samples/sample-service-redis an.
Wenn Sie nun neue Zeichenfolgen hinzufügen, werden die Werte in einer Azure Cache for Redis-Instanz anstelle des Entwicklungsdiensts gespeichert.
Bereinigen von Ressourcen
Wenn Sie nicht planen, die in diesem Tutorial erstellten Ressourcen weiterhin zu verwenden, können Sie die Anwendung und den Redis-Dienst löschen.
Die Anwendung und der Dienst sind unabhängig. Diese Unabhängigkeit bedeutet, dass der Dienst mit einer beliebigen Anzahl von Anwendungen in der Umgebung verbunden werden kann und bis zum expliziten Löschen vorhanden ist, auch wenn alle Anwendungen von ihm getrennt werden.
Führen Sie die folgenden Befehle aus, um Ihre Container-App und den Entwicklungsdienst zu löschen.
az containerapp delete --name myapp
az containerapp add-on redis delete --name myredis
Alternativ können Sie die Ressourcengruppe löschen, um die Container-App und alle Dienste zu entfernen.
az group delete \
--resource-group "$RESOURCE_GROUP"