Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ComponentsCmd = &cobra.Command{ Use: "components", Short: "List all Dapr components. Supported platforms: Kubernetes", Run: func(cmd *cobra.Command, args []string) { if kubernetesMode { err := kubernetes.PrintComponents(componentsName, componentsOutputFormat) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } } }, Example: ` # List Kubernetes components dapr components -k `, }
View Source
var ConfigurationsCmd = &cobra.Command{ Use: "configurations", Short: "List all Dapr configurations. Supported platforms: Kubernetes", Run: func(cmd *cobra.Command, args []string) { if kubernetesMode { err := kubernetes.PrintConfigurations(configurationName, configurationOutputFormat) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } } }, Example: ` # List Kubernetes Dapr configurations dapr configurations -k `, }
View Source
var DashboardCmd = &cobra.Command{ Use: "dashboard", Short: "Start Dapr dashboard. Supported platforms: Kubernetes and self-hosted", Example: ` # Start dashboard locally dapr dashboard # Start dashboard locally in a specified port dapr dashboard -p 9999 # Port forward to dashboard in Kubernetes dapr dashboard -k # Port forward to dashboard in Kubernetes using a port dapr dashboard -k -p 9999 `, Run: func(cmd *cobra.Command, args []string) { if dashboardVersionCmd { fmt.Println(standalone.GetDashboardVersion()) os.Exit(0) } if dashboardLocalPort <= 0 { print.FailureStatusEvent(os.Stdout, "Invalid port: %v", dashboardLocalPort) os.Exit(1) } if kubernetesMode { config, client, err := kubernetes.GetKubeConfigClient() if err != nil { print.FailureStatusEvent(os.Stdout, "Failed to initialize kubernetes client: %s", err.Error()) os.Exit(1) } namespaces := []string{dashboardNamespace} if dashboardNamespace != daprSystemNamespace { namespaces = append(namespaces, daprSystemNamespace) } if dashboardNamespace != defaultNamespace { namespaces = append(namespaces, defaultNamespace) } foundNamespace := "" for _, namespace := range namespaces { ok, _ := kubernetes.CheckPodExists(client, namespace, nil, dashboardSvc) if ok { foundNamespace = namespace break } } if foundNamespace == "" { ok, nspace := kubernetes.CheckPodExists(client, "", nil, dashboardSvc) if ok { print.InfoStatusEvent(os.Stdout, "Dapr dashboard found in namespace: %s. Run dapr dashboard -k -n %s to use this namespace.", nspace, nspace) } else { print.FailureStatusEvent(os.Stdout, "Failed to find Dapr dashboard in cluster. Check status of dapr dashboard in the cluster.") } os.Exit(1) } signals := make(chan os.Signal, 1) signal.Notify(signals, os.Interrupt) defer signal.Stop(signals) portForward, err := kubernetes.NewPortForward( config, foundNamespace, dashboardSvc, defaultHost, dashboardLocalPort, remotePort, false, ) if err != nil { print.FailureStatusEvent(os.Stdout, "%s\n", err) os.Exit(1) } if err = portForward.Init(); err != nil { print.FailureStatusEvent(os.Stdout, "Error in port forwarding: %s\nCheck for `dapr dashboard` running in other terminal sessions, or use the `--port` flag to use a different port.\n", err) os.Exit(1) } go func() { <-signals portForward.Stop() }() // url for dashboard after port forwarding var webURL string = fmt.Sprintf("http://%s:%d", defaultHost, dashboardLocalPort) print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Dapr dashboard found in namespace:\t%s", foundNamespace)) print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Dapr dashboard available at:\t%s\n", webURL)) err = browser.OpenURL(webURL) if err != nil { print.FailureStatusEvent(os.Stdout, "Failed to start Dapr dashboard in browser automatically") print.FailureStatusEvent(os.Stdout, fmt.Sprintf("Visit %s in your browser to view the dashboard", webURL)) } <-portForward.GetStop() } else { err := standalone.NewDashboardCmd(dashboardLocalPort).Run() if err != nil { print.FailureStatusEvent(os.Stdout, "Dapr dashboard not found. Is Dapr installed?") } } }, }
View Source
var ExpiryCMD = &cobra.Command{ Use: "expiry", Short: "Checks the expiry of the root certificate", Example: ` # Check expiry of Kubernetes certs dapr mtls expiry `, Run: func(cmd *cobra.Command, args []string) { expiry, err := kubernetes.Expiry() if err != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("error getting root cert expiry: %s", err)) return } duration := int(expiry.Sub(time.Now().UTC()).Hours()) fmt.Printf("Root certificate expires in %v hours. Expiry date: %s", duration, expiry.String()) }, }
View Source
var ExportCMD = &cobra.Command{ Use: "export", Short: "Export the root CA, issuer cert and key from Kubernetes to local files", Example: ` # Export certs to local folder dapr mtls export -o ./certs `, Run: func(cmd *cobra.Command, args []string) { err := kubernetes.ExportTrustChain(exportPath) if err != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("error exporting trust chain certs: %s", err)) return } dir, _ := filepath.Abs(exportPath) print.SuccessStatusEvent(os.Stdout, fmt.Sprintf("Trust certs successfully exported to %s", dir)) }, }
View Source
var InitCmd = &cobra.Command{ Use: "init", Short: "Install Dapr on supported hosting platforms. Supported platforms: Kubernetes and self-hosted", PreRun: func(cmd *cobra.Command, args []string) { viper.BindPFlag("network", cmd.Flags().Lookup("network")) }, Example: ` # Initialize Dapr in self-hosted mode dapr init # Initialize Dapr in Kubernetes dapr init -k # Initialize particular Dapr runtime in self-hosted mode dapr init --runtime-version 0.10.0 # Initialize particular Dapr runtime in Kubernetes dapr init -k --runtime-version 0.10.0 # Initialize Dapr in slim self-hosted mode dapr init -s # See more at: https://docs.dapr.io/getting-started/ `, Run: func(cmd *cobra.Command, args []string) { print.PendingStatusEvent(os.Stdout, "Making the jump to hyperspace...") if kubernetesMode { print.InfoStatusEvent(os.Stdout, "Note: To install Dapr using Helm, see here: https://docs.dapr.io/getting-started/install-dapr-kubernetes/#install-with-helm-advanced\n") config := kubernetes.InitConfiguration{ Namespace: initNamespace, Version: runtimeVersion, EnableMTLS: enableMTLS, EnableHA: enableHA, Args: values, } err := kubernetes.Init(config) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) return } print.SuccessStatusEvent(os.Stdout, fmt.Sprintf("Success! Dapr has been installed to namespace %s. To verify, run `dapr status -k' in your terminal. To get started, go here: https://aka.ms/dapr-getting-started", config.Namespace)) } else { dockerNetwork := "" if !slimMode { dockerNetwork = viper.GetString("network") } err := standalone.Init(runtimeVersion, dashboardVersion, dockerNetwork, slimMode) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) return } print.SuccessStatusEvent(os.Stdout, "Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started") } }, }
View Source
var InvokeCmd = &cobra.Command{ Use: "invoke", Short: "Invoke a method on a given Dapr application. Supported platforms: Self-hosted", Example: ` # Invoke a sample method on target app with POST Verb dapr invoke --app-id target --method sample --data '{"key":"value"} # Invoke a sample method on target app with GET Verb dapr invoke --app-id target --method sample --verb GET `, Run: func(cmd *cobra.Command, args []string) { client := standalone.NewClient() response, err := client.Invoke(invokeAppID, invokeAppMethod, invokeData, invokeVerb) if err != nil { err = fmt.Errorf("error invoking app %s: %s", invokeAppID, err) print.FailureStatusEvent(os.Stdout, err.Error()) return } if response != "" { fmt.Println(response) } print.SuccessStatusEvent(os.Stdout, "App invoked successfully") }, }
View Source
var ListCmd = &cobra.Command{ Use: "list", Short: "List all Dapr instances. Supported platforms: Kubernetes and self-hosted", Example: ` # List Dapr instances in self-hosted mode dapr list # List Dapr instances in Kubernetes mode dapr list -k `, Run: func(cmd *cobra.Command, args []string) { if kubernetesMode { list, err := kubernetes.List() if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } table, err := gocsv.MarshalString(list) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } utils.PrintTable(table) } else { list, err := standalone.List() if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } if len(list) == 0 { fmt.Println("No Dapr instances found.") return } table, err := gocsv.MarshalString(list) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } utils.PrintTable(table) } }, }
View Source
var LogsCmd = &cobra.Command{ Use: "logs", Short: "Get Dapr sidecar logs for an application. Supported platforms: Kubernetes", Example: ` # Get logs of sample app from target pod in custom namespace dapr logs -k --app-id sample --pod-name target --namespace custom `, Run: func(cmd *cobra.Command, args []string) { err := kubernetes.Logs(logsAppID, podName, namespace) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } print.SuccessStatusEvent(os.Stdout, "Fetched logs") }, }
View Source
var MTLSCmd = &cobra.Command{ Use: "mtls", Short: "Check if mTLS is enabled. Supported platforms: Kubernetes", Example: ` # Check if mTLS is enabled dapr mtls -k `, Run: func(cmd *cobra.Command, args []string) { enabled, err := kubernetes.IsMTLSEnabled() if err != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("error checking mTLS: %s", err)) return } status := "disabled" if enabled { status = "enabled" } fmt.Printf("Mutual TLS is %s in your Kubernetes cluster \n", status) }, }
View Source
var PublishCmd = &cobra.Command{ Use: "publish", Short: "Publish a pub-sub event. Supported platforms: Self-hosted", Example: ` # Publish to sample topic in target pubsub via a publishing app dapr publish --publish-app-id myapp --pubsub target --topic sample --data '{"key":"value"}' `, Run: func(cmd *cobra.Command, args []string) { client := standalone.NewClient() err := client.Publish(publishAppID, pubsubName, publishTopic, publishPayload) if err != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("Error publishing topic %s: %s", publishTopic, err)) os.Exit(1) } print.SuccessStatusEvent(os.Stdout, "Event published successfully") }, }
View Source
var RootCmd = &cobra.Command{
Use: "dapr",
Short: "Dapr CLI",
Long: `
__
____/ /___ _____ _____
/ __ / __ '/ __ \/ ___/
/ /_/ / /_/ / /_/ / /
\__,_/\__,_/ .___/_/
/_/
===============================
Distributed Application Runtime`,
}
View Source
var RunCmd = &cobra.Command{ Use: "run", Short: "Run Dapr and (optionally) your application side by side. Supported platforms: Self-hosted", Example: ` # Run a .NET application: dapr run --app-id myapp --app-port 5000 -- dotnet run # Run a Java application: dapr run --app-id myapp -- java -jar myapp.jar # Run a NodeJs application that listens to port 3000: dapr run --app-id myapp --app-port 3000 -- node myapp.js # Run a Python application: dapr run --app-id myapp -- python myapp.py # Run sidecar only: dapr run --app-id myapp `, Args: cobra.MinimumNArgs(0), PreRun: func(cmd *cobra.Command, args []string) { viper.BindPFlag("placement-host-address", cmd.Flags().Lookup("placement-host-address")) }, Run: func(cmd *cobra.Command, args []string) { if len(args) == 0 { fmt.Println(print.WhiteBold("WARNING: no application command found.")) } output, err := standalone.Run(&standalone.RunConfig{ AppID: appID, AppPort: appPort, HTTPPort: port, GRPCPort: grpcPort, ConfigFile: configFile, Arguments: args, EnableProfiling: enableProfiling, ProfilePort: profilePort, LogLevel: logLevel, MaxConcurrency: maxConcurrency, Protocol: protocol, PlacementHost: viper.GetString("placement-host-address"), ComponentsPath: componentsPath, AppSSL: appSSL, MetricsPort: metricsPort, }) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) return } sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGTERM, syscall.SIGINT) daprRunning := make(chan bool, 1) appRunning := make(chan bool, 1) go func() { print.InfoStatusEvent( os.Stdout, fmt.Sprintf( "Starting Dapr with id %s. HTTP Port: %v. gRPC Port: %v", output.AppID, output.DaprHTTPPort, output.DaprGRPCPort)) output.DaprCMD.Stdout = os.Stdout output.DaprCMD.Stderr = os.Stderr err = output.DaprCMD.Start() if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } if appPort <= 0 { sidecarUp := true print.InfoStatusEvent(os.Stdout, "Checking if Dapr sidecar is listening on HTTP port %v", output.DaprHTTPPort) err = utils.IsDaprListeningOnPort(output.DaprHTTPPort, time.Duration(runtimeWaitTimeoutInSeconds)*time.Second) if err != nil { sidecarUp = false print.WarningStatusEvent(os.Stdout, "Dapr sidecar is not listening on HTTP port: %s", err.Error()) } print.InfoStatusEvent(os.Stdout, "Checking if Dapr sidecar is listening on GRPC port %v", output.DaprGRPCPort) err = utils.IsDaprListeningOnPort(output.DaprGRPCPort, time.Duration(runtimeWaitTimeoutInSeconds)*time.Second) if err != nil { sidecarUp = false print.WarningStatusEvent(os.Stdout, "Dapr sidecar is not listening on GRPC port: %s", err.Error()) } if sidecarUp { print.InfoStatusEvent(os.Stdout, "Dapr sidecar is up and running.") } else { print.WarningStatusEvent(os.Stdout, "Dapr sidecar might not be responding.") } } daprRunning <- true }() <-daprRunning go func() { if output.AppCMD == nil { appRunning <- true return } stdErrPipe, pipeErr := output.AppCMD.StderrPipe() if pipeErr != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("Error creating stderr for App: %s", err.Error())) os.Exit(1) } stdOutPipe, pipeErr := output.AppCMD.StdoutPipe() if pipeErr != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("Error creating stdout for App: %s", err.Error())) os.Exit(1) } errScanner := bufio.NewScanner(stdErrPipe) outScanner := bufio.NewScanner(stdOutPipe) go func() { for errScanner.Scan() { fmt.Println(print.Blue(fmt.Sprintf("== APP == %s\n", errScanner.Text()))) } }() go func() { for outScanner.Scan() { fmt.Println(print.Blue(fmt.Sprintf("== APP == %s\n", outScanner.Text()))) } }() err = output.AppCMD.Start() if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } appRunning <- true }() <-appRunning err = metadata.Put(output.DaprHTTPPort, "cliPID", strconv.Itoa(os.Getpid())) if err != nil { print.WarningStatusEvent(os.Stdout, "Could not update sidecar metadata for cliPID: %s", err.Error()) } if output.AppCMD != nil { appCommand := strings.Join(args, " ") print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Updating metadata for app command: %s", appCommand)) err = metadata.Put(output.DaprHTTPPort, "appCommand", appCommand) if err != nil { print.WarningStatusEvent(os.Stdout, "Could not update sidecar metadata for appCommand: %s", err.Error()) } else { print.SuccessStatusEvent(os.Stdout, "You're up and running! Both Dapr and your app logs will appear here.\n") } } else { print.SuccessStatusEvent(os.Stdout, "You're up and running! Dapr logs will appear here.\n") } <-sigCh print.InfoStatusEvent(os.Stdout, "\nterminated signal received: shutting down") err = output.DaprCMD.Process.Kill() if err != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("Error exiting Dapr: %s", err)) } else { print.SuccessStatusEvent(os.Stdout, "Exited Dapr successfully") } if output.AppCMD != nil { err = output.AppCMD.Process.Kill() if err != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("Error exiting App: %s", err)) } else { print.SuccessStatusEvent(os.Stdout, "Exited App successfully") } } }, }
View Source
var StatusCmd = &cobra.Command{ Use: "status", Short: "Show the health status of Dapr services. Supported platforms: Kubernetes", Example: ` # Get status of Dapr services from Kubernetes dapr status -k `, Run: func(cmd *cobra.Command, args []string) { sc, err := kubernetes.NewStatusClient() if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } status, err := sc.Status() if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } if len(status) == 0 { print.FailureStatusEvent(os.Stdout, "No status returned. Is Dapr initialized in your cluster?") os.Exit(1) } table, err := gocsv.MarshalString(status) if err != nil { print.FailureStatusEvent(os.Stdout, err.Error()) os.Exit(1) } utils.PrintTable(table) }, }
View Source
var StopCmd = &cobra.Command{ Use: "stop", Short: "Stop Dapr instances and their associated apps. . Supported platforms: Self-hosted", Example: ` # Stop Dapr application dapr stop --app-id <ID> `, Run: func(cmd *cobra.Command, args []string) { if stopAppID != "" { args = append(args, stopAppID) } for _, appID := range args { err := standalone.Stop(appID) if err != nil { print.FailureStatusEvent(os.Stdout, "failed to stop app id %s: %s", appID, err) } else { print.SuccessStatusEvent(os.Stdout, "app stopped successfully: %s", appID) } } }, }
View Source
var UninstallCmd = &cobra.Command{ Use: "uninstall", Short: "Uninstall Dapr runtime. Supported platforms: Kubernetes and self-hosted", Example: ` # Uninstall from self-hosted mode dapr uninstall # Uninstall from self-hosted mode and remove .dapr directory, Redis, Placement and Zipkin containers dapr uninstall --all # Uninstall from Kubernetes dapr uninstall -k `, PreRun: func(cmd *cobra.Command, args []string) { viper.BindPFlag("network", cmd.Flags().Lookup("network")) viper.BindPFlag("install-path", cmd.Flags().Lookup("install-path")) }, Run: func(cmd *cobra.Command, args []string) { var err error if uninstallKubernetes { print.InfoStatusEvent(os.Stdout, "Removing Dapr from your cluster...") err = kubernetes.Uninstall(uninstallNamespace) } else { print.InfoStatusEvent(os.Stdout, "Removing Dapr from your machine...") dockerNetwork := viper.GetString("network") err = standalone.Uninstall(uninstallAll, dockerNetwork) } if err != nil { print.FailureStatusEvent(os.Stdout, fmt.Sprintf("Error removing Dapr: %s", err)) } else { print.SuccessStatusEvent(os.Stdout, "Dapr has been removed successfully") } }, }
UninstallCmd is a command from removing a Dapr installation.
View Source
var UpgradeCmd = &cobra.Command{ Use: "upgrade", Short: "Upgrades a Dapr control plane installation in a cluster. Supported platforms: Kubernetes", Example: ` # Upgrade Dapr in Kubernetes dapr upgrade -k # See more at: https://docs.dapr.io/getting-started/ `, Run: func(cmd *cobra.Command, args []string) { err := kubernetes.Upgrade(kubernetes.UpgradeConfig{ RuntimeVersion: upgradeRuntimeVersion, Args: values, }) if err != nil { print.FailureStatusEvent(os.Stdout, "Failed to upgrade Dapr: %s", err) return } print.SuccessStatusEvent(os.Stdout, "Dapr control plane successfully upgraded to version %s. Make sure your deployments are restarted to pick up the latest sidecar version.", upgradeRuntimeVersion) }, }
Functions ¶
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.