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.
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 Server – https://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/
- How to install Docker? – https://www.devopsschool.com/blog/how-to-install-docker-in-linux/
- Lab 1 – https://www.devopsschool.com/blog/docker-lab-excercise-assignment-1/
- Lab 2 – https://www.devopsschool.com/blog/docker-lab-excercise-assignment-2/
- 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 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)