title
ArgoCD Tutorial for Beginners | GitOps CD for Kubernetes
description
Full ArgoCD Tutorial | Learn about the GitOps CD tool for Kubernetes
#argocd #gitops #techworldwithnana
This ArgoCD crash course teaches you everything to get started with ArgoCD. ArgoCD is a GitOps continuous delivery tool that is gaining popularity in the DevOps world.
First, you will learn what ArgoCD is and what are the common use cases or why we need ArgoCD.
Then, you will see how ArgoCD actually works and how it does its job.
In the final part, we will do a hands-on demo project, where we deploy ArgoCD in Kubernetes and setup a fully automated CD pipeline for Kubernetes configuration changes to get some practical experience with ArgoCD.
► This video is sponsored by Kasten 🙌🏼
► Free Kubernetes Backup and Migration - Download Kasten's K10 and Get 10 nodes free forever: https://www.kasten.io/nana
▬▬▬▬▬▬ Pre-Requisite ▬▬▬▬▬▬
💡 GitOps in 10 Mins: ► https://youtu.be/f5EpcWp0THw
💡 Kubernetes: ► https://youtu.be/s_o8dwzRlu4
▬▬▬▬▬▬ Demo Pre-Requisite ▬▬▬▬▬▬
🧑🏻💻 Setup an empty Minikube: ► https://youtu.be/s_o8dwzRlu4?t=1960
▬▬▬▬▬▬ L I N K S 🔗▬▬▬▬▬▬
Git Repo to follow along the demo: ► https://gitlab.com/nanuchi/argocd-app-config
Install ArgoCD: ► https://argo-cd.readthedocs.io/en/stable/getting_started/#1-install-argo-cd
Login to ArgoCD: ► https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli
ArgoCD Configuration: ► https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/
▬▬▬▬▬▬ T I M E S T A M P S ⏰ ▬▬▬▬▬▬
0:00 - Intro and Overview
0:45 - What is ArgoCD
1:29 - CD workflow without ArgoCD
4:48 - CD workflow with ArgoCD
9:34 - Benefits of using GitOps with ArgoCD
9:41 - Git as Single Source of Truth
13:20 - Easy Rollback
14:08 - Cluster Disaster Recovery
15:10 - K8s Access Control with Git & ArgoCD
16:52 - ArgoCD as Kubernetes Extension
18:49 - How to configure ArgoCD?
20:08 - Multiple Clusters with ArgoCD
23:24 - Replacement for other CI/CD tools?
24:45 - Demo Setup & Overview
27:42 - Beginning of Hands-On Demo
▬▬▬▬▬▬ Want to learn more? 🚀 ▬▬▬▬▬▬
Full K8s course ► https://youtu.be/X48VuDVv0do
DevOps Tools, like Terraform, Prometheus ► https://bit.ly/2W9UEq6
Full Docker course ► https://youtu.be/3c-iBn73dDE
▬▬▬▬▬▬ Connect with me 👋 ▬▬▬▬▬▬
INSTAGRAM ► https://bit.ly/2F3LXYJ
TWITTER ► https://bit.ly/3i54PUB
LINKEDIN ► https://bit.ly/3hWOLVT
FB group ► https://bit.ly/32UVSZP
DEV ► https://bit.ly/3h2fqiO
▬▬▬▬▬▬ Courses & Bootcamp & Ebooks 🚀 ▬▬▬▬▬▬
► Become a DevOps Engineer - full educational program 👉🏼 https://bit.ly/45mXaer
► High-Quality and Hands-On Courses 👉🏼 https://bit.ly/3BNS8Kv
► Kubernetes 101 - compact and easy-to-read ebook bundle 👉🏼 https://bit.ly/3Ozl28x
detail
{'title': 'ArgoCD Tutorial for Beginners | GitOps CD for Kubernetes', 'heatmap': [{'end': 1238.357, 'start': 1145.506, 'weight': 0.774}, {'end': 1926.365, 'start': 1894.972, 'weight': 0.778}, {'end': 2366.561, 'start': 2290.697, 'weight': 1}, {'end': 2532.627, 'start': 2433.523, 'weight': 0.811}], 'summary': 'This tutorial covers the rising popularity and benefits of argo cd in kubernetes, addressing ci/cd challenges, demonstrating automated cd pipeline setup, configuration options, and the automation of application configuration and synchronization, providing a comprehensive understanding for beginners.', 'chapters': [{'end': 80.944, 'segs': [{'end': 80.944, 'src': 'embed', 'start': 0.349, 'weight': 0, 'content': [{'end': 8.099, 'text': "In this video, we're going to talk about a GitOps tool that is gaining popularity in the DevOps world, which is called Argo CD.", 'start': 0.349, 'duration': 7.75}, {'end': 15.668, 'text': "If you don't know what GitOps is, you can check out my other video about GitOps, after which this video will make much more sense to you.", 'start': 8.74, 'duration': 6.928}, {'end': 23.791, 'text': "First, I'm gonna explain what Argo CD is and what are the common use cases or why we need Argo CD.", 'start': 16.248, 'duration': 7.543}, {'end': 28.352, 'text': 'We will then see how Argo CD actually works and how it does its job.', 'start': 24.071, 'duration': 4.281}, {'end': 45.116, 'text': 'And in the final part we will do a hands-on demo project where we deploy Argo CD and set up a fully automated CD pipeline for Kubernetes configuration changes to get some practical experience with Argo CD right away.', 'start': 28.792, 'duration': 16.324}, {'end': 52.925, 'text': 'Argus CD is, as the name already tells you, a continuous delivery tool.', 'start': 48.362, 'duration': 4.563}, {'end': 58.809, 'text': 'And to understand Argus CD as a CD tool or continuous delivery tool.', 'start': 53.445, 'duration': 5.364}, {'end': 68.655, 'text': "let's first understand how continuous delivery is implemented in most projects using common tools like Jenkins or GitLab CI CD,", 'start': 58.809, 'duration': 9.846}, {'end': 71.957, 'text': 'and then see how Argus CD compares to them.', 'start': 68.655, 'duration': 3.302}, {'end': 78.582, 'text': 'And in that context We will answer the questions such as is ArgoCD just another CD tool??', 'start': 72.417, 'duration': 6.165}, {'end': 80.944, 'text': 'Or what is so special about it??', 'start': 79.162, 'duration': 1.782}], 'summary': 'Argo cd is a popular gitops tool for continuous delivery, offering a hands-on demo and comparison with other cd tools.', 'duration': 80.595, 'max_score': 0.349, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs349.jpg'}], 'start': 0.349, 'title': 'Introduction to argo cd', 'summary': 'Provides an overview of the rising popularity of argo cd, its working, common use cases, and a comparison with other cd tools. it demonstrates a hands-on demo project for setting up a fully automated cd pipeline for kubernetes configuration changes.', 'chapters': [{'end': 80.944, 'start': 0.349, 'title': 'Introduction to argo cd', 'summary': 'Discusses the rising popularity of argo cd, its working, common use cases, and comparison with other cd tools, leading to a hands-on demo project for setting up a fully automated cd pipeline for kubernetes configuration changes.', 'duration': 80.595, 'highlights': ['Argo CD is gaining popularity as a GitOps tool in the DevOps world. Argo CD is gaining popularity as a GitOps tool in the DevOps world.', 'The video covers the explanation of what Argo CD is, its common use cases, and how it works. The video covers the explanation of what Argo CD is, its common use cases, and how it works.', 'A hands-on demo project will be conducted to deploy Argo CD and set up a fully automated CD pipeline for Kubernetes configuration changes. A hands-on demo project will be conducted to deploy Argo CD and set up a fully automated CD pipeline for Kubernetes configuration changes.', 'Argo CD is positioned as a continuous delivery tool and will be compared to other common CD tools like Jenkins or GitLab CI/CD. Argo CD is positioned as a continuous delivery tool and will be compared to other common CD tools like Jenkins or GitLab CI/CD.']}], 'duration': 80.595, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs349.jpg', 'highlights': ['Argo CD is gaining popularity as a GitOps tool in the DevOps world.', 'The video covers the explanation of what Argo CD is, its common use cases, and how it works.', 'A hands-on demo project will be conducted to deploy Argo CD and set up a fully automated CD pipeline for Kubernetes configuration changes.', 'Argo CD is positioned as a continuous delivery tool and will be compared to other common CD tools like Jenkins or GitLab CI/CD.']}, {'end': 460.476, 'segs': [{'end': 234.95, 'src': 'embed', 'start': 209.512, 'weight': 3, 'content': [{'end': 214.096, 'text': 'And this is not only a configuration effort, but also a security challenge,', 'start': 209.512, 'duration': 4.584}, {'end': 219.22, 'text': 'because you need to give your cluster credentials to external services and tools.', 'start': 214.096, 'duration': 5.124}, {'end': 225.024, 'text': 'Especially if we have 50 projects that deploy applications to the cluster.', 'start': 219.8, 'duration': 5.224}, {'end': 234.95, 'text': 'each project application will need its own Kubernetes credentials so that it can only access that specific application resources in the cluster.', 'start': 225.024, 'duration': 9.926}], 'summary': 'Configuring kubernetes for 50 projects presents security challenges in managing individual credentials.', 'duration': 25.438, 'max_score': 209.512, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs209512.jpg'}, {'end': 364.701, 'src': 'embed', 'start': 314.527, 'weight': 0, 'content': [{'end': 317.088, 'text': 'with the common city flow that I mentioned?', 'start': 314.527, 'duration': 2.561}, {'end': 320.152, 'text': 'We basically just reverse the flow.', 'start': 317.768, 'duration': 2.384}, {'end': 329.866, 'text': 'Instead of externally accessing cluster from the CI city tool, like Jenkins, the tool is itself part of the cluster.', 'start': 320.352, 'duration': 9.514}, {'end': 339.073, 'text': 'And instead of pushing the changes to the cluster, We use a pool workflow where an agent in the cluster, which is Argo City,', 'start': 330.227, 'duration': 8.846}, {'end': 341.634, 'text': 'pulls those changes and applies them there.', 'start': 339.073, 'duration': 2.561}, {'end': 348.615, 'text': "So now let's see how does the workflow look like when we replace the common city set up with Argo City.", 'start': 341.914, 'duration': 6.701}, {'end': 354.536, 'text': 'First we deploy Argo City in the cluster and then we configure Argo City and tell it hey,', 'start': 348.995, 'duration': 5.541}, {'end': 359.117, 'text': 'connect to this Git repository and start watching for any changes.', 'start': 354.536, 'duration': 4.581}, {'end': 364.701, 'text': 'And if something changes there, automatically pull those changes and apply in the cluster.', 'start': 359.557, 'duration': 5.144}], 'summary': 'Argo cd reverses the flow, using a pull workflow to apply changes from git repository to the cluster.', 'duration': 50.174, 'max_score': 314.527, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs314527.jpg'}, {'end': 412.312, 'src': 'embed', 'start': 391.423, 'weight': 2, 'content': [{'end': 405.309, 'text': 'Now, a very important note here about repositories is that it has been established as a best practice to have separate repositories for application source code and application configuration code.', 'start': 391.423, 'duration': 13.886}, {'end': 412.312, 'text': 'So Kubernetes manifest files for the application would be hosted in its own Git repository.', 'start': 405.75, 'duration': 6.562}], 'summary': 'Best practice: separate repositories for app source code and config code, with app manifest files in own git repository', 'duration': 20.889, 'max_score': 391.423, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs391423.jpg'}], 'start': 81.324, 'title': 'Ci/cd challenges and efficiency with kubernetes', 'summary': 'Discusses challenges such as configuring and securing access to kubernetes and aws, as well as the lack of visibility in deployment status for jenkins. it also explains how argo city, designed for kubernetes with gitops principles, improves efficiency by reversing the ci/cd flow and enabling automatic pull and apply of changes in the cluster.', 'chapters': [{'end': 287.858, 'start': 81.324, 'title': 'Challenges in ci/cd with kubernetes', 'summary': 'Highlights the challenges in ci/cd with kubernetes, including the need for configuring and securing access to kubernetes and aws, as well as the lack of visibility in deployment status for jenkins.', 'duration': 206.534, 'highlights': ['Configuring and securing access to Kubernetes and AWS in Jenkins poses a configuration and security challenge, especially for multiple projects and clusters. 50 projects and 50 clusters', 'Jenkins lacks visibility in the deployment status after applying changes to Kubernetes configuration, requiring additional test steps for validation. ', 'The CI/CD pipeline for Kubernetes requires installing and configuring tools like kubectl or helm to access and execute changes on the Kubernetes cluster. ']}, {'end': 460.476, 'start': 288.538, 'title': 'Efficiency with argo city for kubernetes', 'summary': 'Explains how argo city, purpose-built for kubernetes with gitops principles, makes the city process more efficient by reversing the flow of ci/cd, utilizing separate repositories for application source code and configuration code, and enabling automatic pull and apply of changes in the cluster.', 'duration': 171.938, 'highlights': ['Argo City reverses the flow of CI/CD by being part of the cluster and using a pull workflow, making the city process more efficient. By reversing the flow, Argo City, as part of the cluster, pulls changes and applies them, improving efficiency in the CI/CD process.', 'Separate repositories for application source code and configuration code is established as a best practice, ensuring independent changes and avoiding unnecessary CI pipeline runs. Having separate repositories for application source code and configuration code allows independent changes and prevents unnecessary CI pipeline runs when configuration code is updated without changing the application source code.', 'Automatic pull and apply of changes in the cluster by Argo City from the configured Git repository streamlines the deployment process. Argo City, configured to connect to a Git repository and automatically pull and apply changes in the cluster, streamlines the deployment process.']}], 'duration': 379.152, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs81324.jpg', 'highlights': ['Argo City reverses the flow of CI/CD by being part of the cluster and using a pull workflow, making the city process more efficient.', 'Automatic pull and apply of changes in the cluster by Argo City from the configured Git repository streamlines the deployment process.', 'Separate repositories for application source code and configuration code is established as a best practice, ensuring independent changes and avoiding unnecessary CI pipeline runs.', 'Configuring and securing access to Kubernetes and AWS in Jenkins poses a configuration and security challenge, especially for multiple projects and clusters.']}, {'end': 1405.452, 'segs': [{'end': 481.454, 'src': 'embed', 'start': 460.476, 'weight': 2, 'content': [{'end': 476.93, 'text': 'the Jenkins CI pipeline will update the deployment.yml file in a separate git repository where the kubernetes manifest files are for the application and as soon as the configuration file changes in the git repository,', 'start': 460.476, 'duration': 16.454}, {'end': 481.454, 'text': 'argocd in the cluster will immediately know about it,', 'start': 476.93, 'duration': 4.524}], 'summary': 'Jenkins ci updates deployment.yml in separate git repo triggering immediate argocd update', 'duration': 20.978, 'max_score': 460.476, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs460476.jpg'}, {'end': 655.086, 'src': 'embed', 'start': 628.804, 'weight': 0, 'content': [{'end': 638.292, 'text': 'So now what happens when people update the cluster manually in addition to having the configuration code defined in the Git repository?', 'start': 628.804, 'duration': 9.488}, {'end': 646.338, 'text': 'ArgoCD does not only watch the changes in the Git repository, but it also watches the changes in the cluster.', 'start': 639.192, 'duration': 7.146}, {'end': 655.086, 'text': 'And anytime a change happens either in the Git repository or the cluster, it compares those two states.', 'start': 647.018, 'duration': 8.068}], 'summary': 'Argocd watches git repo & cluster, compares changes.', 'duration': 26.282, 'max_score': 628.804, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs628804.jpg'}, {'end': 726.603, 'src': 'embed', 'start': 700.098, 'weight': 1, 'content': [{'end': 708.185, 'text': 'And this is really useful because this actually guarantees that git repository, and whatever is defined there,', 'start': 700.098, 'duration': 8.087}, {'end': 714.01, 'text': 'remains at any time the only source of truth for your cluster state.', 'start': 708.185, 'duration': 5.825}, {'end': 717.153, 'text': 'And it also gives you a full transparency of the cluster,', 'start': 714.21, 'duration': 2.943}, {'end': 726.603, 'text': 'because you know that whatever is defined in that Git repository as a configuration code is exactly the state which you have in the cluster.', 'start': 717.153, 'duration': 9.45}], 'summary': 'Using git repository ensures cluster state remains the only source of truth and provides full transparency.', 'duration': 26.505, 'max_score': 700.098, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs700098.jpg'}, {'end': 771.474, 'src': 'embed', 'start': 748.777, 'weight': 4, 'content': [{'end': 756.883, 'text': 'but instead send out an alert that something has changed in the cluster manually and that it needs to be updated in the code as well.', 'start': 748.777, 'duration': 8.106}, {'end': 760.045, 'text': 'So you have that option to configure Argo CD in this way.', 'start': 757.283, 'duration': 2.762}, {'end': 771.474, 'text': 'And finally, as a result of using Git as a single interface for making changes in the cluster, instead of untrackable kubectl apply commands,', 'start': 760.646, 'duration': 10.828}], 'summary': 'Argo cd can be configured to send alerts for cluster changes, enabling git for making changes.', 'duration': 22.697, 'max_score': 748.777, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs748777.jpg'}, {'end': 879.294, 'src': 'embed', 'start': 799.979, 'weight': 5, 'content': [{'end': 805.023, 'text': 'Another benefit of using Git for config files is an easy rollback.', 'start': 799.979, 'duration': 5.044}, {'end': 808.746, 'text': 'ArgoCity pulls any changes and applies them in the cluster.', 'start': 805.523, 'duration': 3.223}, {'end': 815.752, 'text': "If something breaks with these changes or, let's say, a new application version fails to start,", 'start': 809.066, 'duration': 6.686}, {'end': 819.555, 'text': 'we can revert to the previous working state in the Git history.', 'start': 815.752, 'duration': 3.803}, {'end': 824.159, 'text': 'basically just by moving back to the last working version.', 'start': 820.316, 'duration': 3.843}, {'end': 830.343, 'text': 'especially, we have thousands of clusters that all get updated by the same git repository.', 'start': 824.159, 'duration': 6.184}, {'end': 838.748, 'text': "this is going to be very efficient, because you don't have to manually revert each and every component doing kubectl, delete or helm,", 'start': 830.343, 'duration': 8.405}, {'end': 841.59, 'text': 'uninstall and basically clean up all the things.', 'start': 838.748, 'duration': 2.842}, {'end': 848.615, 'text': 'you simply declare the previous working state and cluster will be synced to that state again.', 'start': 841.59, 'duration': 7.025}, {'end': 856.14, 'text': 'another advantage is cluster disaster recovery, which becomes super easy with this setup.', 'start': 848.615, 'duration': 7.525}, {'end': 865.947, 'text': 'So if I have an EKS cluster in region 1a and that cluster completely crashes, I can create a new cluster,', 'start': 856.46, 'duration': 9.487}, {'end': 876.733, 'text': 'point it to the Git repository where the complete cluster configuration is defined, and it will recreate the same exact state as the previous one,', 'start': 865.947, 'duration': 10.786}, {'end': 879.294, 'text': 'without any intervention from our side.', 'start': 876.733, 'duration': 2.561}], 'summary': 'Using git for config files allows easy rollback and efficient management of thousands of clusters, simplifying disaster recovery.', 'duration': 79.315, 'max_score': 799.979, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs799979.jpg'}, {'end': 933.203, 'src': 'embed', 'start': 905.888, 'weight': 8, 'content': [{'end': 910.012, 'text': 'However, there are some benefits that using Argo City specifically has.', 'start': 905.888, 'duration': 4.124}, {'end': 920.79, 'text': "Now, of course, you don't want every team member to be able to make changes to cluster, especially in a production environment.", 'start': 913.322, 'duration': 7.468}, {'end': 926.036, 'text': 'So again, using Git, you can actually configure access rules easily.', 'start': 921.271, 'duration': 4.765}, {'end': 933.203, 'text': 'You can say, every member of the DevOps team or operations team, even junior engineers,', 'start': 926.336, 'duration': 6.867}], 'summary': 'Using argo city for cluster access control enables easy configuration of access rules using git.', 'duration': 27.315, 'max_score': 905.888, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs905888.jpg'}, {'end': 1055.313, 'src': 'embed', 'start': 1006.194, 'weight': 9, 'content': [{'end': 1011.885, 'text': 'And this makes managing security in all your Kubernetes clusters way easier.', 'start': 1006.194, 'duration': 5.691}, {'end': 1021.709, 'text': "As I mentioned, an advantage of using Argus City is that it's deployed directly in the Kubernetes cluster.", 'start': 1015.325, 'duration': 6.384}, {'end': 1027.531, 'text': "but it's not just deployed in the cluster, because you can actually deploy Jenkins in the cluster too,", 'start': 1021.709, 'duration': 5.822}, {'end': 1030.854, 'text': "but it's really an extension to the Kubernetes API.", 'start': 1027.531, 'duration': 3.323}, {'end': 1037.998, 'text': 'So Argus City actually leverages the Kubernetes resources itself and, instead of building all the functionality itself,', 'start': 1031.354, 'duration': 6.644}, {'end': 1044.363, 'text': 'it uses some of the existing kubernetes functionalities for doing its job,', 'start': 1038.698, 'duration': 5.665}, {'end': 1053.651, 'text': 'like using its cd for storing the data and using kubernetes controllers for monitoring and comparing this actual and desired state.', 'start': 1044.363, 'duration': 9.288}, {'end': 1055.313, 'text': 'and what is the benefit of that?', 'start': 1053.651, 'duration': 1.662}], 'summary': 'Argus city leverages kubernetes resources, making security management easier.', 'duration': 49.119, 'max_score': 1006.194, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1006194.jpg'}, {'end': 1238.357, 'src': 'heatmap', 'start': 1145.506, 'weight': 0.774, 'content': [{'end': 1156.852, 'text': 'it extends kubernetes api with crds or custom resource definitions, which allows configuring Argo CD using Kubernetes native YAML files.', 'start': 1145.506, 'duration': 11.346}, {'end': 1162.035, 'text': 'And the main component of Argo CD is an application.', 'start': 1157.232, 'duration': 4.803}, {'end': 1167.579, 'text': 'And we can define this application CRD in a Kubernetes native YAML file.', 'start': 1162.596, 'duration': 4.983}, {'end': 1168.86, 'text': 'And it looks like this.', 'start': 1167.82, 'duration': 1.04}, {'end': 1178.788, 'text': 'And the main part of the configuration of application is we define which Git repository should be synced with which Kubernetes cluster.', 'start': 1169.521, 'duration': 9.267}, {'end': 1183.01, 'text': 'And this could be any repository in any Kubernetes cluster.', 'start': 1179.568, 'duration': 3.442}, {'end': 1188.814, 'text': 'In terms of Kubernetes cluster, this could be the cluster where Argo City itself is running in.', 'start': 1183.571, 'duration': 5.243}, {'end': 1194.018, 'text': 'But it could also be an external cluster that Argo City manages.', 'start': 1189.475, 'duration': 4.543}, {'end': 1200.942, 'text': 'And you can configure multiple such applications for different microservices, for example, for your cluster.', 'start': 1194.578, 'duration': 6.364}, {'end': 1207.587, 'text': 'And if some applications belong together, you can group them in another CRD called App Project.', 'start': 1201.243, 'duration': 6.344}, {'end': 1213.561, 'text': 'Now there is one more thing we need to address,', 'start': 1210.919, 'duration': 2.642}, {'end': 1221.485, 'text': 'which is working with multiple clusters and how we apply these processes in a multi-cluster environment.', 'start': 1213.561, 'duration': 7.924}, {'end': 1227.709, 'text': "Let's say we have three cluster replicas for a dev environment in three different regions.", 'start': 1222.006, 'duration': 5.703}, {'end': 1238.357, 'text': 'And in one of the clusters, we have ArgoCD, running and configured to deploy any changes to all three cluster replicas at the same time.', 'start': 1228.289, 'duration': 10.068}], 'summary': 'Argo cd extends kubernetes api with crds to configure applications, managing multiple clusters and syncing with git repositories.', 'duration': 92.851, 'max_score': 1145.506, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1145506.jpg'}], 'start': 460.476, 'title': 'Benefits of argo cd and gitops', 'summary': 'Discusses how jenkins ci pipeline updates the deployment.yml file in a separate git repository, monitored by argo cd for automatic changes in the kubernetes cluster, enabling separate ci and cd pipelines. it also explains the benefits of using git as a single interface for cluster management and highlights the advantages of using argocd in kubernetes, including easy access management and streamlined workflow for applying changes to different environments.', 'chapters': [{'end': 588.988, 'start': 460.476, 'title': 'Argo cd and gitops benefits', 'summary': 'Discusses how the jenkins ci pipeline updates the deployment.yml file in a separate git repository, which is then monitored by argo cd to automatically pull and apply changes in the kubernetes cluster, enabling separate ci and cd pipelines with a separation of concerns.', 'duration': 128.512, 'highlights': ['Argo CD monitors the git repository for changes and automatically applies them in the cluster, enabling separate CI and CD pipelines with a separation of concerns. Argo CD constantly monitors the git repository for changes and automatically pulls and applies those changes in the cluster, allowing separate CI and CD pipelines with a separation of concerns.', 'The whole Kubernetes configuration is defined as code in a Git repository, providing the benefit of infrastructure as code. Having the whole Kubernetes configuration defined as code in a Git repository provides the benefit of treating infrastructure as code.', 'Jenkins CI pipeline updates the deployment.yml file in a separate git repository, triggering automatic updates in the Kubernetes cluster. The Jenkins CI pipeline updates the deployment.yml file in a separate git repository, triggering automatic updates in the Kubernetes cluster.']}, {'end': 879.294, 'start': 589.328, 'title': 'Using git for cluster management', 'summary': 'Discusses the benefits of using git as a single interface for making changes in the cluster, including ensuring the git repository remains the only source of truth, providing a clear audit trail of changes, and enabling easy rollback and disaster recovery. it also addresses the option to configure argocd to handle manual cluster changes and the efficiency of managing thousands of clusters with the same git repository.', 'duration': 289.966, 'highlights': ['Using Git as a single interface for making changes ensures the Git repository remains the only source of truth for the cluster state, providing transparency and a clear audit trail of changes. benefits of using Git as a single interface, guaranteeing the Git repository as the only source of truth', 'ArgoCD can be configured to handle manual cluster changes and send alerts for manual changes, providing flexibility in managing cluster updates. option to configure ArgoCD to handle manual cluster changes', 'Easy rollback is facilitated by using Git for config files, allowing teams to revert to the previous working state in the Git history, simplifying the process of syncing the cluster to a previous state. benefits of using Git for easy rollback', 'Efficient management of thousands of clusters is achieved by using the same git repository, eliminating the need for manual intervention in reverting changes for each cluster. efficiency in managing thousands of clusters with the same git repository', 'Cluster disaster recovery becomes easy as a new cluster can be created and pointed to the Git repository to recreate the same exact state as the previous one, without manual intervention. ease of cluster disaster recovery with the setup']}, {'end': 1405.452, 'start': 879.674, 'title': 'Benefits of using argocd in kubernetes', 'summary': 'Highlights the gitops principles and benefits of using argocd for managing kubernetes clusters, including easy access management, visibility in the cluster, and multi-cluster environment configuration, allowing for a streamlined and automated workflow for applying changes to different environments.', 'duration': 525.778, 'highlights': ['ArgoCD enables easy cluster access management through Git, allowing junior engineers to propose changes and senior engineers to approve and merge them, streamlining the process and managing cluster permissions indirectly through Git. Junior engineers can propose changes, senior engineers can approve and merge them, managing cluster permissions through Git.', 'ArgoCD provides easier cluster access management for non-human users like CI/CD tools, eliminating the need to give external cluster access and enhancing security management in Kubernetes clusters. Enhanced security management, no need for external cluster access for CI/CD tools.', 'ArgoCD leverages Kubernetes resources and provides real-time updates of the application state, offering visibility in the cluster and monitoring deployment state after changes in the cluster configuration have been made, enhancing the application deployment process. Provides real-time updates of application state, enhances application deployment process.']}], 'duration': 944.976, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs460476.jpg', 'highlights': ['Argo CD constantly monitors the git repository for changes and automatically pulls and applies those changes in the cluster, allowing separate CI and CD pipelines with a separation of concerns.', 'The whole Kubernetes configuration is defined as code in a Git repository, providing the benefit of treating infrastructure as code.', 'Jenkins CI pipeline updates the deployment.yml file in a separate git repository, triggering automatic updates in the Kubernetes cluster.', 'Using Git as a single interface for making changes ensures the Git repository remains the only source of truth for the cluster state, providing transparency and a clear audit trail of changes.', 'ArgoCD can be configured to handle manual cluster changes and send alerts for manual changes, providing flexibility in managing cluster updates.', 'Easy rollback is facilitated by using Git for config files, allowing teams to revert to the previous working state in the Git history, simplifying the process of syncing the cluster to a previous state.', 'Efficient management of thousands of clusters is achieved by using the same git repository, eliminating the need for manual intervention in reverting changes for each cluster.', 'Cluster disaster recovery becomes easy as a new cluster can be created and pointed to the Git repository to recreate the same exact state as the previous one, without manual intervention.', 'ArgoCD enables easy cluster access management through Git, allowing junior engineers to propose changes and senior engineers to approve and merge them, streamlining the process and managing cluster permissions indirectly through Git.', 'ArgoCD provides easier cluster access management for non-human users like CI/CD tools, eliminating the need to give external cluster access and enhancing security management in Kubernetes clusters.', 'ArgoCD leverages Kubernetes resources and provides real-time updates of the application state, offering visibility in the cluster and monitoring deployment state after changes in the cluster configuration have been made, enhancing the application deployment process.']}, {'end': 2099.388, 'segs': [{'end': 1469.511, 'src': 'embed', 'start': 1436.365, 'weight': 0, 'content': [{'end': 1441.169, 'text': 'is a replacement for cd pipeline, but specifically for kubernetes.', 'start': 1436.365, 'duration': 4.804}, {'end': 1444.673, 'text': 'so for other platforms you will still need a different tool.', 'start': 1441.169, 'duration': 3.504}, {'end': 1451.057, 'text': 'Also, Argo CD is not the only GitOps CD tool for Kubernetes.', 'start': 1445.393, 'duration': 5.664}, {'end': 1453.559, 'text': 'There are many alternatives already out there.', 'start': 1451.578, 'duration': 1.981}, {'end': 1460.524, 'text': 'And as the trend emerges and becomes even more popular, probably some more alternatives will be created.', 'start': 1453.999, 'duration': 6.525}, {'end': 1469.511, 'text': 'And one of the most popular ones right now is Flux CD, which works with and implements the same GitOps principles.', 'start': 1460.944, 'duration': 8.567}], 'summary': 'Argo cd is a kubernetes-specific replacement for cd pipelines, but other platforms require different tools. flux cd is a popular alternative implementing gitops principles.', 'duration': 33.146, 'max_score': 1436.365, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1436365.jpg'}, {'end': 1514.663, 'src': 'embed', 'start': 1488.717, 'weight': 1, 'content': [{'end': 1496.389, 'text': 'In the demo part, we will set up a fully automated CD pipeline for Kubernetes configuration changes with Argo CD.', 'start': 1488.717, 'duration': 7.672}, {'end': 1508.822, 'text': "I have a Git repository with deployment and service YAML files, where the deployment file references my own application's image version 1.0.", 'start': 1497.11, 'duration': 11.712}, {'end': 1514.663, 'text': "I have three image versions that I've already created for this app in my Docker public repository,", 'start': 1508.822, 'duration': 5.841}], 'summary': 'Setting up automated cd pipeline for kubernetes with argo cd using 3 image versions', 'duration': 25.946, 'max_score': 1488.717, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1488717.jpg'}, {'end': 1692.04, 'src': 'embed', 'start': 1665.645, 'weight': 3, 'content': [{'end': 1670.087, 'text': 'So the first step is we want Argo CD deployed in our cluster.', 'start': 1665.645, 'duration': 4.442}, {'end': 1671.748, 'text': "So let's go ahead and do that.", 'start': 1670.407, 'duration': 1.341}, {'end': 1681.894, 'text': 'And you can reference the getting started guide of Argo CD for that.', 'start': 1678.052, 'duration': 3.842}, {'end': 1685.276, 'text': 'And installing Argo CD in Kubernetes cluster is super easy.', 'start': 1682.174, 'duration': 3.102}, {'end': 1686.797, 'text': "It's just the one liner, basically.", 'start': 1685.296, 'duration': 1.501}, {'end': 1692.04, 'text': 'And you can also find the instructions for getting started on their official documentation page.', 'start': 1687.037, 'duration': 5.003}], 'summary': 'Deploy argo cd in kubernetes cluster for easy installation.', 'duration': 26.395, 'max_score': 1665.645, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1665645.jpg'}, {'end': 1791.909, 'src': 'embed', 'start': 1762.85, 'weight': 4, 'content': [{'end': 1769.678, 'text': 'Now, how do we access the ArgoCD UI? If we check the services that were created.', 'start': 1762.85, 'duration': 6.828}, {'end': 1777.162, 'text': 'We have one of them, which is Argo City Server, which is accessible on HDP and HDP as ports.', 'start': 1770.078, 'duration': 7.084}, {'end': 1782.685, 'text': "So we're just going to use Cube City Port forward to access the service.", 'start': 1777.562, 'duration': 5.123}, {'end': 1791.909, 'text': "Port forward, let's not forget the Argo City namespace.", 'start': 1787.887, 'duration': 4.022}], 'summary': 'Access the argocd ui using cube city port forward.', 'duration': 29.059, 'max_score': 1762.85, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1762850.jpg'}, {'end': 1926.365, 'src': 'heatmap', 'start': 1894.972, 'weight': 0.778, 'content': [{'end': 1898.595, 'text': 'We have no applications because we first need to configure it.', 'start': 1894.972, 'duration': 3.623}, {'end': 1900.636, 'text': "So right now it doesn't do anything.", 'start': 1898.955, 'duration': 1.681}, {'end': 1902.778, 'text': "So that's going to be our next step.", 'start': 1901.297, 'duration': 1.481}, {'end': 1913.885, 'text': "Let's write a configuration file for ArgoCD to connect it to the Git repository where the configuration files are hosted.", 'start': 1905.82, 'duration': 8.065}, {'end': 1919.042, 'text': "And we're going to put that ArgoCity configuration file also in this configuration repository.", 'start': 1914.54, 'duration': 4.502}, {'end': 1922.944, 'text': 'So I have checked out the project, which you can also go ahead and do.', 'start': 1919.382, 'duration': 3.562}, {'end': 1926.365, 'text': "So just clone it and we're going to work on this project locally.", 'start': 1923.404, 'duration': 2.961}], 'summary': 'Configuring argocd to connect to git repository for configuration files, with plans to work locally on the project.', 'duration': 31.393, 'max_score': 1894.972, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1894972.jpg'}, {'end': 1936.132, 'src': 'embed', 'start': 1905.82, 'weight': 5, 'content': [{'end': 1913.885, 'text': "Let's write a configuration file for ArgoCD to connect it to the Git repository where the configuration files are hosted.", 'start': 1905.82, 'duration': 8.065}, {'end': 1919.042, 'text': "And we're going to put that ArgoCity configuration file also in this configuration repository.", 'start': 1914.54, 'duration': 4.502}, {'end': 1922.944, 'text': 'So I have checked out the project, which you can also go ahead and do.', 'start': 1919.382, 'duration': 3.562}, {'end': 1926.365, 'text': "So just clone it and we're going to work on this project locally.", 'start': 1923.404, 'duration': 2.961}, {'end': 1936.132, 'text': "So I'm going to switch to that project and where we have this dev folder with the configuration files.", 'start': 1930.529, 'duration': 5.603}], 'summary': 'Writing argocd configuration file to connect to git repository and working on project locally', 'duration': 30.312, 'max_score': 1905.82, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1905820.jpg'}], 'start': 1407.543, 'title': 'Argo cd in kubernetes', 'summary': 'Discusses the role of argo cd as a gitops cd tool for kubernetes, its comparison with other tools, the demo of setting up a fully automated cd pipeline for kubernetes configuration changes with argo cd, and the deployment details in a kubernetes cluster, including creating a namespace, installing components, accessing the argo cd ui, and configuring it to connect to a git repository.', 'chapters': [{'end': 1662.364, 'start': 1407.543, 'title': 'Argo cd and gitops workflow', 'summary': 'Discusses the role of argo cd as a gitops cd tool for kubernetes, its comparison with other tools, the demo of setting up a fully automated cd pipeline for kubernetes configuration changes with argo cd, and the availability of the demo resources for use.', 'duration': 254.821, 'highlights': ['Argo CD is a replacement for CD pipeline specifically for Kubernetes, and there are several alternatives, including Flux CD, implementing the same GitOps principles. Argo CD is highlighted as a replacement for CD pipelines specifically for Kubernetes and is compared to other alternatives like Flux CD.', 'Setting up a fully automated CD pipeline for Kubernetes configuration changes with Argo CD is demonstrated in the demo, with resources available for use. The demo showcases the setup of a fully automated CD pipeline for Kubernetes configuration changes with Argo CD, and the availability of resources for use.', 'The availability of a Git repository with deployment and service YAML files and three image versions in a Docker public repository for use in the demo is emphasized. The availability of a Git repository with deployment and service YAML files, along with three image versions in a Docker public repository for use in the demo, is highlighted.']}, {'end': 2099.388, 'start': 1665.645, 'title': 'Deploying argo cd in kubernetes', 'summary': 'Details the deployment of argo cd in a kubernetes cluster, including creating a namespace, installing components, accessing the argo cd ui, and configuring it to connect to a git repository.', 'duration': 433.743, 'highlights': ['Creating Argo CD namespace and installing components The speaker creates a namespace for Argo CD in the Kubernetes cluster and installs all the necessary components, highlighting the simplicity of the installation process with just a one-liner command.', 'Accessing the Argo CD UI and logging in The process of accessing the Argo CD UI is explained, including using port forwarding to access the service locally, retrieving the admin password from a secret, and logging in to the Argo CD UI with the provided credentials.', 'Configuring Argo CD to connect to a Git repository The chapter demonstrates the creation of an Argo CD configuration file to connect it to a Git repository, explaining the fields required in the configuration file such as API version, kind, name, namespace, source, and target revision.']}], 'duration': 691.845, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs1407543.jpg', 'highlights': ['Argo CD is a replacement for CD pipeline specifically for Kubernetes, and there are several alternatives, including Flux CD, implementing the same GitOps principles.', 'The demo showcases the setup of a fully automated CD pipeline for Kubernetes configuration changes with Argo CD, and the availability of resources for use.', 'The availability of a Git repository with deployment and service YAML files, along with three image versions in a Docker public repository for use in the demo, is highlighted.', 'Creating Argo CD namespace and installing components The speaker creates a namespace for Argo CD in the Kubernetes cluster and installs all the necessary components, highlighting the simplicity of the installation process with just a one-liner command.', 'Accessing the Argo CD UI and logging in The process of accessing the Argo CD UI is explained, including using port forwarding to access the service locally, retrieving the admin password from a secret, and logging in to the Argo CD UI with the provided credentials.', 'Configuring Argo CD to connect to a Git repository The chapter demonstrates the creation of an Argo CD configuration file to connect it to a Git repository, explaining the fields required in the configuration file such as API version, kind, name, namespace, source, and target revision.']}, {'end': 2416.431, 'segs': [{'end': 2258.352, 'src': 'embed', 'start': 2227.694, 'weight': 2, 'content': [{'end': 2233.198, 'text': 'And to configure that, we have another attribute called sync policy.', 'start': 2227.694, 'duration': 5.504}, {'end': 2238.622, 'text': 'And inside that we have sync options.', 'start': 2236.06, 'duration': 2.562}, {'end': 2249.648, 'text': 'And one of the sync options or synchronized options is create namespace equals true.', 'start': 2240.643, 'duration': 9.005}, {'end': 2251.108, 'text': "So by default, it's false.", 'start': 2249.728, 'duration': 1.38}, {'end': 2254.13, 'text': "It's not going to create a namespace automatically if it doesn't find it.", 'start': 2251.149, 'duration': 2.981}, {'end': 2258.352, 'text': "But we're going to set it to true using this configuration.", 'start': 2254.71, 'duration': 3.642}], 'summary': 'Configuring sync policy with create namespace equals true for automatic namespace creation.', 'duration': 30.658, 'max_score': 2227.694, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2227694.jpg'}, {'end': 2366.561, 'src': 'heatmap', 'start': 2286.656, 'weight': 3, 'content': [{'end': 2290.297, 'text': 'And inside that automated attribute, we have two more options.', 'start': 2286.656, 'duration': 3.641}, {'end': 2299.18, 'text': 'The first one is, as I mentioned, we can configure ArgoCD to undo or override any manual changes to the cluster.', 'start': 2290.697, 'duration': 8.483}, {'end': 2308.544, 'text': 'So if I did kubectl apply manually in the cluster, ArgoCD will basically override it and sync it with the Git repository state instead.', 'start': 2299.701, 'duration': 8.843}, {'end': 2314.627, 'text': 'And we can enable it using a self-heal attribute set to true.', 'start': 2308.884, 'duration': 5.743}, {'end': 2322.312, 'text': 'And finally, if we rename a component, for example, or if we deleted the whole service to an email file,', 'start': 2315.107, 'duration': 7.205}, {'end': 2327.755, 'text': 'we want our city to also delete that component or that old component in the cluster as well.', 'start': 2322.312, 'duration': 5.443}, {'end': 2330.477, 'text': "And that's going to be an attribute called Prune.", 'start': 2328.255, 'duration': 2.222}, {'end': 2331.938, 'text': "And we're going to set it to true.", 'start': 2330.717, 'duration': 1.221}, {'end': 2341.889, 'text': 'Now note that the automated attribute will configure ArgoCD to pull the changes in Git repository in three minute intervals.', 'start': 2333.001, 'duration': 8.888}, {'end': 2346.913, 'text': 'So ArgoCD will not pull the changes as soon as they happen in the Git repository,', 'start': 2342.529, 'duration': 4.384}, {'end': 2354.078, 'text': 'but rather it will basically check every three minutes whether something has changed and then pull and apply those changes in the cluster.', 'start': 2346.913, 'duration': 7.165}, {'end': 2355.058, 'text': "That's how it's going to work.", 'start': 2354.138, 'duration': 0.92}, {'end': 2366.561, 'text': 'Alternatively, if you absolutely needed to configure your workflow to always basically apply and synchronize with cluster as soon as something changes in the repository,', 'start': 2355.418, 'duration': 11.143}], 'summary': 'Argocd can undo manual changes, sync every 3 minutes, and prune old components.', 'duration': 27.971, 'max_score': 2286.656, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2286656.jpg'}, {'end': 2374.684, 'src': 'embed', 'start': 2333.001, 'weight': 0, 'content': [{'end': 2341.889, 'text': 'Now note that the automated attribute will configure ArgoCD to pull the changes in Git repository in three minute intervals.', 'start': 2333.001, 'duration': 8.888}, {'end': 2346.913, 'text': 'So ArgoCD will not pull the changes as soon as they happen in the Git repository,', 'start': 2342.529, 'duration': 4.384}, {'end': 2354.078, 'text': 'but rather it will basically check every three minutes whether something has changed and then pull and apply those changes in the cluster.', 'start': 2346.913, 'duration': 7.165}, {'end': 2355.058, 'text': "That's how it's going to work.", 'start': 2354.138, 'duration': 0.92}, {'end': 2366.561, 'text': 'Alternatively, if you absolutely needed to configure your workflow to always basically apply and synchronize with cluster as soon as something changes in the repository,', 'start': 2355.418, 'duration': 11.143}, {'end': 2373.003, 'text': 'you can actually configure a web hook integration between Git repository and Argo City.', 'start': 2366.561, 'duration': 6.442}, {'end': 2374.684, 'text': 'So you have that option as well.', 'start': 2373.343, 'duration': 1.341}], 'summary': 'Argocd is configured to pull changes from git repository in three-minute intervals, with an option for immediate synchronization using web hook integration.', 'duration': 41.683, 'max_score': 2333.001, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2333001.jpg'}], 'start': 2100.729, 'title': 'Argocd configuration', 'summary': 'Discusses the configuration options for argocd, including specifying source and destination repositories, sync policies, automated syncing, self-healing, pruning, and web hook integration for immediate synchronization with the cluster.', 'chapters': [{'end': 2416.431, 'start': 2100.729, 'title': 'Argocd configuration', 'summary': 'Discusses the configuration options for argocd, including specifying source and destination repositories, setting up sync policies, enabling automated syncing, self-healing, and pruning, and the option to configure web hook integration for immediate synchronization with the cluster.', 'duration': 315.702, 'highlights': ['ArgoCD can be configured to automatically sync changes in the git repository at three-minute intervals, with options to enable automated syncing, self-healing, and pruning.', 'The configuration options include specifying the source and destination repositories, setting up sync policies, enabling automated syncing, self-healing, and pruning, and the option to configure web hook integration for immediate synchronization with the cluster.', 'ArgoCD allows the specification of a path attribute for syncing or tracking a specific path in the repository, and it can access internal services directly when running inside the cluster.', "The sync policy attribute includes sync options such as create namespace, which can be set to true to automatically create a namespace if it doesn't exist in the cluster."]}], 'duration': 315.702, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2100729.jpg', 'highlights': ['ArgoCD can be configured to automatically sync changes in the git repository at three-minute intervals, with options to enable automated syncing, self-healing, and pruning.', 'The configuration options include specifying the source and destination repositories, setting up sync policies, enabling automated syncing, self-healing, and pruning, and the option to configure web hook integration for immediate synchronization with the cluster.', "The sync policy attribute includes sync options such as create namespace, which can be set to true to automatically create a namespace if it doesn't exist in the cluster.", 'ArgoCD allows the specification of a path attribute for syncing or tracking a specific path in the repository, and it can access internal services directly when running inside the cluster.']}, {'end': 2872.231, 'segs': [{'end': 2566.402, 'src': 'heatmap', 'start': 2433.523, 'weight': 1, 'content': [{'end': 2446.073, 'text': 'And, as you already see from this configuration in the same cluster you may have multiple such applications for different namespaces or different environments that you can create in our city.', 'start': 2433.523, 'duration': 12.55}, {'end': 2451.677, 'text': 'Now, we need to actually apply this configuration to configure our city with this logic.', 'start': 2446.493, 'duration': 5.184}, {'end': 2455.619, 'text': "So let's go ahead and do that using kubectl apply.", 'start': 2452.217, 'duration': 3.402}, {'end': 2464.283, 'text': 'So this is going to be ideally the only kubectl apply that I have to do in this project, because after that, everything should be auto synchronized.', 'start': 2455.999, 'duration': 8.284}, {'end': 2469.086, 'text': "So first, I'm going to add this to the repository to the remote repository, basically.", 'start': 2464.504, 'duration': 4.582}, {'end': 2484.092, 'text': 'because again, ArgoCity will connect to the remote repository.', 'start': 2481.291, 'duration': 2.801}, {'end': 2488.934, 'text': 'So we want the ArgoCity configuration to also be available there.', 'start': 2484.472, 'duration': 4.462}, {'end': 2496.777, 'text': 'And if I refresh, I will see my application.yaml.', 'start': 2488.954, 'duration': 7.823}, {'end': 2501.819, 'text': "Now ArgoCity doesn't know anything about this repository or this configuration yet.", 'start': 2497.077, 'duration': 4.742}, {'end': 2509.105, 'text': 'For that, we need to apply this application.yaml in the cluster.', 'start': 2502.499, 'duration': 6.606}, {'end': 2510.466, 'text': "So let's go ahead and do that.", 'start': 2509.385, 'duration': 1.081}, {'end': 2513.928, 'text': 'And as you see, application component was created.', 'start': 2511.046, 'duration': 2.882}, {'end': 2523.036, 'text': 'And now if we go back to Argo City UI, you see that we have my app Argo application.', 'start': 2517.231, 'duration': 5.805}, {'end': 2526.839, 'text': "That's the name that we gave the application component.", 'start': 2524.077, 'duration': 2.762}, {'end': 2532.627, 'text': 'And it seems like it has successfully synced everything from this repository.', 'start': 2527.199, 'duration': 5.428}, {'end': 2535.328, 'text': 'Now we can click inside to see more details.', 'start': 2532.947, 'duration': 2.381}, {'end': 2537.669, 'text': 'Details about successful sync,', 'start': 2535.648, 'duration': 2.021}, {'end': 2548.913, 'text': 'but also a pretty cool feature in the UI is this overview here of different components that the My App Argo application triggered to create.', 'start': 2537.669, 'duration': 11.244}, {'end': 2560.138, 'text': 'So this is the Argo CD application component itself, and This one actually triggered creation of the service as you see with the service icon here.', 'start': 2549.453, 'duration': 10.685}, {'end': 2565.001, 'text': 'And you also see all the components that have been created in the background from these top level components.', 'start': 2560.318, 'duration': 4.683}, {'end': 2566.402, 'text': 'So we have the deployment here.', 'start': 2565.221, 'duration': 1.181}], 'summary': 'Configured argocity application synced successfully with my app argo application triggering creation of different components in the cluster.', 'duration': 42.325, 'max_score': 2433.523, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2433523.jpg'}, {'end': 2685.761, 'src': 'embed', 'start': 2654.004, 'weight': 3, 'content': [{'end': 2659.505, 'text': "I'm going to do it directly in the GitLab user interface so we don't have to commit and push etc.", 'start': 2654.004, 'duration': 5.501}, {'end': 2663.687, 'text': "And let's change the tag to 1.2 and commit the changes.", 'start': 2660.126, 'duration': 3.561}, {'end': 2672.866, 'text': 'And now, at a certain interval, when argocd checks the git repository for any changes,', 'start': 2666.118, 'duration': 6.748}, {'end': 2682.377, 'text': "it will see that the desired state has changed and it's 1.2 and not 1.0 that we have running in the cluster,", 'start': 2672.866, 'duration': 9.511}, {'end': 2685.761, 'text': 'and it will automatically sync those changes.', 'start': 2682.377, 'duration': 3.384}], 'summary': 'Updating gitlab tag to 1.2 triggers automatic sync in argocd.', 'duration': 31.757, 'max_score': 2654.004, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2654004.jpg'}, {'end': 2857.308, 'src': 'embed', 'start': 2812.848, 'weight': 0, 'content': [{'end': 2822.78, 'text': 'but ArgoCD immediately reverted that back to two replicas because we have self-heal configured which undoes any manual changes in the cluster.', 'start': 2812.848, 'duration': 9.932}, {'end': 2829.729, 'text': 'And if I do kubectl edit deployment again, you see that it again says two replicas here.', 'start': 2823.561, 'duration': 6.168}, {'end': 2833.519, 'text': 'So my change was basically reverted.', 'start': 2831.198, 'duration': 2.321}, {'end': 2841.162, 'text': "And finally, if you're testing around with ArgoCity and you don't want to wait for the time interval to basically update your cluster,", 'start': 2833.999, 'duration': 7.163}, {'end': 2845.783, 'text': 'you can also trigger the synchronization with the Git repository manually.', 'start': 2841.162, 'duration': 4.621}, {'end': 2857.308, 'text': 'So first you basically refresh, which tells ArgoCity to compare the state in the cluster with the state in the repository, and then you can do sync,', 'start': 2846.064, 'duration': 11.244}], 'summary': 'Argocd auto-reverted manual change to 2 replicas due to self-heal config. sync with git repo can be triggered manually.', 'duration': 44.46, 'max_score': 2812.848, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2812848.jpg'}], 'start': 2417.071, 'title': 'Automating application configuration and argocd synchronization', 'summary': "Details automating argocity application configuration, emphasizing synchronization, service creation, deployment, replica set, pods, and ui monitoring. it also illustrates argocd's automatic synchronization, including updating image tags, pruning applications, and self-healing by reverting manual changes.", 'chapters': [{'end': 2623.559, 'start': 2417.071, 'title': 'Automating application configuration with argocity', 'summary': 'Details the process of configuring and applying the argocity application, emphasizing the automation of actions and synchronization, with the creation of service, deployment, replica set, and pods, and the ui features for monitoring and managing the application.', 'duration': 206.488, 'highlights': ['Automating actions and synchronization The configuration enables the full automation of actions and synchronization, minimizing the need for manual intervention, leading to increased efficiency and reduced manual workload.', 'Creation of service, deployment, replica set, and pods The ArgoCity application triggers the creation of service, deployment, replica set, and pods, providing a comprehensive overview of the components created, enhancing visibility and control over the application infrastructure.', 'UI features for monitoring and managing the application The ArgoCity UI provides detailed insights into the application components, including events, logs, and state manifests, empowering users to monitor and manage the application effectively, improving overall operational visibility and control.']}, {'end': 2872.231, 'start': 2623.959, 'title': 'Argocd synchronization and self-heal', 'summary': 'Illustrates the automatic synchronization feature of argocd, demonstrating how it automatically syncs changes made in the configuration repository to the cluster, including updating image tags, pruning applications, and self-healing by reverting manual changes.', 'duration': 248.272, 'highlights': ['ArgoCD automatically syncs changes made in the configuration repository to the cluster, including updating image tags. Demonstrates the automatic sync by updating the image tag from 1.0 to 1.2, with ArgoCD detecting the change and automatically updating the deployment.', 'ArgoCD demonstrates pruning applications by removing old deployments and creating new ones based on changes in the configuration repository. Illustrates the pruning feature by renaming a deployment, causing ArgoCD to remove the old deployment and create a new one, showcasing the pruning functionality.', 'ArgoCD showcases self-healing by reverting manual changes made in the cluster to maintain the desired state. Shows the self-healing capability by attempting to manually change the number of replicas using kubectl, with ArgoCD immediately reverting the change to maintain the desired state.', 'ArgoCD provides manual synchronization options, allowing users to trigger synchronization with the Git repository manually. Explains the manual synchronization process in ArgoCD, involving refresh to compare the state in the cluster with the repository, followed by sync to synchronize the states.']}], 'duration': 455.16, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/MeU5_k9ssrs/pics/MeU5_k9ssrs2417071.jpg', 'highlights': ['ArgoCity application configuration enables full automation of actions and synchronization, minimizing manual intervention, increasing efficiency.', 'ArgoCity triggers creation of service, deployment, replica set, and pods, enhancing visibility and control over application infrastructure.', 'ArgoCity UI provides detailed insights into application components, empowering users to monitor and manage the application effectively.', 'ArgoCD automatically syncs changes made in the configuration repository to the cluster, including updating image tags.', 'ArgoCD demonstrates pruning applications by removing old deployments and creating new ones based on changes in the configuration repository.', 'ArgoCD showcases self-healing by reverting manual changes made in the cluster to maintain the desired state.', 'ArgoCD provides manual synchronization options, allowing users to trigger synchronization with the Git repository manually.']}], 'highlights': ['Argo CD is gaining popularity as a GitOps tool in the DevOps world.', 'Argo CD is positioned as a continuous delivery tool and will be compared to other common CD tools like Jenkins or GitLab CI/CD.', 'Argo CD constantly monitors the git repository for changes and automatically pulls and applies those changes in the cluster, allowing separate CI and CD pipelines with a separation of concerns.', 'The whole Kubernetes configuration is defined as code in a Git repository, providing the benefit of treating infrastructure as code.', 'ArgoCD can be configured to handle manual cluster changes and send alerts for manual changes, providing flexibility in managing cluster updates.', 'Efficient management of thousands of clusters is achieved by using the same git repository, eliminating the need for manual intervention in reverting changes for each cluster.', 'ArgoCD enables easy cluster access management through Git, allowing junior engineers to propose changes and senior engineers to approve and merge them, streamlining the process and managing cluster permissions indirectly through Git.', 'ArgoCD provides easier cluster access management for non-human users like CI/CD tools, eliminating the need to give external cluster access and enhancing security management in Kubernetes clusters.', 'ArgoCD leverages Kubernetes resources and provides real-time updates of the application state, offering visibility in the cluster and monitoring deployment state after changes in the cluster configuration have been made, enhancing the application deployment process.', 'Argo CD is a replacement for CD pipeline specifically for Kubernetes, and there are several alternatives, including Flux CD, implementing the same GitOps principles.', 'ArgoCD can be configured to automatically sync changes in the git repository at three-minute intervals, with options to enable automated syncing, self-healing, and pruning.', 'ArgoCity application configuration enables full automation of actions and synchronization, minimizing manual intervention, increasing efficiency.', 'ArgoCity triggers creation of service, deployment, replica set, and pods, enhancing visibility and control over application infrastructure.', 'ArgoCity UI provides detailed insights into application components, empowering users to monitor and manage the application effectively.', 'ArgoCD automatically syncs changes made in the configuration repository to the cluster, including updating image tags.', 'ArgoCD demonstrates pruning applications by removing old deployments and creating new ones based on changes in the configuration repository.', 'ArgoCD showcases self-healing by reverting manual changes made in the cluster to maintain the desired state.', 'ArgoCD provides manual synchronization options, allowing users to trigger synchronization with the Git repository manually.']}