Menyiapkan cluster Windows untuk deployment
Halaman ini menjelaskan cara menyiapkan cluster Windows untuk deployment.
Sebelum memulai
- Selesaikan migrasi dan dapatkan artefak yang dihasilkan.
- Buat cluster tempat Anda ingin men-deploy workload. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster Windows
- Siapkan
kubectl
dan hubungkan ke cluster.
Memilih dan menyiapkan registry Docker
Sebagai bagian dari deployment, Anda mem-build dan mengupload image Docker container ke registry Docker.
Untuk registry Docker, Anda dapat memilih untuk menggunakan:
Artifact Registry
Semua registry Docker yang mendukung autentikasi dasar
Solusi yang direkomendasikan adalah menggunakan Artifact Registry dalam project cluster deployment yang sama. GKE dapat mengakses registry secara default. Untuk informasi selengkapnya, lihat persyaratan untuk berintegrasi dengan GKE.
Jika Anda ingin menggunakan registry Docker pribadi, pelajari cara mengonfigurasi registry.
Mengonfigurasi workload yang dimigrasikan untuk menggunakan gMSA
Workload Aplikasi IIS Windows sering kali bergabung dengan Active Directory (AD) dan beroperasi menggunakan identitas domain. Saat memigrasikan VM ini ke penampung, penampung itu sendiri tidak bergabung dengan domain, tetapi node cluster Kubernetes host-nya dapat bergabung dengan domain.
Saat men-deploy penampung yang dimigrasikan ke cluster, Anda dapat menggunakan Akun Layanan Terkelola Grup (gMSA). Gunakan gMSA untuk mengeksekusi penampung dalam identitas akun layanan tertentu. Anda melampirkan gMSA di cluster Kubernetes sebagai bagian dari konfigurasi pod, bukan sebagai konfigurasi identitas statis di dalam image container.
Migrate to Containers membantu Anda dalam proses transformasi workload. Migrate to Containers akan otomatis menemukan konfigurasi kumpulan aplikasi IIS dan menambahkan rekomendasi ke rencana migrasi yang dihasilkan. Kemudian, Anda dapat mengevaluasi rekomendasi ini dan mengubahnya untuk lingkungan dan persyaratan tertentu.
Jika Migrate to Containers menentukan bahwa konfigurasi kumpulan aplikasi tidak memerlukan gMSA, Migrate to Containers akan mempertahankan konfigurasi kumpulan aplikasi asli. Misalnya, saat menggunakan jenis akun bawaan seperti
ApplicationPoolIdentity
, NetworkService
, LocalSystem
, atau LocalService
.
Untuk mendukung gMSA di penampung Windows yang dimigrasikan, Anda harus:
Edit rencana migrasi untuk menetapkan properti yang diperlukan guna mengonfigurasi penampung yang dimigrasikan untuk menggunakan gMSA.
Konfigurasikan cluster target yang menghosting penampung yang di-deploy.
Mengonfigurasi cluster target untuk mendukung gMSA
Anda melampirkan gMSA di cluster Kubernetes sebagai bagian dari konfigurasi pod, bukan sebagai konfigurasi identitas statis di dalam image container.
Untuk mengonfigurasi cluster yang menghosting penampung Windows yang dimigrasikan untuk mendukung gMSA, Anda harus memiliki:
Untuk informasi selengkapnya, lihat referensi berikut:
- Membuat gMSA untuk penampung Windows.
- Buat Akun Layanan Terkelola grup.
- Menggunakan gMSA dalam dokumentasi Google Cloud.
- Konfigurasikan aplikasi Anda untuk menggunakan gMSA dalam dokumentasi Microsoft.
Men-deploy penampung saat menyimpan sertifikat SSL sebagai secret Kubernetes
Sebaiknya gunakan Cloud Load Balancing, Ingress, atau Cloud Service Mesh sebagai frontend HTTPS untuk mengamankan akses eksternal ke penampung yang di-deploy. Opsi ini memungkinkan Anda mengamankan komunikasi eksternal tanpa menyertakan sertifikat apa pun di dalam cluster. Untuk informasi selengkapnya, lihat Menyesuaikan rencana migrasi.
Anda juga dapat menyimpan sertifikat Secure Sockets Layer (SSL) sebagai secret Kubernetes dan memasangnya saat runtime ke penampung.
Untuk menggunakan secret Kubernetes:
Buat file PFX dengan sertifikat dan sandi.
Buat file YAML konfigurasi yang menentukan akses situs:
sites: - sitename: "sitename" sslport: 443 pfxpath: c:\sslconfig\pfx password: "password" thumbprint: "3e858d0551fc0536f52d411dad92b680a4fad4da"
Dengan keterangan:
sitename
menentukan nama situs yang dikonfigurasi untuk menggunakan SSL. Propertisites
dapat berisi beberapa entrisitename
.sslport
menentukan port yang akan di-listen untuk koneksi SSL (biasanya 443).pfxpath
menentukan jalur ke file PFX. Konfigurasikan sebagai bagian darivolumeMounts
deployment pod.password
menentukan sandi untuk file PFX.thumbprint
menentukan sidik jari SHA-1 file PFX yang dapat diambil menggunakan perintah PowerShell:Get-PfxCertificate -FilePath "path to pfx"
Atau lihat di Pengelola Sertifikat Windows.
Buat secret Kubernetes:
kubectl create secret generic secret-name --from-file=pfx=path-to-pfx --from-file=config=path-to-config
Buat volume dan pemasangan volume dalam deployment image:
apiVersion: v1 kind: Pod metadata: name: iis-pod labels: app: iis-server-simple spec: nodeSelector: kubernetes.io/os: windows containers: - name: iis-server image: your-image-url volumeMounts: - name: ssl-secret mountPath: c:\sslconfig env: - name: M4A_CERT_YAML value: c:\sslconfig\config volumes: - name: ssl-secret secret: secretName: secret-name
Dengan keterangan:
mountPath
adalah jalur yang sama dengan yang ditentukan olehpfxpath
dalam file konfigurasi yang Anda buat di Langkah 2.M4A_CERT_YAML
adalah variabel lingkungan yang ditetapkan ke jalur lengkap ke file YAML konfigurasi yang Anda buat di Langkah 2.secret-name
adalah nama secret yang Anda buat di langkah 3.
Mengonfigurasi SSL
Sebaiknya jangan simpan kunci pribadi sertifikat SSL di dalam image penampung karena dapat diakses oleh siapa saja yang membaca image. Migrate to Containers menyediakan beberapa cara untuk menangani SSL untuk Windows.
Menggunakan sertifikat yang ditandatangani sendiri dan dibuat secara otomatis
Secara default, penampung Windows dengan binding HTTPS diberi sertifikat yang ditandatangani sendiri dan dibuat secara otomatis yang dibuat saat inisialisasi penampung Docker. Konfigurasi ini memungkinkan Anda menguji beban kerja yang dimigrasikan, tetapi tidak dapat digunakan di lingkungan produksi. Sertifikat ditandatangani sendiri dan dibuat ulang setiap kali penampung dijalankan.
Direkomendasikan - Gunakan Cloud Load Balancing, Ingress, atau Cloud Service Mesh
Anda dapat menyesuaikan binding dalam rencana migrasi untuk menggunakan HTTP. Kemudian, gunakan Cloud Load Balancing, Ingress, atau Cloud Service Mesh sebagai frontend HTTPS untuk mengamankan akses eksternal. Opsi ini memungkinkan Anda mengamankan komunikasi eksternal tanpa menyertakan sertifikat apa pun di dalam cluster.
Untuk menyesuaikan binding, edit definisi
site
dalam rencana migrasi yang mewakili migrasi untuk menetapkanprotocol
kehttp
:sites: site: - applications: - path: / virtualdirectories: - path: / physicalpath: '%SystemDrive%\inetpub\wwwroot' bindings: - port: 8080 protocol: http name: Default Web Site
Kemudian, Anda dapat meneruskan permintaan dari frontend HTTPS ke jalur dan port HTTP beban kerja Windows.
Menyimpan sertifikat SSL sebagai secret Kubernetes
Sebaiknya gunakan Cloud Load Balancing, Ingress, atau Cloud Service Mesh sebagai frontend HTTPS untuk mengamankan akses eksternal. Namun, Anda juga dapat menyimpan sertifikat SSL sebagai secret Kubernetes dan memasangnya saat runtime ke dalam penampung.
Untuk menggunakan sertifikat SSL yang disimpan sebagai secret Kubernetes, Anda harus mengedit image deployment container. Untuk informasi selengkapnya, lihat Men-deploy penampung saat menyimpan sertifikat SSL sebagai secret Kubernetes.
Mengonfigurasi logging ke Cloud Logging
Migrate to Containers menggunakan alat LogMonitor untuk mengekstrak log dari penampung Windows dan meneruskannya ke cluster GKE Anda. Log ini kemudian diteruskan secara otomatis ke Cloud Logging, yang menyediakan serangkaian alat untuk memantau penampung Anda.
Secara default, Migrasi ke Penampung mengaktifkan logging IIS untuk memantau log IIS, dan juga meneruskan log peristiwa Aplikasi atau Sistem ke Cloud Logging.
Mengonfigurasi logging
Memperluas file artifacts.zip
yang dihasilkan akan membuat beberapa direktori,
termasuk direktori m4a
. Direktori berisi folder untuk setiap gambar.
Termasuk dalam direktori m4a
adalah file LogMonitorConfig.json
yang dapat Anda
edit untuk mengontrol logging.
Untuk mengetahui informasi selengkapnya tentang mengedit LogMonitorConfig.json
, lihat
Menulis File Konfigurasi.
Tetapkan ACL
Beberapa aplikasi IIS mengharuskan Anda menetapkan izin daftar kontrol akses (ACL)
tertentu pada file dan folder agar aplikasi dapat berperforma
dengan benar. Migrate to Containers secara otomatis memindai semua aplikasi IIS
yang dimigrasikan dan menambahkan izin tertentu yang ditentukan di VM sumber yang
berlaku untuk akun IIS (akun IUSR
dan grup IIS_IUSRS
) dan
menerapkan izin tersebut ke file dan direktori yang disalin dalam image penampung
yang dihasilkan.
Karena image container Windows tidak mendukung setelan ACL sebagai bagian dari
perintah COPY
Docker, ACL ditetapkan dalam skrip yang disebut set_acls.bat
.
Migrate to Containers akan otomatis membuat set_acls.bat
di direktori
image yang dihasilkan untuk aplikasi Windows tertentu.
Migrate to Containers kemudian memanggil set_acls.bat
saat Anda menjalankan
perintah docker build
.
Edit set_acls.bat
untuk menambahkan atau menghapus izin kustom, atau edit izin
yang tidak terkait dengan pengguna IIS tertentu sehingga tidak terdeteksi oleh
Migrate to Containers.
Skrip menggunakan alat icacls bawaan Windows untuk menetapkan izin.
Tentang Global Assembly Cache .NET
Migrate to Containers memindai .NET Global Assembly Cache (GAC) image sumber
untuk resource .NET yang diinstal di mesin sumber dan tidak tersedia
sebagai bagian dari image resmi. Setiap DLL yang ditemukan akan disalin ke dalam konteks Docker
dan diinstal sebagai bagian dari pembuatan image target oleh skrip utility
install_gac.ps1
.
Semua assembly .NET disalin ke dalam konteks Docker di direktori
m4a\gac
. Untuk menghapus assembly dari image, hapus dari direktori
m4a\gac
.
Pendaftaran DLL objek COM
DLL yang mengekspos objek COM akan otomatis dipindai dan didaftarkan. Selama fase ekstraksi, file yang disalin akan dipindai untuk menemukan DLL yang terdaftar sebagai objek COM, yang kemudian didaftarkan dalam penampung.
Proses ini terjadi tanpa input pengguna. Namun, Anda dapat memengaruhi proses ini dengan menambahkan lebih banyak DLL untuk disalin. Jika diperlukan, DLL ini akan diperiksa secara bergantian, dan didaftarkan.
Langkah selanjutnya
- Pelajari cara mem-build dan men-deploy workload Windows IIS.