title
Complete Application Deployment using Kubernetes Components | Kubernetes Tutorial 20

description
Kubernetes Deployment in Practice using Kubernetes Components. Kubernetes Example Deployment. ► Subscribe To Me On Youtube: https://bit.ly/2z5rvTV Instead of creating each component separate without context, this video goes through a complete application setup using several Kubernetes components: pod, deployment, service, configmap and secret. It's a hands-on, practical tutorial of using the different Kubernetes Components together, which will give you a big picture. Git repo link of the demo: https://gitlab.com/nanuchi/kubernetes-tutorial-series-youtube/-/tree/master/demo-kubernetes-components TIMESTAMPS 0:00 - Intro 0:25 - Overview Diagram of Kubernetes Components we create 1:42 - Browser Request Flow 2:17 - MongoDB Deployment 6:22 - Secret 12:34 - Internal Service for MongoDB 17:09 - MongoExpress Deployment 19:53 - ConfigMap 24:00 - MongoExpress External Service 29:27 - Setup finished - review ------------------------------------------------------------------------------------------------------- Full Kubernetes and Docker tutorial ► https://bit.ly/2YGeRp9 DevOps Tools, like Ansible ► https://bit.ly/2W9UEq6 Kubernetes Volumes ► https://youtu.be/0swOh5C3OVM Complete Jenkins Pipeline Tutorial ► https://youtu.be/7KCS70sCoK0 For any questions/issues/feedback, please leave me a comment and I will get back to you as soon as possible. Also please let me know what you want to learn about Docker & Kubernetes. #kubernetes #kubernetestutorial #devops #techworldwithnana ------------------------------------------------------------------------------------------------------- This video is the 20th of a complete series for beginners. At the end of this tutorial you will fully understand Docker and Kubernetes. The complete step-by-step guide to Docker and Kubernetes will include the following topics: 🐳 DOCKER basics: - Container concept - Why docker? (image vs. traditional DevOps) - Install docker on different operating systems - 8 basic commands you need to know (2 parts) - Docker vs. Virtual Machine - Docker in Practice: Overview of whole development process with Docker (development, continuous delivery, deployment) Probably 3-5 videos including Docker-Compose, Dockerfile, Private Repository. - Docker Volumes in theory and practice ✵ KUBERNETES basics: - Main Kubernetes components (including Pod, Service, Ingress, Volumes, ConfigMap, Secrets, Deployment, StatefulSet) - Kubernetes architecture for beginners (master, slave nodes & processes) - How Kubernetes makes high availability, scalability and disaster recovery possible - Minikube, Kubectl - set up the cluster - Kubectl basic commands - Demo - Configuration file (YAML) - syntax - K8s Deployment in practice - example application deployment (pod + service + configmap + secret) - Kubernetes Namespaces - Kubernetes Volumes ▬▬▬▬▬▬ Connect with me 👋 ▬▬▬▬▬▬ Join private Facebook group ► https://bit.ly/32UVSZP Don't forget to subscribe ► https://bit.ly/3mO4jxT DEV ► https://bit.ly/3h2fqiO INSTAGRAM ► https://bit.ly/2F3LXYJ TWITTER ► https://bit.ly/3i54PUB LINKEDIN ► https://bit.ly/3hWOLVT Legal Notice: Kubernetes and the Kubernetes logo are trademarks or registered trademarks of The Linux Foundation in the United States and/or other countries. The Linux Foundation and other parties may also have trademark rights in other terms used herein. This video is not accredited, certified, affiliated with, nor endorsed by Kubernetes or The Linux Foundation.

detail
{'title': 'Complete Application Deployment using Kubernetes Components | Kubernetes Tutorial 20', 'heatmap': [{'end': 1445.651, 'start': 1425.88, 'weight': 0.895}, {'end': 1743.102, 'start': 1717.109, 'weight': 1}], 'summary': 'This tutorial series on kubernetes deployment covers deploying mongodb and mongo express, setting up mongodb on a minikube cluster, creating and referencing secrets for mongodb deployment, configuring internal services, and deploying mongodb express in a kubernetes environment. it also explores kubernetes service types and deployment, providing a comprehensive guide on the entire process.', 'chapters': [{'end': 119.098, 'segs': [{'end': 70.301, 'src': 'embed', 'start': 1.041, 'weight': 0, 'content': [{'end': 5.983, 'text': "In this video, we're going to deploy two applications, MongoDB and Mongo Express.", 'start': 1.041, 'duration': 4.942}, {'end': 13.567, 'text': 'And I chose these two because it demonstrates really well a typical, simple setup of a web application and its database.', 'start': 6.524, 'duration': 7.043}, {'end': 17.089, 'text': 'So you can apply this to any similar setup you have.', 'start': 14.067, 'duration': 3.022}, {'end': 19.39, 'text': "So let's see how we're going to do this.", 'start': 17.849, 'duration': 1.541}, {'end': 29.392, 'text': 'So first we will create a MongoDB pod.', 'start': 26.488, 'duration': 2.904}, {'end': 34.838, 'text': "And in order to talk to that pod, we are going to need a service and we're going to create an internal service,", 'start': 29.632, 'duration': 5.206}, {'end': 38.983, 'text': 'which basically means that no external requests are allowed to the pod.', 'start': 34.838, 'duration': 4.145}, {'end': 42.207, 'text': 'Only components inside the same cluster can talk to it.', 'start': 39.524, 'duration': 2.683}, {'end': 43.309, 'text': "And that's what we want.", 'start': 42.568, 'duration': 0.741}, {'end': 46.51, 'text': "Then we're going to create a Mongo Express deployment.", 'start': 43.769, 'duration': 2.741}, {'end': 52.453, 'text': "One, we're going to need a database URL of MongoDB so that Mongo Express can connect to it.", 'start': 47.251, 'duration': 5.202}, {'end': 55.014, 'text': 'And the second one is credentials.', 'start': 52.933, 'duration': 2.081}, {'end': 58.496, 'text': 'So username and password of the database so that it can authenticate.', 'start': 55.254, 'duration': 3.242}, {'end': 65.779, 'text': 'So the way we can pass this information to Mongo Express deployment is through its deployment configuration file.', 'start': 59.176, 'duration': 6.603}, {'end': 70.301, 'text': "through environmental variables, because that's how the application is configured.", 'start': 66.479, 'duration': 3.822}], 'summary': 'Deploy mongodb and mongo express for a web app and database, setting up internal service and passing credentials through environmental variables.', 'duration': 69.26, 'max_score': 1.041, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1041.jpg'}], 'start': 1.041, 'title': 'Deploying mongodb and mongo express', 'summary': 'Covers deploying mongodb and mongo express, creating internal and external services, setting up credentials and database url, and ensuring accessibility through a browser in a cluster environment.', 'chapters': [{'end': 119.098, 'start': 1.041, 'title': 'Deploying mongodb and mongo express', 'summary': 'Covers the process of deploying mongodb and mongo express, creating internal and external services, setting up credentials and database url, and ensuring accessibility through a browser, to demonstrate a typical, simple setup of a web application and its database in a cluster environment.', 'duration': 118.057, 'highlights': ['The chapter demonstrates the deployment of MongoDB and Mongo Express to showcase a typical setup of a web application and its database. It highlights the deployment of MongoDB and Mongo Express as a typical setup of a web application and its database.', 'The process involves creating internal and external services to manage communication and accessibility within the cluster environment. It involves creating internal and external services to manage communication and accessibility within the cluster environment.', 'Setting up credentials and database URL is essential for enabling Mongo Express to connect to MongoDB, which is achieved through the deployment configuration file and environmental variables. It emphasizes the importance of setting up credentials and database URL for enabling Mongo Express to connect to MongoDB, accomplished through the deployment configuration file and environmental variables.']}], 'duration': 118.057, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1041.jpg', 'highlights': ['The chapter demonstrates the deployment of MongoDB and Mongo Express for a typical web application setup.', 'Creating internal and external services is essential for managing communication and accessibility within the cluster environment.', 'Setting up credentials and database URL is crucial for enabling Mongo Express to connect to MongoDB.']}, {'end': 311.789, 'segs': [{'end': 141.735, 'src': 'embed', 'start': 119.639, 'weight': 0, 'content': [{'end': 130.529, 'text': "That's basically the database URL here, and it will forward it then to MongoDB pod where it will authenticate the request using the credentials.", 'start': 119.639, 'duration': 10.89}, {'end': 135.093, 'text': "So now let's go and create this whole set up using Kubernetes configuration files.", 'start': 130.99, 'duration': 4.103}, {'end': 138.754, 'text': "Let's dive right into it and create the whole setup.", 'start': 136.132, 'duration': 2.622}, {'end': 141.735, 'text': 'So first of all, I have a minikube cluster running.', 'start': 139.274, 'duration': 2.461}], 'summary': 'Setting up mongodb pod authentication in kubernetes with minikube cluster', 'duration': 22.096, 'max_score': 119.639, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo119639.jpg'}, {'end': 191.929, 'src': 'embed', 'start': 164.847, 'weight': 1, 'content': [{'end': 173.292, 'text': "So I'm going to go to Visual Studio code and paste a prepared deployment file there for MongoDB.", 'start': 164.847, 'duration': 8.445}, {'end': 175.053, 'text': "And this is how it's going to look like.", 'start': 173.572, 'duration': 1.481}, {'end': 179.475, 'text': 'So I have deployment kind and I have some metadata.', 'start': 175.673, 'duration': 3.802}, {'end': 181.816, 'text': "I'm just going to call it MongoDB deployment.", 'start': 179.875, 'duration': 1.941}, {'end': 184.944, 'text': 'labels and selectors.', 'start': 183.763, 'duration': 1.181}, {'end': 191.929, 'text': 'In the previous video, I already explained the syntax of Kubernetes YAML configuration file.', 'start': 185.644, 'duration': 6.285}], 'summary': 'Preparing mongodb deployment file in visual studio code for kubernetes.', 'duration': 27.082, 'max_score': 164.847, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo164847.jpg'}, {'end': 311.789, 'src': 'embed', 'start': 213.744, 'weight': 2, 'content': [{'end': 218.346, 'text': "So let's actually go and check out the image configuration for MongoDB.", 'start': 213.744, 'duration': 4.602}, {'end': 221.287, 'text': 'So Mongo.', 'start': 220.006, 'duration': 1.281}, {'end': 228.11, 'text': "And I see this image here, let's open this.", 'start': 223.868, 'duration': 4.242}, {'end': 235.121, 'text': "And basically what I'm looking for is how to use that container,", 'start': 229.537, 'duration': 5.584}, {'end': 240.284, 'text': "meaning what ports it's going to open and what's external configuration it's going to take.", 'start': 235.121, 'duration': 5.163}, {'end': 247.909, 'text': 'So a default port of MongoDB container is twenty seven thousand seventeen.', 'start': 240.884, 'duration': 7.025}, {'end': 249.49, 'text': "So I'm going to use that.", 'start': 248.589, 'duration': 0.901}, {'end': 258.274, 'text': 'And we are going to use variables, environmental variables, the root username and root password.', 'start': 251.187, 'duration': 7.087}, {'end': 264.46, 'text': 'So basically, I can on the container startup define the admin username and password.', 'start': 258.534, 'duration': 5.926}, {'end': 268.904, 'text': "So let's go ahead and configure all of that inside the configuration file.", 'start': 264.72, 'duration': 4.184}, {'end': 272.766, 'text': 'So here below the image of MongoDB.', 'start': 269.784, 'duration': 2.982}, {'end': 277.47, 'text': "So we're just going to leave the name of the image and it's going to pull the latest one.", 'start': 272.827, 'duration': 4.643}, {'end': 278.571, 'text': "And that's what we want.", 'start': 277.81, 'duration': 0.761}, {'end': 282.594, 'text': "So here I'm going to specify what port I want to expose.", 'start': 279.071, 'duration': 3.523}, {'end': 290.32, 'text': 'So ports attribute name and container port.', 'start': 283.135, 'duration': 7.185}, {'end': 294.918, 'text': "And that's the standard port.", 'start': 293.257, 'duration': 1.661}, {'end': 295.679, 'text': "So I'm going to leave it.", 'start': 294.938, 'duration': 0.741}, {'end': 301.623, 'text': "And below that, I'm going to specify those two environmental variables.", 'start': 296.199, 'duration': 5.424}, {'end': 304.544, 'text': 'So one is called.', 'start': 302.203, 'duration': 2.341}, {'end': 305.765, 'text': "Let's see what it's called.", 'start': 304.885, 'duration': 0.88}, {'end': 308.807, 'text': "It's Mongo in a DB user name.", 'start': 306.045, 'duration': 2.762}, {'end': 311.789, 'text': 'And here is going to be a value.', 'start': 309.608, 'duration': 2.181}], 'summary': 'Configuring mongodb image with default port 27017 and environmental variables for admin username and password.', 'duration': 98.045, 'max_score': 213.744, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo213744.jpg'}], 'start': 119.639, 'title': 'Setting up mongodb on kubernetes', 'summary': 'Details the process of setting up a mongodb deployment on a minikube cluster using kubernetes configuration files and creating a single replica container with a specific image. it also explores configuring a mongodb image, specifying the default port as 27017 and setting up environmental variables for the root username and password.', 'chapters': [{'end': 213.423, 'start': 119.639, 'title': 'Setting up mongodb on kubernetes', 'summary': 'Details the process of setting up a mongodb deployment on a minikube cluster using kubernetes configuration files, starting from scratch and creating a single replica container with a specific image.', 'duration': 93.784, 'highlights': ['The chapter details the process of setting up a MongoDB deployment on a minikube cluster using Kubernetes configuration files, starting from scratch and creating a single replica container with a specific image.', 'The speaker mentions using a minikube cluster to set up the MongoDB deployment, indicating a starting point for the configuration process.', "A specific YAML configuration file for the MongoDB deployment is pasted into Visual Studio code, outlining the deployment's kind, metadata, labels, selectors, and template with one replica container."]}, {'end': 311.789, 'start': 213.744, 'title': 'Configuring mongodb image', 'summary': 'Explores configuring a mongodb image, specifying the default port as 27017 and setting up environmental variables for the root username and password.', 'duration': 98.045, 'highlights': ['The default port of MongoDB container is set to 27017, which is going to be utilized.', 'Environmental variables for the root username and root password are established for container startup.', 'The configuration involves specifying the port to expose and defining environmental variables for the container.']}], 'duration': 192.15, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo119639.jpg', 'highlights': ['The chapter details the process of setting up a MongoDB deployment on a minikube cluster using Kubernetes configuration files, starting from scratch and creating a single replica container with a specific image.', "A specific YAML configuration file for the MongoDB deployment is pasted into Visual Studio code, outlining the deployment's kind, metadata, labels, selectors, and template with one replica container.", 'The default port of MongoDB container is set to 27017, which is going to be utilized.', 'Environmental variables for the root username and root password are established for container startup.', 'The configuration involves specifying the port to expose and defining environmental variables for the container.', 'The speaker mentions using a minikube cluster to set up the MongoDB deployment, indicating a starting point for the configuration process.']}, {'end': 754.31, 'segs': [{'end': 509.865, 'src': 'embed', 'start': 471.518, 'weight': 0, 'content': [{'end': 474.18, 'text': "So I'm just going to go with just username.", 'start': 471.518, 'duration': 2.662}, {'end': 486.23, 'text': "whatever. Of course you can have something more secretive here, and I'm going to base 64 encoded and the value that I get here.", 'start': 474.76, 'duration': 11.47}, {'end': 492.395, 'text': "I'm going to copy it into the secret configuration as a value and I'm going to do the same with password.", 'start': 486.23, 'duration': 6.165}, {'end': 496.676, 'text': "So Again, I'm just going to go with simple password.", 'start': 493.295, 'duration': 3.381}, {'end': 509.865, 'text': "Obviously, you want to have something more secure, and I'm going to copy that as a value here and save it as Mongo secret dot Yemo.", 'start': 496.756, 'duration': 13.109}], 'summary': 'Using username and password for secret configuration, to be saved as base 64 encoded values and in mongo secret dot yemo.', 'duration': 38.347, 'max_score': 471.518, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo471518.jpg'}, {'end': 615.719, 'src': 'embed', 'start': 527.753, 'weight': 1, 'content': [{'end': 536.856, 'text': "So the order of creation matters, because if I'm creating a deployment that references a secret that doesn't exist yet, I'm going to get an error.", 'start': 527.753, 'duration': 9.103}, {'end': 540.338, 'text': "So it's not going to start since we have our first component.", 'start': 537.117, 'duration': 3.221}, {'end': 544.119, 'text': "Let's actually go ahead and create our secret from a configuration file.", 'start': 540.438, 'duration': 3.681}, {'end': 549.561, 'text': "So again, I'm going to go to my And so it's actually clear all this.", 'start': 544.799, 'duration': 4.762}, {'end': 555.726, 'text': "And I'm going to go into the folder where I'm creating all these configuration files.", 'start': 550.502, 'duration': 5.224}, {'end': 558.668, 'text': 'I called it Kubernetes configuration.', 'start': 556.566, 'duration': 2.102}, {'end': 560.569, 'text': 'And here I have both of my files.', 'start': 558.888, 'duration': 1.681}, {'end': 566.233, 'text': "So I'm I'm going to do QCTL apply Mongo secret.", 'start': 561.189, 'duration': 5.044}, {'end': 570.395, 'text': 'And secret created.', 'start': 569.034, 'duration': 1.361}, {'end': 573.558, 'text': "So I'm going to do QCTL get secret.", 'start': 570.856, 'duration': 2.702}, {'end': 577.541, 'text': 'And I should see my secret has been created.', 'start': 574.68, 'duration': 2.861}, {'end': 581.242, 'text': 'This is something created by default with a different type.', 'start': 578.401, 'duration': 2.841}, {'end': 583.142, 'text': 'And this is our secret here.', 'start': 581.782, 'duration': 1.36}, {'end': 590.365, 'text': 'So now that we have our secrets, we can reference it inside of our deployment configuration file.', 'start': 584.083, 'duration': 6.282}, {'end': 591.605, 'text': "So let's go back.", 'start': 590.885, 'duration': 0.72}, {'end': 598.787, 'text': 'And this is how you reference contents, specific key value data of secret.', 'start': 592.465, 'duration': 6.322}, {'end': 611.012, 'text': "So instead of value, we're going to say value from, And then I'm going to do secret key ref, secret key reference,", 'start': 599.507, 'duration': 11.505}, {'end': 614.297, 'text': 'and name is going to be the secret name.', 'start': 611.012, 'duration': 3.285}, {'end': 615.719, 'text': 'So this one here.', 'start': 614.998, 'duration': 0.721}], 'summary': 'Creating and referencing secrets in kubernetes deployment, ensuring order of creation for error-free deployment.', 'duration': 87.966, 'max_score': 527.753, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo527753.jpg'}, {'end': 694.905, 'src': 'embed', 'start': 661.842, 'weight': 4, 'content': [{'end': 668.426, 'text': "So I'm going to use password key here and that will be it.", 'start': 661.842, 'duration': 6.584}, {'end': 669.587, 'text': 'So now we have.', 'start': 668.806, 'duration': 0.781}, {'end': 680.293, 'text': 'the root username and password referenced from the secret and no actual values inside the configuration file,', 'start': 671.246, 'duration': 9.047}, {'end': 684.937, 'text': "which is good for security because you don't want your credentials in your code repository.", 'start': 680.293, 'duration': 4.644}, {'end': 688.86, 'text': 'OK, so our deployment file is actually ready.', 'start': 686.038, 'duration': 2.822}, {'end': 690.581, 'text': "So let's apply that.", 'start': 689.28, 'duration': 1.301}, {'end': 694.905, 'text': 'City apply.', 'start': 694.144, 'duration': 0.761}], 'summary': 'Deployment file ready with secure root username and password references. applied successfully.', 'duration': 33.063, 'max_score': 661.842, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo661842.jpg'}], 'start': 311.809, 'title': 'Creating and referencing secrets for mongodb deployment', 'summary': 'Provides a detailed guide on creating secrets in kubernetes for storing mongodb credentials, emphasizing base64 encoding and deployment order. it also covers referencing secrets in deployment configuration files, focusing on security measures and key value data access.', 'chapters': [{'end': 581.242, 'start': 311.809, 'title': 'Creating secrets for mongodb deployment', 'summary': 'Discusses the process of creating a secret in kubernetes to store the root username and password for a mongodb deployment, emphasizing the importance of base64 encoding and the order of creation for successful deployment.', 'duration': 269.433, 'highlights': ['The process of creating a secret in Kubernetes to store the root username and password for a MongoDB deployment is crucial for ensuring security, and it involves base64 encoding the values, as demonstrated in the transcript. Security measures, base64 encoding', 'Emphasizing the significance of the order of creation, the speaker explains that the secret must be created before the deployment to avoid errors, demonstrating the importance of proper sequence in the deployment process. Importance of order of creation', "Demonstrating the usage of 'kubectl apply' command to create a secret in Kubernetes, the speaker showcases the practical implementation of creating and verifying the secret for the MongoDB deployment. Usage of 'kubectl apply' command"]}, {'end': 754.31, 'start': 581.782, 'title': 'Referencing secrets in deployment configuration', 'summary': 'Discusses referencing secrets in deployment configuration files, including using secret key references to access specific key value data and ensuring security by not storing actual values in the configuration file.', 'duration': 172.528, 'highlights': ['You can reference specific key value data of a secret using secret key references, ensuring security by not storing actual values in the configuration file.', 'References to the root username and password from the secret are made, ensuring that no actual values are stored in the configuration file for security purposes.', "The deployment file is ready and can be applied using 'City apply', resulting in the creation of the deployment and the pod starting up.", 'It is important to avoid storing credentials in code repositories for security reasons.']}], 'duration': 442.501, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo311809.jpg', 'highlights': ['Security measures, base64 encoding', 'Importance of order of creation', "Usage of 'kubectl apply' command", 'Referencing specific key value data of a secret', 'Avoid storing credentials in code repositories']}, {'end': 1029.675, 'segs': [{'end': 826.356, 'src': 'embed', 'start': 802.08, 'weight': 0, 'content': [{'end': 809.765, 'text': "And by the way, I'm going to put all these configuration files in Git repository and link the repository in the description of this video.", 'start': 802.08, 'duration': 7.685}, {'end': 812.446, 'text': 'So this is a service for MongoDB.', 'start': 810.545, 'duration': 1.901}, {'end': 814.948, 'text': "Let's go through some of the attributes here.", 'start': 812.807, 'duration': 2.141}, {'end': 818.531, 'text': "So it's the service kind, just the name.", 'start': 815.408, 'duration': 3.123}, {'end': 821.432, 'text': "We're going to call it MongoDB service selector.", 'start': 818.791, 'duration': 2.641}, {'end': 826.356, 'text': 'This is an important one because we want this service to connect to the pod.', 'start': 821.753, 'duration': 4.603}], 'summary': 'Config files for mongodb service will be stored in git repository.', 'duration': 24.276, 'max_score': 802.08, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo802080.jpg'}, {'end': 937.826, 'src': 'embed', 'start': 906.952, 'weight': 2, 'content': [{'end': 908.293, 'text': 'deployment and service can be changed.', 'start': 906.952, 'duration': 1.341}, {'end': 914.68, 'text': 'So I think using local configuration files is a handy way to edit your components.', 'start': 908.534, 'duration': 6.146}, {'end': 917.723, 'text': "So now let's actually check that our service was created.", 'start': 915.241, 'duration': 2.482}, {'end': 919.225, 'text': 'Get service.', 'start': 918.604, 'duration': 0.621}, {'end': 927.321, 'text': "And this is our service and it's listening at port twenty seven thousand seventeen.", 'start': 922.538, 'duration': 4.783}, {'end': 929.782, 'text': 'And I showed it in one of the previous videos.', 'start': 927.841, 'duration': 1.941}, {'end': 934.824, 'text': 'But we can actually also validate that the service is attached to the correct pod.', 'start': 930.062, 'duration': 4.762}, {'end': 937.826, 'text': "And to do that, I'm going to do describe.", 'start': 935.625, 'duration': 2.201}], 'summary': 'Using local configuration files is handy for editing components; service is listening at port 27017.', 'duration': 30.874, 'max_score': 906.952, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo906952.jpg'}, {'end': 1029.675, 'src': 'embed', 'start': 961.869, 'weight': 1, 'content': [{'end': 973.756, 'text': 'So if I do get part and I want additional output to what I get by default, one of the columns includes the IP address, which is this one right here.', 'start': 961.869, 'duration': 11.887}, {'end': 979.863, 'text': 'So hundred seventy two point seventeen oh six.', 'start': 974.497, 'duration': 5.366}, {'end': 981.804, 'text': "That's the port IP address.", 'start': 980.543, 'duration': 1.261}, {'end': 987.985, 'text': 'And this is the port where the application inside the pod is listening.', 'start': 982.584, 'duration': 5.401}, {'end': 990.246, 'text': 'So everything is set up perfectly.', 'start': 988.545, 'duration': 1.701}, {'end': 992.867, 'text': 'MongoDB deployment and service has been created.', 'start': 990.646, 'duration': 2.221}, {'end': 1003.101, 'text': 'And by the way, if you want to see all the components for one, application, you can also display them using Cube City.', 'start': 993.507, 'duration': 9.594}, {'end': 1009.167, 'text': "I'll get all that will show all the components and you can filter them by name.", 'start': 1003.181, 'duration': 5.986}, {'end': 1010.969, 'text': 'So on go.', 'start': 1009.407, 'duration': 1.562}, {'end': 1014.953, 'text': 'And here you see the service.', 'start': 1013.511, 'duration': 1.442}, {'end': 1019.717, 'text': 'Deployment replica said and the pod.', 'start': 1016.514, 'duration': 3.203}, {'end': 1025.314, 'text': 'So when you do all the component type will be the first here.', 'start': 1020.652, 'duration': 4.662}, {'end': 1027.714, 'text': "OK, that's just a side info.", 'start': 1025.753, 'duration': 1.961}, {'end': 1029.675, 'text': 'So now is the next step.', 'start': 1028.295, 'duration': 1.38}], 'summary': 'Successfully deployed mongodb with ip address 172.17.0.6 and components displayed using cube city.', 'duration': 67.806, 'max_score': 961.869, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo961869.jpg'}], 'start': 755.01, 'title': 'Creating and configuring internal services in kubernetes', 'summary': 'Covers creating an internal service for mongodb in yaml configuration, ensuring proper label and selector usage, and validating kubernetes services and deployments through local configuration files. it also confirms the creation of a service listening at port 27017 and its attachment to the correct pod using describe and get commands.', 'chapters': [{'end': 876.262, 'start': 755.01, 'title': 'Creating internal service for mongodb', 'summary': 'Discusses creating an internal service for mongodb in yaml configuration, linking it to a git repository, and ensuring proper selector and label usage, with the intention of allowing other components or ports to connect to the mongodb service.', 'duration': 121.252, 'highlights': ['The chapter emphasizes the creation of an internal service for MongoDB within a YAML configuration file, highlighting the importance of properly configuring the service selector and label to facilitate connection with the pod.', 'It mentions the inclusion of all configuration files in a Git repository and provides a link to the repository in the video description.', 'The importance of exposing the service port and ensuring its compatibility with the container port is explained, with an emphasis on matching the target port to the container or pod port.']}, {'end': 1029.675, 'start': 877.322, 'title': 'Configuring kubernetes services', 'summary': "Demonstrates the process of creating and validating kubernetes services and deployments through local configuration files, confirming the creation of a service listening at port 27017, and verifying the service's attachment to the correct pod using describe and get commands.", 'duration': 152.353, 'highlights': ['The service is created and listening at port 27017, facilitating the validation of service creation and configuration.', 'The endpoint IP address and port of the pod are obtained to confirm the correct attachment of the service.', 'Local configuration files provide a convenient means to edit components, enabling changes in both deployment and service configurations.', "Using 'kubectl get all' allows the display and filtering of all components for an application, including services, deployments, replica sets, and pods."]}], 'duration': 274.665, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo755010.jpg', 'highlights': ['The chapter emphasizes creating an internal service for MongoDB in a YAML configuration file, focusing on proper label and selector usage.', 'The service is created and listening at port 27017, facilitating the validation of service creation and configuration.', 'Local configuration files provide a convenient means to edit components, enabling changes in both deployment and service configurations.', "Using 'kubectl get all' allows the display and filtering of all components for an application."]}, {'end': 1596.002, 'segs': [{'end': 1090.998, 'src': 'embed', 'start': 1029.715, 'weight': 0, 'content': [{'end': 1039.319, 'text': "We're going to create Mongo Express deployment and service and also an external configuration where we're going to put the database URL from going to be.", 'start': 1029.715, 'duration': 9.604}, {'end': 1040.819, 'text': "So let's go ahead and do it.", 'start': 1039.72, 'duration': 1.099}, {'end': 1048.363, 'text': "So I'm going to clear that up and go and create a new file for Mongo Express deployment and service.", 'start': 1041.64, 'duration': 6.723}, {'end': 1054.374, 'text': 'So this is the deployment draft of Mungo Express.', 'start': 1050.091, 'duration': 4.283}, {'end': 1056.136, 'text': 'Same things here.', 'start': 1055.275, 'duration': 0.861}, {'end': 1057.116, 'text': 'Mungo Express.', 'start': 1056.336, 'duration': 0.78}, {'end': 1057.897, 'text': "That's the name.", 'start': 1057.216, 'duration': 0.681}, {'end': 1064.282, 'text': 'And here we have the pod definition where the image name is Mungo Express.', 'start': 1059.238, 'duration': 5.044}, {'end': 1067.504, 'text': "Let's actually go ahead and check that image as well.", 'start': 1064.942, 'duration': 2.562}, {'end': 1070.606, 'text': "We don't need this express.", 'start': 1069.165, 'duration': 1.441}, {'end': 1075.658, 'text': "And that's the name of the image more express.", 'start': 1073.536, 'duration': 2.122}, {'end': 1078.121, 'text': "And let's see the same data here.", 'start': 1076.279, 'duration': 1.842}, {'end': 1079.402, 'text': "Let's see the port.", 'start': 1078.141, 'duration': 1.261}, {'end': 1085.168, 'text': 'The express application inside the container starts at is eighty eighty one.', 'start': 1079.803, 'duration': 5.365}, {'end': 1090.998, 'text': 'And These are some of the environmental variables.', 'start': 1085.188, 'duration': 5.81}], 'summary': 'Creating mongo express deployment and service with pod definition and environmental variables.', 'duration': 61.283, 'max_score': 1029.715, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1029714.jpg'}, {'end': 1200.875, 'src': 'embed', 'start': 1168.029, 'weight': 1, 'content': [{'end': 1170.551, 'text': "So I'm going to paste it here.", 'start': 1168.029, 'duration': 2.522}, {'end': 1177.682, 'text': 'Second environmental variable is called a password.', 'start': 1174.159, 'duration': 3.523}, {'end': 1181.526, 'text': "And I'm also going to copy that from here.", 'start': 1179.244, 'duration': 2.282}, {'end': 1190.534, 'text': 'And the third one is going to be the database server.', 'start': 1184.669, 'duration': 5.865}, {'end': 1200.875, 'text': 'And since this is also an external configuration, we could either do value here and we could write the MongoDB server address directly here.', 'start': 1191.232, 'duration': 9.643}], 'summary': 'Configuring three environmental variables: password, database server, and mongodb server address.', 'duration': 32.846, 'max_score': 1168.029, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1168029.jpg'}, {'end': 1252.422, 'src': 'embed', 'start': 1224.086, 'weight': 2, 'content': [{'end': 1229.35, 'text': 'And if I have to change it at some point, I just change it in one place and nothing else gets updated.', 'start': 1224.086, 'duration': 5.264}, {'end': 1231.312, 'text': 'So, because of that,', 'start': 1229.691, 'duration': 1.621}, {'end': 1242.241, 'text': "we're going to keep this incomplete deployment configuration and we're going to create the config map which will contain the MongoDB server address.", 'start': 1231.312, 'duration': 10.929}, {'end': 1244.474, 'text': "So I'm going to create a new file.", 'start': 1242.972, 'duration': 1.502}, {'end': 1247.457, 'text': "Let's actually save this incomplete deployment.", 'start': 1244.614, 'duration': 2.843}, {'end': 1252.422, 'text': "Let's call it Mongo Express YAML and we're going to come back to it later.", 'start': 1248.037, 'duration': 4.385}], 'summary': 'Maintaining one configuration point reduces update complexity.', 'duration': 28.336, 'max_score': 1224.086, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1224086.jpg'}, {'end': 1453.014, 'src': 'heatmap', 'start': 1425.88, 'weight': 0.895, 'content': [{'end': 1429.62, 'text': "And it's running and I actually want to see the logs.", 'start': 1425.88, 'duration': 3.74}, {'end': 1432.581, 'text': "So I'm going to lock the express.", 'start': 1430.661, 'duration': 1.92}, {'end': 1439.948, 'text': 'And here you see that Express service started and database connected.', 'start': 1435.566, 'duration': 4.382}, {'end': 1445.651, 'text': 'So now the final step is to access Mongo Express from a browser.', 'start': 1440.628, 'duration': 5.023}, {'end': 1450.033, 'text': 'And in order to do that, we are going to need an external service for Mongo Express.', 'start': 1446.031, 'duration': 4.002}, {'end': 1453.014, 'text': "So let's go ahead and create that one as well.", 'start': 1450.573, 'duration': 2.441}], 'summary': 'Express service started, database connected. setting up external service for mongo express.', 'duration': 27.134, 'max_score': 1425.88, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1425880.jpg'}, {'end': 1567.223, 'src': 'embed', 'start': 1537.842, 'weight': 3, 'content': [{'end': 1547.209, 'text': 'But what this type load balancer does basically is it accepts external requests by assigning the service an external IP address.', 'start': 1537.842, 'duration': 9.367}, {'end': 1553.613, 'text': "So another thing that we're going to do here to make this service external is right here.", 'start': 1547.869, 'duration': 5.744}, {'end': 1558.897, 'text': "We're going to provide third port and this is going to be called node port.", 'start': 1553.714, 'duration': 5.183}, {'end': 1567.223, 'text': 'And what this is basically is the port where this external IP address will be open.', 'start': 1560.759, 'duration': 6.464}], 'summary': 'The load balancer assigns an external ip address to handle external requests and opens a node port for the external ip address.', 'duration': 29.381, 'max_score': 1537.842, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1537842.jpg'}], 'start': 1029.715, 'title': 'Mongodb express deployment and configuration in kubernetes', 'summary': 'Covers the creation of mongo express deployment and service with an external configuration for the database url, setting up environmental variables, creating config maps, and external services in kubernetes. it includes details about pod definition, image name, defining database connectivity, and creating environmental variables.', 'chapters': [{'end': 1090.998, 'start': 1029.715, 'title': 'Mongo express deployment', 'summary': 'Covers creating a mongo express deployment and service with an external configuration for the database url. it also includes details about the pod definition, image name, and environmental variables.', 'duration': 61.283, 'highlights': ['Creating Mongo Express deployment and service with an external configuration for the database URL', 'Details about the pod definition, image name, and environmental variables', 'Express application inside the container starts at port 8081']}, {'end': 1596.002, 'start': 1091.318, 'title': 'Configuring mongodb express in kubernetes', 'summary': 'Covers setting up environmental variables and creating config maps and external services for mongodb express deployment in kubernetes, with key points including defining database connectivity, creating environmental variables, creating config maps, and configuring external services.', 'duration': 504.684, 'highlights': ['Creating environmental variables for connectivity The chapter emphasizes the importance of defining environmental variables for database connectivity, including username, password, and server address.', 'Creating config maps for centralized configuration The process of creating config maps for storing the MongoDB server address in a centralized location is explained, highlighting the benefits of centralized configuration and its impact on multiple applications.', 'Configuring external service for MongoDB Express The process of configuring an external service for MongoDB Express is detailed, covering the use of the load balancer type and defining a node port for external access.']}], 'duration': 566.287, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1029714.jpg', 'highlights': ['Creating Mongo Express deployment and service with an external configuration for the database URL', 'Creating environmental variables for database connectivity, including username, password, and server address', 'Creating config maps for centralized configuration of MongoDB server address', 'Configuring external service for MongoDB Express with load balancer type and defining a node port for external access', 'Details about the pod definition, image name, and environmental variables', 'Express application inside the container starts at port 8081']}, {'end': 1825.929, 'segs': [{'end': 1697.002, 'src': 'embed', 'start': 1648.357, 'weight': 0, 'content': [{'end': 1657.283, 'text': 'And the difference here is that cluster IP will give the service an internal IP address, which is this one right here.', 'start': 1648.357, 'duration': 8.926}, {'end': 1665.589, 'text': 'So this is an internal IP address of the service and load balancer will also give service an internal IP address.', 'start': 1658.044, 'duration': 7.545}, {'end': 1674.254, 'text': 'But in addition to that, it will also give the service an external IP address where the external requests will be coming from.', 'start': 1665.889, 'duration': 8.365}, {'end': 1681.097, 'text': "And here it says pending because we're in Minikube and it works a little bit differently in a regular Kubernetes setup.", 'start': 1674.634, 'duration': 6.463}, {'end': 1684.478, 'text': 'Here you would also see an actual IP address, a public one.', 'start': 1681.197, 'duration': 3.281}, {'end': 1695.322, 'text': 'And this is another difference, because with internal IP address, you just have port for that IP address with both internal and external IP addresses.', 'start': 1684.998, 'duration': 10.324}, {'end': 1697.002, 'text': 'You have ports for both of them.', 'start': 1695.342, 'duration': 1.66}], 'summary': 'Cluster ip provides internal ip address, load balancer provides internal and external ip addresses for services.', 'duration': 48.645, 'max_score': 1648.357, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1648357.jpg'}, {'end': 1743.102, 'src': 'heatmap', 'start': 1717.109, 'weight': 1, 'content': [{'end': 1722.592, 'text': 'So this command will basically assign external service a public IP address.', 'start': 1717.109, 'duration': 5.483}, {'end': 1726.233, 'text': "So I'm going to execute this and the browser window will open.", 'start': 1723.152, 'duration': 3.081}, {'end': 1729.678, 'text': 'and I will see my Mongo Express page.', 'start': 1727.697, 'duration': 1.981}, {'end': 1731.878, 'text': 'So if I go back to the command line,', 'start': 1730.118, 'duration': 1.76}, {'end': 1743.102, 'text': 'you see that this command here assigned Mongo Express service a URL with a public IP address or with an external IP address and the port,', 'start': 1731.878, 'duration': 11.224}], 'summary': 'Assigned public ip to external service for accessing mongo express page.', 'duration': 25.993, 'max_score': 1717.109, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1717109.jpg'}, {'end': 1806.717, 'src': 'embed', 'start': 1781.405, 'weight': 2, 'content': [{'end': 1786.711, 'text': 'and the Mongo Express pod connected to the MongoDB service and internal service,', 'start': 1781.405, 'duration': 5.306}, {'end': 1793.019, 'text': 'and MongoDB service then forwarded that request finally to the MongoDB pod and then all the way back.', 'start': 1786.711, 'duration': 6.308}, {'end': 1795.422, 'text': 'And we have the changes here.', 'start': 1793.439, 'duration': 1.983}, {'end': 1800.448, 'text': "So that's how you deploy a simple application set up in a Kubernetes cluster.", 'start': 1796.443, 'duration': 4.005}, {'end': 1803.675, 'text': 'Thanks for watching the video.', 'start': 1802.534, 'duration': 1.141}, {'end': 1806.717, 'text': "I hope it was helpful and if it was, don't forget to like it.", 'start': 1803.795, 'duration': 2.922}], 'summary': 'Deployed a simple application in a kubernetes cluster with interconnected pods and services.', 'duration': 25.312, 'max_score': 1781.405, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1781405.jpg'}], 'start': 1596.082, 'title': 'Kubernetes service types and deployment', 'summary': 'Covers types of kubernetes services such as cluster ip and load balancer, their differences, and minikube service configuration. additionally, it demonstrates deploying a simple application in a kubernetes cluster, outlining the process and communication flow between services and pods.', 'chapters': [{'end': 1674.254, 'start': 1596.082, 'title': 'Types of kubernetes services', 'summary': 'Explains the differences between cluster ip and load balancer service types, highlighting how cluster ip gives the service an internal ip address while load balancer provides both internal and external ip addresses.', 'duration': 78.172, 'highlights': ['The load balancer service type provides both internal and external IP addresses for the service, while the cluster IP type only gives an internal IP address.', 'The cluster IP service type is the default for internal services, eliminating the need to define it during service creation.', 'The difference between cluster IP and load balancer service types lies in the provision of internal and external IP addresses for the services.']}, {'end': 1722.592, 'start': 1674.634, 'title': 'Minikube service configuration', 'summary': "Explains the differences in ip address configurations between minikube and regular kubernetes setups, highlighting the need to define a third port for the external ip address and the use of the command 'minikube service' to assign a public ip address to the external service.", 'duration': 47.958, 'highlights': ['The differences in IP address configurations between Minikube and regular Kubernetes setups are explained, where in Minikube, an actual public IP address is displayed, and a third port is defined for the external IP address.', "The command 'Minikube service' is utilized to assign a public IP address to the external service, resolving the pending status of the external IP address."]}, {'end': 1825.929, 'start': 1723.152, 'title': 'Deploying simple application in kubernetes', 'summary': 'Demonstrates deploying a simple application set up in a kubernetes cluster, showing the process of making changes, creating a request, and the flow of communication between services and pods. the video also encourages viewers to like and subscribe for future content.', 'duration': 102.777, 'highlights': ['The video demonstrates the process of deploying a simple application set up in a Kubernetes cluster, showcasing the flow of communication between services and pods, and the process of making changes and creating a request.', 'The command assigned Mongo Express service a URL with a public IP address and the port, enabling access to the Mongo Express page.', 'The presenter encourages viewers to like and subscribe for future content, emphasizing the creation of a new video every week and inviting questions and feedback in the comment section.']}], 'duration': 229.847, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EQNO_kM96Mo/pics/EQNO_kM96Mo1596082.jpg', 'highlights': ['The load balancer service type provides both internal and external IP addresses for the service, while the cluster IP type only gives an internal IP address.', 'The differences in IP address configurations between Minikube and regular Kubernetes setups are explained, where in Minikube, an actual public IP address is displayed, and a third port is defined for the external IP address.', 'The video demonstrates the process of deploying a simple application set up in a Kubernetes cluster, showcasing the flow of communication between services and pods, and the process of making changes and creating a request.']}], 'highlights': ['The chapter details the process of setting up a MongoDB deployment on a minikube cluster using Kubernetes configuration files, starting from scratch and creating a single replica container with a specific image.', 'Creating Mongo Express deployment and service with an external configuration for the database URL', 'The load balancer service type provides both internal and external IP addresses for the service, while the cluster IP type only gives an internal IP address.', 'Setting up credentials and database URL is crucial for enabling Mongo Express to connect to MongoDB.', 'The chapter emphasizes creating an internal service for MongoDB in a YAML configuration file, focusing on proper label and selector usage.']}