konpyutaika / nifikop

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes. Apache NiFI is a free, open-source solution that support powerful and scalable directed graphs of data routing, transformation, and system mediation logic.
https://konpyutaika.github.io/nifikop/
Apache License 2.0
128 stars 44 forks source link

[Feat/terraform] Add module #182

Closed erdrix closed 1 year ago

erdrix commented 1 year ago
Q A
Bug fix? no
New feature? no
API breaks? no
Deprecations? no
Related tickets
License Apache 2.0

What's in this PR?

Add terraform modules to deploy NiFiKop on kubernetes cluster

Why?

Part of a larger share on terraform modules

Additional context

Checklist

mh013370 commented 1 year ago

Conceptual question about this: Do we intend to maintain a helm chart and a terraform plan for deploying nifikop & a nifi cluster to Kubernetes? Is this meant to be an example or kept up to date as the preferred way to deploy a complete setup?

erdrix commented 1 year ago

Not sure yet, for now in my mind the reference is the Helm chart for NiFiKop and the classic yaml for NiFi Cluster.

But we are working on an application (flow-manager) to provide a user interface to manage the cluster and the data flow on top of NiFiKop. This application will require this terraform module and something else for the NiFi cluster (Helm Chart or a new high-level operator that will manage the NiFi cluster and other types of resources).

So no concrete answer for now, but what can lead the thinking could be this application

mh013370 commented 1 year ago

Interesting. I wonder if this would belong in this repo vs another one for deployment-specific configurations? Here's why:

I think we'd likely use ArgoCD ApplicationSets (see the various generators to parameterize deployments) to generate new deployments to accomplish a similar thing you've done here with a terraform module. We do this today with nifikop, cert manager, and nifi-cluster helm chart (#141) deployments. The canonical ApplicationSet examples show deploying applications to many k8s clusters, but it could be many applications to one cluster just as well.

I suspect people will choose approaches that more readily adapt to their existing environment and so I wonder about maintaining stuff like that alongside the operator vs another repo? I don't know the correct answer. Just opening the dialog 🙂

erdrix commented 1 year ago

Interesting. I wonder if this would belong in this repo vs another one for deployment-specific configurations? Here's why:

I think we'd likely use ArgoCD ApplicationSets (see the various generators to parameterize deployments) to generate new deployments to accomplish a similar thing you've done here with a terraform module. We do this today with nifikop, cert manager, and nifi-cluster helm chart (#141) deployments. The canonical ApplicationSet examples show deploying applications to many k8s clusters, but it could be many applications to one cluster just as well.

I suspect people will choose approaches that more readily adapt to their existing environment and so I wonder about maintaining stuff like that alongside the operator vs another repo? I don't know the correct answer. Just opening the dialog 🙂

Thanks for the comment, I wasn't sure whether to put this terraform here or outside, I'm now convinced this is the wrong place :)