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

Are you using Carvel? #213

Open
microwavables opened this issue Aug 17, 2021 · 11 comments
Open

Are you using Carvel? #213

microwavables opened this issue Aug 17, 2021 · 11 comments
Labels
question Further information is requested

Comments

@microwavables
Copy link
Member

microwavables commented Aug 17, 2021

Are you using Carvel?

If you are using any of the Carvel tools, first we would like to Thank You. Our goal is to grow the community, improve Carvel and help each other.

The purpose of this issue

We are always interested in finding out who is using Carvel, what attracted you to using the tool suite, how we can listen to your needs, and, if you are interested, help promote your organization.

  • We have people reaching out to us asking, who uses Carvel in production?
  • We’d like to listen to what you would like to see in Carvel and your scenarios.
  • We'd like to help promote your organization and work with you.

What we would like from you

Submit a comment in this issue to include the following information, which would then also get included into the ADOPTERS.md file in this repo for others to see:

  • Your organization or company
  • Link to your website
  • Your country
  • Your contact info to reach out to you: blog, email, Kubernetes Slack workspace handle, or Twitter (at least one).
  • What is your scenario for using Carvel?
  • Are you running you application in testing or production?
  • Attach a PNG version of your logo to your comment. Name the image file something that reflects your company (e.g., if your company is called Acme, name the image acme.svg).

If you have any questions please Email Us.

Organization/Company: 
Website: 
Country: 
Contact: 
Usage scenario: 
Status: Production // Testing
@microwavables microwavables added carvel triage This issue has not yet been reviewed for validity discussion This issue is not a bug or feature and a conversation is needed to find an appropriate resolution question Further information is requested and removed carvel triage This issue has not yet been reviewed for validity discussion This issue is not a bug or feature and a conversation is needed to find an appropriate resolution labels Aug 17, 2021
@microwavables microwavables pinned this issue Aug 17, 2021
@vrabbi
Copy link
Contributor

vrabbi commented Aug 19, 2021

TeraSky
Company: TeraSky
Website: https://terasky.com
Country: Israel
Contact: @vrabbi (github and k8s slack) @vrabbi_il (twitter)
Usage: TeraSky is an Advanced Technology Solutions Provider. We utilize the carvel suite in order to streamline k8s configuration and deployment by many of our customers. We also utilize ytt to manage additional yaml based systems such as vRealize Automation and CloudFoundry.
Status: Production

@vrabbi
Copy link
Contributor

vrabbi commented Aug 19, 2021

I used a png file as it complains about not supporting svg format uploads

@microwavables
Copy link
Member Author

I used a png file as it complains about not supporting svg format uploads

@vrabbi ah, good to know! I updated the text to "PNG" thank you!!

@adriens
Copy link

adriens commented Aug 20, 2021

✋Intro

Hi, I'm Adrien Sales from OPT-NC New Caledonia

image

✅Questions

  • Your organization or company : Office des Postes et Télécommunications de Nouvelle-Calédonie
  • Link to your website :
  • Official Orgnization website : https://www.opt.nc/
  • Link to Official linkedIn page : https://www.linkedin.com/company/opt-new-caledonia/mycompany/
  • Your country : New Caledonia
  • Your contact info to reach out to you: blog, email, Kubernetes Slack workspace handle
  • What is your scenario for using Carvel : we are using vendir to sync repos to build docker images, ytt to instanciate templates and are currently working on packaging services as applications with kapp. We are prototyping on a onPrem Tanzu instance. We are using Github.com and GH Actions to automate the whole thing and are evaluating Harbor vs. Artifactory vs. Github Container Registry to store/release our images, also for public ones DockerHub
  • Are you running you application in testing or production? For now we are testing and train our new DevOPS process on this technology.
  • Attach a PNG version of your logo to your comment. Name the image file something that reflects your company (e.g., if your company is called Acme, name the image acme.svg) : please see below

OPT-NC

@cari-lynn cari-lynn unpinned this issue Aug 23, 2021
@cari-lynn cari-lynn pinned this issue Aug 23, 2021
@ChristianCiach
Copy link

ChristianCiach commented Sep 30, 2021

Hi! I am not quite ready to disclose the organization I am working for and make things official. I probably need clearance from upper management for that.

But let me just take this opportunity to say thank you for your work! We've just introduced kbld and kapp into our deployment pipelines, and these are a big help!

Some background: We recently moved from "Docker Swarm" to Kubernetes (self hosted k3s). We are templating our yaml-files (previously docker-compose-yaml, now kubernetes-yaml) using Ansible/Jinja, because our teams are used to Ansible and we didn't have time to switch to another templating engine, so Helm was no option for us.

So, at first our pipeline looked like this:

  1. Ansible+Jinja to generate a set of docker-compose files for Docker swarm, one file for each application (called "stack" in Docker-Swarm)
  2. Deploy using docker stack deploy -f docker-compose.yaml [stack-name]

You can probably see where I am going with this: Docker-Swarm has the concept of "stacks" that roughly translate to "apps" when using kapp. So, when updating a stack later with a new docker-compose.yaml-file that contains fewer services than before, Docker-Swarm was smart enough to remove the now-missing service from the stack.

Also: When deploying using docker stack deploy, docker first converts all image-tags into image-digests. This ensures that all nodes use the exactly same image, even when deploying latest tags.

After switching to Kubernetes, our pipeline initially looked like this:

  1. Use Ansible+Jinja to generate a set of kubernetes manifests (Deployment, Service, Ingress, ....)
  2. Use Kustomize to merge all files of one application into a single kubernetes.yaml (which is our replacement for the docker-compose.yaml files from before) while also using its configMapGenerator and secretGenerator to convert raw files into ConfigMaps and Secrets.
  3. Deploy using kubectl apply -f kubernetes.yaml for each application.

This works nicely, but we quickly encountered two issues:

  • kubectl apply doesn't convert latest-tags to digests. This leads to unexpected image-updates when kubernetes relocates a container from one node to another. Also, kubectl apply doesn't create new pods if the contents of the manifests have not changed, even though the developer expects the recreation of pods if the latest image has been updated in the meantime.
  • If a new kubernetes.yaml (which, again, is a concatenation of all kubernetes resources that together describe an application) contains fewer resources than before (like a removed Ingress), kubectl apply won't delete the removed resource from the cluster. (Yes, I know about --prune, but let's not speak about that....).

As I already said, we absolutely have to use Ansible (for variables management) and Jinja (for templating), because migrating away from these would be a huge project by itself. This means we can't use Helm. And let's be real: Most people seem to hate Helm with strong passion.

This was when I discovered the carvel tools:

  • kbld: Convert image tags to digests while deploying to emulate the behavior of Docker Swarm.
  • kapp: Deploy a set of manifests as "applications" which is very similar to how Docker Swarm handled "stacks".

Our pipeline now looks like this:

  1. Use Ansible+Jinja to generate a set of kubernetes manifests (Deployment, Service, Ingress, ....)
  2. Use Kustomize to merge all files of one application into a single kubernetes.yaml (and generate ConfigMaps and stuff).
  3. Pipe the kubernetes.yaml of each application through kbld to convert image tags to digests.
  4. Deploy using kapp deploy -a [app-name] -f kubernetes.yaml for each application.

This works really well!

Seriously, I think the carvel tools deserve a lot more love from the community. When searching sites like hacker-news and reddit for tools like "kapp" you barely find any mentions of them. I am really curious about why this is the case, because I think these tools really fill a gap, especially if you don't want to use Helm.

@microwavables
Copy link
Member Author

@ChristianCiach thank you so much for these details and community love! Let us know if/when you can disclose the org you work for. We'd love to know what organizations are using Carvel :) I'll make sure the rest of the team sees your comment, as well. We'd also love to have you join one of our community meetings to virtually meet you over Zoom. Details here: https://hackmd.io/F7g3RT2hR3OcIh-Iznk2hw

@gcheadle-vmware gcheadle-vmware unpinned this issue Nov 2, 2021
@gcheadle-vmware gcheadle-vmware pinned this issue Nov 2, 2021
@100mik 100mik unpinned this issue Mar 10, 2022
@100mik 100mik pinned this issue Mar 10, 2022
@devthejo
Copy link


Organization: Fabrique Numérique des Ministères Sociaux
Website: https://www.fabrique.social.gouv.fr/
Country: France
Usage:
We are using kapp CLI as deployer for our CI/CD tooling that we are developing and implementing actively: Kontinuous
The project started as a wrapper around Helm and Kapp, then evolved to offer more abstraction and a rich plugins system. Doc will be updated soon to reflect our current state of art.
Many thanks for great tooling you provide !
Dependencies tree management using change-group and change-rules are greatly valuable and offer much flexibility for our use cases.

@gberche-orange
Copy link
Contributor

gberche-orange commented Jan 11, 2023

Thanks for the great work and welcoming community. Carvel has been solving problems that I was facing in a pure gitops workflow using Fluxcd2.

@corneil
Copy link

corneil commented Mar 22, 2023

  • Company: VMware (Spring Cloud Data Flow)[https://dataflow.spring.io/]
  • Country: International
  • What is your scenario for using Carvel:
    • The (Spring Cloud Data Flow)[https://dataflow.spring.io/] project is using Carvel. We have been running our k8s acceptance tests using Carvel for some time and are now preparing to make it the default packaging for the Pro version.
    • The hope is that we can provide users of OSS and Pro version a deployment experience that is as simple as Helm but more powerful when needed.
    • The acceptance tests need to run many permutations of tests. We deploy multiple k8s clusters, then deploy the databases and message brokers needed for the permutations that will run in that cluster. Then we run all permuations in parallel which means each instance in deployed in a separate namespace and it's own configuration.
  • Test or production: It is our acceptance testing but it probably much more complex than any production environment a customer will have. We hope to have it in customer production environments soon.
  • Logo

Thank you for the great work.

@Havnevej
Copy link

  • Company: nemlig.com
  • Country: Danish
  • Contact info: devops@nemlig.com
  • What is your scenario for using Carvel:

We are in the Platform team at nemlig.com, developing an in-house kubernetes platform, which is deployed, managed and configured using a plethora of open-source tools like: kcli, helm and many many more.

We have developed the platform from scratch, stitching together many open-source tools. But a few of the most important tools in our toolbox is yq, jq and of course the glue that binds all of the tools together ytt.

Ytt is often the last step before helm install in a tool we have created called the component-handler which, as the name eludes to, handles components (e.g., helm releases in our clusters) in a generic but also hugely extendable way. Without ytt, this had been hell for us to develop like we wanted it, so we are very grateful for this awesome tool and are planning to contribute back when time allows.
Awesome work you guys!

  • Env: Test & Production
    https://nemlig.com

@microwavables
Copy link
Member Author

@Havnevej thank you so much for your contribution to this issue!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

8 participants