Argo CD - Applying GitOps Principles To Manage A Production Environment In Kubernetes
Ғылым және технология
Argo CD is a declarative GitOps deployment tool for Kubernetes.
It is one of the best, if not the best tool we have today to deploy applications inside Kubernetes clusters. It is based on GitOps principles, and it is a perfect fit to be a part of continuous delivery pipelines. It provides all the building blocks we might need if we would like to adopt GitOps principles for deployments and inject them inside the process of application lifecycle management.
Argo CD is a tool that helps us forget the existence of `kubectl apply`, `helm install`, and similar commands. It is a mechanism that allows us to focus on defining the desired state of our environments and pushing definitions to Git. It is up to Argo CD to figure out how to converge our desires into reality.
DevOps Catalog, Patterns, And Blueprints: www.devopstoolkitseries.com/p...
Books and courses: www.devopstoolkitseries.com
Podcast: www.devopsparadox.com/
Пікірлер: 106
Good job
I really like the direct approach you use to show things actually running. Great video :D
This introduction was great! Thank you very much for producing this. My team will love Argo. :D
Very clear demonstration. Thank you!
This is great! I'm just starting to learn Argo CD for work, I'm looking forward to starting your course.
superb high-level, basic introduction to ArgoCD. Thank you.
Another awesome video ❤, thank you Viktor we appreciate you 🙏
Thank you Viktor!..really great explanation!
Great job. Bought the course starting now.
@DevOpsToolkit
3 жыл бұрын
Hope you enjoy it!
I didn't know you were a Udemy instructor. I'll take your "DevOps Catalog, Patterns, And Blueprints" course. You're doing a great job man. Thank you so much.
@DevOpsToolkit
3 жыл бұрын
Thank you for saying that.
I really enjoy to watching your videos :)
Looks like you got some new upgrades... you deserve them.
Amazing content!👍🏻
Thanks. Excellent Job !
@DevOpsToolkit
3 жыл бұрын
Glad you liked it!
thanks a lot, keep posting more on this
@DevOpsToolkit
3 жыл бұрын
Thank you, I will
Great video, thank you
Excellent content. Love the channel and whats-a-not.
I want to take holidays and watch all your videos
very nice! love it
Nice concept "app of apps". I'll try that like "app of appsets which generates apps" because I want to reuse as much as I can for many apps in one appset.
Great video!
@DevOpsToolkit
3 жыл бұрын
Thanks!
Many thanks!
i often press like button then watch video:)
Thanks man!
Very practical! Thanks for share it. It would be nice to have a comparison (or possible combination) between Argo CD, Tekton, Flux CD, JenkinsX, etc..
@DevOpsToolkit
3 жыл бұрын
Great suggestion! I'll start by doing individual videos for those I haven't done before. That would be Tekton and Jenkins X (I made a lot of material about JX, but that's all older than a year). After that, I'll probably do a comparison between all those.
@DevOpsToolkit
3 жыл бұрын
Just published a video about Tekton (kzread.info/dash/bejne/aaGq1NKxqsKolqg.html). Next should be Jenkins X and then I can do a comparison. Argo CD and Flux CD are completely different categories. They are not pipelines and they do not do CD (except having it in their names). They are GitOps-style deployment mechanisms.
@javisartdesign
3 жыл бұрын
@@DevOpsToolkit awesome! yes, that's why the combo between these tools are great. Instead pushing deployments using tekton, gitlabci, etc.. use instead gitops strategies to constantly pulling for changes in the state.
Thank you for this video, Viktor. Could you please explain diff between ArgoCD & Tekton? And also, could you please make a video on how to use both together & advantages/disadvantages of using them together?
@DevOpsToolkit
3 жыл бұрын
That's a good idea. I'll do my best to work on it ASAP.
@DevOpsToolkit
3 жыл бұрын
It's done and available in kzread.info/dash/bejne/lnWJ0qOqZ8vMlaQ.html
@chandup
3 жыл бұрын
@@DevOpsToolkit thank you so much
Very nice :)
Thank you for your video. @DevOpsToolkit Why you didn't use Application Set?
@DevOpsToolkit
2 жыл бұрын
When that video was published, Application Sets were still in the planning phase.
Great video Viktor. Does Argocd allow to create namespaces automatically based on branch names? Or does that have to be configured manually?
@DevOpsToolkit
3 жыл бұрын
As far as I know, it'll not create namespaces automatically without you telling it to do that. Argo CD applies whichever manifests it finds in the repo it monitors. It's up to us to make sure that those manifests are what they should be, including Namespaces we want to use.
@CODEMENTAL
3 жыл бұрын
@@DevOpsToolkit Thanks Viktor. Just saw your other video on argocd and pull requests. That is not far off where we await to get to.
This is really helpful. Can you please tell how Argo CD is different from other tool like seldon.
@DevOpsToolkit
2 жыл бұрын
I have not yet tried Seldon so I cannot compare it with Argo CD. Judging from a quick glimpse at it, it seems to be a wrapper around Argo CD.
@DevOpsToolkit
2 жыл бұрын
The real competitor of Argo CD is Flux. Both are very similar and it would be hard to say that one is clearly better than the other. All the other tools I know in that area are either a waste of time or are built on top of one of those two.
Good stuff... just started new project and definitely moving to a similiar GitOps workflow using GitLab, Helm, ArgoCD and k8s. WHat was the name of the software tool used to draw your diagram on screen?
@DevOpsToolkit
3 жыл бұрын
When I recorded that video, I used krita.org with a green background that is removed by OBS while recording. Since then, I moved to presentify.compzets.com/ which allows me to draw directly over the screen.
Thanks for sharing. Does this video come with a gist url?
@DevOpsToolkit
3 жыл бұрын
That one doesn't :) I started adding Gists soon after I published that one.
Thank you very much for all effort, i really wanted to buy your udemy course, but could not find it
@DevOpsToolkit
Жыл бұрын
I removed all my Udemy courses. The tech changes fast and i felt that those courses do not fully represent recommendation i would give today.
Thank you for your nice videos. Please do you have a tutorial, for an end-to-end ci/cd pipeline where the image tag in the values file is updated, and this update is pushed to the gitops (k8s minifest) repo to trigger the CD? thank you
@DevOpsToolkit
Жыл бұрын
Will do... Ading it to my TODO list...
Thank you for this 😀😀😀😀😀😀😀
Hi Victor! I am missing the point of where and when the new image version is getting built of the apps. Great videos, thank you!
@DevOpsToolkit
3 жыл бұрын
Argo CD is concerned only about synchronization of different states. To build an image, you can, for example, use Kaniko ( kzread.info/dash/bejne/d5uruLOHZqq0eso.html ). You might want to watch kzread.info/dash/bejne/ioKMrNaxm7ixlbw.html as well. It is about combining different tools to automate full lifecycle, including building images
@DevOpsToolkit
3 жыл бұрын
I forgot to answer "when"... You build a new image whenever you push changes to a git repo of an app. Typically, that would trigger a webhook that would notify something that there was a change in an app repo. That something can be any pipeline/workflow tool. You'll find a video about Argo Workflows in my channel, but it could be just as well any other like, for example, Jenkins, Circle I, etc.
@zsolt2108
3 жыл бұрын
@@DevOpsToolkit Ah okay, I see now in your all-in-one Argo video: kzread.info/dash/bejne/ioKMrNaxm7ixlbw.html Thank you!
So.. We use ArgoCD and we're looking to use Argo Rollouts - but I have a question for you.. What if we wanted a progressive delivery model to release and support multiple versions of an application?.. For example, we release V2 with breaking changes and we need to have V1 and V2 running, do we treat this new V2 as a brand new application altogether and handle the routing ourselves at the ingress controller, or is there a way to have a single argo application definition that has two versions of the same application and support progressive delivery of both versions simultaneously?..
@DevOpsToolkit
2 жыл бұрын
How would that work on the Ingress level? Would both V1 and V2 be accessible through the same host? If the answer is yes you'd need something else that would ensure that a request is redirected to the correct version. Typically, you would need to add some identifier to the requests. On the other hand, if you prefer to have those accessible through different hosts, I would just deploy it as a different application.
A wizard.
Nice work. You have a typo in the title though. Add an article, “manage a production” not “manage production”
@DevOpsToolkit
2 жыл бұрын
Thanks for that. Title changed...
Hi Viktor. What is your approach for cicd in gitops in terms of do you change the new image in the argo app only or do you change the new image in the source values file of the helm chart too? Thanks upfront.
@DevOpsToolkit
Жыл бұрын
I tend to keep manifests in the main branch with tags that reflect production with the option to overwrite that in argo CD app.
@vangelkrstevski566
Жыл бұрын
@@DevOpsToolkit thanks.
wonderful ; May I know how does the destination namespace "production" works. Can it be set from the argocd UI. And where is that ingress host get substituted
@DevOpsToolkit
2 жыл бұрын
Argo CD UI is not meant to be used to create resources in k8s. That would defy its purpose. What you can do is push define the Namespace is push it to Git.
@SanjeevKumar-nq8td
2 жыл бұрын
@@DevOpsToolkit I tried, unfortunately project with different name are not created ?
@DevOpsToolkit
2 жыл бұрын
@@SanjeevKumar-nq8td I'm not 100% sure what you meant by "project with different name are not created" in relation to namespaces.
How does ArgoCD build an image? Should be some instructions provided? Also, does ArgoCD support Kustomize? This one is more preferable to me over Helm :)
@DevOpsToolkit
3 жыл бұрын
Argo CD does not build images. It assumes that you are doing the process of building, testing, etc. in whichever way you normally do those things. It's focus is only on making sure that whatever is defined in Git is what is running in clusters. As for Kustomize... It supports it. I used Helm in that video mostly because it is more commonly used. Personally, I prefer Kustomize over Helm for most use-cases.
@underlecht
3 жыл бұрын
Ok, i found another video kzread.info/dash/bejne/ioKMrNaxm7ixlbw.html, gonna watch it :)
Dude you look like a gamer and also talks like a gamer
please make proper playlist on kuberneets beginneradvanced so hthat all benfited
@DevOpsToolkit
3 жыл бұрын
It's very hard for me to know what is beginner and what is advanced, mostly since my own learning process is chaotic and unstructured. Maybe you can help by giving me tips whether a video you watched is beginner or advanced?
Is there any possibility to point specific tag to deploy ,not latest tag
@DevOpsToolkit
2 жыл бұрын
Yes, there is. You can point to anything in Git (branch, commit, tag, etc.).
Can you please show this exact same thing but on the Terraform?
@DevOpsToolkit
Жыл бұрын
I can't do the same with Terraform since it is a different type of tool (it's IaC and not GitOps). I could show the same with Flux or Rancher Fleet.
@nousherqureshi6231
Жыл бұрын
@@DevOpsToolkit Yea, Flux will be good as well
@DevOpsToolkit
Жыл бұрын
Adding it to my TODO list... :)
So how is having an application referencing other two applications different from ArgoCD AppProject resource type?
@DevOpsToolkit
Жыл бұрын
Argo project does not reference any repo/manifests. The project is mostly about permissions.
👌
Can you create a video on kpack?
@DevOpsToolkit
2 жыл бұрын
Great suggestion. Adding it to my TODO list...
@DevOpsToolkit
2 жыл бұрын
Done :) kzread.info/dash/bejne/mJaH0a2uaLGtg7g.html
Is the udemy course out for argo?
@DevOpsToolkit
3 жыл бұрын
It's not. I did not even start working on it. For now, my focus is on free KZread content.
@CrankyCoder
3 жыл бұрын
@@DevOpsToolkit I’m not complaining. Keep up the great work. I’m working my way through your vids :)
It is unclear why a Chart.yaml is needed? Can ArgoCd just peek up yaml files for applications from a specified directory?
@DevOpsToolkit
Жыл бұрын
If you want to ask whether it can use "pure" Kubernetes YAML instead of Helm charts, the answer is yes. It can be Helm, Kustomize, "pure" YAML, and, probably, a few others.
8:10 Q: Should you also change metadata name to devops-paradox? / 9:15 A: Yes
@ViktorFarcic
3 жыл бұрын
That's what happens when doing it, more or less, loosely unscripted and partly improvised. Mistakes are bound to happen.
@amabamo5769
3 жыл бұрын
@@ViktorFarcic i feel like thats the issue with all of the current ci cd tools depending On yaml, feels like doing it in some language like go could work better
@DevOpsToolkit
3 жыл бұрын
@@amabamo5769 I agree completely. Jenkins has that through its DSL. However, new pipeline tools are ignoring it completely and focusing on YAML. That's, in a way, strange, since pipelines are not declarative in nature, but, rather, imperative statements of what should be executed under which conditions.
@amabamo5769
3 жыл бұрын
@@DevOpsToolkit This leads to a problem where most of my commits are just fixing the .gitlab-ci.yml. I don't feel like any yaml based pipeline tool is gonna be good enough. I also wonder what people that came to the same conclusion are working with. What are the tools or resources that the smart people are using?
@DevOpsToolkit
3 жыл бұрын
My approach to CI/CD is to work on pipelines at the very end. The idea is to write all the automation scripts first, and then use whichever pipelines tool you have only to orchestrate those scripts. Preferably, I would keep all those scripts inside repos so the job of my pipelines is only to clone a repo and execute commands like `run-tests.sh`, `build-image.sh`, etc. That way, testing is easier, and there isn't much coupling between automation and pipelines. That being said, I think that many are taking the opposite approach and start defining everything in pipelines.
Is it possible to use values.yaml in this flow to allow for dynamic helm charts? Is argoCD able to dynamically create the a templates referencing .Values.xxx.xxx?
@DevOpsToolkit
2 жыл бұрын
I'm not sure what you mean by "dynamically". Argo CD Application manifest can include Helm values but something needs to create/update the manifest. The goal of GitOps is to have the desired state stored in Git so everything needs to end up, in one form or another, in version control.
@Kcouture0827
2 жыл бұрын
@@DevOpsToolkit in your demo you overwrite some helm values via the Argo application manifest. I want to know if it is possible to instead use a values.yaml file located in the git repo (in the helm directory) for these values.
@DevOpsToolkit
2 жыл бұрын
@@Kcouture0827 You can do that through `spec.source.helm.valueFiles` entry. The values over there are paths relative to whatever you set in `spec.source.path` which, in your case, should be the directory of the Helm chart.
@Kcouture0827
2 жыл бұрын
@@DevOpsToolkit perfect. That’s what I was looking for. Thanks, you the man!