konstructio / kubefirst

The Kubefirst Open Source Platform
https://kubefirst.konstruct.io/docs
MIT License
1.78k stars 139 forks source link

Kubefirst should support Podman #2079

Open tsahiduek opened 8 months ago

tsahiduek commented 8 months ago

Which version of kubefirst are you using?

kubefirst-cli golang utility version: v2.3.7

Which cloud provider?

AWS

Which DNS?

Cloud ones (default)

Which installation type?

CLI

Which distributed Git provider?

GitHub

Did you use a fork of gitops-template?

No

Which Operating System?

macOS

What is the issue?

Kubefirst should support other platform than Docker. With the current tooling, it's impossible to use Podman for example since the creation of K3d fails because Podman doesn't support bridge network called bridge and therefore the whole process fails

❯ kubefirst launch up

   Welcome to Kubefirst

  💡 To view verbose logs run below command in new terminal:

  tail -f -n +1 /Users/duektsah/.k1/logs/log_1707146627.log

  📘 Documentation: https://docs.kubefirst.io/aws/quick-start/install/cli

  ⏰ Estimated time: 10 minutes

  ✅ Initialize database
  ✅ Download k3d
  💫 Create k3d cluster

stat /Users/duektsah/.k1/kubefirst-console/kubeconfig: no such file or directory
ERRO[0000] unable to locate kubeconfig file - checked path: /Users/duektsah/.k1/kubefirst-console/kubeconfig
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x101353cb0]

goroutine 11 [running]:
k8s.io/client-go/kubernetes.NewForConfig(0x105eaa320?)
    k8s.io/client-go@v11.0.1-0.20190816222228-6d55c1b1f1ca+incompatible/kubernetes/clientset.go:414 +0x20
github.com/kubefirst/runtime/pkg/k8s.CreateKubeConfig(0x80?, {0x14000533500?, 0x3e?})
    github.com/kubefirst/runtime@v0.3.35/pkg/k8s/client.go:74 +0x248
github.com/kubefirst/kubefirst/internal/launch.Up({0x105f397e0, 0x0, 0x0?}, 0x0, 0x1)
    github.com/kubefirst/kubefirst/internal/launch/cmd.go:200 +0xdf8
github.com/kubefirst/kubefirst/cmd.launchUp.func1(0x1400092d300?, {0x1026a73c0?, 0x4?, 0x1026a7478?})
    github.com/kubefirst/kubefirst/cmd/launch.go:42 +0x3c
github.com/spf13/cobra.(*Command).execute(0x14000970f00, {0x105f397e0, 0x0, 0x0})
    github.com/spf13/cobra@v1.7.0/command.go:944 +0x640
github.com/spf13/cobra.(*Command).ExecuteC(0x105eb2c40)
    github.com/spf13/cobra@v1.7.0/command.go:1068 +0x320
github.com/spf13/cobra.(*Command).Execute(...)
    github.com/spf13/cobra@v1.7.0/command.go:992
github.com/kubefirst/kubefirst/cmd.Execute()
    github.com/kubefirst/kubefirst/cmd/root.go:51 +0x2c
main.main.func2()
    github.com/kubefirst/kubefirst/main.go:108 +0x1c
created by main.main in goroutine 1
    github.com/kubefirst/kubefirst/main.go:107 +0x6a4

Code of Conduct

fharper commented 8 months ago

Thanks for the feature suggestion @tsahiduek!

In the short term, we don't have plans to support other container orchestration tools outside of Docker since it's available on all platforms and free to use, but it's certainly something we may want to invest in for the future. With that said, we are always open to external contributions.

tsahiduek commented 8 months ago

Thanks for the response @fharper . Docker licensing is not quite free to use (afaik) given that it's not free for users coming from a commercial companies, who are the targeted users of Kubefirst if I'm not mistaken.

Relying on Docker means you're targeting organizations that having a Docker licensing for commercial usage.

Unless I'm missing something....

fharper commented 8 months ago

Sorry I wasn't clear. It is free for organization of fewer than 250 employees or with less than $10 million in ARR, which is our understanding of the pricing of Docker as mentioned at https://www.docker.com/pricing/. You are right, for companies that do not fit within these criteria's, Docker isn't free anymore at 5$/month or more per users depending on the plans you are choosing.

gregory-j-baker commented 2 months ago

I ran into this issue today. I switched exclusively to podman some time ago since my organization is leaning hard into it for security reasons.

I have been away from kubefirst for a while and decided to hope back into it to see what's new, and was sad to discover that I couldn't deploy it to k3d or k3s (currently my only two options for evaluating).

If I can find the time I will take a look at the source code to see if I can make it work. The default bridge network in podman is called podman so it might be a simple fix.


Edit: I tried creating a network called bridge but podman wouldn't let me. 🤷🏻

❯ podman network create bridge
Error: cannot create network with name "bridge" because it conflicts with a valid network mode