2023-02-11

K8s @TechWorldwithNana

https://gitlab.com/nanuchi/youtube-tutorial-series/-/tree/master/demo-kubernetes-components

 https://www.youtube.com/watch?v=azuwXALfyRg&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=20

minikube kubectl -- apply | delete  -f demo.yaml

minikube kubectl -- create | update | delete  deployment nginx-deployment

minikube kubectl -- get deployment | nodes | pod | services | replicaset 

minikube kubectl -- describe pod nginx-deployment-6895854749-7mjft

minikube kubectl -- logs nginx-deployment-6895854749-7mjft

minikube kubectl -- exec nginx-deployment-6895854749-7mjft -- date
Sat Feb 11 10:41:12 UTC 2023

minikube kubectl -- exec -ut nginx-deployment-6895854749-7mjft -- bin/bash
-------------------------
$ minikube kubectl -- apply -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created
$ minikube kubectl -- apply -f nginx-service.yml 
service/nginx-service created
$ minikube kubectl -- get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6895854749-j7kvw   1/1     Running   0          72s
$ minikube kubectl -- get service
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP   16d
nginx-service   ClusterIP   10.103.91.133   <none>        81/TCP    2m19s

$ minikube kubectl -- describe service nginx-service

minikube kubectl -- delete -f nginx-deployment.yaml 
minikube kubectl -- apply -f nginx-deployment.yaml 
minikube kubectl -- get pod -o wide
minikube kubectl -- describe pod

minikube kubectl -- delete -f nginx-service.yml 
minikube kubectl -- apply -f nginx-service.yml 
minikube kubectl -- get service -o wide
minikube kubectl -- describe service

$ minikube kubectl -- get deployment nginx-deployment -o yaml

$ minikube kubectl -- get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-68d9b6c666-nmn7n   1/1     Running   0          32m

NAME                    TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
service/kubernetes      ClusterIP   10.96.0.1     <none>        443/TCP   16d
service/nginx-service   ClusterIP   10.101.5.35   <none>        81/TCP    31m

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   1/1     1            1           32m

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-68d9b6c666   1         1         1       32m

---------------
https://www.youtube.com/watch?v=EQNO_kM96Mo
echo -n 'username' | base64

https://www.youtube.com/watch?v=azuwXALfyRg&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=19
 Kubectl Basic Commands - Create and Debug Pod in a Minikube cluster | Kubernetes Tutorial 18 
kubectl get nodes

kubectl get pod
kubectl describe pod

kubectl get services
kubectl create -h
kubectl get replicaset

kubectl get deployment
kubectl create deployment nginx-depl
kubectl cedit deployment nginx-depl

kubectl exec -it <podname> -- /bin/sh

https://youtu.be/azuwXALfyRg?list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&t=707 

2023-02-08

Docker @TechWorldwithNana

Docker Tutorial for Beginners

 8 Basic Docker Commands || Docker Tutorial 4 

- 2:25 docker pull

 - 4:04 docker run

 - 4:40 docker ps

 - 5:06 docker run --options

 - 6:17 docker stop

 - 6:43 docker start

 - 10:08 - docker ports, docker port mapping

 - docker logs (in part 2)

 - docker exec -it (in part 2) 

Debugging Docker Containers with docker exec and docker logs || Docker Tutorial 5 

 - 1:56 docker logs

 - 5:28 docker exec -it

 Docker vs Virtual Machine | simply explained || Docker Tutorial 6 

 Overview of Workflow with Docker - Docker in Practice || Docker Tutorial 7 

 Developing with Docker - Docker in Practice || Docker Tutorial 8 

0:14 - Pre-Requisites

0:55 - what we will do in this video

1:44 - 1st part: The JavaScript App (HTML, JavaScript Frontend, Node.js Backend)

https://gitlab.com/nanuchi/techworld-js-docker-demo-app

3:30 - 2nd part: MongoDB and Mongo Express Set-Up with Docker

5:00 - Docker Network concept and demo (docker-compose uses docker network under the hood, in the next video(s) I will show you how to do it with docker-compose)

15:33 - 3rd part: Connect Node Server with MongoDB container

0:07 - What is Docker Compose?
1:22 - docker run commands VS docker compose
5:05 - How to use it? - Create the Docker Compose File (Demo)
7:25 - Docker Networking in Docker Compose

 1:49 - What is a Dockerfile?
2:22 - How the Dockerfile commands map to the image environment
8:05 - Create the Dockerfile (Demo)
12:00 - Build an image out of the Dockerfile
15:02 - Start the Application to verify: 1) App starts successfully 2) App environment is configured correctly
19:34 - do improvement - copy only relevant files

 0:21 - When do we need Docker Volumes?
1:02 - What is Docker Volumes?
2:04 - 3 Docker Volumes Types
4:14 - Docker Volumes in docker-compose file

 0:23 - no persistance - docker compose without volumes
2:16 - Define the named volume in docker compose file
5:22 - re-start docker compose and see how data is persisted
6:34 - see where the docker volumes are located on your local machine

 0:38 - Comparison Docker and Kubernetes
1:40 - Docker and Kubernetes in the software development process
2:42 - Kubernetes in Detail
3:21 - Differences of Kubernetes and Docker Swarm

 0:34 - BP 1: Use official and verified Docker Images as Base Image 
1:13 - BP 2: Use Specific Docker Image Versions
2:12 - BP 3: Use Small-Sized Official Images
(FROM node:1.2.3-alpine)
4:35 - BP 4: Optimize Caching Image Layers
10:09- BP 5: Use .dockerignore file
10:55 - BP 6: Make use of Multi-Stage Builds
14:15 - BP 7: Use the Least Privileged User 
16:06 - BP 8: Scan your Images for Security Vulnerabilities
17:50 - Wrap Up

=================================
https://www.youtube.com/watch?v=80Ew_fsV4rM

Ingress, tls certificate

https://www.youtube.com/watch?v=5cNrTU6o3Fw

multiple containers in a pod, yaml example

 

https://www.youtube.com/watch?v=6YisG2GcXaw&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=8

Mongo + NodeJS 

stream the logs: docker -f

https://www.youtube.com/watch?v=WmcdMiyqfZs&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=10

Dockerfile

docker ps -a

docker stop <containerid>

docker rm <containerid>

docker images

docker rmi <imageid>

docker build -t tagname:version .

docker images

docker run tagname:version

docker logs <containerid> -f

docker exec -it <containerid> /bin/sh

env (lists all env vars)

https://www.youtube.com/watch?v=vWSRWpOPHws&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=11

AWS ECR - Elastic Container Registry

https://www.youtube.com/watch?v=p2PH_YPCsis&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=13

Docker volumes

host volume:

docker run -v /home/mount/data:/var/lib/mysql/data

anonymous vokume:

docker run -v /var/lib/mysql/data

named volumes:

docker run -v name:/var/lib/mysql/data

https://www.youtube.com/watch?v=SBUCYJgg4Mk&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=14

volumes demo

https://youtu.be/SBUCYJgg4Mk?list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&t=291

mongo, mysql, postgresql