Sdílet prostřednictvím


Vývoj aplikace Kubernetes pro Azure SQL Database

Platí pro:Azure SQL Database

V tomto kurzu se naučíte vyvíjet moderní aplikaci pomocí Pythonu, Kontejnerů Dockeru, Kubernetes a Azure SQL Database.

Moderní vývoj aplikací má několik výzev. Od výběru "zásobníku" front-endu prostřednictvím úložiště dat a zpracování z několika konkurenčních standardů, prostřednictvím zajištění nejvyšší úrovně zabezpečení a výkonu, musí vývojáři zajistit, aby se aplikace škálovat a dobře fungovala a je podporována na více platformách. V případě posledního požadavku je teď vytvoření aplikace do technologií kontejnerů, jako je Docker a nasazení několika kontejnerů na platformu Kubernetes, nyní ve vývoji aplikací derigueur.

V tomto příkladu prozkoumáme použití Pythonu, kontejnerů Dockeru a Kubernetes – vše spuštěné na platformě Microsoft Azure. Použití Kubernetes znamená, že máte také flexibilitu používání místních prostředí nebo dokonce jiných cloudů pro bezproblémové a konzistentní nasazení vaší aplikace a umožňuje nasazení s více cloudy pro ještě vyšší odolnost. Pro ukládání a zpracování dat také použijeme Microsoft Azure SQL Database pro vysoce odolné a zabezpečené prostředí založené na službách. V mnoha případech už microsoft Azure SQL Database často používají jiné aplikace a tato ukázková aplikace se dá použít k dalšímu použití a obohacení těchto dat.

Tento příklad je poměrně komplexní v oboru, ale používá nejjednodušší aplikaci, databázi a nasazení k ilustraci procesu. Tuto ukázku můžete přizpůsobit tak, aby byla mnohem robustnější, i když pro vrácená data používáte nejnovější technologie. Je to užitečný výukový nástroj k vytvoření vzoru pro jiné aplikace.

Použití ukázkové databáze Python, Docker Containers, Kubernetes a AdventureWorksLT v praktickém příkladu

Společnost AdventureWorks (fiktivní) používá databázi, která ukládá data o prodejích a marketingu, produktech, zákaznících a výrobě. Obsahuje také zobrazení a uložené procedury, které spojují informace o produktech, jako je název produktu, kategorie, cena a stručný popis.

Vývojový tým AdventureWorks chce vytvořit testování konceptu (PoC), který vrací data ze zobrazení v AdventureWorksLT databázi, a zpřístupnit je jako rozhraní REST API. Pomocí tohoto PoC vytvoří vývojový tým škálovatelnější a vícecloudovou aplikaci připravenou pro prodejní tým. Pro všechny aspekty nasazení vybrali platformu Microsoft Azure. PoC používá následující prvky:

  • Aplikace Pythonu využívající balíček Flask pro bezobsadové nasazení webu.
  • Kontejnery Dockeru pro izolaci kódu a prostředí uložené v privátním registru, aby celá společnost mohli kontejnery aplikací znovu použít v budoucích projektech, což šetří čas a peníze.
  • Kubernetes umožňuje snadné nasazení a škálování a vyhnout se uzamčení platformy.
  • Microsoft Azure SQL Database pro výběr velikosti, výkonu, škálování, automatického zpracování a zálohování kromě úložiště a zpracování relačních dat na nejvyšší úrovni zabezpečení.

V tomto článku vysvětlujeme proces vytvoření celého projektu testování konceptu. Obecné kroky pro vytvoření aplikace jsou:

  1. Nastavení požadavků
  2. Vytvoření aplikace
  3. Vytvoření kontejneru Dockeru pro nasazení aplikace a testování
  4. Vytvoření registru služby Azure Container Service (ACS) a načtení kontejneru do registru služby ACS
  5. Vytvoření prostředí Azure Kubernetes Service (AKS)
  6. Nasazení kontejneru aplikace z registru služby ACS do AKS
  7. Otestování aplikace
  8. Vyčištění

Požadavky

V tomto článku je několik hodnot, které byste měli nahradit. Zajistěte, abyste tyto hodnoty pro každý krok konzistentně nahradili. Možná budete chtít otevřít textový editor a tyto hodnoty vypustit, abyste při práci s projektem testování konceptu nastavili správné hodnoty:

  • ReplaceWith_AzureSubscriptionName: Tuto hodnotu nahraďte názvem předplatného Azure, který máte.
  • ReplaceWith_PoCResourceGroupName: Tuto hodnotu nahraďte názvem skupiny prostředků, kterou chcete vytvořit.
  • ReplaceWith_AzureSQLDBServerName: Tuto hodnotu nahraďte názvem logického serveru Azure SQL Database, který vytvoříte pomocí webu Azure Portal.
  • ReplaceWith_AzureSQLDBSQLServerLoginName: Tuto hodnotu nahraďte hodnotou uživatelského jména SQL Serveru, které vytvoříte na webu Azure Portal.
  • ReplaceWith_AzureSQLDBSQLServerLoginPassword: Tuto hodnotu nahraďte hodnotou uživatelského hesla SQL Serveru, které vytvoříte na webu Azure Portal.
  • ReplaceWith_AzureSQLDBDatabaseName: Tuto hodnotu nahraďte názvem azure SQL Database, kterou vytvoříte pomocí webu Azure Portal.
  • ReplaceWith_AzureContainerRegistryName: Tuto hodnotu nahraďte názvem služby Azure Container Registry, kterou chcete vytvořit.
  • ReplaceWith_AzureKubernetesServiceName: Tuto hodnotu nahraďte názvem služby Azure Kubernetes Service, kterou chcete vytvořit.

Vývojáři v AdventureWorks používají pro vývoj kombinaci systémů Windows, Linux a Apple, takže používají Visual Studio Code jako své prostředí a git pro správu zdrojového kódu, z nichž obě běží na různých platformách.

Pro poC tým vyžaduje následující požadavky:

  1. Python, pip a balíčky – Vývojový tým zvolí programovací jazyk Python jako standard pro tuto webovou aplikaci. V současné době používají verzi 3.9, ale jakákoli verze podporující požadované balíčky PoC je přijatelná.

  2. Tým používá pyodbc balíček pro přístup k databázi.

  3. Tým používá ConfigParser balíček pro řízení a nastavení konfiguračních proměnných.

  4. Tým používá balíček Flask pro webové rozhraní aplikace.

  5. V dalším kroku tým nainstaloval nástroj Azure CLI, který je snadno identifikován syntaxí az . Tento nástroj pro různé platformy umožňuje přístup příkazového řádku a skriptovaného přístupu k PoC, aby mohl kroky opakovat při provádění změn a vylepšení.

  6. Po nastavení Azure CLI se tým přihlásí ke svému předplatnému Azure a nastaví název předplatného, které použil pro PoC. Pak zajistili, aby byl server a databáze Azure SQL Database přístupné pro předplatné:

    az login
    az account set --name "ReplaceWith_AzureSubscriptionName"
    az sql server list
    az sql db list ReplaceWith_AzureSQLDBDatabaseName 
    
  7. Skupina prostředků Microsoft Azure je logický kontejner, který obsahuje související prostředky pro řešení Azure. Obecně platí, že prostředky, které sdílejí stejný životní cyklus, se přidají do stejné skupiny prostředků, abyste je mohli snadno nasadit, aktualizovat a odstranit jako skupinu. Skupina prostředků ukládá metadata o prostředcích a můžete zadat umístění skupiny prostředků.

    Skupiny prostředků je možné vytvářet a spravovat pomocí webu Azure Portal nebo Azure CLI. Dají se také použít k seskupení souvisejících prostředků pro aplikaci a jejich rozdělení do skupin pro produkční a neprodukční prostředí nebo jakékoli jiné organizační struktury, které dáváte přednost.

    Snímek obrazovky webu Azure Portal znázorňující, jak hledat a filtrovat skupiny prostředků Azure

    V následujícím fragmentu az kódu uvidíte příkaz použitý k vytvoření skupiny prostředků. V naší ukázce používáme oblast Azure eastus.

    az group create --name ReplaceWith_PoCResourceGroupName --location eastus
    
  8. Vývojový tým vytvoří službu Azure SQL Database s AdventureWorksLT nainstalovanou ukázkovou databází pomocí ověřeného přihlášení SQL.

    AdventureWorks má standardizovanou platformu Microsoft SQL Server Relational Database Management System a vývojový tým chce místo místní instalace použít spravovanou službu pro databázi. Použití Azure SQL Database umožňuje, aby tato spravovaná služba byla zcela kompatibilní s kódem všude, kde běží modul SQL Serveru: místně, v kontejneru, v Linuxu nebo Windows nebo dokonce v prostředí Internetu věcí (IoT).

    1. Během vytváření použili Portál pro správu Azure k nastavení brány firewall pro aplikaci na místní vývojový počítač a změnili výchozí nastavení, které tady vidíte, aby povolovaly všechny služby Azure a také načetly přihlašovací údaje pro připojení.

      Snímek obrazovky webu Azure Portal se stránkou Vytvořit databázi SQL Na kartě Sítě je pro metodu připojení vybraná možnost Veřejný koncový bod. Možnost Přidat aktuální IP adresu klienta je Ano.

      Díky tomuto přístupu může být databáze přístupná v jiné oblasti nebo dokonce v jiném předplatném.

    2. Tým pro testování nastavil ověřené přihlášení SQL, ale v rámci kontroly zabezpečení se k tomuto rozhodnutí znovu připojí.

    3. Tým použil ukázkovou AdventureWorksLT databázi pro PoC pomocí stejné skupiny prostředků PoC. Nedělejte si starosti, na konci tohoto kurzu vyčistíme všechny prostředky v této nové skupině prostředků PoC.

    4. K nasazení služby Azure SQL Database můžete použít Azure Portal. Při vytváření služby Azure SQL Database na kartě Další nastavení u možnosti Použít existující data vyberte Ukázka.

      Snímek obrazovky webu Azure Portal se stránkou Vytvořit databázi SQL Na kartě Další nastavení vyberte možnost Použít existující data.

    5. Nakonec na kartě Značky nové služby Azure SQL Database poskytl vývojový tým metadata značek pro tento prostředek Azure, například Vlastník nebo ServiceClass nebo WorkloadName.

Vytvoření aplikace

Vývojový tým vytvořil jednoduchou aplikaci v Pythonu, která otevře připojení ke službě Azure SQL Database a vrátí seznam produktů. Tento kód bude nahrazen složitějšími funkcemi a může také zahrnovat více než jednu aplikaci nasazenou do podů Kubernetes v produkčním prostředí pro robustní přístup řízený manifestem k aplikačním řešením.

  1. Tým vytvořil jednoduchý textový soubor, který bude obsahovat .env proměnné pro připojení k serveru a další informace. python-dotenv Pomocí knihovny pak mohou proměnné oddělit od kódu Pythonu. Jedná se o běžný přístup k uchovávání tajných kódů a dalších informací mimo samotný kód.

    SQL_SERVER_ENDPOINT = ReplaceWith_AzureSQLDBServerName
    SQL_SERVER_USERNAME = ReplaceWith_AzureSQLDBSQLServerLoginName
    SQL_SERVER_PASSWORD = ReplaceWith_AzureSQLDBSQLServerLoginPassword
    SQL_SERVER_DATABASE = ReplaceWith_AzureSQLDBDatabaseName
    

    Upozornění

    Pro srozumitelnost a jednoduchost tato aplikace používá konfigurační soubor, který se čte z Pythonu. Vzhledem k tomu, že se kód nasadí s kontejnerem, můžou být informace o připojení možné odvodit z obsahu. Měli byste pečlivě zvážit různé metody práce se zabezpečením, připojeními a tajnými kódy a určit nejlepší úroveň a mechanismus, který byste měli pro naši aplikaci použít. Vždy vyberte nejvyšší úroveň zabezpečení a dokonce i několik úrovní, abyste zajistili zabezpečení vaší aplikace. Máte několik možností práce s tajnými informacemi, jako jsou připojovací řetězec a podobně, a následující seznam obsahuje několik těchto možností.

    Další informace najdete v tématu Zabezpečení služby Azure SQL Database.

  2. Tým dále napsal aplikaci PoC a nazval ji app.py.

    Následující skript provede následující kroky:

    1. Nastavte knihovny pro konfigurační a základní webová rozhraní.
    2. Načtěte proměnné ze .env souboru.
    3. Vytvořte aplikaci Flask-RESTful.
    4. Pomocí hodnot souborů se dostanete k informacím o připojení ke službě config.ini Azure SQL Database.
    5. Vytvořte připojení ke službě config.ini Azure SQL Database pomocí hodnot souborů.
    6. Připojte se ke službě pyodbc Azure SQL Database pomocí balíčku.
    7. Vytvořte dotaz SQL, který se spustí v databázi.
    8. Vytvořte třídu, která se použije k vrácení dat z rozhraní API.
    9. Nastavte koncový bod rozhraní API na Products třídu.
    10. Nakonec spusťte aplikaci na výchozím portu Flask 5000.
    # Set up the libraries for the configuration and base web interfaces
    from dotenv import load_dotenv
    from flask import Flask
    from flask_restful import Resource, Api
    import pyodbc
    
    # Load the variables from the .env file
    load_dotenv()
    
    # Create the Flask-RESTful Application
    app = Flask(__name__)
    api = Api(app)
    
    # Get to Azure SQL Database connection information using the config.ini file values
    server_name = os.getenv('SQL_SERVER_ENDPOINT')
    database_name = os.getenv('SQL_SERVER_DATABASE')
    user_name = os.getenv('SQL_SERVER_USERNAME')
    password = os.getenv('SQL_SERVER_PASSWORD')
    
    # Create connection to Azure SQL Database using the config.ini file values
    ServerName = config.get('Connection', 'SQL_SERVER_ENDPOINT')
    DatabaseName = config.get('Connection', 'SQL_SERVER_DATABASE')
    UserName = config.get('Connection', 'SQL_SERVER_USERNAME')
    PasswordValue = config.get('Connection', 'SQL_SERVER_PASSWORD')
    
    # Connect to Azure SQL Database using the pyodbc package
    # Note: You may need to install the ODBC driver if it is not already there. You can find that at:
    # https://learn.microsoft.com/sql/connect/odbc/download-odbc-driver-for-sql-server
    connection = pyodbc.connect(f'Driver=ODBC Driver 17 for SQL Server;Server={ServerName};Database={DatabaseName};uid={UserName};pwd={PasswordValue}')
    
    # Create the SQL query to run against the database
    def query_db():
        cursor = connection.cursor()
        cursor.execute("SELECT TOP (10) [ProductID], [Name], [Description] FROM [SalesLT].[vProductAndDescription] WHERE Culture = 'EN' FOR JSON AUTO;")
        result = cursor.fetchone()
        cursor.close()
        return result
    
    # Create the class that will be used to return the data from the API
    class Products(Resource):
        def get(self):
            result = query_db()
            json_result = {} if (result == None) else json.loads(result[0])     
            return json_result, 200
    
    # Set the API endpoint to the Products class
    api.add_resource(Products, '/products')
    
    # Start App on default Flask port 5000
    if __name__ == "__main__":
        app.run(debug=True)
    
  3. Zkontrolovali, že tato aplikace běží místně, a vrátí stránku do http://localhost:5000/products.

    Snímek obrazovky z webového prohlížeče návratové stránky Flask

    Důležité

    Při vytváření produkčních aplikací nepoužívejte účet správce pro přístup k databázi. Další informace najdete v článku o tom, jak nastavit účet pro vaši aplikaci. Kód v tomto článku je zjednodušený, abyste mohli rychle začít s aplikacemi pomocí Pythonu a Kubernetes v Azure.

    Realističtěji můžete použít uživatele databáze s oprávněními jen pro čtení nebo uživatele databáze s oprávněními jen pro čtení nebo uživatele databáze s omezením připojeným ke spravované identitě přiřazené uživatelem s oprávněními jen pro čtení.

    Další informace najdete v kompletním příkladu vytváření rozhraní API pomocí Pythonu a Azure SQL Database.

Nasazení aplikace do kontejneru Dockeru

Kontejner je vyhrazený chráněný prostor v výpočetním systému, který poskytuje izolaci a zapouzdření. Pokud chcete vytvořit kontejner, použijte soubor manifestu, což je jednoduše textový soubor popisující binární soubory a kód, který chcete obsahovat. Pomocí modulu runtime kontejneru (například Dockeru) pak můžete vytvořit binární image, která obsahuje všechny soubory, které chcete spustit, a odkazovat na nich. Odtud můžete "spustit" binární image a to se nazývá kontejner, na který můžete odkazovat, jako by to byl úplný výpočetní systém. Je to menší, jednodušší způsob, jak abstrahovat moduly runtime a prostředí aplikací než použití úplného virtuálního počítače. Další informace najdete v tématu Kontejnery a Docker.

Tým začal souborem DockerFile (manifest), který vrství prvky toho, co chce tým použít. Začínají základní imagí Pythonu, která už má pyodbc nainstalované knihovny, a pak spustí všechny příkazy potřebné k tomu, aby obsahovaly program a konfigurační soubor v předchozím kroku.

Následující soubor Dockerfile obsahuje následující kroky:

  1. Začněte binárním souborem kontejneru, který už má Python a pyodbc nainstalovaný.
  2. Vytvořte pracovní adresář pro aplikaci.
  3. Zkopírujte veškerý kód z aktuálního adresáře do WORKDIRsouboru .
  4. Nainstalujte požadované knihovny.
  5. Po spuštění kontejneru spusťte aplikaci a otevřete všechny porty TCP/IP.
# syntax=docker/dockerfile:1

# Start with a Container binary that already has Python and pyodbc installed
FROM laudio/pyodbc

# Create a Working directory for the application
WORKDIR /flask2sql

# Copy all of the code from the current directory into the WORKDIR
COPY . .

# Install the libraries that are required
RUN pip install -r ./requirements.txt

# Once the container starts, run the application, and open all TCP/IP ports 
CMD ["python3", "-m" , "flask", "run", "--host=0.0.0.0"]

Když je soubor na místě, tým přešel do příkazového řádku v adresáři kódování a spustil následující kód pro vytvoření binární image z manifestu a dalším příkazem pro spuštění kontejneru:

docker build -t flask2sql .
docker run -d -p 5000:5000 -t flask2sql

Tým znovu otestuje http://localhost:5000/products odkaz, aby zajistil, že kontejner bude mít přístup k databázi a uvidí následující návrat:

Snímek obrazovky z webového prohlížeče návratové stránky Flask z kontejneru

Nasazení image do registru Dockeru

Kontejner teď funguje, ale je dostupný jenom na počítači vývojáře. Vývojový tým chce zpřístupnit tuto image aplikace pro zbytek společnosti a pak do Kubernetes pro produkční nasazení.

Oblast úložiště pro image kontejnerů se nazývá úložiště a pro image kontejnerů může existovat veřejná i privátní úložiště. Ve skutečnosti adventureWorks ve svém souboru Dockerfile použila veřejnou image pro prostředí Pythonu.

Tým chce řídit přístup k imagi a místo toho, aby ho umístil na web, rozhodl se, že by ho chtěl hostovat sami, ale v Microsoft Azure, kde mají plnou kontrolu nad zabezpečením a přístupem. Další informace o službě Microsoft Azure Container Registry najdete tady.

Když se vrátíte do příkazového řádku, vývojový tým použije az CLI k přidání služby Container Registry, povolení účtu pro správu, nastavení na anonymní přijetí změn během testovací fáze a nastavení kontextu přihlášení do registru:

az acr create --resource-group ReplaceWith_PoCResourceGroupName --name ReplaceWith_AzureContainerRegistryName --sku Standard
az acr update -n ReplaceWith_AzureContainerRegistryName --admin-enabled true
az acr update --name ReplaceWith_AzureContainerRegistryName --anonymous-pull-enabled
az acr login --name ReplaceWith_AzureContainerRegistryName

Tento kontext se použije v následujících krocích.

Označte místní image Dockeru a připravte ji na nahrání.

Dalším krokem je odeslání image kontejneru místní aplikace do služby Azure Container Registry (ACR), aby byla dostupná v cloudu.

  1. V následujícím ukázkovém skriptu tým pomocí příkazů Dockeru zobrazí seznam imagí na počítači.
  2. Pomocí az CLI nástroje zobrazí seznam imagí ve službě ACR.
  3. Pomocí příkazu Dockeru označí image názvem cíle ACR, který vytvořili v předchozím kroku, a nastaví číslo verze pro správné DevOps.
  4. Nakonec znovu vypíše informace o místním obrázku, aby se značka použila správně.
docker images
az acr list --resource-group ReplaceWith_PoCResourceGroupName --query "[].{acrLoginServer:loginServer}" --output table
docker tag flask2sql ReplaceWith_AzureContainerRegistryName.azurecr.io/azure-flask2sql:v1
docker images

Když je kód napsaný a otestovaný, soubor Dockerfile, image a kontejner spuštěný a otestovaný, nastaví se služba ACR a použije se všechny značky, tým může nahrát image do služby ACR.

K odeslání souboru používají příkaz "push" Dockeru a pak az CLI nástroj k zajištění načtení image:

docker push ReplaceWith_AzureContainerRegistryName.azurecr.io/azure-flask2sql:v1
az acr repository list --name ReplaceWith_AzureContainerRegistryName --output table

Nasazení do Kubernetes

Tým může jednoduše spouštět kontejnery a nasazovat aplikaci do místních a cloudových prostředí. Chtěli by ale přidat více kopií aplikace pro škálování a dostupnost, přidat další kontejnery provádějící různé úlohy a přidat monitorování a instrumentaci do celého řešení.

Aby se kontejnery seskupily do kompletního řešení, tým se rozhodl používat Kubernetes. Kubernetes běží místně a ve všech hlavních cloudových platformách. Microsoft Azure má kompletní spravované prostředí pro Kubernetes, označované jako Azure Kubernetes Service (AKS). Přečtěte si další informace o AKS s kurzem Úvod do Kubernetes v Azure.

az CLI Pomocí nástroje přidá tým AKS do stejné skupiny prostředků, kterou vytvořili dříve. Jedním příkazem az provede vývojový tým následující kroky:

  • Přidání dvou "uzlů" nebo výpočetních prostředí pro odolnost ve fázi testování
  • Automatické generování klíčů SSH pro přístup k prostředí
  • Připojte službu ACR, kterou vytvořili v předchozích krocích, aby cluster AKS mohl vyhledat image, které chtějí použít pro nasazení.
az aks create --resource-group ReplaceWith_PoCResourceGroupName --name ReplaceWith_AzureKubernetesServiceName --node-count 2 --generate-ssh-keys --attach-acr ReplaceWith_AzureContainerRegistryName

Kubernetes používá nástroj příkazového řádku pro přístup ke clusteru s názvem kubectla řízení clusteru. Tým nástroj stáhne az CLIkubectl a nainstaluje:

az aks install-cli

Vzhledem k tomu, že v tuto chvíli mají připojení k AKS, můžou požádat o odeslání klíčů SSH pro připojení, které se mají použít při spuštění kubectl nástroje:

az aks get-credentials --resource-group ReplaceWith_PoCResourceGroupName --name ReplaceWith_AzureKubernetesServiceName

Tyto klíče jsou uloženy v souboru s názvem .config v adresáři uživatele. V této sadě kontextu zabezpečení tým používá kubectl get nodes k zobrazení uzlů v clusteru:

kubectl get nodes

Tým teď pomocí az CLI nástroje vypíše obrázky ve službě ACR:

az acr list --resource-group ReplaceWith_PoCResourceGroupName --query "[].{acrLoginServer:loginServer}" --output table

Teď můžou sestavit manifest, který Kubernetes používá k řízení nasazení. Jedná se o textový soubor uložený ve formátu yaml . Tady je text s poznámkami v flask2sql.yaml souboru:

apiVersion: apps/v1
# The type of commands that will be sent, along with the name of the deployment
kind: Deployment
metadata:
  name: flask2sql
# This section sets the general specifications for the application
spec:
  replicas: 1
  selector:
    matchLabels:
      app: flask2sql
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  minReadySeconds: 5 
  template:
    metadata:
      labels:
        app: flask2sql
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
# This section sets the location of the Image(s) in the deployment, and where to find them 
      containers:
      - name: flask2sql
        image:  bwoodyflask2sqlacr.azurecr.io/azure-flask2sql:v1
# Recall that the Flask application uses (by default) TCP/IP port 5000 for access. This line tells Kubernetes that this "pod" uses that address.
        ports:
        - containerPort: 5000
---
apiVersion: v1
# This is the front-end of the application access, called a "Load Balancer"
kind: Service
metadata:
  name: flask2sql
spec:
  type: LoadBalancer
# this final step then sets the outside exposed port of the service to TCP/IP port 80, but maps it internally to the app's port of 5000
  ports:
  - protocol: TCP
    port: 80
    targetPort: 5000
  selector:
    app: flask2sql

S definovaným flask2sql.yaml souborem může tým nasadit aplikaci do spuštěného clusteru AKS. To se provádí příkazem kubectl apply , který má při úplnosti stále kontext zabezpečení clusteru. Pak se kubectl get service odešle příkaz, který bude sledovat cluster při jeho sestavení.

kubectl apply -f flask2sql.yaml
kubectl get service flask2sql --watch

Po chvíli příkaz "watch" vrátí externí IP adresu. V tomto okamžiku tým stisknutím kombinace kláves CTRL-C přeruší příkaz kukátku a zaznamená externí IP adresu nástroje pro vyrovnávání zatížení.

Testování aplikace

Pomocí IP adresy (koncového bodu), kterou získali v posledním kroku, tým zkontroluje stejný výstup jako místní aplikace a kontejner Dockeru:

Snímek obrazovky z webového prohlížeče návratové stránky Flask při posledním testování kontejneru Výstup je stejný jako předtím.

Vyčištění

Když je aplikace vytvořená, upravená, zdokumentovaná a otestovaná, tým teď může aplikaci "odbourat". Když v Microsoft Azure necháte všechno v jedné skupině prostředků, je to jednoduché odstranění skupiny prostředků PoC pomocí az CLI nástroje:

az group delete -n ReplaceWith_PoCResourceGroupName -y

Poznámka:

Pokud jste službu Azure SQL Database vytvořili v jiné skupině prostředků a už ji nepotřebujete, můžete ji odstranit pomocí webu Azure Portal.

Člen týmu, který vede projekt PoC, používá jako pracovní stanici Microsoft Windows a chce zachovat soubor tajných kódů z Kubernetes, ale odebrat ho ze systému jako aktivní umístění. Můžou soubor jednoduše zkopírovat do textového config.old souboru a pak ho odstranit:

copy c:\users\ReplaceWith_YourUserName\.kube\config c:\users\ReplaceWith_YourUserName\.kube\config.old
del c:\users\ReplaceWith_YourUserName\.kube\config