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

Support for other lang apps #105

Open
sivagollapalli opened this issue Jul 22, 2022 · 3 comments
Open

Support for other lang apps #105

sivagollapalli opened this issue Jul 22, 2022 · 3 comments

Comments

@sivagollapalli
Copy link

Thanks for the great deployment solution.

I am using amazon EKS to run my rails application. Along with rails monolith I am using sidekiq, a Ruby app that talks amazon SQS, and a golang App that provides a response to my mobile application. How can I run my Ruby app and golang using kuby? I feel we need to add separate plugins for these. If yes, I would like to give it a shot if you provide me with direction on how to approach it?

@camertron
Copy link
Member

Hey @sivagollapalli, these are good questions. Some thoughts and questions:

  1. Kuby already supports Sidekiq via the kuby-sidekiq plugin. Hopefully it works for your use-case.
  2. Is the Ruby app that talks to SQS using a framework or is it like a standalone Ruby script? Is it already containerized?
  3. Is the golang app already containerized?

Containerization

Kuby should be able to handle the SQS and golang apps, but it will take some effort on your part to get them working. If they're not already containerized, I would suggest starting there. The Kuby docs contain a section that explains how to specify additional Docker images. Kuby will build and push these images when you run kuby build and kuby push respectively.

Kubernetes Resources

The next step is to create several Kubernetes resources for the apps. At minimum you'll need:

  1. Two Deployments that specify how to run the images, how many replicas you want, etc.
  2. Two Services for routing HTTP requests to the apps.
  3. Two Ingresses for routing HTTP requests from the outside world to the Services.

Take a look at the rails_app plugin as a reference.

Plugins

The easiest way to define the additional Docker images and Kubernetes resources is via a couple of plugins, one for each app. If the plugin code you come up with is general enough (i.e. works with any golang app, etc) you might consider sharing your plugin with the community. Otherwise it's perfectly ok to keep the plugin code in your monolith and use it only for your own needs. Take a look at the plugin docs for more information.

Finally, don't hesitate to reach out with questions :)

@sivagollapalli
Copy link
Author

@camertron Thanks for your reply.

I containerized my apps already and have been deploying them via Jenkins. I would like to use kuby and try how to deploy them. Let me try to add a generic plugin using docs that works with golang.

My idea would be open source them as well.

@camertron
Copy link
Member

Ok thanks for the additional info. If your apps are already containerized then you can probably skip all the Docker stuff.

My idea would be open source them as well.

Cool! Looking forward to taking a look at the code when you're ready :)

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

No branches or pull requests

2 participants