-
Notifications
You must be signed in to change notification settings - Fork 526
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
Hello Kubernetes tutorial should use the Helm installation instead of the dapr init -k approach #1028
Comments
I agree that there should be a transparent description of how to deploy Dapr and friends to Kubernetes instead of --dev:
|
@pdebruin do you want to work with me on these changes ? I am happy to do a simple configuration first but I might need help for more advanced use cases |
Redis should be installed with a dedicated release name to avoid conflicts, which is currently
Consider using subcharts (umbrella) to make this even easier. Provide one dapr-dev umbrella chart, with redis and zipkin subcharts, and one dapr (non-dev) chart? |
@salaboy Have you seen this sweet devcontainer setup for deploying a dapr sample app to a local kind cluster? https://github.com/Azure-Samples/pubsub-dapr-aks-java?tab=readme-ov-file#local-dev-environment-setup
This worked for me without a hitch. |
@joebowbeer yeah I've seen that and that can totally complement what is proposed here. But it defeats the purpose of being super clear about what Dapr needs to run it basic components. The idea behind running something like this:
Is to be super clear that a Redis instance is needed by the |
@salaboy On the one hand, as a Kubernetes user, I do like to know what resources are being installed, but for a quickstart, I like it even more if everything just works right out of the box. Then I'll want to dig in and see what's really going on so I can deploy it for real using GitOps. Digging in, I see that what I'm pointing you to is (I think) doing what you're suggesting: 😄 printf '\n📀 Deploy Redis\n\n'
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis -n default --set architecture=standalone bitnami/redis
printf '\n📀 Init Dapr\n\n'
dapr init --kubernetes --wait --timeout 600 |
@joebowbeer yeah.. I do agree with that... I want to make sure that people can get started without obfuscating the Kubernetes experience that they are already used to. For example, we can look at other CNCF projects. Look at the Cert Manager tutorial to get started -> https://cert-manager.io/docs/tutorials/acme/nginx-ingress/ . No new CLI is needed besides Helm as the default package manager, and then just Knative takes it one step further, no Helm and being clear about each Control Plane component that you need to install. https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/ . IMHO, there is no need to go that far, Helm is widely used and Dapr offer helm charts. Crossplane follows the same approach (Helm + kubectl) -> https://docs.crossplane.io/v1.16/getting-started/provider-gcp/ |
@salaboy I fully agree that there's a need for a transparent "Getting started with Dapr on Kubernetes", with easy to follow installation steps, similar to what most CNCF projects provide. Any of the Argo Projects, for example. I also want to point out that most if not all of the quickstart samples in this repo are sample app deployments, intended to showcase specific features using your favorite SDK and runtime configuration. I think there's a difference between these and the ones you reference. I imagine that not all of the users of these quickstarts, who are for example trying Dapr in Kubernetes, are Kubernetes saavy. It's something to consider, anyway. |
Yes, the goal of this quickstart is to teach Dapr APIs not to teach Kubernetes, so we have to get a balance here, between long set up times and seeing Dapr in operation. |
While I understand your point of view and @msfussell too, I believe that by pushing that perspective forward we are completely confusing the Kubernetes community. Imagine the following situation:
I am trying to avoid this at all costs because I keep getting feedback from Kubernetes-savvy users who go to the Dapr site and don't understand what is going on or what it has to do with Kubernetes. While I understand that Dapr can be run outside of Kubernetes, as a CNCF project, we should heavily rely on the Kubernetes angle to explain and talk about Dapr. |
@salaboy I agree with you that I think we agree that a "Getting started with Dapr on Kubernetes", with easy to follow installation steps, would be a great thing. I think this corresponds to what you were pointing out in other CNCF projects. In addition, as someone who is Kubernetes-saavy approaching Dapr, I am familiar with the confusion you mention! Aside: However, I'm also not certain about the best way to do local development for apps that will be deployed on Kubernetes. There are a lot of different options, including devcontainer with docker in docker, docker out of docker(?), and maybe remote/local "remocal" hybrids. (I'm thinking of Telepresence, mirrored, signadot.) Many of these options do not require the dev to manage their own cluster. Then again, there are other "cluster-forward" approaches, such as Skaffold and Tilt, where the dev does manage their own cluster. Even as a Kubernetes-saavy user, I'm still searching for the best way to do local dev. |
Hey everyone - @salaboy @joebowbeer @pdebruin. We would love to have a rapid / quick start for hello kubernetes, and yet at the same time do things that are familiar to kubernetes users. I believe the sweet spot therefore is we keep the The quickstart tutorial therefore would start with the --dev init, but then would have a step to apply the statestore component redis.yml. At the end of the tutorial you would delete the redis deployment of the statestore. What do you think? |
Hey @paulyuk my opinion is still the same |
@paulyuk I am not sure I understand what you're saying:
I think I agree with @salaboy that those approaching Dapr from k8s may be wary of installing a CLI in order to install something in their cluster. Raw manifests or helm charts are more familiar alternatives. That said, there do exist a lot of CLI's in CNCF projects, for example: argo, cilium, linkerd, vcluster. However, in all of those projects, helm charts and/or raw manifests are also provided. @salaboy Would a Dapr (krew) plugin for kubectl be helpful? Just wondering. By the way, Dapr's multi-app support reminds me of the k8s tool Skaffold, which I've used. It might be similar to Tilt, as well, but I haven't used that one. |
@joebowbeer most of CNCF CLIs are helpers to solve some sort of limitations with Notice the argocd CLI reference commands -> https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/ . This is just a CLI that will help you with operational concerns to avoid you listing 3 resources to figure out your application status. We can definitely do that. The vcluster CLI help users to manage vclusters tokens, so they don't need to set up environment variables when they are switching between vclusters -> https://www.vcluster.com/docs/vcluster/#use-your-virtual-cluster. In this case The This reinforce my point, that we are doing things in a very odd way compared with other projects. If we want to keep |
To be thorough,
Even so, in all of these cases one doesn't need to scroll far in order to find a helm chart or a manifest. 👉 And in none of these cases does any CLI install 3rd party resources. I don't have a strong opinion about dapr -k Regardless of dapr -k, I do want to see Dapr helm chart and/or manifests highlighted in the docs, as suggested. |
@joebowbeer my issue with |
Looking at this tutorial: https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes , as a Kubernetes user I get scared of using a new CLI to install tools. I recommend switching to installing Dapr using Helm, a mechanism much more familiar to Kubernetes user.
This means changing
dapr init -k --dev
for the following commands:Install Dapr
To install Redis:
If
dapr init -k --dev
is installing more things, for Kubernetes audience we need to make them explicit. Nobody likes installing things on a cluster without knowing exactly what is going on, it makes it more difficult to troubleshoot.The text was updated successfully, but these errors were encountered: