Prepare um cluster do Windows para implementação
Esta página descreve como preparar o cluster do Windows para a implementação.
Antes de começar
- Conclua a migração e tenha os artefactos gerados resultantes.
- Crie o cluster onde quer implementar a sua carga de trabalho. Para mais informações, consulte Criar um cluster do Windows
- Configure o
kubectl
e ligue-o ao cluster.
Escolha e configure o seu registo do Docker
Como parte da implementação, cria e carrega a imagem Docker do seu contentor para um registo Docker.
Para o registo do Docker, pode optar por usar:
Artifact Registry
Qualquer registo do Docker que suporte a autenticação básica
A solução recomendada é usar o Artifact Registry no mesmo projeto do cluster de implementação. O GKE pode aceder ao registo por predefinição. Para mais informações, consulte os requisitos de integração com o GKE.
Se quiser usar um registo Docker privado, saiba como configurar o registo.
Configure cargas de trabalho migradas para usar gMSA
As cargas de trabalho da aplicação IIS do Windows são frequentemente associadas ao Active Directory (AD) e funcionam com identidades de domínio. Quando migra estas VMs para contentores, os próprios contentores não são associados a um domínio, mas sim os respetivos nós do cluster do Kubernetes anfitrião podem ser associados a um domínio.
Quando implementa os contentores migrados num cluster, pode usar uma conta de serviço gerida por um grupo (gMSA). Use a gMSA para executar o contentor numa identidade de conta de serviço específica. Anexa um gMSA no cluster do Kubernetes como parte da configuração do pod, em vez de como uma configuração de identidade estática na imagem do contentor.
A migração para contentores ajuda no processo de transformação das suas cargas de trabalho. A migração para contentores descobre automaticamente a configuração dos conjuntos de aplicações do IIS e adiciona recomendações ao plano de migração gerado. Em seguida, pode avaliar estas recomendações e modificá-las para o seu ambiente e requisitos específicos.
Se o Migrate to Containers determinar que a configuração de um conjunto de aplicações não requer uma gMSA, mantém a configuração original do conjunto de aplicações. Por exemplo, quando usa um tipo de conta incorporado, como ApplicationPoolIdentity
, NetworkService
, LocalSystem
ou LocalService
.
Para suportar o gMSA num contentor Windows migrado, tem de:
Edite o plano de migração para definir as propriedades necessárias para configurar o contentor migrado de modo a usar uma gMSA.
Configure o cluster de destino que aloja o contentor implementado.
Configure um cluster de destino para suportar o gMSA
Anexa uma gMSA no cluster do Kubernetes como parte da configuração do pod, em vez de como uma configuração de identidade estática na imagem do contentor.
Para configurar um cluster que aloja o contentor do Windows migrado para suportar o gMSA, tem de ter:
Para mais informações, consulte o seguinte:
- Crie gMSAs para contentores Windows.
- Crie uma conta de serviço gerida de grupo.
- Usar o gMSA na Google Cloud documentação.
- Configure a sua app para usar uma gMSA na documentação da Microsoft.
Implemente um contentor quando armazena certificados SSL como segredos do Kubernetes
Recomendamos que use o Cloud Load Balancing, Ingress, ou o Cloud Service Mesh como um frontend HTTPS para proteger o acesso externo ao seu contentor implementado. Esta opção permite-lhe proteger a comunicação externa sem incluir certificados no cluster. Para mais informações, consulte o artigo Personalizar um plano de migração.
Também pode armazenar certificados Secure Sockets Layer (SSL) como segredos do Kubernetes e montá-los no tempo de execução no contentor.
Para usar segredos do Kubernetes:
Crie um ficheiro PFX com o certificado e a palavra-passe.
Crie um ficheiro YAML de configuração que defina o acesso ao site:
sites: - sitename: "sitename" sslport: 443 pfxpath: c:\sslconfig\pfx password: "password" thumbprint: "3e858d0551fc0536f52d411dad92b680a4fad4da"
Onde:
sitename
especifica o nome do site configurado para usar SSL. A propriedadesites
pode conter várias entradassitename
.sslport
especifica a porta a ouvir para ligações SSL (normalmente, 443).pfxpath
especifica o caminho para o ficheiro PFX. Configure-o como parte dovolumeMounts
da implementação do pod.password
especifica a palavra-passe do ficheiro PFX.thumbprint
especifica a impressão digital SHA-1 do ficheiro PFX que pode ser obtida através do comando do PowerShell:Get-PfxCertificate -FilePath "path to pfx"
Em alternativa, veja-o no Gestor de certificados do Windows.
Crie o Secret do Kubernetes:
kubectl create secret generic secret-name --from-file=pfx=path-to-pfx --from-file=config=path-to-config
Crie o volume e a montagem do volume na implementação da imagem:
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
Onde:
mountPath
é o mesmo caminho especificado porpfxpath
no ficheiro de configuração que criou no passo 2.M4A_CERT_YAML
é uma variável de ambiente definida para o caminho completo do ficheiro YAML de configuração que criou no passo 2.secret-name
é o nome do segredo que criou no passo 3.
Configure o SSL
Recomendamos que não armazene chaves privadas de certificados SSL numa imagem de contentor, uma vez que são acessíveis a qualquer pessoa que leia a imagem. A migração para contentores oferece várias formas de processar o SSL para o Windows.
Use um certificado autogerado autoassinado
Por predefinição, a um contentor Windows com uma associação HTTPS é atribuído um certificado autossinado gerado automaticamente na inicialização do contentor Docker. Esta configuração permite-lhe testar a carga de trabalho migrada, mas não pode ser usada num ambiente de produção. O certificado é autoassinado e regenerado sempre que o contentor é executado.
Recomendado: use o Cloud Load Balancing, o Ingress ou o Cloud Service Mesh
Pode personalizar as associações no plano de migração para usar HTTP. Em seguida, use o Cloud Load Balancing, Ingress> ou o Cloud Service Mesh como um front-end HTTPS para proteger o acesso externo. Esta opção permite-lhe proteger a comunicação externa sem incluir certificados no cluster.
Para personalizar a associação, edite a definição
site
no plano de migração que representa a migração para definirprotocol
comohttp
:sites: site: - applications: - path: / virtualdirectories: - path: / physicalpath: '%SystemDrive%\inetpub\wwwroot' bindings: - port: 8080 protocol: http name: Default Web Site
Em seguida, pode encaminhar pedidos do front-end HTTPS para o caminho e a porta HTTP da carga de trabalho do Windows.
Armazene certificados SSL como segredos do Kubernetes
Recomendamos que use o Cloud Load Balancing, Ingress, ou Cloud Service Mesh como um front-end HTTPS para proteger o acesso externo. No entanto, também pode armazenar certificados SSL como segredos do Kubernetes e montá-los em tempo de execução no contentor.
Para usar certificados SSL armazenados como segredos do Kubernetes, tem de editar a imagem de implementação do contentor. Para mais informações, consulte o artigo Implemente um contentor quando armazena certificados SSL como segredos do Kubernetes.
Configure o registo no Cloud Logging
A ferramenta Migrate to Containers usa a ferramenta LogMonitor para extrair registos de um contentor do Windows e encaminhá-los para o seu cluster do GKE. Em seguida, estes registos são encaminhados automaticamente para o Cloud Logging, que oferece um conjunto de ferramentas para monitorizar os seus contentores.
Por predefinição, a ferramenta Migrate to Containers ativa o registo do IIS para monitorizar os registos do IIS e também encaminha os registos de eventos de aplicações ou do sistema para o Cloud Logging.
Configure o registo
A expansão do ficheiro artifacts.zip
gerado cria vários diretórios, incluindo o diretório m4a
. O diretório contém uma pasta para cada imagem.
O diretório m4a
inclui o ficheiro LogMonitorConfig.json
que pode editar para controlar o registo.
Para mais informações sobre a edição de LogMonitorConfig.json
, consulte o artigo
Criar um ficheiro de configuração.
Defina LCAs
Algumas aplicações IIS requerem que defina autorizações específicas de listas de controlo de acesso (ACL) em ficheiros e pastas para que as aplicações funcionem corretamente. A migração para contentores analisa automaticamente todas as aplicações IIS migradas e adiciona todas as autorizações específicas definidas na VM de origem que se aplicam às contas IIS (a conta IUSR
e o grupo IIS_IUSRS
) e aplica-as aos ficheiros e diretórios copiados na imagem do contentor gerada.
Uma vez que as imagens de contentores do Windows não suportam a definição de ACLs como parte do comando COPY
do Docker, as ACLs são definidas num script denominado set_acls.bat
.
A migração para contentores cria automaticamente set_acls.bat
no diretório da imagem gerada para a sua aplicação Windows específica.
Migre para contentores e, em seguida, chame set_acls.bat
quando executar o comando docker build
.
Edite set_acls.bat
para adicionar ou remover autorizações personalizadas, ou edite autorizações que não estejam relacionadas com utilizadores específicos do IIS e, por isso, não foram detetadas pela ferramenta Migrate to Containers.
O script usa a ferramenta icacls incorporada do Windows para definir autorizações.
Acerca da cache de assemblagens global do .NET
A migração para contentores analisa a cache de assemblagens global (GAC) do .NET da imagem de origem à procura de recursos do .NET instalados na máquina de origem e não disponíveis como parte das imagens oficiais. Qualquer DLL detetada é copiada para o contexto do Docker e instalada como parte da criação da imagem de destino por um script de utilidade install_gac.ps1
.
Todas as assemblagens .NET são copiadas para o contexto do Docker no diretório m4a\gac
. Para remover montagens da imagem, elimine-as do diretório m4a\gac
.
Registo de DLL de objeto COM
As DLLs que expõem objetos COM são analisadas e registadas automaticamente. Durante a fase de extração, os ficheiros copiados são analisados para encontrar DLLs registadas como objetos COM, que são depois registados no contentor.
Este processo ocorre sem a intervenção do utilizador. No entanto, pode influenciar este processo adicionando mais DLLs a copiar. Se necessário, estas DLLs são verificadas por sua vez e registadas.