A hub for collaboration, learning, networking, and cultural exchange, and contributing to positive global engagement
This blog will help you in deploying a DB2 .NET 7 application on Azure Kubernetes environment. To demonstrate, we will create MVC application, detailed steps are mentioned here.sddd
Section 1: Create MVC App
builder.Services.AddDbContext<MyContext>();
Section 2: Build Docker image
RUN set -e; \ apt-get update; \ apt-get install -y libxml2-dev; ENV LD_LIBRARY_PATH="/app/clidriver/lib/"
For reference here is Dockerfile:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build WORKDIR /src COPY ["MyK8sApp/MyK8sApp.csproj", "MyK8sApp/"] RUN dotnet restore "MyK8sApp/MyK8sApp.csproj" COPY . . WORKDIR "/src/MyK8sApp" RUN dotnet build "MyK8sApp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "MyK8sApp.csproj" -c Release -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app RUN set -e; \ apt-get update; \ apt-get install -y libxml2-dev; COPY --from=publish /app/publish . ENV LD_LIBRARY_PATH="/app/clidriver/lib/" ENTRYPOINT ["dotnet", "MyK8sApp.dll"]
Note: From .NET 8 on-wards User may require to provide Admin privileges in docker file to install libxml2-dev and capturing the traces.
docker build -t myk8sapp:v1 -f MyK8sApp\Dockerfile .
docker run myk8sapp:v1 -ti -p 8080:80
Section 3: Push Docker image to Azure Container Registry (ACR)
az acr login --name myk8sappcontainerregistry
docker tag myk8sapp:v1 myk8sappcontainerregistry.azurecr.io/myk8sapp:v1
docker push myk8sappcontainerregistry.azurecr.io/myk8sapp:v1
Section 4: Deploy the app on Azure Kubernetes Service (AKS)
While creating give Container registry name under Integration tab:
apiVersion: apps/v1 kind: Deployment metadata: name: myk8sapp-deployment spec: replicas: 1 selector: matchLabels: app: myk8sapp template: metadata: labels: app: myk8sapp spec: containers: - name: myk8sappcontainer image: myk8sappcontainerregistry.azurecr.io/myk8sapp:v1 ports: - containerPort: 80
service.yml
apiVersion: v1 kind: Service metadata: name: myk8sapp-service spec: type: LoadBalancer selector: app: myk8sapp ports: - protocol: TCP port: 80 targetPort: 80
az account set --subscription <subscription number>
az aks get-credentials --resource-group kubedemo --name myk8scluster
kubectl apply -f MyK8sApp\deploy.yml,MyK8sApp\service.yml
Copy