Implantação de C# no Kubernetes: guia básico para desenvolvedores

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Implantação de C# no Kubernetes: guia básico

Kubernetes (K8s) tornou-se o padrão de facto para orquestração de aplicações em contêineres. Se você desenvolve em C# (.NET), mais cedo ou mais tarde surgirá a questão: como empacotar sua aplicação e executá-la na nuvem ou em seu próprio cluster. Neste guia, abordaremos o ciclo completo — desde a criação de uma Web API simples em ASP.NET Core até sua implantação no Kubernetes.

O artigo é voltado para desenvolvedores que já conhecem os fundamentos de C# e Docker, mas estão começando a trabalhar com Kubernetes.



1. Preparação da aplicação .NET e da imagem Docker

Antes de implantar a aplicação no Kubernetes, é necessário empacotá-la em um contêiner. Vamos criar uma Web API mínima em C#.

  1. Crie um novo projeto:
    dotnet new webapi -n MyK8sAppcd MyK8sApp
  2. Certifique-se de que a aplicação escuta na porta 80. No arquivo Program.cs (ou appsettings.json), especifique:
    builder.WebHost.UseUrls("http://0.0.0.0:80");
  3. Crie um arquivo Dockerfile na raiz do projeto:
    FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS baseWORKDIR /appEXPOSE 80

    FROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /srcCOPY ["MyK8sApp.csproj", "."]RUN dotnet restore "./MyK8sApp.csproj"COPY . .RUN dotnet build "MyK8sApp.csproj" -c Release -o /app/build

    FROM build AS publishRUN dotnet publish "MyK8sApp.csproj" -c Release -o /app/publish

    FROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "MyK8sApp.dll"]
  4. Construa a imagem e envie-a para um registro (por exemplo, Docker Hub):
    docker build -t yourdockerhub/my-k8s-app:v1 .docker push yourdockerhub/my-k8s-app:v1

Importante: Substitua yourdockerhub pelo nome de usuário real. Para testes locais, você pode usar minikube e não publicar a imagem — basta construí-la localmente.



2. Criação de manifestos Kubernetes

O Kubernetes usa arquivos YAML declarativos para descrever o estado desejado do cluster. Precisaremos de dois objetos principais: Deployment (gerenciamento de pods) e Service (acesso de rede).



2.1. Deployment

Crie o arquivo deployment.yaml:

apiVersion: apps/v1kind: Deploymentmetadata:  name: my-k8s-app-deployment  labels:    app: my-k8s-appspec:  replicas: 2  selector:    matchLabels:      app: my-k8s-app  template:    metadata:      labels:        app: my-k8s-app    spec:      containers:      - name: my-k8s-app        image: yourdockerhub/my-k8s-app:v1        ports:        - containerPort: 80        resources:          requests:            memory: "64Mi"            cpu: "250m"          limits:            memory: "128Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /health            port: 80          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /ready            port: 80          initialDelaySeconds: 3          periodSeconds: 5

Neste manifesto, especificamos:

  • replicas: 2 — duas instâncias da aplicação para tolerância a falhas.
  • resources — limites de CPU e memória (importante para a operação estável do cluster).
  • livenessProbe e readinessProbe — verificações de saúde. Adicione os endpoints /health e /ready ao seu controller.


2.2. Service

Crie o arquivo service.yaml:

apiVersion: v1kind: Servicemetadata:  name: my-k8s-app-servicespec:  selecto                

Blogs

Book Recommendations