Bagikan melalui


Mengembangkan aplikasi Kubernetes untuk Azure SQL Database

Berlaku untuk: Azure SQL Database

Dalam tutorial ini, pelajari cara mengembangkan aplikasi modern menggunakan Python, Docker Containers, Kubernetes, dan Azure SQL Database.

Pengembangan aplikasi modern memiliki beberapa tantangan. Dari memilih "tumpukan" front-end melalui penyimpanan data dan pemrosesan dari beberapa standar bersaing, melalui memastikan tingkat keamanan dan performa tertinggi, pengembang diharuskan untuk memastikan skala aplikasi dan berkinerja baik dan dapat didukung di beberapa platform. Untuk persyaratan terakhir itu, menggabungkan aplikasi ke dalam teknologi Kontainer seperti Docker dan menyebarkan beberapa Kontainer ke platform Kubernetes sekarang de rigueur dalam pengembangan aplikasi.

Dalam contoh ini, kita menjelajahi menggunakan Python, Docker Containers, dan Kubernetes - semua berjalan di platform Microsoft Azure. Menggunakan Kubernetes berarti Anda juga memiliki fleksibilitas menggunakan lingkungan lokal atau bahkan cloud lain untuk penyebaran aplikasi yang mulus dan konsisten, dan memungkinkan penyebaran multicloud untuk ketahanan yang lebih tinggi. Kami juga akan menggunakan Microsoft Azure SQL Database untuk lingkungan berbasis layanan, dapat diskalakan, sangat tangguh, dan aman untuk penyimpanan dan pemrosesan data. Bahkan, dalam banyak kasus, aplikasi lain sering menggunakan Microsoft Azure SQL Database sudah, dan aplikasi sampel ini dapat digunakan untuk lebih lanjut menggunakan dan memperkaya data tersebut.

Contoh ini cukup komprehensif dalam cakupan, tetapi menggunakan aplikasi, database, dan penyebaran paling sederhana untuk mengilustrasikan prosesnya. Anda dapat menyesuaikan sampel ini menjadi jauh lebih kuat, bahkan termasuk menggunakan teknologi terbaru untuk data yang dikembalikan. Ini adalah alat pembelajaran yang berguna untuk membuat pola untuk aplikasi lain.

Gunakan Python, Kontainer Docker, Kubernetes, dan database sampel AdventureWorksLT dalam contoh praktis

Perusahaan AdventureWorks (fiktif) menggunakan database yang menyimpan data tentang Penjualan dan Pemasaran, Produk, Pelanggan, dan Manufaktur. Ini juga berisi tampilan dan prosedur tersimpan yang menggabungkan informasi tentang produk, seperti nama produk, kategori, harga, dan deskripsi singkat.

Tim Pengembangan AdventureWorks ingin membuat proof-of-concept (PoC) yang mengembalikan data dari tampilan dalam AdventureWorksLT database, dan membuatnya tersedia sebagai REST API. Dengan menggunakan PoC ini, tim Pengembangan akan membuat aplikasi yang lebih dapat diskalakan dan siap multicloud untuk tim Penjualan. Mereka telah memilih platform Microsoft Azure untuk semua aspek penyebaran. PoC menggunakan elemen berikut:

  • Aplikasi Python menggunakan paket Flask untuk penyebaran web headless.
  • Kontainer Docker untuk isolasi kode dan lingkungan, disimpan dalam registri privat sehingga seluruh perusahaan dapat menggunakan kembali Kontainer aplikasi dalam proyek mendatang, menghemat waktu dan uang.
  • Kubernetes untuk kemudahan penyebaran dan skala, dan untuk menghindari penguncian platform.
  • Microsoft Azure SQL Database untuk pemilihan ukuran, performa, skala, automanagement, dan pencadangan, selain penyimpanan dan pemrosesan data relasional pada tingkat keamanan tertinggi.

Dalam artikel ini, kami menjelaskan proses untuk membuat seluruh proyek bukti konsep. Langkah-langkah umum untuk membuat aplikasi adalah:

  1. Menyiapkan prasyarat
  2. Membuat aplikasi
  3. Membuat Kontainer Docker untuk menyebarkan aplikasi dan menguji
  4. Membuat Registri Azure Container Service (ACS) dan memuat Kontainer ke Registri ACS
  5. Membuat lingkungan Azure Kubernetes Service (AKS)
  6. Menyebarkan kontainer aplikasi dari Registri ACS ke AKS
  7. Menguji aplikasi
  8. Penghapusan

Prasyarat

Di seluruh artikel ini, ada beberapa nilai yang harus Anda ganti. Pastikan Anda secara konsisten mengganti nilai-nilai ini untuk setiap langkah. Anda mungkin ingin membuka editor teks dan meletakkan nilai-nilai ini untuk mengatur nilai yang benar saat Anda bekerja melalui proyek bukti konsep:

  • ReplaceWith_AzureSubscriptionName: Ganti nilai ini dengan nama langganan Azure yang Anda miliki.
  • ReplaceWith_PoCResourceGroupName: Ganti nilai ini dengan nama grup sumber daya yang ingin Anda buat.
  • ReplaceWith_AzureSQLDBServerName: Ganti nilai ini dengan nama server logis Azure SQL Database yang Anda buat menggunakan portal Azure.
  • ReplaceWith_AzureSQLDBSQLServerLoginName: Ganti nilai ini dengan nilai nama pengguna SQL Server yang Anda buat di portal Azure.
  • ReplaceWith_AzureSQLDBSQLServerLoginPassword: Ganti nilai ini dengan nilai kata sandi pengguna SQL Server yang Anda buat di portal Azure.
  • ReplaceWith_AzureSQLDBDatabaseName: Ganti nilai ini dengan nama Azure SQL Database yang Anda buat menggunakan portal Azure.
  • ReplaceWith_AzureContainerRegistryName: Ganti nilai ini dengan nama Azure Container Registry yang ingin Anda buat.
  • ReplaceWith_AzureKubernetesServiceName: Ganti nilai ini dengan nama Azure Kubernetes Service yang ingin Anda buat.

Pengembang di AdventureWorks menggunakan campuran sistem Windows, Linux, dan Apple untuk pengembangan, sehingga mereka menggunakan Visual Studio Code sebagai lingkungan dan git mereka untuk kontrol sumber, yang keduanya menjalankan lintas platform.

Untuk PoC, tim memerlukan prasyarat berikut:

  1. Python, pip, dan paket - Tim pengembangan memilih bahasa pemrograman Python sebagai standar untuk aplikasi berbasis web ini. Saat ini mereka menggunakan versi 3.9, tetapi versi apa pun yang mendukung paket poc yang diperlukan dapat diterima.

  2. Tim menggunakan pyodbc paket untuk akses database.

  3. Tim menggunakan ConfigParser paket untuk mengontrol dan mengatur variabel konfigurasi.

  4. Tim menggunakan paket Flask untuk antarmuka web untuk aplikasi.

  5. Selanjutnya, tim menginstal alat Azure CLI, dengan mudah diidentifikasi dengan az sintaks. Alat lintas platform ini memungkinkan pendekatan baris perintah dan skrip ke PoC, sehingga mereka dapat mengulangi langkah-langkah saat mereka membuat perubahan dan peningkatan.

  6. Dengan menyiapkan Azure CLI, tim masuk ke langganan Azure mereka, dan mengatur nama langganan yang mereka gunakan untuk PoC. Mereka kemudian memastikan server dan database Azure SQL Database dapat diakses oleh langganan:

    az login
    az account set --name "ReplaceWith_AzureSubscriptionName"
    az sql server list
    az sql db list ReplaceWith_AzureSQLDBDatabaseName 
    
  7. Grup Sumber Daya Microsoft Azure adalah kontainer logis yang menyimpan sumber daya terkait untuk solusi Azure. Umumnya, sumber daya yang memiliki siklus hidup yang sama ditambahkan ke grup sumber daya yang sama sehingga Anda dapat dengan mudah menyebarkan, memperbarui, dan menghapusnya sebagai grup. Grup sumber daya menyimpan metadata tentang sumber daya, dan Anda dapat menentukan lokasi untuk grup sumber daya.

    Grup sumber daya dapat dibuat dan dikelola menggunakan portal Azure atau Azure CLI. Mereka juga dapat digunakan untuk mengelompokkan sumber daya terkait untuk aplikasi dan membaginya menjadi grup untuk produksi dan nonproduksi, atau struktur organisasi lain yang Anda sukai.

    Cuplikan layar dari portal Azure memperlihatkan cara mencari dan memfilter grup Sumber Daya Azure.

    Dalam cuplikan kode berikut, Anda dapat melihat perintah yang az digunakan untuk membuat grup sumber daya. Dalam sampel kami, kami menggunakan wilayah eastus Azure.

    az group create --name ReplaceWith_PoCResourceGroupName --location eastus
    
  8. Tim Pengembangan membuat Azure SQL Database dengan AdventureWorksLT database sampel yang diinstal, menggunakan login terautentikasi SQL.

    AdventureWorks telah menstandarkan pada platform Sistem Manajemen Database Hubungan Microsoft SQL Server, dan tim Pengembangan ingin menggunakan layanan terkelola untuk database daripada menginstal secara lokal. Menggunakan Azure SQL Database memungkinkan layanan terkelola ini sepenuhnya kompatibel dengan kode di mana pun mereka menjalankan mesin SQL Server: lokal, dalam Kontainer, di Linux atau Windows, atau bahkan di lingkungan Internet of Things (IoT).

    1. Selama pembuatan, mereka menggunakan Portal Manajemen Azure untuk mengatur Firewall untuk aplikasi ke komputer pengembangan lokal, dan mengubah default yang Anda lihat di sini untuk mengaktifkan Izinkan semua Layanan Azure, dan juga mengambil kredensial koneksi.

      Cuplikan layar dari portal Azure memperlihatkan halaman Buat SQL Database. Pada tab Jaringan, untuk metode Konektivitas, opsi Titik akhir publik dipilih. Opsi Tambahkan Alamat IP klien saat ini adalah Ya.

      Dengan pendekatan ini, database dapat diakses di wilayah lain atau bahkan langganan yang berbeda.

    2. Tim menyiapkan login terautentikasi SQL untuk pengujian, tetapi akan mengunjungi kembali keputusan ini dalam tinjauan keamanan.

    3. Tim menggunakan database sampel AdventureWorksLT untuk PoC menggunakan grup sumber daya PoC yang sama. Jangan khawatir, di akhir tutorial ini, kita akan membersihkan semua sumber daya dalam grup sumber daya PoC baru ini.

    4. Anda dapat menggunakan portal Azure untuk menyebarkan Azure SQL Database. Saat membuat Azure SQL Database, di tab Pengaturan tambahan, untuk opsi Gunakan data yang sudah ada, pilih Sampel.

      Cuplikan layar dari portal Azure memperlihatkan halaman Buat SQL Database. Di tab Pengaturan tambahan, untuk opsi Gunakan data yang sudah ada, pilih Sampel.

    5. Terakhir, pada tab Tag dari Azure SQL Database baru, tim Pengembangan menyediakan metadata tag untuk sumber daya Azure ini, seperti Pemilik atau ServiceClass atau WorkloadName.

Buat aplikasi

Selanjutnya, tim Pengembangan membuat aplikasi Python sederhana yang membuka koneksi ke Azure SQL Database, dan mengembalikan daftar produk. Kode ini akan diganti dengan fungsi yang lebih kompleks, dan mungkin juga mencakup lebih dari satu aplikasi yang disebarkan ke dalam Pod Kubernetes dalam produksi untuk pendekatan yang kuat dan digerakkan oleh manifes untuk solusi aplikasi.

  1. Tim membuat file teks sederhana yang dipanggil .env untuk menyimpan variabel untuk koneksi server dan informasi lainnya. python-dotenv Menggunakan pustaka, mereka kemudian dapat memisahkan variabel dari Kode Python. Ini adalah pendekatan umum untuk menyimpan rahasia dan informasi lain dari kode itu sendiri.

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

    Perhatian

    Untuk kejelasan dan kesederhanaan, aplikasi ini menggunakan file konfigurasi yang dibaca dari Python. Karena kode akan disebarkan dengan kontainer, informasi koneksi mungkin dapat berasal dari konten. Anda harus mempertimbangkan dengan cermat berbagai metode bekerja dengan keamanan, koneksi, dan rahasia dan menentukan tingkat dan mekanisme terbaik yang harus Anda gunakan untuk aplikasi kami. Selalu pilih tingkat keamanan tertinggi, dan bahkan beberapa tingkat untuk memastikan aplikasi Anda aman. Anda memiliki beberapa opsi untuk bekerja dengan informasi rahasia seperti string koneksi dan sesukanya, dan daftar berikut ini memperlihatkan beberapa opsi tersebut.

    Untuk informasi selengkapnya, lihat Keamanan Azure SQL Database.

  2. Tim selanjutnya menulis aplikasi PoC dan menyebutnya app.py.

    Skrip berikut menyelesaikan langkah-langkah berikut:

    1. Siapkan pustaka untuk konfigurasi dan antarmuka web dasar.
    2. Muat variabel dari .env file.
    3. Buat Aplikasi Flask-RESTful.
    4. Masuk ke informasi koneksi Azure SQL Database menggunakan config.ini nilai file.
    5. Buat koneksi ke Azure SQL Database menggunakan config.ini nilai file.
    6. Sambungkan ke Azure SQL Database menggunakan pyodbc paket.
    7. Buat kueri SQL untuk dijalankan terhadap database.
    8. Buat kelas yang akan digunakan untuk mengembalikan data dari API.
    9. Atur titik akhir API ke Products kelas .
    10. Terakhir, mulai aplikasi pada port Flask default 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. Mereka memeriksa bahwa aplikasi ini berjalan secara lokal, dan mengembalikan halaman ke http://localhost:5000/products.

    Cuplikan layar dari browser web halaman pengembalian Flask.

    Penting

    Saat membangun aplikasi produksi, jangan gunakan akun administrator untuk mengakses database. Untuk informasi selengkapnya, baca selengkapnya tentang cara menyiapkan akun untuk aplikasi Anda. Kode dalam artikel ini disederhanakan sehingga Anda dapat dengan cepat memulai aplikasi menggunakan Python dan Kubernetes di Azure.

    Lebih realistis, Anda dapat menggunakan pengguna database mandiri dengan izin baca-saja, atau pengguna database masuk atau mandiri yang tersambung ke identitas terkelola yang ditetapkan pengguna dengan izin baca-saja.

    Untuk informasi selengkapnya, tinjau contoh lengkap tentang cara membuat API dengan Python dan Azure SQL Database.

Menyebarkan aplikasi ke kontainer Docker

Kontainer adalah ruang yang dicadangkan dan dilindungi dalam sistem komputasi yang menyediakan isolasi dan enkapsulasi. Untuk membuat kontainer, gunakan file Manifes, yang hanya berupa file teks yang menjelaskan biner dan kode yang ingin Anda isi. Menggunakan Container Runtime (seperti Docker), Anda kemudian dapat membuat gambar biner yang memiliki semua file yang ingin Anda jalankan dan referensikan. Dari sana, Anda dapat "menjalankan" gambar biner, dan yang disebut Kontainer, yang dapat Anda referensikan seolah-olah itu adalah sistem komputasi penuh. Ini adalah cara yang lebih kecil dan lebih sederhana untuk mengabstraksi runtime dan lingkungan aplikasi Anda daripada menggunakan komputer virtual penuh. Untuk informasi selengkapnya, lihat Kontainer dan Docker.

Tim dimulai dengan DockerFile (Manifes) yang melapisi elemen apa yang ingin digunakan tim. Mereka dimulai dengan gambar Python dasar yang sudah menginstal pyodbc pustaka, dan kemudian menjalankan semua perintah yang diperlukan untuk berisi program dan file konfigurasi di langkah sebelumnya.

Dockerfile berikut ini memiliki langkah-langkah berikut:

  1. Mulailah dengan biner Kontainer yang sudah memiliki Python dan pyodbc terinstal.
  2. Buat direktori Kerja untuk aplikasi.
  3. Salin semua kode dari direktori saat ini ke WORKDIRdalam .
  4. Instal pustaka yang diperlukan.
  5. Setelah kontainer dimulai, jalankan aplikasi, dan buka semua port 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"]

Dengan file tersebut di tempat, tim turun ke perintah-prompt di direktori pengkodean dan menjalankan kode berikut untuk membuat Gambar biner dari Manifes, dan kemudian perintah lain untuk memulai Kontainer:

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

Sekali lagi, tim menguji http://localhost:5000/products tautan untuk memastikan Kontainer dapat mengakses database, dan mereka melihat pengembalian berikut:

Cuplikan layar dari browser web halaman pengembalian Flask dari Kontainer.

Menyebarkan gambar ke registri Docker

Kontainer sekarang berfungsi, tetapi hanya tersedia di komputer pengembang. Tim Pengembangan ingin membuat Image aplikasi ini tersedia untuk seluruh perusahaan, dan kemudian ke Kubernetes untuk penyebaran produksi.

Area penyimpanan untuk Gambar Kontainer disebut repositori, dan mungkin ada repositori publik dan privat untuk Gambar Kontainer. Bahkan, AdvenureWorks menggunakan Gambar publik untuk lingkungan Python di Dockerfile mereka.

Tim ingin mengontrol akses ke Gambar, dan daripada meletakkannya di web, mereka memutuskan ingin menghostingnya sendiri, tetapi di Microsoft Azure di mana mereka memiliki kontrol penuh atas keamanan dan akses. Anda dapat membaca selengkapnya tentang Microsoft Azure Container Registry di sini.

Kembali ke baris perintah, tim Pengembangan menggunakan untuk menambahkan layanan registri az CLI Kontainer, mengaktifkan akun administrasi, mengaturnya ke "tarik" anonim selama fase pengujian, dan mengatur konteks masuk ke registri:

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

Konteks ini akan digunakan dalam langkah-langkah berikutnya.

Tandai gambar Docker lokal untuk menyiapkannya untuk diunggah

Langkah selanjutnya adalah mengirim Aplikasi lokal Container Image ke layanan Azure Container Registry (ACR) sehingga tersedia di cloud.

  1. Dalam contoh skrip berikut, tim menggunakan perintah Docker untuk mencantumkan Gambar di komputer.
  2. Mereka menggunakan az CLI utilitas untuk mencantumkan Gambar dalam layanan ACR.
  3. Mereka menggunakan perintah Docker untuk "menandai" gambar dengan nama tujuan ACR yang mereka buat di langkah sebelumnya, dan untuk mengatur nomor versi untuk DevOps yang tepat.
  4. Terakhir, mereka mencantumkan informasi Gambar lokal lagi untuk memastikan tag diterapkan dengan benar.
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

Dengan kode yang ditulis dan diuji, Dockerfile, gambar dan kontainer berjalan dan diuji, layanan ACR disiapkan, dan semua tag diterapkan, tim dapat mengunggah gambar ke layanan ACR.

Mereka menggunakan perintah "dorong" Docker untuk mengirim file, lalu az CLI utilitas untuk memastikan gambar dimuat:

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

Sebarkan ke Kubernetes

Tim hanya dapat menjalankan kontainer dan menyebarkan aplikasi ke lingkungan lokal dan di cloud. Namun, mereka ingin menambahkan beberapa salinan aplikasi untuk skala dan ketersediaan, menambahkan kontainer lain yang melakukan tugas yang berbeda, dan menambahkan pemantauan dan instrumentasi ke seluruh solusi.

Untuk mengelompokkan kontainer menjadi solusi lengkap, tim memutuskan untuk menggunakan Kubernetes. Kubernetes berjalan secara lokal dan di semua platform cloud utama. Microsoft Azure memiliki lingkungan terkelola lengkap untuk Kubernetes, yang disebut Azure Kubernetes Service (AKS). Pelajari selengkapnya tentang AKS dengan Pengantar Kubernetes di jalur pelatihan Azure.

az CLI Dengan menggunakan utilitas, tim menambahkan AKS ke grup sumber daya yang sama dengan yang mereka buat sebelumnya. Dengan satu az perintah, tim Pengembangan menyelesaikan langkah-langkah berikut:

  • Tambahkan dua "simpul" atau lingkungan komputasi untuk ketahanan dalam fase pengujian
  • Secara otomatis menghasilkan Kunci SSH untuk akses ke lingkungan
  • Lampirkan layanan ACR yang mereka buat di langkah-langkah sebelumnya sehingga kluster AKS dapat menemukan gambar yang ingin mereka gunakan untuk penyebaran
az aks create --resource-group ReplaceWith_PoCResourceGroupName --name ReplaceWith_AzureKubernetesServiceName --node-count 2 --generate-ssh-keys --attach-acr ReplaceWith_AzureContainerRegistryName

Kubernetes menggunakan alat baris perintah untuk mengakses dan mengontrol kluster, yang disebut kubectl. Tim menggunakan az CLI utilitas untuk mengunduh kubectl alat dan menginstalnya:

az aks install-cli

Karena mereka memiliki koneksi ke AKS saat ini, mereka dapat memintanya untuk mengirim kunci SSH agar koneksi digunakan ketika mereka menjalankan kubectl utilitas:

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

Kunci ini disimpan dalam file yang disebut .config di direktori pengguna. Dengan kumpulan konteks keamanan tersebut, tim menggunakan kubectl get nodes untuk menampilkan simpul di kluster:

kubectl get nodes

Sekarang tim menggunakan alat untuk az CLI mencantumkan Gambar dalam layanan ACR:

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

Sekarang mereka dapat membangun manifes yang digunakan Kubernetes untuk mengontrol penyebaran. Ini adalah file teks yang disimpan dalam format yaml . Berikut adalah teks anotasi dalam flask2sql.yaml file:

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) TCIP/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

Dengan file yang flask2sql.yaml ditentukan, tim dapat menyebarkan aplikasi ke kluster AKS yang sedang berjalan. Itu dilakukan dengan kubectl apply perintah , yang seingat Anda masih memiliki konteks keamanan ke kluster. Kemudian, kubectl get service perintah dikirim untuk menonton kluster saat sedang dibangun.

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

Setelah beberapa saat, perintah "watch" akan mengembalikan alamat IP eksternal. Pada saat itu tim menekan CTRL-C untuk memutus perintah pengawasan, dan merekam alamat IP eksternal load balancer.

Uji aplikasi

Menggunakan Alamat IP (Titik Akhir) yang mereka peroleh di langkah terakhir, tim memeriksa untuk memastikan output yang sama dengan aplikasi lokal dan Kontainer Docker:

Cuplikan layar dari browser web halaman pengembalian Flask saat akhirnya menguji kontainer. Outputnya sama seperti sebelumnya.

Penghapusan

Dengan aplikasi yang dibuat, diedit, didokumenkan, dan diuji, tim sekarang dapat "meruntuhkan" aplikasi. Dengan menyimpan semuanya dalam satu grup sumber daya di Microsoft Azure, ini adalah masalah sederhana untuk menghapus grup sumber daya PoC menggunakan az CLI utilitas:

az group delete -n ReplaceWith_PoCResourceGroupName -y

Catatan

Jika Anda membuat Azure SQL Database di grup sumber daya lain dan tidak lagi memerlukannya, Anda dapat menggunakan portal Azure untuk menghapusnya.

Anggota tim yang memimpin proyek PoC menggunakan Microsoft Windows sebagai stasiun kerja mereka, dan ingin mempertahankan file rahasia dari Kubernetes tetapi menghapusnya dari sistem sebagai lokasi aktif. Mereka cukup menyalin file ke config.old file teks, lalu menghapusnya:

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