Hemövningar

Hemövning till 8 feb

Sätt upp Dockerfil → Image, Github Actions och Kubernetes-miljö

Gör en Dockerfile för ditt projekt enligt antlingen följande dokumentations-steg:
Eller enligt mina instruktioner:
Viktigt att Dockerfilen heter exakt “Dockerfile” och ligger i din root-mapp (alltså “start”-mappen / översta mappen i ditt projekt)

Du kan själv sedan builda din applikation med :
docker build -t NAMNET_DU_VILL_HA_PÅ_DIN_IMAGE

Eller köra skapandet av Docker-builden automatiskt via Github Actions och spara den i Docker Hub-repot enligt nedan:
Github Actions

Använd följande GIthub Actions enligt dina secrets ( Repo-settings → Secrets → Actions
bild.png
bild.png
bild.png
bild.png

Tryck in dig på “Actions” i din repo:
bild.png
Skapa ett nytt workflow:
bild.png
Följa en mall eller starta fån grunden.
bild.png
Klistra in denna del som vi satte ihop under lektionen:



name: automation

# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]



# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkar in på den aktuella branschen och repon
uses: actions/checkout@v2

# Använder tillfälligt dotnet-miljön
- name: Setup Dotnet Env
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Kör restore
run: dotnet restore
- name: Kör vår Build
run: dotnet build --no-restore
- name: Genomför unit-tester
run: dotnet test --no-build
- name: Loggar in på Docker
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Building the Docker Image och skickar den till Docker Hub
uses: docker/build-push-action@v2.9.0
with:
push: true
tags: ANVÄNDARNAMN_PÅ_DOCKER_HUB/NAMNET_OCH_TAGEN_TILL_DIN_IMAGE
# Runs a single command using the runners shell
- name: Run a one-line script
run: echo Tack tack, bra jobbat!


# Runs a set of commands using the runners shell
- name: Run a multi-line script
run: |
echo Add other actions to build,
echo test, and deploy your project.

Sätt upp en Virtual Machine på Azure och installera följande miljö:

Se till att du har senaste package-listorna på servern:
sudo apt-get update && sudo apt-get upgrade -y
2. Lägg till paket för https-CURL-hämntningar
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
3. Lägg in verifieringen för att validera dina nedladdningar sen
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
4 Lägg till repot för Kubernetes paket-källa
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
5.Installera Kubernetes
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
och tillåt IP-koppling med IP-tables och nätverksstyrning
echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p

6. Lägg till Docker
sudo apt-get install docker.io

7. Skapa en fil som heter daemon.json med följande innehåll genom detta script:
sudo nano /etc/docker/daemon.json
8. Kopiera in detta i filen:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
7. Tryck sedan:
CTRL+X sedan Y och sedan enter
starta om Docker
sudo systemctl restart docker
Kolla så att rätt driver används av Docker
sudo docker info | grep Cgroup
ipt
Screenshot 2022-02-08 at 06.16.55.png
9. Logga in på Docker:
sudo docker login
10. Hämta din image (Pull request) (tex myapplication/myimage )
sudo docker pull [NAMNET_PÅ_IMAGE]
Eller använd min tillfälligt:

Hämta Kubernetes config-filer
sudo kubeadm config images pull

Initiera Kubernetes
sudo kubeadm init
Om du får fel, åtgärde dem eller kör:
sudo kubeadm init --ignore-preflight-errors=all

Notera och spara den info du får efter din init (speciellt din join-IP och det —token som genererats)
bild.png

11. Sluta vara SU, genom att skriva :
exit
Den får ladda ett litet tag.
Skapa sedan konfigurationsfilerna för Kubernetes:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

/*
sudo kubeadm initcurl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
*/



11. Installera Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
sudo systemctl daemon-reloadsudo nano
docker system prune
minikube delete

sudo usermod -aG docker $USER && newgrp docker
12. Skapa ditt kluster med minikube med antingen
minikube start

eller
minikube start --driver=docker

Du kan behöva öka din storlek på din virtuella maskin till BS2 så den har 2st CPUer och sedan starta minikub
bild.png
bild.png
bild.png

13. Skapa din deployment från din Docker image
$ kubectl create deployment instansnamn --image=namnet_på_image

Öppna upp din nya pod på en port
$ kubectl expose deployment instansnamn --type=NodePort --port=8080

14. Visa dina pods:
kubectl get pods -o wide
15. Visa dina deployments:
kubectl get deployments

16. Skala din deployment
kubectl scale --replicas=7 deployment [NAMNET_PÅ_DEPLOYMENT]

För att ändra inställningarna för din deployment
Skapa en yalm-fil från din nuvarande reployment
kubectl get deployment [namnet på din deployment] -n default -o yaml > deployment.yaml

Kör en ny instruktions-deployment från en Yaml-fil
kubectl apply -f deployment.yaml


Du kan nu koppla en annan VM som också har Kubernetes installerad till ditt kluster:
kubeadm join [din-VM-privata-ip] --token [ditt-token] \
--discovery-token-ca-cert-hash [ditt hashade token]
Du kan även få fram dessa tokens genom:
kubeadm token generate
kubeadm token create <generated-token> --print-join-command --ttl=0

Öppna upp en port mot en av dina services:
kubectl port-forward service/[Service-namnet] port_att_öppna_mot:port_som_leder_dit

Om något går fel med dina pods.
Kubernetes felsök:
kubectl get events
eller:
kubectl describe node [namnet på din nod]

Rest kubernetes cluster using kubeadm
kubeadm reset -f

Du kan nu koppla din nya deployment & pod-miljö mot Nginx
Om du ännu inte installerat Nginx, kör:
apt-get install nginx

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.