Windows IIS 서비스에 대한 마이그레이션 계획 맞춤설정
마이그레이션 생성 중에 채워진 마이그레이션 계획 파일을 검토합니다. 마이그레이션을 실행하기 전에 맞춤설정할 수 있습니다. 마이그레이션 계획의 세부정보는 소스 VM에서 워크로드 컨테이너 아티팩트를 추출하는 데 사용됩니다.
이 섹션에서는 마이그레이션 계획을 실행하고 배포 아티팩트를 생성하기 전에 고려할 수 있는 마이그레이션 콘텐츠 및 맞춤설정의 종류를 설명합니다.
시작하기 전에
이 문서에서는 사용자가 이미 마이그레이션 계획을 만들었고 해당 마이그레이션 계획 파일이 있다고 가정합니다.
마이그레이션 계획 구조
다음은 전체 마이그레이션 계획 구조입니다. 다음 섹션에서는 이 구조를 설명하고 각 부분의 정의와 수정 방법을 설명합니다.
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
globalSettings
섹션
globalSettings
섹션은 이 VM에서 IIS 사이트를 실행하는 포드의 기본 요구사항을 설명합니다. 검색 프로세스는 소스 VM에서 일반 구성을 검색하고 이를 사용하여 이 섹션을 채웁니다. 이러한 구성에는 다음 섹션의 설명처럼 특정 이미지 구성에 있는 필드가 포함되며 동시에 모든 이미지에 영향을 줍니다.
image
섹션
globalSettings
다음의 image
섹션은 포드에 설치할 Windows 기능 목록을 설명합니다. 검색 프로세스는 이 섹션을 원래 VM에 있고 Windows 컨테이너에 설치할 수 있는 모든 Windows 기능으로 채웁니다.
msvcRuntimes
섹션
애플리케이션을 마이그레이션할 때 Microsoft Visual C++ 런타임(MSVCRT)의 특정 버전에 대한 종속 항목이 있을 수 있습니다. Migrate to Containers는 소스 VM에 설치된 런타임을 자동으로 감지하여 마이그레이션 계획에 포함합니다.
msvcRuntimes
의 구성원을 추가하거나 삭제하여 마이그레이션 계획에서 런타임 목록을 수정할 수 있습니다.
가능한 값의 전체 목록은 다음과 같습니다. 2015 런타임에는 2017, 2019, 2022 지원도 포함됩니다.
msvcRuntimes:
- MSVC2012_x64
- MSVC2013_x64
- MSVC2015_x64
- MSVC2012_x86
- MSVC2013_x86
- MSVC2015_x86
pathEnvVarAdditionalEntries
섹션
Windows IIS 애플리케이션에는 기본값이 아닌 PATH
환경 변수 항목이 포함될 수 있으며 소스 VM에서 자동으로 검색되고 마이그레이션 계획에 포함됩니다. pathEnvVarAdditionalEntries
의 구성원을 수정하여 PATH
환경 변수를 수정할 수 있습니다.
pathEnvVarAdditionalEntries:
- "C:\\myDllsFolder"
- "C:\\ProgramData\\SomeSoftware"
image 섹션 수정
다음과 같은 경우 image
섹션을 수정하는 것이 좋습니다.
마이그레이션된 사이트에는 일부 추천 기능이 필요하지 않습니다. 소스 VM에 IIS 사이트 호스팅 외의 사용량이 있을 경우가 이에 해당합니다.
마이그레이션 계획에서 IIS 섹션을 수정했으며 추가 Windows 기능에 종속된 구성을 추가했습니다. 예를 들어 Windows 인증이 Windows 인증 기능에 따라 다릅니다.
target
섹션
target
섹션은 사용 중인 기본 Windows 이미지를 지정합니다(예: 1909). 이 필드는 수정할 필요가 거의 없습니다.
images
섹션
images
섹션의 각 하위 항목은 단일 출력 이미지를 지정합니다.
아티팩트 zip에서 이러한 각 이미지에는 자체 Dockerfile
및 deployment_spec.yaml
이 있는 별도의 하위 디렉터리가 있습니다(컨테이너 이미지 배포 참조).
name
필드
name
필드는 이미지 이름을 설명합니다.
이미지 하위 디렉터리의 이름과 아티팩트의 deployment_spec.yaml
파일에 영향을 미칩니다.
probes
필드
probes
필드는 이미지의 상태 프로브 구성을 설명합니다. kubelet 프로브에 대한 자세한 내용은 활성, 준비, 시작 프로브 구성을 참조하세요.
IIS 상태 프로브 수정
상태 프로브는 관리형 컨테이너의 다운타임 및 준비 상태를 모니터링할 수 있습니다. 상태 프로브 모니터링은 마이그레이션된 컨테이너의 다운타임을 줄이고 더 나은 모니터링을 제공하는 데 도움이 될 수 있습니다.
알 수 없는 상태에서는 가용성 저하, 거짓양성 가용성 모니터링, 잠재적인 데이터 손실이 발생할 수 있습니다. 상태 프로브가 없으면 kubelet은 컨테이너 상태만 가정할 수 있으며, 준비되지 않은 컨테이너 인스턴스로 트래픽을 전송할 수 있습니다. 인스턴스가 준비되지 않은 경우 트래픽 손실이 발생할 수 있습니다 Kubelet은 고정된 상태의 컨테이너를 감지하지 못할 수도 있으며, 이로 인해 컨테이너를 다시 시작하지 않습니다.
상태 프로브는 컨테이너가 시작될 때 작은 스크립트 문을 실행하여 작동합니다. 이 스크립트는 모든 기간에 사용된 프로브 유형으로 정의된 성공적인 조건을 확인합니다. 기간은 마이그레이션 계획에서 periodSeconds
필드로 정의됩니다. 마이그레이션 계획을 맞춤설정할 때 이러한 프로브를 수동으로 정의할 수 있습니다.
구성할 수 있는 프로브에는 세 가지 유형이 있습니다. 모든 프로브는 probe v1 core 참조에 정의된 probe v1 core이고 container v1 core의 해당 필드와 동일한 함수를 공유합니다.
*활성 프로브 활성 프로브는 컨테이너를 다시 시작할 시점을 파악하는 데 사용됩니다.
준비 프로브 - 준비 프로브는 컨테이너가 트래픽을 수락할 준비가 된 시점을 파악하는 데 사용됩니다. 프로브가 성공한 경우에만 포드에 트래픽 전송을 시작하려면 준비 프로브를 지정합니다. 준비 프로브는 활성 프로브와 유사하게 동작할 수 있습니다. 하지만 준비 프로브에서는 포드가 트래픽을 수신하지 않고 시작하며 프로브가 성공한 후에만 트래픽을 수신하기 시작함을 나타냅니다.
시작 프로브: kubelet은 시작 프로브를 사용하여 컨테이너 애플리케이션이 시작된 시간을 파악합니다. 이러한 프로브가 구성되면 성공할 때까지 활성 및 준비 확인이 사용 중지되고, 이러한 프로브가 애플리케이션 시작을 방해하지 않습니다.
검색 후에는 프로브 구성이 마이그레이션 계획에 추가됩니다. 프로브는 다음 예시와 같이 기본 구성에서 사용할 수 있습니다. 기본 구성은 활성 및 준비 상태 프로브에 exec
명령어를 사용합니다. 둘 다 IIS 사이트 상태 확인을 위해 IIS 명령줄 도구 appcmd를 호출하는 probe.ps1
이라는 PowerShell 스크립트를 사용합니다.
프로브는 기본적으로 사용 중지되며, 프로브를 사용 설정하려면 enabled
플래그를 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
windowsServices
섹션
마이그레이션 실행 중에 생성된 Windows 컨테이너는 단일 Windows IIS 서비스를 실행하고 모니터링합니다. 그러나 일부 워크로드는 올바른 작동을 위해 데이터베이스, 로깅 메커니즘, 프록시 등의 추가 서비스를 실행해야 할 수 있습니다.
마이그레이션된 컨테이너에서 추가 서비스를 실행하려면 windowsServices
섹션에 항목을 추가하고 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
useractions
섹션
useractions
섹션에서는 사용자가 마이그레이션하려는 추가 파일과 레지스트리 키를 지정합니다.
예를 들면 다음과 같습니다.
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 ...
currentcontrolset
및 software
에 지정된 경로는 HKEY_LOCAL_MACHINE\System\CurrentControlSet
레지스트리 하이브 또는 HKEY_LOCAL_MACHINE\Software
레지스트리 하이브의 키에 있습니다.
useractions
섹션 수정
기본적으로 이미지에 복사되는 파일만 지정된 이미지에 있는 사이트의 가상 디렉터리입니다.
코드나 구성에서 이 디렉터리 외부에서 파일을 가져오는 경우 파일을 useractions
섹션에 추가해야 합니다.
또한 useractions
registry
섹션을 수정하여 코드에 종속된 모든 레지스트리 값을 추가해야 합니다.
IIS 관련 설정
IIS 관련 설정은 이미지 사양에 포함된 특정 사이트 관련 설정과 gloabalIis
섹션 다음에 있는 모든 사이트 관련 설정으로 나뉩니다.
sites
섹션
sites 섹션에서는 특정 이미지로 마이그레이션된 사이트를 설명합니다. 여러 이미지에 같은 사이트가 포함될 수 있습니다.
Cloud Load Balancing, 인그레스 또는 Cloud Service Mesh를 사용하여 SSL 구성을 처리하려면 protocol
을 http
로 설정해야 합니다.
sites: site: - applications: - path: / virtualdirectories: - path: / physicalpath: '%SystemDrive%\inetpub\wwwroot' bindings: - port: 8080 protocol: http name: Default Web Site
apppools
섹션
apppools
섹션에서는 마이그레이션된 포드에 생성된 애플리케이션 풀을 설명합니다.
identitytype
필드는 애플리케이션 풀의 IIS ID를 ApplicationPoolIdentity
(기본값), NetworkService
, LocalSystem
또는 LocalService
로 지정합니다.
자세한 내용은 IIS에서 ID 이해 및 애플리케이션 풀 ID를 참조하세요.
다음은 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
컨테이너 아티팩트를 생성하도록 마이그레이션 계획을 실행하면 Migrate to Containers는 identitytype
필드 설정에 따라 필요한 Dockerfile 지시문을 자동으로 추가합니다.
예를 들어 identitytype
을 NetworkService
로 설정하면 지시문은 다음과 형식과 같습니다.
RUN c:\windows\system32\inetsrv\appcmd.exe set apppool \"DefaultAppPool\" \"/-processModel.identityType:NetworkService\";
Migrate to Containers는 대상 identitytype
에 따라 그리고 IUSR 기본 제공 사용자에 대해 ACL 읽기 지시문을 사이트 폴더에 자동으로 추가합니다.
상속에 의해 또는 명시적으로 원래 애플리케이션 계정이 지정된 애플리케이션 파일 시스템 항목인 경우 자동으로 수행됩니다.
자세한 내용은 ACL 설정을 참조하세요.
enablegmsa
필드
enablegmsa
필드는 마이그레이션 계획의 슈가 구문입니다. 애플리케이션 풀의 ID 필드를 덮어쓰는 단축키입니다.
enablegmsa
필드에 지원되는 값은 다음과 같습니다.
auto
(기본값): Migrate to Containers가 현재 구성이 허용되지 않는 것으로 확인하면 마이그레이션된 컨테이너에서 gMSA를 사용하도록 변환합니다.all
: gMSA를 사용하도록 마이그레이션된 컨테이너를 항상 변환하고identitytype
설정을 무시합니다. 이 경우identitytype
은 항상NetworkService
로 설정된 것으로 해석됩니다.
다음은 enablegmsa
를 포함하는 마이그레이션 계획의 예시입니다.
migrationPlan: applications: iis: # Allowed values include: auto (default), all enablegmsa: auto|all
자세한 내용은 gMSA를 사용하도록 앱 구성을 참조하세요.
연결 문자열
연결 문자열은 마이그레이션된 컨테이너 워크로드와 .NET Framework 데이터 제공업체 간의 연결을 정의합니다.
Migrate to Containers에서는 사이트와 전역 범위에서 연결 문자열을 지원합니다.
사이트에 연결 문자열을 추가하려면 마이그레이션 계획에서 site
정의를 수정하여 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: ...
연결 문자열을 전역 범위(모든 사이트에서 액세스 가능)에 추가하려면 globalIis
바로 다음에 있는 연결 문자열을 수정합니다.
globalIis: enablegmsa: auto connectionStrings: connectionstring: - name: connectionname3 providername: System.Data.SqlClient connectionstring: Database=connectedDB3;Password=Welcome3;User=admin; applicationhost: ...
장소:
name
은 연결 이름을 지정합니다.providername
은 데이터 제공업체 유형을 선택적으로 지정합니다. Migrate to Containers에서는System.Data.SqlClient
값만 지원합니다. 다음은 .NET Framework 데이터 제공업체를 지원합니다.System.Data.SqlClient
System.Data.OleDb
System.Data.Odbc
System.Data.OracleClient
connectionstring
은 데이터 제공업체에 연결하는 데 사용되는 연결 문자열을 지정합니다.
연결 문자열 섹션 수정
Migrate to Containers는 마이그레이션된 VM에서 감지된 연결 문자열을 마이그레이션 계획으로 자동 복사합니다.
일부 연결 문자열은 감지되지 않을 수 있으며 위와 같이 마이그레이션 계획을 수정하여 이러한 문자열을 추가해야 합니다(즉, 연결 문자열이 applicationhost.config
파일의 암호화된 섹션에 있는 경우).
마이그레이션 계획에 추가할 연결 문자열을 결정하는 방법에 대한 안내는 Microsoft 문서의 런타임 시 연결 문자열 검색을 참조하세요.
연결 문자열 외부 종속 항목
- 연결 문자열에는 파일 또는 사이트에 연결된 Windows 사용자에 대한 참조와 같은 종속 항목이 포함될 수 있습니다. 커스텀 사용자 작업을 마이그레이션 계획에 추가하여 파일 시스템에서 추가 파일을 복사할 수 있습니다. Windows 사용자를 추가하도록 Dockerfile을 수동으로 수정합니다.
- 연결 문자열은 외부 데이터 소스에 대한 참조와 같은 종속 항목을 포함할 수 있습니다. 마이그레이션된 컨테이너 워크로드가 데이터 소스에 액세스할 수 있도록 하려면 이러한 종속 항목을 수동으로 마이그레이션해야 합니다.
security
섹션
보안 섹션에는 인증 및 승인 하위 섹션이 있습니다.
- Windows 인증에서는 Active Directory 사용자를 확인합니다.
- Windows 승인은 사용자에게 허용되는 IIS 웹사이트에 대한 액세스 유형을 지정하는 메커니즘입니다. 액세스 유형은 HTTP 동사(POST, GET, PUT, PATCH, DELETE)입니다.
연결 문자열과 마찬가지로 모든 사이트에 승인이나 인증을 설정하려면 다음 예시와 같이 globalIis
를 수정합니다. 특정 사이트에 승인이나 인증을 설정하려면 사이트 요소를 수정합니다.
globalIis: security: authentication: windowsAuthentication: providers: - NTLM authorization: - add: user:John access: role: - remove: user:Jane access: GET role: ...
장소:
providers
는 보안 프로토콜의 제공업체를 지정합니다.user
는 사용자 이름을 지정합니다.access
는 사용자의 권한을 지정합니다. 액세스 유형은 HTTP 동사(POST, GET, PUT, PATCH, DELETE)입니다.role
은 특정 권한 역할을 지정합니다.
다음 단계
- 마이그레이션 실행 방법 알아보기