Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Research deployment methodologies #382

Closed
TomasTomecek opened this issue Oct 3, 2022 · 5 comments
Closed

Research deployment methodologies #382

TomasTomecek opened this issue Oct 3, 2022 · 5 comments
Assignees
Labels
complexity/epic Lost of work ahead, planning/design required.

Comments

@TomasTomecek
Copy link
Member

TomasTomecek commented Oct 3, 2022

Research different ways we could deploy our projects. Focus on time-saving, manual steps, rolling back to previous versions, time-to-deploy a change.

Talk to other teams in our organization and check how they are doing, esp. those working with the SRE team.

Definition of done: we have data to make a decision about the way we deploy our services and can make a commitment to change it.

@TomasTomecek TomasTomecek added the complexity/epic Lost of work ahead, planning/design required. label Oct 3, 2022
@lachmanfrantisek
Copy link
Member

Do we want to have a plan (steps for the implementation) prepared as a part of this epic?

@TomasTomecek
Copy link
Member Author

Do we want to have a plan (steps for the implementation) prepared as a part of this epic?

I'd say no so that it's easier to complete.

For me, the outcome of this research is to decide which solution we want to use and then form a plan.

Does that work for you?

@jpopelka
Copy link
Member

jpopelka commented Dec 7, 2022

After spending some time creating Helm Charts and Continuous Deployment (CD) for our two cron-jobs (packit-service-validation, import-images) I have a better understanding of what it is useful for and can better understand the differences between the other technologies.

Helm vs. Kustomize: I went through several comparisons (e.g. 1, 2 (czech)) and neither of the two look like a better fit four our use-case.
One can actually use a combination of both, which is what most of the articles suggest in the end.
For example, Kustomize can be used as post-rendering in Helm. GitHub runner also contains both tools.

I'd definitely start with Helm and then look at whether adding Kustomize into the process can simplify things for us.
Also, MP+ supports Helm.

Tanka & Jsonnet - looks similar to Helm and Kustomize but works with JSONs instead of YAMLs. It has many benefits (jsons are better for machines, yamls are better for people), but to me, it looks like it starts to pay off when you have many applications on many clusters, which is not our case. It's not included in GitHub runner.

Skaffold (and others): I checked only Skaffold and it looks like a newer kid on the block, trying to ease the whole development process (building, tagging and deploying). We can revisit it later once we have Helmized the whole deployment because it can work with Helm as well. It's not included in GitHub runner.

GitHub Actions/workflows vs. ArgoCD: Both can, as I see it, do the same, i.e. sync a git repo (with a Helm Chart) to a k8s/OpenShift cluster. The difference is that GHA does that from the repo side, while ArgoCD from the cluster side. ArgoCD needs additional resources in the cluster, which might be a problem in the Automotive cluster. I'd start with implementing the CD via GHAs and if we move to MP+, we can research ArgoCD, which is available there.

So the steps for our next-gen Continuous Deployment would be:

  • Helmize our deployment
    • Create a Helm Chart for secrets - that will be the most interesting part
    • Create a GitHub workflow for installing/upgrading the Helm release (deployed chart instance)
    • Add the rest of the resources to the Helm chart - should be easier
  • Research whether Kustomize would help us in any way?
  • Research whether ArgoCD would help us in any way?

@jpopelka jpopelka moved this from new to in-review in Packit Kanban Board Dec 7, 2022
@jpopelka jpopelka self-assigned this Dec 8, 2022
@jpopelka jpopelka mentioned this issue Dec 8, 2022
7 tasks
@jpopelka
Copy link
Member

jpopelka commented Dec 8, 2022

Closing, see #419

@jpopelka jpopelka closed this as completed Dec 8, 2022
Repository owner moved this from in-review to done in Packit Kanban Board Dec 8, 2022
@TomasTomecek
Copy link
Member Author

works with JSONs instead of YAMLs

lol, not 2022

I'd start with implementing the CD via GHAs and if we move to MP+, we can research ArgoCD, which is available there.

agreed!

well done with going with helm, based on your research it looks like a right thing to do

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
complexity/epic Lost of work ahead, planning/design required.
Projects
Archived in project
Development

No branches or pull requests

3 participants