Menyesuaikan rencana migrasi untuk layanan Windows IIS
Tinjau file rencana migrasi yang diisi selama pembuatan migrasi. Anda dapat menyesuaikannya sebelum melanjutkan untuk menjalankan migrasi. Detail rencana migrasi Anda digunakan untuk mengekstrak artefak penampung workload dari VM sumber.
Bagian ini menjelaskan konten rencana migrasi dan jenis penyesuaian yang dapat 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 rencana migrasi
Berikut adalah struktur rencana migrasi lengkap. Bagian berikutnya membahas struktur ini, menjelaskan setiap bagian, dan cara mengubahnya.
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 image tertentu seperti yang dijelaskan di
bagian berikut, dan memengaruhi semua image 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 tersebut mungkin memiliki dependensi pada versi tertentu atau versi Microsoft Visual C++ Runtime (MSVCRT). Migrate to Containers 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 nilai yang memungkinkan 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 otomatis terdeteksi di VM sumber dan disertakan dalam rencana migrasi. Anda dapat mengubah variabel lingkungan PATH
dengan mengedit
anggota pathEnvVarAdditionalEntries
:
pathEnvVarAdditionalEntries:
- "C:\\myDllsFolder"
- "C:\\ProgramData\\SomeSoftware"
Mengedit bagian gambar
Anda mungkin ingin 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 telah mengubah bagian IIS dalam rencana migrasi, dan menambahkan konfigurasi yang bergantung pada fitur Windows tambahan. (Misalnya, autentikasi Windows bergantung pada fitur autentikasi Windows).
Bagian target
Bagian target
menentukan image Windows dasar yang Anda gunakan (misalnya,
1909). Anda jarang perlu mengedit kolom ini.
Bagian images
Setiap subitem bagian images
menentukan satu gambar output.
Dalam zip artefak, setiap image tersebut memiliki subdirektori terpisah, dengan Dockerfile
dan deployment_spec.yaml
-nya sendiri (lihat Men-deploy image penampung).
Kolom name
Kolom name
menjelaskan nama gambar.
Hal ini memengaruhi nama subdirektori gambar dan file deployment_spec.yaml
dalam artefak.
Kolom probes
Kolom probes
menjelaskan konfigurasi pemeriksaan kesehatan image. Untuk
mempelajari pemeriksaan kubelet lebih lanjut, lihat
Mengonfigurasi Pemeriksaan Keaktifan, Kesiapan, dan Proses Mulai Sistem.
Mengedit pemeriksaan kesehatan IIS
Pemeriksaan kondisi dapat memantau periode nonaktif dan status siap penampung yang dikelola. Pemantauan Health Probe dapat membantu mengurangi periode nonaktif penampung yang dimigrasikan dan memberikan pemantauan yang lebih baik.
Status kondisi yang tidak diketahui dapat menyebabkan penurunan ketersediaan, pemantauan ketersediaan positif palsu, dan potensi kehilangan data. Tanpa pemeriksaan kondisi, kubelet hanya dapat mengasumsikan kondisi container dan mungkin mengirim traffic ke instance container yang belum siap. Jika belum siap, instance dapat menyebabkan hilangnya traffic. Kubelet mungkin juga tidak mendeteksi penampung yang berada dalam status beku dan tidak memulai ulang penampung tersebut.
Pemeriksaan kesehatan berfungsi dengan menjalankan pernyataan skrip kecil saat
penampung dimulai. Skrip memeriksa kondisi yang berhasil, yang
ditentukan oleh jenis probe yang digunakan, setiap periode. Periode ditentukan dalam
rencana migrasi oleh kolom periodSeconds
. Anda dapat menentukan probe ini secara manual
saat menyesuaikan rencana migrasi.
Ada tiga jenis probe yang tersedia untuk dikonfigurasi. Semua probe adalah probe v1 core yang ditentukan dalam referensi probe v1 core dan memiliki fungsi yang sama dengan kolom yang sesuai dari container v1 core.
*Pemeriksaan keaktifan: 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 saat pemeriksaan berhasil, tentukan pemeriksaan kesiapan. Pemeriksaan kesiapan mungkin bertindak serupa dengan pemeriksaan keaktifan. Namun, pemeriksaan kesiapan menunjukkan bahwa pod dimulai tanpa menerima traffic apa pun dan hanya mulai menerima traffic setelah pemeriksaan berhasil.
Pemeriksaan startup: Kubelet menggunakan pemeriksaan startup untuk mengetahui kapan aplikasi container dimulai. Jika dikonfigurasi, pemeriksaan tersebut akan menonaktifkan pemeriksaan keaktifan dan kesiapan hingga berhasil, sehingga memastikan bahwa pemeriksaan tersebut tidak mengganggu startup aplikasi.
Setelah penemuan, konfigurasi probe ditambahkan ke rencana migrasi. Probe
dapat digunakan dalam konfigurasi defaultnya seperti yang ditunjukkan dalam contoh
berikut. Konfigurasi default menggunakan perintah exec
untuk pemeriksaan keaktifan dan kesiapan. Keduanya menggunakan skrip PowerShell yang disebut probe.ps1
yang
memanggil alat command line IIS appcmd untuk memeriksa status situs IIS.
Probe dinonaktifkan secara default. Untuk mengaktifkan probe, 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 beban kerja mungkin memerlukan layanan tambahan yang berjalan (termasuk database, mekanisme logging, proxy, dan lainnya) agar dapat berfungsi dengan benar.
Untuk menjalankan layanan tambahan dalam penampung yang dimigrasikan, tambahkan entri ke
bagian windowsServices
, dan 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 ke kunci di
hive registry HKEY_LOCAL_MACHINE\System\CurrentControlSet
atau di hive registry HKEY_LOCAL_MACHINE\Software
.
Mengedit bagian useractions
Secara default, satu-satunya file yang disalin ke image adalah direktori virtual
situs dalam image yang ditentukan.
Jika kode atau konfigurasi Anda mengimpor file dari luar direktori ini, Anda
harus menambahkannya ke bagian useractions
.
Selain itu, nilai registry apa pun yang menjadi dependensi kode Anda harus ditambahkan dengan mengedit
bagian useractions
registry
.
Setelan yang terkait secara khusus dengan IIS
Setelan terkait IIS dibagi menjadi setelan yang terkait dengan situs tertentu,
yang merupakan bagian dari spesifikasi image, dan setelan yang terkait dengan semua situs,
yang mengikuti bagian gloabalIis
.
Bagian sites
Bagian situs menjelaskan situs yang dimigrasikan ke image tertentu. Beberapa gambar dapat berisi situs yang sama.
Jika ingin menggunakan
Cloud Load Balancing, Ingress, atau Cloud 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 Application Pools yang dibuat di pod yang dimigrasikan.
Kolom identitytype
menentukan identitas IIS kumpulan aplikasi sebagai
ApplicationPoolIdentity
(default), NetworkService
, LocalSystem
, atau
LocalService
.
Untuk mengetahui informasi selengkapnya, lihat Memahami identitas di IIS dan Identitas Application Pool.
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 penampung,
Migrate to Containers akan otomatis menambahkan perintah Dockerfile yang diperlukan
sesuai dengan setelan kolom identitytype
.
Misalnya, jika Anda menetapkan identitytype
ke NetworkService
, perintahnya dalam
bentuk:
RUN c:\windows\system32\inetsrv\appcmd.exe set apppool \"DefaultAppPool\" \"/-processModel.identityType:NetworkService\";
Migrate to Containers otomatis menambahkan perintah ACL baca ke
folder situs sesuai dengan identitytype
target, dan untuk pengguna bawaan
IUSR.
Hal ini dilakukan secara otomatis untuk item sistem file aplikasi tempat akun
aplikasi asli ditentukan oleh pewarisan atau secara eksplisit.
Untuk mengetahui informasi selengkapnya, lihat Menetapkan ACL.
Kolom enablegmsa
Kolom enablegmsa
adalah sintaksis mudah dalam rencana migrasi. Ini adalah
pintasan untuk menimpa kolom identity 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 konversikan penampung yang dimigrasikan untuk menggunakan gMSA dan abaikan setelanidentitytype
. Dalam hal ini,identitytype
selalu ditafsirkan 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 workload penampung yang dimigrasikan ke penyedia data .NET Framework.
Migrate to Containers mendukung string koneksi di cakupan situs dan global.
Untuk menambahkan string koneksi ke situs, edit definisi site
dalam
rencana 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 tepat setelah 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 akan otomatis menyalin string koneksi yang terdeteksi di VM yang dimigrasikan ke rencana migrasi.
Beberapa string koneksi mungkin tidak terdeteksi dan harus ditambahkan dengan mengedit
rencana migrasi seperti yang ditunjukkan sebelumnya. (Misalnya, jika string
koneksi berada di bagian terenkripsi file applicationhost.config
).
Untuk panduan menentukan string koneksi yang akan ditambahkan ke rencana migrasi, lihat 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. 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 keamanan berisi subbagian autentikasi dan otorisasi.
- Autentikasi Windows memverifikasi pengguna Active Directory.
- Otorisasi Windows adalah mekanisme untuk menentukan pengguna mana yang diizinkan untuk mengakses situs IIS. Jenis akses adalah kata kerja HTTP (POST, GET, PUT, PATCH, DELETE).
Serupa dengan string koneksi, untuk menetapkan otorisasi atau autentikasi untuk semua situs, edit globalIis
seperti dalam 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
mencantumkan nama pengguna.access
menentukan izin pengguna. Jenis akses adalah kata kerja HTTP (POST, GET, PUT, PATCH, DELETE).role
menentukan peran izin tertentu.
Langkah selanjutnya
- Pelajari cara menjalankan migrasi.