Menyesuaikan rencana migrasi untuk layanan Windows IIS
Tinjau file rencana migrasi yang diisi saat pembuatan migrasi. Anda dapat menyesuaikannya sebelum melanjutkan untuk menjalankan migrasi. Detail rencana migrasi Anda digunakan untuk mengekstrak artefak penampung beban kerja dari VM sumber.
Bagian ini menjelaskan konten rencana migrasi dan jenis penyesuaian yang mungkin Anda pertimbangkan sebelum menjalankan migrasi, dan membuat artefak deployment.
Sebelum memulai
Dokumen ini mengasumsikan bahwa Anda telah membuat rencana migrasi dan memiliki file rencana migrasi yang dihasilkan.
Struktur paket migrasi
Berikut ini adalah struktur paket migrasi lengkap. Bagian berikutnya membahas struktur ini, menjelaskan setiap bagian tersebut, dan cara memodifikasinya.
globalSettings:
globalIis:
enablegmsa: string
apppools:
- enable32bitapponwin64: bool
identitytype: string
managedruntimeversion: string
name: string
connectionStrings:
add:
- connectionstring: string
name: string
providername: string
security:
authentication:
windowsAuthentication:
enabled: bool
providers:
- value: string
authorization:
add:
- access_type: string
roles: string
users: string
verbs: string
remove:
- roles: string
users: string
verbs: string
image:
extraFeatures:
- string
target:
baseVersion: string
requirements:
- string
warnings:
- string
msvcRuntimes:
- string
pathEnvVarAdditionalEntries:
- string
images:
- name: string
probes:
enabled: bool
livenessProbe:
probehandler:
exec:
command:
- string
- string
initialdelayseconds: int
timeoutseconds: int
periodseconds: int
successthreshold: int
failurethreshold: int
terminationgraceperiodseconds: optional[int]
readinessProbe:
probehandler:
exec:
command:
- string
- string
initialdelayseconds: int
timeoutseconds: int
periodseconds: int
successthreshold: int
failurethreshold: int
terminationgraceperiodseconds: optional[int]
useractions:
files:
- source: string
target: string
registry:
currentcontrolset:
- path: string
software:
- path: string
workloads:
sites:
site:
- applications:
- applicationpool: string
path: string
virtualdirectories:
- path: string
physicalpath: string
bindings:
- port: int
protocol: string
sslflags: int
connectionstrings:
- connectionstring: string
name: string
providername: string
name: string
security:
authentication:
windowsAuthentication:
enabled: bool
providers:
- value: string
authorization:
add:
- access_type: string
roles: string
users: string
verbs: string
remove:
- roles: string
users: string
verbs: string
serverautostart: bool
version: string
Bagian globalSettings
Bagian globalSettings
menjelaskan persyaratan dasar untuk pod yang menjalankan situs IIS dari VM ini. Proses penemuan menelusuri konfigurasi umum
di VM sumber, dan menggunakannya untuk mengisi bagian ini. Konfigurasi ini
berisi kolom yang ada dalam konfigurasi gambar tertentu seperti dijelaskan di
bagian berikut, dan memengaruhi semua gambar secara bersamaan.
Bagian image
Bagian image
setelah globalSettings
menjelaskan daftar
fitur Windows
yang akan diinstal di pod. Proses penemuan mengisi bagian ini dengan semua
fitur Windows yang ada di VM asli, dan dapat diinstal di
penampung Windows.
Bagian msvcRuntimes
Saat memigrasikan aplikasi, aplikasi mungkin memiliki dependensi pada versi atau versi tertentu Microsoft Visual C++ Runtime (MSVCRT). Migrate to Containers akan otomatis mendeteksi runtime yang diinstal di VM sumber dan menyertakannya dalam rencana migrasi.
Anda dapat mengubah daftar runtime dalam rencana migrasi dengan menambahkan atau
menghapus anggota msvcRuntimes
:
Daftar lengkap kemungkinan nilai adalah: (Runtime 2015 juga mencakup dukungan untuk 2017, 2019, dan 2022)
msvcRuntimes:
- MSVC2012_x64
- MSVC2013_x64
- MSVC2015_x64
- MSVC2012_x86
- MSVC2013_x86
- MSVC2015_x86
Bagian pathEnvVarAdditionalEntries
Aplikasi IIS Windows mungkin memiliki entri variabel lingkungan PATH
non-default, yang secara otomatis terdeteksi di VM sumber dan disertakan dalam
paket migrasi. Anda dapat mengubah variabel lingkungan PATH
dengan mengedit anggota pathEnvVarAdditionalEntries
:
pathEnvVarAdditionalEntries:
- "C:\\myDllsFolder"
- "C:\\ProgramData\\SomeSoftware"
Edit bagian gambar
Anda mungkin perlu mengedit bagian image
dalam kasus berikut:
Beberapa fitur yang disarankan tidak diperlukan oleh situs yang dimigrasikan. Hal ini terjadi jika VM sumber memiliki penggunaan selain menghosting situs IIS.
Anda mengubah bagian IIS pada rencana migrasi, dan menambahkan konfigurasi yang bergantung pada fitur Windows tambahan. (Misalnya, autentikasi Windows bergantung pada fitur autentikasi Window).
Bagian target
Bagian target
menentukan image Windows dasar yang Anda gunakan (misalnya
1909). Anda harus jarang mengedit kolom ini.
Bagian images
Setiap subitem dari bagian images
menentukan satu gambar output.
Dalam file zip artefak, setiap image tersebut memiliki subdirektori terpisah, dengan Dockerfile
dan deployment_spec.yaml
-nya sendiri (lihat Men-deploy image container).
Kolom name
Kolom name
mendeskripsikan nama gambar.
Atribut ini memengaruhi nama subdirektori gambar dan file deployment_spec.yaml
di artefak.
Kolom probes
Kolom probes
menjelaskan konfigurasi pemeriksaan kesehatan gambar. Untuk
mempelajari lebih lanjut pemeriksaan kubelet, lihat
Mengonfigurasi Pemeriksaan Keaktifan, Kesiapan, dan Startup.
Edit pemeriksaan kesehatan IIS
Pemeriksaan kesehatan dapat memantau periode nonaktif dan status siap penampung yang dikelola. Pemantauan pemeriksaan kesehatan dapat membantu mengurangi periode nonaktif penampung yang dimigrasikan dan memberikan pemantauan yang lebih baik.
Status kesehatan yang tidak diketahui dapat menyebabkan penurunan ketersediaan, pemantauan ketersediaan yang positif palsu (PP palsu), dan potensi hilangnya data. Tanpa pemeriksaan kesehatan, kubelet hanya dapat mengasumsikan kondisi container dan mungkin mengirim traffic ke instance container yang belum siap. Jika instance belum siap, ini dapat menyebabkan hilangnya traffic. Kubelet mungkin juga tidak mendeteksi container yang berada dalam status dibekukan dan tidak memulai ulang container tersebut.
Pemeriksaan kesehatan berfungsi dengan menjalankan pernyataan berskrip kecil saat
penampung dimulai. Skrip akan memeriksa kondisi yang berhasil, yang ditentukan oleh jenis pemeriksaan yang digunakan, setiap periode. Periode ditentukan dalam
rencana migrasi oleh kolom periodSeconds
. Anda dapat menentukan pemeriksaan ini secara
manual saat menyesuaikan rencana migrasi.
Ada tiga jenis probe yang tersedia untuk dikonfigurasi. Semua pemeriksaan adalah inti v1 yang ditentukan dalam referensi inti pemeriksaan v1 dan berbagi fungsi yang sama dengan kolom inti container v1 yang sesuai.
*Pemeriksaan kehidupan: Pemeriksaan keaktifan digunakan untuk mengetahui kapan harus memulai ulang penampung.
Pemeriksaan kesiapan: Pemeriksaan kesiapan digunakan untuk mengetahui kapan penampung siap untuk mulai menerima traffic. Untuk mulai mengirim traffic ke pod hanya ketika pemeriksaan berhasil, tentukan kesiapan. Pemeriksaan kesiapan mungkin bertindak serupa dengan pemeriksaan keaktifan. Namun, pemeriksaan kesiapan menunjukkan bahwa pod dimulai tanpa menerima traffic dan hanya mulai menerima traffic setelah pemeriksaan berhasil.
Probe startup: kubelet menggunakan pemeriksaan startup untuk mengetahui kapan aplikasi container telah dimulai. Jika pemeriksaan semacam itu dikonfigurasi, pemeriksaan akan menonaktifkan keaktifan dan kesiapan hingga berhasil, sehingga memastikan bahwa pemeriksaan tersebut tidak mengganggu startup aplikasi.
Setelah ditemukan, konfigurasi pemeriksaan ditambahkan ke paket migrasi. Probe
dapat digunakan dalam konfigurasi default seperti yang ditunjukkan pada contoh
berikut. Konfigurasi default menggunakan perintah exec
untuk pemeriksaan keaktifan dan
kesiapan. Keduanya menggunakan skrip PowerShell bernama probe.ps1
yang memanggil alat command line IIS appcmd untuk memeriksa status situs IIS.
Pemeriksaan dinonaktifkan secara default. Untuk mengaktifkan pemeriksaan, tetapkan flag enabled
ke true
.
images: name: IMAGE_NAME probes: enabled: false livenessProbe: probehandler: exec: command: - powershell.exe - C:\m4a\probe.ps1 initialdelayseconds: 0 timeoutseconds: 1 periodseconds: 10 successthreshold: 1 failurethreshold: 3 terminationgraceperiodseconds: null readinessProbe: probehandler: exec: command: - powershell.exe - C:\m4a\probe.ps1 initialdelayseconds: 0 timeoutseconds: 1 periodseconds: 10 successthreshold: 1 failurethreshold: 3 terminationgraceperiodseconds: null
Bagian windowsServices
Penampung Windows yang dibuat selama migrasi berjalan dan memantau satu layanan Windows IIS. Namun, beberapa workload mungkin memerlukan pengoperasian layanan tambahan (termasuk database, mekanisme logging, proxy, dan lainnya) agar dapat berfungsi dengan benar.
Untuk menjalankan layanan tambahan di penampung yang dimigrasikan, tambahkan entri ke
bagian windowsServices
, lalu salin biner yang diperlukan di
bagian useractions
.
version: v1
globalSettings:
target:
…
globalIIS:
…
images:
- name: migrated-image-zgwb2
workloads:
sites:
site:
- applications:
...
bindings:
- port: 80
protocol: http
name: Default Web Site
…
windowsServices:
- MyService
useractions:
files:
- source: C:\Program Files\MyService
target: C:\Program Files\MyService
registry:
currentcontrolset:
- key: services\MyService
Bagian useractions
Bagian useractions
menentukan file dan kunci registry tambahan yang
mungkin ingin Anda migrasikan.
Contoh:
useractions: files: - source: DRIVE:\FOLDER-OR-FILE-PATH target: DRIVE:\FOLDER-OR-FILE-PATH - source: C:\myfolder target: C:\myfolder - source: D:\myfile target: D:\myfile - source: D:\myfile target: C:\myfile ... registry: currentcontrolset: - path: KEY ... software: - path: KEY ...
Jalur yang ditentukan untuk currentcontrolset
dan software
adalah untuk kunci di
hive registry HKEY_LOCAL_MACHINE\System\CurrentControlSet
atau di hive registry HKEY_LOCAL_MACHINE\Software
.
Edit bagian useractions
Secara default, satu-satunya file yang disalin ke image adalah direktori virtual situs pada image yang ditentukan.
Jika kode atau konfigurasi mengimpor file dari luar direktori ini, Anda harus menambahkannya ke bagian useractions
.
Selain itu, setiap nilai registry yang menjadi dependensi kode Anda harus ditambahkan dengan mengedit bagian useractions
registry
.
Setelan yang secara khusus terkait dengan IIS
Setelan terkait IIS dibagi ke dalam setelan yang terkait dengan situs tertentu,
yang merupakan bagian dari spesifikasi gambar, dan setelan yang terkait dengan semua situs,
yang mengikuti bagian gloabalIis
.
Bagian sites
Bagian situs menjelaskan situs yang dimigrasikan ke gambar tertentu. Beberapa gambar mungkin berisi situs yang sama.
Jika ingin menggunakan Cloud Load Balancing, Ingress, atau Anthos Service Mesh untuk menangani konfigurasi SSL, Anda harus menetapkan protocol
ke http
:
sites: site: - applications: - path: / virtualdirectories: - path: / physicalpath: '%SystemDrive%\inetpub\wwwroot' bindings: - port: 8080 protocol: http name: Default Web Site
Bagian apppools
Bagian apppools
menjelaskan Kumpulan Aplikasi yang dibuat di pod yang dimigrasikan.
Kolom identitytype
menentukan identitas IIS kumpulan aplikasi sebagai
ApplicationPoolIdentity
(default), NetworkService
, LocalSystem
, atau
LocalService
.
Untuk informasi selengkapnya, lihat Memahami identitas di IIS dan Identitas Kumpulan Aplikasi.
Berikut adalah contoh rencana migrasi yang berisi identitytype
:
migrationPlan: applications: iis: applicationhost: apppools: - name: DefaultAppPool # Allowed values include: ApplicationPoolIdentity (default), NetworkService, LocalSystem, LocalService identitytype="NetworkService" - managedruntimeversion: v4.0 name: .NET v4.5 Classic - managedruntimeversion: v4.0 name: .NET v4.5
Saat Anda menjalankan rencana migrasi untuk membuat artefak container, Migrate to Containers secara otomatis menambahkan perintah Dockerfile yang diperlukan sesuai dengan setelan kolom identitytype
.
Misalnya, jika Anda menetapkan identitytype
ke NetworkService
, perintahnya akan berbentuk:
RUN c:\windows\system32\inetsrv\appcmd.exe set apppool \"DefaultAppPool\" \"/-processModel.identityType:NetworkService\";
Migrate to Containers secara otomatis menambahkan perintah ACL baca ke folder situs sesuai dengan identitytype
target, dan untuk pengguna bawaan IUSR.
Hal ini otomatis dilakukan untuk item sistem file aplikasi tempat akun aplikasi
aslinya ditentukan dengan pewarisan atau secara eksplisit.
Untuk informasi lebih lanjut, lihat Menetapkan ACL.
Kolom enablegmsa
Kolom enablegmsa
adalah sugar sintaksis dalam rencana migrasi. Ini adalah
pintasan untuk menimpa kolom identitas dari kumpulan aplikasi.
Nilai yang didukung untuk kolom enablegmsa
adalah:
auto
(default): Mengonversi penampung yang dimigrasikan untuk menggunakan gMSA jika Migrate to Containers menentukan bahwa konfigurasinya saat ini tidak diizinkan.all
: Selalu konversi penampung yang dimigrasikan untuk menggunakan gMSA dan abaikan setelanidentitytype
. Dalam hal ini,identitytype
selalu diinterpretasikan sebagai ditetapkan keNetworkService
.
Berikut adalah contoh rencana migrasi yang berisi enablegmsa
:
migrationPlan: applications: iis: # Allowed values include: auto (default), all enablegmsa: auto|all
Untuk mempelajari lebih lanjut, lihat Mengonfigurasi aplikasi untuk menggunakan gMSA.
String koneksi
String koneksi menentukan koneksi dari beban kerja container yang dimigrasikan ke penyedia data .NET Framework.
Migrate to Containers mendukung string koneksi di situs dan cakupan global.
Untuk menambahkan string koneksi ke situs, edit definisi site
dalam
paket migrasi untuk menetapkan properti connectionstrings
:
sites: site: # Add the site connection strings here. connectionstrings: - name: connectionname1 providername: System.Data.SqlClient connectionstring: Database=connectedDB1;Password=Welcome1;User=admin; - name: connectionname2 providername: System.Data.OleDb connectionstring: Database=connectedDB2;Password=Welcome2;User=admin; - applications: - path: / virtualdirectories: ...
Untuk menambahkan string koneksi ke cakupan global (sehingga dapat diakses oleh semua
situs), edit string koneksi langsung mengikuti globalIis
:
globalIis: enablegmsa: auto connectionStrings: connectionstring: - name: connectionname3 providername: System.Data.SqlClient connectionstring: Database=connectedDB3;Password=Welcome3;User=admin; applicationhost: ...
Dengan keterangan:
name
menentukan nama koneksi.providername
secara opsional menentukan jenis penyedia data. Migrate to Containers hanya mendukung nilaiSystem.Data.SqlClient
. mendukung penyedia data .NET Framework:System.Data.SqlClient
System.Data.OleDb
System.Data.Odbc
System.Data.OracleClient
connectionstring
menentukan String Koneksi yang digunakan untuk terhubung ke penyedia data.
Mengedit bagian string koneksi
Migrate to Containers secara otomatis menyalin string koneksi yang terdeteksi pada VM yang dimigrasikan ke rencana migrasi.
Beberapa string koneksi mungkin tidak terdeteksi dan harus ditambahkan dengan mengedit
paket migrasi seperti yang ditunjukkan sebelumnya. (Misalnya, jika string koneksi berada di bagian terenkripsi dari file applicationhost.config
).
Untuk panduan dalam menentukan string koneksi mana yang akan ditambahkan ke paket migrasi, baca artikel Mengambil String Koneksi pada Waktu Proses dalam dokumentasi Microsoft.
Dependensi eksternal string koneksi
- String koneksi dapat berisi dependensi, seperti referensi ke file di atau ke pengguna Windows yang terkait dengan situs tersebut. Anda dapat menambahkan tindakan pengguna kustom ke rencana migrasi untuk menyalin file tambahan dalam sistem file. Edit Dockerfile secara manual untuk menambahkan pengguna Windows.
- String koneksi dapat berisi dependensi, seperti referensi ke sumber data eksternal. Dependensi ini harus dimigrasikan secara manual untuk memastikan bahwa beban kerja penampung yang dimigrasikan memiliki akses ke sumber data.
Bagian security
Bagian {i>security<i} berisi subbagian otentikasi dan otorisasi.
- Autentikasi Windows memverifikasi pengguna Active Directory.
- Otorisasi Windows adalah mekanisme untuk menentukan pengguna yang diizinkan untuk jenis akses tertentu ke situs IIS. Jenis aksesnya adalah kata kerja HTTP (POST, GET, PUT, PATCH, DELETE).
Serupa dengan string koneksi, untuk menetapkan otorisasi atau autentikasi bagi semua
situs, edit globalIis
seperti pada contoh berikut. Untuk menetapkan otorisasi atau
autentikasi untuk situs tertentu, edit elemen situs.
globalIis: security: authentication: windowsAuthentication: providers: - NTLM authorization: - add: user:John access: role: - remove: user:Jane access: GET role: ...
Dengan keterangan:
providers
menentukan penyedia protokol keamanan Anda.user
spesies nama pengguna.access
menentukan izin pengguna. Jenis akses adalah kata kerja HTTP (POST, GET, PUT, PATCH, DELETE).role
spesies dengan peran izin khusus.
Langkah selanjutnya
- Pelajari cara menjalankan migrasi.