Docker Kubernetes OpenShift Redefined

DevOps

MOTOSHARE 🚗🏍️
Turning Idle Vehicles into Shared Rides & Earnings

From Idle to Income. From Parked to Purpose.
Earn by Sharing, Ride by Renting.
Where Owners Earn, Riders Move.
Owners Earn. Riders Move. Motoshare Connects.

With Motoshare, every parked vehicle finds a purpose. Owners earn. Renters ride.
🚀 Everyone wins.

Start Your Journey with Motoshare

Docker
Kubernetes
OpenShift

QA – https://www.devopsschool.com/forum/
Slides – https://devopsschool.com/slides/
Tutorials – https://www.devopsschool.com/blog/
Commands – https://www.devopsschool.com/commands
Quiz – https://www.devopsschool.xyz/course/view.php?id=42
Videos – https://www.devopsschool.com/blog/top-4-youtube-channel-for-free-videos-tutorials/
certificates – https://www.devopsschool.com/certificates/

Day 1

How to get Lab Serverhttps://docs.google.com/forms/d/1zoDov-hjbMRy7KLKNsGHGlUOgyUVEwN2B_u8JU161Ok/preview

Server Key https://github.com/devopsschool-training-notes/Master-in-Devops-Engineering-MDE/tree/master/key

LAB

How to download putty exe – https://www.devopsschool.com/blog/how-to-login-to-linux-server-using-putty/

  1. How to install Docker? – https://www.devopsschool.com/blog/how-to-install-docker-in-linux/
  2. Lab 1 – https://www.devopsschool.com/blog/docker-lab-excercise-assignment-1/
  3. Lab 2 – https://www.devopsschool.com/blog/docker-lab-excercise-assignment-2/
  4. Lab 3 – https://www.devopsschool.com/blog/the-docker-command-line-complete-referenece/

Day 2

IP - 13.232.76.77


How to create an image?
-=================================


What is Docker image?
======================
ROOT FS + USER FS + APP FS + APP FS + APP FS = Image --> container
=================
   Base Image

Ubuntu
fed
deb
================================
Ubuntu + git + java + apache2 = 5 mins
	=====================
		1 layer

Method 1 - Using Container
Method 2 - Using Dockerfile

  276  ls
  277  docker images
  278  docker ps -a
  279  docker stop b8755f54438b  f95b0f1e4662
  280  clear
  281  docker pull ubuntu
  282  docker images
  283  docker run -itd ubuntu
  284  docker ps
  285  ls
  286  clear
  287  docker ps
  288  docker exec -it 4614899803e4 /bin/bash
  289  clear
  290  docker ps
  291  docker exec 4614899803e4 java
  292  clear
  293  docker exec 4614899803e4 git
  294  clear
  295  docker exec 4614899803e4 which apache2
  296  docker ps
  297  docker commit -m"ub-ap-java-gt" -a"Rajesh Kumar" 4614899803e4 devopsschool
  298  docker images
  299  docker history ubuntu
  300  docker history devopsschool
  301  clear
  302  ls
  303  docker images
  304  docker run -itd devopsschool
  305  docekr ps
  306  clear
  307  docker ps
  308  docker exec 11625fb3d4d3 git
  309  clear
  310  docker exec 11625fb3d4d3 which apache2
  311  docker exec 11625fb3d4d3 java
  312  clear
  313  ls
  314  docker images
  315  docker ps
  316  docker stop 4614899803e4 11625fb3d4d3
  317  docker rm 4614899803e4 11625fb3d4d3
  318  clear
  319  docker images
  320  docker rmi devopsschool
  321  docker images
  322  pwd

Assignment - Create 1 image using base ubuntu and install apache2.


Code language: JavaScript (javascript)
Assignment - Create 1 image using base ubuntu and install apache2.
================================================================
Method 2 - Using Dockerfile


Dockerfile
	INTRUCTIONS

FROM ubuntu
MAINTAINER rajesh kumar devops@rajeshkumar.xyz
ARG USER=rajesh
RUN apt update
RUN apt install git -y
RUN apt install apache2 -y
ENV JAVA_HOME /opt/java
COPY index.html /opt
RUN useradd $USER
USER $USER

  359  ls
  360  vi dockerfile
  361  docker build -t devops3 .
  362  docker ps
  363  clear
  364  docker images
  365  docker run -itd devops3
=======================================================
How to share an image?
 372  docker images
  373  docker tag devops3 devopsschools/bankofworld
  374  docker images
  375  clear
  376  docker login
  377  docker images
  378  docker push devopsschools/bankofworld
================================================================
CMD vs ENTRYPOINT
=====================================

How to to set PID 1

ENTRYPOINT ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]
CMD ["bash"]

CMD -- PID1 CAN BE REPLACED
ENTRYPOINT -- PID1 CAN NOT BE REPLACED

UBUNT - cmd
jenkikns - 
===================
2 CMD
2 ENT
1 CMD 1 CMD

https://www.devopsschool.com/blog/how-to-create-a-image-using-dockerfile/
<blockquote class="wp-embedded-content" data-secret="QprVkrCufB"><a href="https://www.devopsschool.com/blog/example-and-sample-programs-of-dockerfile/">Docker Tutorials: Image – Example and Sample Programs of Dockerfile</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; visibility: hidden;" title="“Docker Tutorials: Image – Example and Sample Programs of Dockerfile” — DevOpsSchool.com" src="https://www.devopsschool.com/blog/example-and-sample-programs-of-dockerfile/embed/#?secret=KnBkrSNYTj#?secret=QprVkrCufB" data-secret="QprVkrCufB" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>


XYZ
--------
run.sh --> XYZ / TOM / JAVA / CENTOS
https://github.com/jenkinsci/docker/blob/587b2856cd225bb152c4abeeaaa24934c75aa460/Dockerfile
https://github.com/dockerfile/ubuntu/blob/master/Dockerfile
https://github.com/docker-library/httpd/blob/master/2.4/DockerfileCode language: HTML, XML (xml)
https://devopsschool.com/slides/
Workstation ------->> Master(S) ---> Worker(S)

Workstation
	kubectl
		~/.kube/config
			API SERVER
			Cert
Master
- Api Server 	-> POD -> Container -> Docker iMage -> Google Registry
- etcd		-> POD -> Container -> Docker iMage -> Google Registry
- Controller mgmr -> POD -> Container -> Docker iMage -> Google Registry
- Scheduled  -> POD -> Container -> Docker iMage -> Google Registry
- Proxy -> -> POD -> Container -> Docker iMage -> Google Registry
 
Kubelet -> Docker - Containerd  - kubectl
kubeadm init

Worker
- Proxy -> -> POD -> Container -> Docker iMage -> Google Registry

Kubelet -> Docker - Containerd  - kubectl
kubeadm join Code language: JavaScript (javascript)

Assignment – https://www.devopsschool.com/forum/d/386-kubernetes-fundamental-question

Day 3

WORKSTATIION - 13.233.172.228

Architecture
Why pod a not accessible outside cluster


Architecture



                        =======================k8 cluster==========================
Workstation                 Master                          Worker
kubectl 
    kube/config             ---> API Server                 Proxy - networking app
                                Proxy
                                etcd
                                schedular
                                contr mgr
                            kubectl                     kubectl
                            kubelet                     kubelet
                            docker                      docker
                            containerd                  containerd
                            kubeadm                     kubeadm


Yaml|CMd

What is Namespace and why its true and false
===================================
Function == microservices == Api
===============================
    Create 

    Read

    Update

    Delete
==================================
HTTP verb
    GET

    PUT 

    POST

    DELETE

API Server == 100s API == 100 of feature
   Create 
        CMD 
                create
        YAML
                create -f yamlfile

    Read
        CMD
                get 
                describe
        YAML
                get -f yamlfile

    Update
        CMD
                edit 
        YAML
                vi file
                apply -f yamlfile

    Delete
        CMD
                delete
        YAML
                delete -f yamlfile


Namespace
POD
ReplicationController
Deployment
Services


namepace perm 
    roles
    rolesbinding
namepace resources 
    - LimitRange
    - ResourceQuota

 22  kubectl
   23  kubectl api-resources
   24  clear
   25  kubectl get ns
   26  kubectl get pods -nkube-system
   27  clear
   28  ls
   29  kubectl api-resources
   30  clear
   31  kubectl
   32  kubectl api-resources
   33  clear
   34  ls
   35  kubectl get ns
   36  kubectl create ns rajesh
   37* kubectl edit 
   38  kubectl create ns dev
   39  kubectl get ns
   40  kubectl api-resources
   41  kubectl api-resources | grep -i quota
   42  clear
   43  kubectl get ns
   44  kubectl edit ns rajesh
   45  kubectl get ns
   46  kubectl describe ns rajesh
   47  clear
   48  ls
   49  kubectl get ns
   50  kubectl delete ns rajesh dev


apiVersion: v1
kind: Namespace
metadata:
  name: devops1
  labels:
    kubernetes.io/metadata.name: devops1

apiVersion: v1
kind: Namespace
metadata:
  name: devops1
  labels:
    kubernetes.io/metadata.name: devops1

   59  mkdir rajesh
   60  cd rajesh/
   61  ls
   62  clear
   63  ls
   64  pwd
   65  ls
   66  vi ns.yaml
   67  kubectl create -f ns.yaml 
   68  kubectl get -f ns.yaml 
   69  vi ns.yaml 
   70  kubectl apply -f ns.yaml 
   71  kubectl describe -f ns.yaml 
   72  kubectl delete -f ns.yaml 
   73  kubectl get ns
   74  history

Lab

https://www.devopsschool.com/blog/working-with-kubernetes-cluster-using-kubectl-part-6-namespaces/






Code language: JavaScript (javascript)

POD

==========================================
POD

apiVersion: v1
kind: Pod
metadata:
  name: rajesh
  labels:
    app: helloworld
spec:
  containers:
  - name: devopsschool1
    image: scmgalaxy/nginx-devopsschoolv1
    ports:
    - name: nginx-port
      containerPort: 80


   35  vi pod.yaml
   36  clear
   37  ls
   38  kubectl get ns
   39  clear
   40  kubectl get pods
   41  kubectl get ns
   42  cler
   43  clear
   44  kubectl get pods -n=rajesh
   45  kubectl get pods 
   46  ls
   47  kubectl create -f pod.yaml
   48  kubectl get pods 
   49  kubectl get pods -n=rajesh
   50  kubectl create -f pod.yaml -n=rajesh
   51  kubectl get pods -n=rajesh
   52  clear
   53  ls
   54  kubectl edit pod rajesh
   55  kubectl describe pod rajesh
   56  kubectl delete -f pod.yaml
   57  kubectl get pods 
   58  kubectl get pods -n=rajesh
   59  kubectl delete pod rajesh -n=rajesh
   60  kubectl get pods -n=rajesh


   Troubleshooting and Debugging Commands:
  describe        Show details of a specific resource or group of resources
  logs            Print the logs for a container in a pod
  attach          Attach to a running container
  exec            Execute a command in a container

  port-forward    Forward one or more local ports to a pod
  kubectl port-forward --address 0.0.0.0 pod/rajesh 8888:80

  cp              Copy files and directories to and from containers
  auth            Inspect authorization

35  vi pod.yaml
   36  clear
   37  ls
   38  kubectl get ns
   39  clear
   40  kubectl get pods
   41  kubectl get ns
   42  cler
   43  clear
   44  kubectl get pods -n=rajesh
   45  kubectl get pods 
   46  ls
   47  kubectl create -f pod.yaml
   48  kubectl get pods 
   49  kubectl get pods -n=rajesh
   50  kubectl create -f pod.yaml -n=rajesh
   51  kubectl get pods -n=rajesh
   52  clear
   53  ls
   54  kubectl edit pod rajesh
   55  kubectl describe pod rajesh
   56  kubectl delete -f pod.yaml
   57  kubectl get pods 
   58  kubectl get pods -n=rajesh
   59  kubectl delete pod rajesh -n=rajesh
   60  kubectl get pods -n=rajesh
   61  history
   62  clear
   63  ls
   64  kubectl 
   65  clear
   66  ls
   67  kubectl get pods
   68  kubectl apply -f pod.yaml
   69  kubectl get pods
   70  clear
   71  ls
   72  kubectl logs rajesh
   73  kubectl get pods -o wide
   74  curl http://Troubleshooting and Debugging Commands:
   75  clear
   76  ls
   77  kubectl get pods -o wide
   78  curl http://192.168.1.4
   79  kubectl logs rajesh
   80  curl http://192.168.1.4
   81  kubectl logs rajesh
   82  curl http://192.168.1.4
   83  kubectl logs rajesh
   84  kubectl attach rajesh
   85  clear
   86  kubectl exec rajesh ls
   87  kubectl exec -it rajesh /bin/basg
   88  kubectl exec -it rajesh /bin/bash
   89  clear
   90  ls
   91  kubectl cp ns.yaml rajesh:/tmp
   92  kubectl exec rajesh ls /tmp
   93  kubectl auth -h
   94  kubectl auth can-i create pod
   95  kubectl
   96  kubectl port-forward
   97  kubectl port-forward -h
   98  kubectl port-forward --address 0.0.0.0 pod/rajesh 8888:80
   99  history

   https://www.devopsschool.com/blog/kubernetes-pod-example-programs/Code language: JavaScript (javascript)

ReplicationController

ReplicationController

      Replication --> 1 POD to N pods
      Controller --> 5 pods === 5 pods

kubectl scale --replicas=20 rc/rajeshrc

apiVersion: v1
kind: ReplicationController
metadata:
  name: rajeshrc
spec:
  replicas: 5
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: scmgalaxy/nginx-devopsschoolv1

 655  cd rajesh/
  656  ls
  657  vi rc.yaml
  658  kubectl get rc
  659  kubectl create -f rc.yaml
  660  kubectl get rc
  661  kubectl get pods
  662  clear
  663  ls
  664  kubectl get pods
  665  kubectl describe pod rajeshrc-7tnm4
  666  clear
  667  kubectl get pods
  668  kubectl
  669  clear
  670  kubectl scale -h
  671  cler
  672  clear
  673  kubectl scale --replicas=20 rs/foo
  674  kubectl scale --replicas=20 rc/rajeshrc
  675  kubectl get rc
  676  kubectl get pods
  677  clear
  678  kubectl scale --replicas=2 rc/rajeshrc
  679  kubectl get pods
  680  kubectl get rc
  681  kubectl delete pods rajeshrc-n5flj
  682  kubectl get rc
  683  kubectl get pods
  684  clear
  685  kubectl delete -f rc.yamlCode language: JavaScript (javascript)

Deployment

Service

kubectl expose deploy my-dep --port=80 --target-port=80

kubectl expose deploy my-dep --port=80 --target-port=80 --type=NodePort --name nodep

kubectl expose deploy my-dep --port=80 --target-port=80 --type=LoadBalancer --name lb

https://www.devopsschool.com/blog/kubernetes-service-example-programs/

https://www.devopsschool.com/blog/kubernetes-tutorials-pod-load-balancing-using-service/Code language: JavaScript (javascript)
apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
    - name: ubuntu-container
      image: ubuntu
      command: ["sleep", "infinity"]  # So that the ubuntu container keeps running
    - name: jenkins-container
      image: jenkins/jenkins:lts
      ports:
        - containerPort: 8080
    - name: nginx-container
      image: nginx
      ports:
        - containerPort: 80
Code language: PHP (php)

Day 4

How to register at Redhat

How to install oc client?

How to deploy App in Openshift?

How to deploy and route an app using cli

Day 5

COMMANDS – Openshift: Top oc Commands

Openshift: Lab 1 – Use the terminal window within the Red Hat OpenShift web console

Openshift: Lab 2 – Install an application from source code in a GitHub repository using the OpenShift web console

Openshift: Lab 3 – Install an application from a Linux container image repository using the OpenShift web console

Openshift: Lab 4 – Install an application from a Linux container image using the oc CLI tool

Openshift: Lab 5 – Install an application from a source code using the oc CLI tool

Openshift: Lab 6 – Scale applications using the OpenShift web consol

Openshift: Lab 7 – Scale applications using the oc CLI tool

Openshift: Lab 8 – Work with databases in OpenShift using the oc CLI tool

Openshift: Lab 9 – Work with databases in the OpenShift web console

How to download redhat pull secret

https://console.redhat.com/openshift/create/local

https://console-openshift-console.apps.rajeshkumar.xyz

Test

Pre Assessment: https://forms.cloud.microsoft/r/pVDuQShZwR

Post Assessment: https://forms.cloud.microsoft/r/5ZhV3bDmXB

https://console-openshift-console.apps.emcyo2ual0c6871da3.centralindia.aroapp.io/
kubeadmin
XYKTb-RUKwW-S9AAk-9IDiNCode language: JavaScript (javascript)

feedback

Feedback: https://forms.cloud.microsoft/r/X2908dqQ8y
Code language: JavaScript (javascript)
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x