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:
- Menyiapkan prasyarat
- Membuat aplikasi
- Membuat Kontainer Docker untuk menyebarkan aplikasi dan menguji
- Membuat Registri Azure Container Service (ACS) dan memuat Kontainer ke Registri ACS
- Membuat lingkungan Azure Kubernetes Service (AKS)
- Menyebarkan kontainer aplikasi dari Registri ACS ke AKS
- Menguji aplikasi
- 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:
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.
- Anda dapat mengunduh Python versi 3.9 dari python.org.
Tim menggunakan
pyodbc
paket untuk akses database.- Anda dapat menginstal paket pyodbc dengan perintah pip.
- Anda mungkin juga memerlukan perangkat lunak Driver Microsoft ODBC jika Anda belum menginstalnya.
Tim menggunakan
ConfigParser
paket untuk mengontrol dan mengatur variabel konfigurasi.- Anda dapat menginstal paket configparser dengan perintah pip.
Tim menggunakan paket Flask untuk antarmuka web untuk aplikasi.
- Anda dapat menginstal versi Python dari pustaka Flask.
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.- Anda dapat mengunduh dan menginstal alat Azure CLI.
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
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.
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
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).
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.
Dengan pendekatan ini, database dapat diakses di wilayah lain atau bahkan langganan yang berbeda.
Tim menyiapkan login terautentikasi SQL untuk pengujian, tetapi akan mengunjungi kembali keputusan ini dalam tinjauan keamanan.
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.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.
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.
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.
- Metode lain untuk bekerja dengan rahasia di Python adalah dengan menggunakan pustaka python-secrets.
- Tinjau keamanan dan rahasia Docker.
- Tinjau rahasia Kubernetes.
- Anda juga dapat mempelajari selengkapnya tentang autentikasi Microsoft Entra (sebelumnya Azure Active Directory).
Tim selanjutnya menulis aplikasi PoC dan menyebutnya
app.py
.Skrip berikut menyelesaikan langkah-langkah berikut:
- Siapkan pustaka untuk konfigurasi dan antarmuka web dasar.
- Muat variabel dari
.env
file. - Buat Aplikasi Flask-RESTful.
- Masuk ke informasi koneksi Azure SQL Database menggunakan
config.ini
nilai file. - Buat koneksi ke Azure SQL Database menggunakan
config.ini
nilai file. - Sambungkan ke Azure SQL Database menggunakan
pyodbc
paket. - Buat kueri SQL untuk dijalankan terhadap database.
- Buat kelas yang akan digunakan untuk mengembalikan data dari API.
- Atur titik akhir API ke
Products
kelas . - 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)
Mereka memeriksa bahwa aplikasi ini berjalan secara lokal, dan mengembalikan halaman ke
http://localhost:5000/products
.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:
- Mulailah dengan biner Kontainer yang sudah memiliki Python dan
pyodbc
terinstal. - Buat direktori Kerja untuk aplikasi.
- Salin semua kode dari direktori saat ini ke
WORKDIR
dalam . - Instal pustaka yang diperlukan.
- 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:
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.
- Dalam contoh skrip berikut, tim menggunakan perintah Docker untuk mencantumkan Gambar di komputer.
- Mereka menggunakan
az CLI
utilitas untuk mencantumkan Gambar dalam layanan ACR. - 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.
- 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:
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
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk