This blog post is about how to run aspnetcore application on Azure managed container service AKS using the dotnet based mini blog template.
I followed a couple of other blogs and github issues to make this work. So let me share the docker file:
FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app
RUN ["dotnet", "restore"]
RUN ["dotnet", "build", "-c", "release"]
EXPOSE 80/tcp
ENTRYPOINT ["dotnet", "run", "--server.urls", "http://*:80"]
and the yaml file is as follows
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myApp-pv-claim
annotations:
volume.beta.kubernetes.io/storage-class: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: myApp
spec:
replicas: 1
minReadySeconds: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: myApp
spec:
containers:
- name: myApp
image: my-register.azurecr.io/myApp:latest
imagePullPolicy: Always
volumeMounts:
- name: myApp-pv-storage
mountPath: /mnt/azure
ports:
- containerPort: 80
imagePullSecrets:
- name: secret-my-register
volumes:
- name: myApp-pv-storage
persistentVolumeClaim:
claimName: myApp-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: myApp
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: myApp
Docker version is 18, and k8s is 1.8
After each merge to master, this is the hook I am using to deploy (the last two lines are not working as expected so I will manually delete the pod to apply the new image, I am sure there is a better way to do this)
docker build -t local-image:latest .
docker tag locale-image:latest my-image-at-azure-acr:latest
az acr login -n my-acr-at-azure
docker push my-image-at-azure-acr:latest
kubectl apply -f myblog.yaml --validate=false
kubectl get pods