I'd also recommended taking a look at using Terraform[1] to manage Kubernetes resources instead of yaml files and kubectl.
[1] https://www.terraform.io/docs/providers/kubernetes/guides/ge...
[1] https://www.terraform.io/docs/providers/kubernetes/guides/ge...
An example would be creating a dynamically names S3 bucket and passing it onto your service to use/manage. The same goes with anything needing credentials. Very powerful.
I'd be very tempted to just use terraform. But helm, with our forked charts, extensive values.yaml files, etc. has permiated the deployment.
So... rather than try to break up the helm beast; I leave it and keep the separation of concerns (infrastructure vs k8s) as described at the beginning. It works pretty well to be honest is rarely the source of problems.
Note: It uses the kubernetes terrform provider and only support those objects