hashicorp / waypoint

A tool to build, deploy, and release any application on any platform.
https://waypointproject.io
Other
4.76k stars 327 forks source link

Kubernetes plugin: support for all apps/v1 resources (i.e. StatefulSets, DaemonSets, InitContainers, etc.) #2615

Open ntx-ben opened 2 years ago

ntx-ben commented 2 years ago

Is your feature request related to a problem? Please describe. We're currently evaluating Waypoint and could not find any references to StatefulSets, DaemonSets, InitContainers, Volumes etc. in the "kubernetes" plugin of Waypoint. We were wondering if this is planned for future releases of Waypoint, or is it handled differently than the current Deployment capability?

Describe the solution you'd like Supports for all "apps/v1" resources available in Waypoint "kubernetes" plugin

Describe alternatives you've considered I guess the alternative for now is using the "kubernetes-apply" plugin and keeping our current YAML manifests

Thanks

briancain commented 2 years ago

Hey there @ntx-ben - Currently the Kubernetes plugin uses the k8s Go api for managing the application container during a deployment. These components are available to the plugin to manage, but it's possible not 100% of everything is exposed as a configuration option. Is there something specific about these components in Kubernetes that you wish to handle and configure per deployment? Do you have an example use-case that you'd want to configure those components specifically for? If there's something missing from the plugin that you need to configure a pod in a deployment for, we'd love to add it!

Otherwise you are right, the alternative is to go with the kubernetes-apply plugin, which gives you the full range of configuration K8s allows for directly with yaml. And there's also the helm plugin too.

ntx-ben commented 2 years ago

Hi @briancain ,

Thanks for the quick reply.

From my understanding of the code, it only supports the apps/v1 Deployment resource? I am referencing here.

So let's say for ex. I have a service that requires to run on all k8s nodes, I'd want to use the apps/v1 DaemonSet resource to achieve that. However, in the "kubernetes" plugin code I can see that it generates an apps/v1 Deployment resource. There is no way currently to specify the type of deployment (Deployment, StatefulSet, DaemonSet) to generate. Is that correct?

Thanks

briancain commented 2 years ago

Ah yes, you are correct @ntx-ben. At the moment the K8s plugin doesn't allow you to specify any other kind of resource other than a Deployment. That's something we should be able to support. Thanks for the request!