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

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

Introdução: Por que executar C# no Kubernetes?

O desenvolvimento moderno em C# (.NET) exige cada vez mais uma infraestrutura escalável e tolerante a falhas. O Kubernetes (K8s) tornou-se o padrão para orquestração de contêineres, permitindo automatizar a implantação, o escalonamento e o gerenciamento de aplicações. Neste guia, mostraremos como transformar sua aplicação C# em um contêiner e executá-la em um cluster Kubernetes na prática.

Você aprenderá como preparar uma imagem Docker, escrever manifestos para Kubernetes e realizar a implantação usando kubectl. O artigo é voltado para desenvolvedores que já conhecem os fundamentos do C# e desejam dominar as práticas modernas de DevOps.



1. Preparando a aplicação C# para conteinerização

Antes de implantar a aplicação no Kubernetes, é necessário empacotá-la em uma imagem Docker. Como exemplo, usaremos uma aplicação simples ASP.NET Core Web API.



1.1. Criando o projeto

Crie um novo projeto usando o .NET CLI:

dotnet new webapi -n MyK8sAppcd MyK8sApp

Certifique-se de que a aplicação funciona localmente:

dotnet run

Por padrão, a aplicação estará disponível em http://localhost:5000.



1.2. Adicionando o Dockerfile

Na raiz do projeto, crie um arquivo Dockerfile (sem extensão). Use a compilação em vários estágios para otimizar o tamanho da imagem:

# Estágio de compilaçãoFROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /appCOPY *.csproj ./RUN dotnet restoreCOPY . ./RUN dotnet publish -c Release -o out

# Estágio de execuçãoFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtimeWORKDIR /appCOPY --from=build /app/out ./ENV ASPNETCORE_URLS=http://+:80EXPOSE 80ENTRYPOINT ["dotnet", "MyK8sApp.dll"]


1.3. Compilando e verificando a imagem Docker

Compile a imagem e execute localmente:

docker build -t myk8sapp:latest .docker run -d -p 8080:80 --name myapp myk8sapp:latest

Verifique se a aplicação responde: curl http://localhost:8080/weatherforecast (ou abra no navegador).



2. Escrevendo manifestos Kubernetes

Para implantar no Kubernetes, são necessários arquivos YAML que descrevam o estado desejado da aplicação. O conjunto mínimo inclui Deployment e Service.



2.1. Criando o Deployment

Arquivo deployment.yaml:

apiVersion: apps/v1kind: Deploymentmetadata:  name: myk8sapp-deployment  labels:    app: myk8sappspec:  replicas: 2  selector:    matchLabels:      app: myk8sapp  template:    metadata:      labels:        app: myk8sapp    spec:      containers:      - name: myk8sapp        image: myk8sapp:latest        ports:        - containerPort: 80        env:        - name: ASPNETCORE_ENVIRONMENT          value: "Production"        resources:          requests:            memory: "128Mi"            cpu: "250m"          limits:            memory: "256Mi"            cpu: "500m"

Importante: Se você estiver usando um cluster local (por exemplo, Minikube ou Kind), a imagem deve estar disponível dentro do cluster. Ou defina imagePullPolicy: Never para imagens locais.



2.2. Criando o Service

Arquivo service.yaml:

apiVersion: v1kind: Servicemetadata:  name: myk8sapp-servicespec:  selector:    app: myk8sapp  ports:    - protocol: TCP      port: 80      targetPort: 80  type: LoadBalancer

O tipo LoadBalancer é adequado para provedores de nuvem. Para clusters locais, use NodePort ou ClusterIP com encaminhamento de porta via kubectl port-forward.



3. Implantação e verificação da aplicação

Agora que os manifestos estão prontos, realize a implantação no cluster Kubernetes.



3.1. Aplicando os manifestos

Blogs

Book Recommendations