Skip to content

Instantly share code, notes, and snippets.

@ktsakalozos
Created April 20, 2018 07:32
Show Gist options
  • Save ktsakalozos/415518c873c721b85749e92b8b1ef822 to your computer and use it in GitHub Desktop.
Save ktsakalozos/415518c873c721b85749e92b8b1ef822 to your computer and use it in GitHub Desktop.
Scripts for ASP.NET delivery to K8s
mkdir -p ~/workspace/dotnet
cd ~/workspace/dotnet
dotnet new razor -o HelloWorldAspNetCore
cd HelloWorldAspNetCore
dotnet run
dotnet publish -c Release
cd ~/workspace/dotnet/HelloWorldAspNetCore/
cat ./Dockerfile
FROM gcr.io/google-appengine/aspnetcore:2.0
ADD ./bin/Release/netcoreapp2.0/publish/ /app
ENV ASPNETCORE_URLS=http://*:${PORT}
WORKDIR /app
ENTRYPOINT [ "dotnet", "HelloWorldAspNetCore.dll"]
docker build -t kjackal/hello-dotnet:v1 .
docker run -p 8080:8080 kjackal/hello-dotnet:v1
################################### GH repo ###########################################
cd ~/workspace/dotnet/HelloWorldAspNetCore
wget https://raw.githubusercontent.com/OmniSharp/generator-aspnet/master/templates/gitignore.txt
mv gitignore.txt .gitignore
git init; git add . ; git commit -m "Initial commit"; git remote add origin git+ssh://git@github.com/ktsakalozos/HelloWorldAspNetCore.git
git push -u origin master
################################## DH #################################################
docker login
docker push kjackal/hello-dotnet:v1
################################### Prep Jenkins K8s ##################################
juju deploy jenkins; juju expose jenkins
juju config jenkins password='your_secure_password'
juju run --unit jenkins/0 -- 'sudo echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'
juju scp kubernetes-master/0:config .
juju scp config jenkins/0:/var/tmp/config
juju run --application kubernetes-worker -- open-port 31576
################################### Jenkins Jobs #######################################
echo "Installing kubectl"
sudo snap install kubectl --classic
echo "Installing dotnet"
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get install apt-transport-https -y
sudo apt-get update
sudo apt-get install dotnet-sdk-2.1.4 -y
echo "Installing docker"
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce -y
sudo /snap/bin/kubectl --kubeconfig=/var/tmp/config run hello-dotnet --image=kjackal/hello-dotnet:v1 --port=8080 --record
echo "apiVersion: v1
kind: Service
metadata:
name: hello-dotnet
spec:
type: NodePort
ports:
- port: 8080
nodePort: 31576
name: http
selector:
run: hello-dotnet" > /tmp/expose.yaml
sudo /snap/bin/kubectl --kubeconfig=/var/tmp/config apply -f /tmp/expose.yaml
#!/bin/bash
REPO="https://github.com/ktsakalozos/HelloWorldAspNetCore.git"
rm -rf ./HelloWorldAspNetCore
git clone $REPO
cd HelloWorldAspNetCore
# Initialise tags list
if [ ! -f /var/tmp/known-tags ]; then
git tag > /var/tmp/known-tags
echo "Initialising. List of preexisting git tags:"
cat /var/tmp/known-tags
exit 1
fi
mv /var/tmp/known-tags /var/tmp/know-tags.old
git tag > /var/tmp/known-tags
diff /var/tmp/known-tags /var/tmp/know-tags.old
if [ $? == '0' ]; then
echo "No new git tags detected."
exit 2
fi
# We have new tags
last_tag=$(grep -v -f /var/tmp/know-tags.old /var/tmp/known-tags | tail -n 1)
git checkout tags/${last_tag}
echo "Buidling ${last_tag}"
dotnet publish -c Release
sudo docker login -u kjackal -p <replace_with_docker_password>
sudo docker build -t kjackal/hello-dotnet:${last_tag} .
sudo docker push kjackal/hello-dotnet:${last_tag}
sudo /snap/bin/kubectl --kubeconfig=/var/tmp/config set image deployment/hello-dotnet hello-dotnet=kjackal/hello-dotnet:${last_tag}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment