Setup do participante no Windows com WSL2¶
A rota Windows do workshop é o WSL2, usando uma distribuição Linux e um
container engine acessível a partir dessa distribuição. Essa rota está atualmente
parcial: testada por contrato, com o smoke ao vivo pendente. Ela não deve ser
anunciada como oficialmente suportada até que o gate de aceitação ao vivo abaixo
passe. PowerShell nativo,
Prompt de Comando, Git Bash, MSYS2 e WSL1 não são ambientes de execução suportados
para o ./workshop nem para os labs.
Se a política da empresa impede instalações locais, privilégios de administrador ou acesso a container engine, use o namespace atribuído na nuvem em vez disso. Não tente contornar a política do dispositivo.
Topologia recomendada¶
Windows host
├── WSL2 Linux distribution
│ ├── workshop repository under ~/src
│ ├── bash, git, mise, kubectl and kind
│ └── docker CLI ───────────────┐
└── Docker Desktop │
└── WSL integration socket ◀─┘
O bootstrap consegue selecionar o Podman, mas o primeiro alvo de aceitação no Windows é o Docker Desktop com WSL integration. Trate o Podman no Windows como experimental até que ele tenha sua própria linha de smoke ao vivo. Verifique os termos de licença do Docker Desktop antes de usá-lo para trabalho.
Política de suporte a versões¶
A tupla mínima provisória para a primeira aceitação ao vivo é:
| Componente | Mínimo provisório |
|---|---|
| Windows | Windows 11 23H2, build 22631 |
| Pacote WSL | 2.1.5, com a distribuição rodando como geração 2 |
| Distribuição Linux | Ubuntu 24.04 LTS |
| Docker Desktop | 4.44.0 com o backend WSL2 e a integração por distribuição habilitada |
| Recursos do workshop | 4 CPUs e 8 GiB de RAM disponíveis para WSL2/containers |
Esses são pisos de política do workshop, não a afirmação de que toda combinação mais
nova já foi exercitada. Os pisos de Windows e WSL estão alinhados aos
requisitos de instalação no Windows
atuais da Docker. Use wsl --version, wsl --status e wsl --list --verbose
conforme documentado na
referência de comandos do WSL da Microsoft.
Nenhuma tupla ao vivo passou ainda. O primeiro registro de aceitação bem-sucedida precisa declarar o build exato do Windows, o WSL/kernel, a distribuição, a arquitetura, o engine e o commit do workshop. Essa tupla se torna a baseline testada; elevar um mínimo depois exige outro smoke registrado. Testes stubbed estabelecem apenas o contrato de diagnóstico.
Setup único do host¶
- Em um PowerShell elevado, instale o WSL e torne a versão 2 o default:
wsl --install
wsl --update
wsl --set-default-version 2
wsl --version
wsl --list --verbose
Confirme que a distribuição escolhida mostra VERSION 2. Reinicie se o Windows
pedir. O WSL2 exige que a virtualização por hardware esteja habilitada; em um
laptop gerenciado, o time de TI pode precisar habilitar os recursos do Windows ou
a configuração de firmware.
-
Instale e inicie um container engine compatível. Para o Docker Desktop, habilite o backend WSL2 e depois habilite Settings > Resources > WSL integration para a distribuição escolhida.
-
Abra a distribuição Linux e verifique a integração a partir do shell dela:
docker info
Isso precisa funcionar sem sudo. Se não funcionar, inicie o Docker Desktop,
habilite a integração da distribuição, depois execute wsl --shutdown no
PowerShell e reabra a distribuição.
- Clone o repositório dentro do filesystem Linux, não sob
/mnt/c:
mkdir -p ~/src
cd ~/src
git config --global core.autocrlf input
git clone <this-repo-url> kubernetes-workshop
cd kubernetes-workshop
./workshop up
Um checkout sob /mnt/c pode ser substancialmente mais lento e pode embaralhar a
semântica do bit de execução do Linux. O bootstrap avisa quando detecta esse layout.
Não instale o build Windows do mise com winget para este caminho. As ferramentas
precisam rodar dentro da distribuição Linux do WSL2; ./workshop up instala o build
Linux do mise de forma interativa quando necessário.
Preparação de recursos e de rede¶
Aloque pelo menos 4 CPUs e 8 GiB de RAM para o ambiente combinado WSL2/container engine. O bootstrap avisa abaixo desses valores. Feche clusters e containers locais não utilizados antes do workshop.
Proxies corporativos e clientes de VPN podem afetar o DNS do WSL, os pulls de image e o acesso à API do Kubernetes:
- Configure o proxy aprovado tanto no container engine quanto no shell do WSL2. Preserve a verificação de TLS e use o CA bundle da empresa; não contorne as checagens de certificado.
- Conecte a VPN antes de abrir o WSL2. Se a conectividade mudar depois de uma
reconexão de VPN, execute
wsl --shutdownno PowerShell e reabra a distribuição. - Verifique
docker pull, resolução de DNS e o cluster alvo antes da aula. Um facilitador pode fazer o pre-pull das images pinadas do workshop quando a rede da conferência estiver limitada. - Não substitua o
/etc/resolv.confnem adicione exceções de proxy não aprovadas, a menos que isso faça parte da configuração de WSL suportada pela organização.
Rota para dispositivos gerenciados¶
Participantes que não podem ou não querem instalar um container engine devem receber
um kubeconfig e um namespace atribuído em um cluster na nuvem gerenciado pelo
facilitador. Eles podem pular o setup local do kind e seguir o caminho de namespace em
../labs/day-1/00-setup.md.
Essa rota ainda exige, hoje, um terminal com kubectl. Um shell literalmente sem
instalação, apenas no navegador, é trabalho futuro rastreado por US-ENV-6; não o
prometa como parte do workshop atual.
Exercícios cluster-wide precisam oferecer um caminho de observação seguro por namespace. O facilitador, e não o participante, é o dono da instalação de add-ons compartilhados e das permissões cluster-scoped.
Troubleshooting¶
| Sintoma | Ação |
|---|---|
native Windows ... is not supported |
Abra a distribuição WSL2 e execute o comando a partir do shell Linux dela. |
WSL1 is not supported |
Faça backup da distribuição, execute wsl --set-version <DistributionName> 2 no PowerShell e confirme VERSION 2 com wsl --list --verbose. |
Docker Desktop WSL integration may be disabled |
Habilite a integração para esta distribuição, reinicie o Docker Desktop, execute wsl --shutdown, reabra o WSL2 e verifique docker info. |
O path do repositório começa com /mnt/c/ |
Clone novamente sob ~/src; não mova node_modules nem um diretório de dados do kind entre filesystems. |
bad interpreter ou $'\r': command not found |
Defina git config --global core.autocrlf input, clone novamente dentro do WSL2 e verifique se os scripts usam quebras de linha LF. |
Permission denied para ./workshop |
Execute chmod +x workshop infra/bootstrap.sh infra/doctor.sh e depois confira se o checkout está no filesystem Linux. |
| Pulls ou chamadas de API falham somente na VPN | Reconecte a VPN, wsl --shutdown, reabra o WSL2 e verifique a configuração de DNS/proxy/CA antes de tentar de novo. |
Reproducible validation checklist¶
Execute esta checklist em um host que atenda à tupla provisória. Cada item é um release gate: não chame a rota Windows de oficialmente suportada até que todos os itens passem e a tupla exata esteja registrada.
- Registre a versão do Windows,
wsl --version,wsl --list --verbose, distribuição/versão Linux, arquitetura, versão do engine e CPU/RAM disponíveis. - Em uma distribuição WSL2 limpa com a integração do Docker habilitada, clone sob
~/src, conclua o Lab 00, execute./workshop upe depois./workshop doctor; espere zero falhas. - Desabilite a integração WSL para a distribuição e execute
./workshop up; espere uma saída diferente de zero e as instruções de recuperação da integração. - Reabilite a integração. Clone uma cópia descartável sob
/mnt/ce execute./workshop up; espere o aviso de drive montado antes da criação do cluster. - Em cópias descartáveis, introduza CRLF no
workshope remova o bit de execução dele. Executebash infra/doctor.sh; espere comandos de reparo específicos e um resultado diferente de zero. - Exercite comportamentos representativos do cluster: networking de Service/DNS, provisionamento dinâmico de PVC e persistência, e um lab canônico de add-on de cluster. Registre comandos, tempos, falhas e cleanup; um bootstrap verde sozinho é insuficiente.
- Execute o caminho de namespace usando um kubeconfig fornecido pelo facilitador, sem Docker nem kind. Confirme que os labs namespace-scoped funcionam e que os passos cluster-wide direcionam o participante para a alternativa read-only.
- Execute
./workshop down --yespara o caminho local e confirme que o cluster kind do workshop foi removido.
Até que esta checklist seja registrada como aprovada, o estado é contract-tested /
live-smoke pending, a story continua parcial e as release notes não podem alegar
suporte oficial ao Windows. Testes automatizados reproduzem a detecção e as mensagens
com stubs, mas não substituem a validação ao vivo no WSL2.