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

[FR] Helm Only and Additional Options #87

Open
reedjosh opened this issue Nov 27, 2023 · 8 comments
Open

[FR] Helm Only and Additional Options #87

reedjosh opened this issue Nov 27, 2023 · 8 comments
Assignees

Comments

@reedjosh
Copy link

Is your feature request related to a problem? Please describe.
Operators seem to add an additional level of complexity and in this case it seems it only adds reconciliation to the core Helm chart.

I was wondering if we could break the core chart out here and even modularize the individual components?

To me the overall product could be a superchart, and all of the individual components could be their own versioned charts.

I'd also be interested in helping add additional features like VPN, and Jellyfin compatibility.

Describe the solution you'd like
Break out the Helm chart into versioned releases by component. Create a superchart for the current set of components.

Minimally support additional features even if only by examples of kustomization with side-cars.

Describe alternatives you've considered
Downloading and installing directly from the git repo. I plan to use ArgoCD anyway, so technically I could point it to the helm chart here without a fully release versioned chart, but why not add a helm repo index to the repository and make releases more official?

Additional context
I think the helm operator was a cool way to add reconciliation to helm charts, but operators add a large layer of complexity.

Other systems such as ArgoCD and Flux are becoming the dominant path for Helm installation with reconciliation anyway.

Thanks for putting this together! It's super cool, and I look forward to deploying it.

@kubealex
Copy link
Owner

kubealex commented Dec 4, 2023

Hi @reedjosh, thanks for the input!
This makes absolutely sense, now that things are starting to grow in complexity and number it could make absolutely sense.
I'm happy to sleep on this and collect ideas, feel free to share your idea of structure if you already have one, this could be discussed!

Ale

@reedjosh
Copy link
Author

reedjosh commented Dec 5, 2023

@kubealex I actually did deploy this about a week ago now. I used ArgoCD and directly targeted your chart dirextory.

image

I also used the Jellyfin PR fork to get Jellyfin deployed too.

This project is super awesome!

Now that I know more, I still think a superchart with subchart dependencies is the way to go. I would be happy to PR against this repo with a potential new structure.

I'll try to toss that together in the next few days. Hopefully in doing so most of the input values can remain the same.

Further, I also managed to deploy and setup jellyseerr, so hopefully I can help add that as an optional feature too.

@RyuunosukeDS3
Copy link

RyuunosukeDS3 commented Dec 25, 2023

Hello there @reedjosh. I want to second this idea but also want to ask this: Would you be able to provide info on how you deployed all this on argocd? I'm fairly new to Argo...

@reedjosh
Copy link
Author

@RyuunosukeDS3

Here's a snippet from my ArgoCD Application where I point to the repo path.

...
...
project: default
destination:
  server: 'https://kubernetes.default.svc'
  namespace: media
syncPolicy:
  automated:
    prune: true
    selfHeal: true
  syncOptions:
    - CreateNamespace=true
sources:
  - repoURL: 'https://github.com/kubealex/k8s-mediaserver-operator.git'
    path: helm-charts/k8s-mediaserver
    targetRevision: v0.9.1
    helm:
      valuesObject:
        general:
          ingress:
            ingressClassName: nginx
...
...

@reedjosh
Copy link
Author

https://github.com/kubealex/k8s-mediaserver-operator/pull/92/files

Okay, finally have a draft of the superchart setup. Not ready at all yet, but should give an idea of the intended direction.

@reedjosh
Copy link
Author

reedjosh commented Dec 30, 2023

Okay, I've successfully deployed a second copy of my setup using my superchart version.

...
...
destination:
  server: 'https://kubernetes.default.svc'
  namespace: media-test
syncPolicy:
  automated:
    prune: true
    selfHeal: true
  syncOptions:
    - CreateNamespace=true
sources:
  - repoURL: 'https://github.com/kubealex/k8s-mediaserver-operator.git'
    path: helm-charts/k8s-mediaserver
    targetRevision: v0.9.1
    helm:
      valuesObject:
        general:
          ingress:
            ingressClassName: nginx
          ingress_host: test-media.redacted-redacted
          storage:
            pvcStorageClass: nfs-01
        jackett:
          enabled: false
        plex:
          enabled: false
        radarr:
          ingress:
            annotations:
              cert-manager.io/cluster-issuer: letsencrypt-prod
            tls:
              enabled: true
              secretName: test-media.radarr.redacted.redacted-tls
        sabnzbd:
          enabled: false
        transmission:
          enabled: false
          service:
            peer:
              type: LoadBalancer
...
...

@kubealex I'm currently also using @umbertix's fork to deploy Jellyfin.

Then I'm deploying Jellyseerr in my own manner too.

I see the Jellyfin fork has been open for quite some time.

Do you have time to review that and my PR? Mine's not complete, but close enough that I'd like to start a discussion.

Would you like me to just incorporate Umbertix's PR into my own as to be able to add both at once?

Would you like an additional maintainer? I'd be happy to lay out some of my credentials and previous contributions for you if you're interested in adding additional maintainers to this project.

Thanks!!

@kubealex
Copy link
Owner

kubealex commented Jan 2, 2024

Hey @reedjosh first of all, thank you so much for your effort, much appreciated!!

My apologies, I was a bit evanescent in the last weeks, I hope I'll be able to catch up on the backlog starting from tomorrow And provide you with a consistent view on this!

@kubealex
Copy link
Owner

kubealex commented Jan 3, 2024

So :)
#72 is on its way to be merged, in the meantime I had to cleanup a bit the charts.
In the "readinessProbe" sections, I:

  • cleaned a trailing "/" in the path
  • moved the probe for jackett from httpGet to tcpSocket, unfortunately kubelet supports up to 10 redirects and due to cookies not being set it was looping infinitely on the login page

You can align your branch with master in the meantime to double check that everything is in place.

Once the jellyfin part is merged, you can do a last round of integration in your branch and we can move this forward.

I'd love to hear also from @InputObject2 as we worked a lot on this one pretty much on the helm charts as well, so I think it could make sense to consolidate this into something more consistent.

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

3 participants