GithubHelp home page GithubHelp logo

dapr / quickstarts Goto Github PK

View Code? Open in Web Editor NEW
1.0K 1.0K 507.0 178.22 MB

Dapr quickstart code samples and tutorials showcasing core Dapr capabilities

License: Apache License 2.0

Python 15.46% JavaScript 13.92% Makefile 4.92% Dockerfile 1.43% C# 19.58% Go 15.53% HTML 0.96% CSS 1.02% Java 23.07% TypeScript 4.10%

quickstarts's Introduction

Any language, any framework, anywhere

Go Report OpenSSF Docker Pulls Build Status Test Status Code Coverage License: Apache 2.0 FOSSA Status TODOs Good First Issues discord YouTube X/Twitter

Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.

Dapr codifies the best practices for building microservice applications into open, independent, building blocks that enable you to build portable applications with the language and framework of your choice. Each building block is independent and you can use one, some, or all of them in your application.

Dapr overview

We are a Cloud Native Computing Foundation (CNCF) incubation project.

Goals

  • Enable developers using any language or framework to write distributed applications
  • Solve the hard problems developers face building microservice applications by providing best practice building blocks
  • Be community driven, open and vendor neutral
  • Gain new contributors
  • Provide consistency and portability through open APIs
  • Be platform agnostic across cloud and edge
  • Embrace extensibility and provide pluggable components without vendor lock-in
  • Enable IoT and edge scenarios by being highly performant and lightweight
  • Be incrementally adoptable from existing code, with no runtime dependency

How it works

Dapr injects a side-car (container or process) to each compute unit. The side-car interacts with event triggers and communicates with the compute unit via standard HTTP or gRPC protocols. This enables Dapr to support all existing and future programming languages without requiring you to import frameworks or libraries.

Dapr offers built-in state management, reliable messaging (at least once delivery), triggers and bindings through standard HTTP verbs or gRPC interfaces. This allows you to write stateless, stateful and actor-like services following the same programming paradigm. You can freely choose consistency model, threading model and message delivery patterns.

Dapr runs natively on Kubernetes, as a self hosted binary on your machine, on an IoT device, or as a container that can be injected into any system, in the cloud or on-premises.

Dapr uses pluggable component state stores and message buses such as Redis as well as gRPC to offer a wide range of communication methods, including direct dapr-to-dapr using gRPC and async Pub-Sub with guaranteed delivery and at-least-once semantics.

Why Dapr?

Writing highly performant, scalable and reliable distributed application is hard. Dapr brings proven patterns and practices to you. It unifies event-driven and actors semantics into a simple, consistent programming model. It supports all programming languages without framework lock-in. You are not exposed to low-level primitives such as threading, concurrency control, partitioning and scaling. Instead, you can write your code by implementing a simple web server using familiar web frameworks of your choice.

Dapr is flexible in threading and state consistency models. You can leverage multi-threading if you choose to, and you can choose among different consistency models. This flexibility enables you to implement advanced scenarios without artificial constraints. Dapr is unique because you can transition seamlessly between platforms and underlying implementations without rewriting your code.

Features

  • Event-driven Pub-Sub system with pluggable providers and at-least-once semantics
  • Input and output bindings with pluggable providers
  • State management with pluggable data stores
  • Consistent service-to-service discovery and invocation
  • Opt-in stateful models: Strong/Eventual consistency, First-write/Last-write wins
  • Cross platform virtual actors
  • Secret management to retrieve secrets from secure key vaults
  • Rate limiting
  • Built-in Observability support
  • Runs natively on Kubernetes using a dedicated Operator and CRDs
  • Supports all programming languages via HTTP and gRPC
  • Multi-Cloud, open components (bindings, pub-sub, state) from Azure, AWS, GCP
  • Runs anywhere, as a process or containerized
  • Lightweight (58MB binary, 4MB physical memory)
  • Runs as a sidecar - removes the need for special SDKs or libraries
  • Dedicated CLI - developer friendly experience with easy debugging
  • Clients for Java, .NET Core, Go, Javascript, Python, Rust and C++

Get Started using Dapr

See our Getting Started guide over in our docs.

Quickstarts and Samples

Community

We want your contributions and suggestions! One of the easiest ways to contribute is to participate in discussions on the mailing list, chat on IM or the bi-weekly community calls. For more information on the community engagement, developer and contributing guidelines and more, head over to the Dapr community repo.

Contact Us

Reach out with any questions you may have and we'll make sure to answer them as soon as possible!

Platform Link
๐Ÿ’ฌ Instant Message Chat (preferred) Discord Banner
๐Ÿ“ง Mailing List https://groups.google.com/forum/#!forum/dapr-dev
๐Ÿค Twitter @daprdev

Community Call

Every two weeks we host a community call to showcase new features, review upcoming milestones, and engage in a Q&A. All are welcome!

๐Ÿ“ž Visit https://aka.ms/dapr-community-call for upcoming dates and the meeting link.

Videos and Podcasts

We have a variety of keynotes, podcasts, and presentations available to reference and learn from.

๐Ÿ“บ Visit https://docs.dapr.io/contributing/presentations/ for previous talks and slide decks.

Contributing to Dapr

See the Development Guide to get started with building and developing.

Repositories

Repo Description
Dapr The main repository that you are currently in. Contains the Dapr runtime code and overview documentation.
CLI The Dapr CLI allows you to setup Dapr on your local dev machine or on a Kubernetes cluster, provides debugging support, launches and manages Dapr instances.
Docs The documentation for Dapr.
Quickstarts This repository contains a series of simple code samples that highlight the main Dapr capabilities.
Samples This repository holds community maintained samples for various Dapr use cases.
Components-contrib The purpose of components contrib is to provide open, community driven reusable components for building distributed applications.
Dashboard General purpose dashboard for Dapr
Go-sdk Dapr SDK for Go
Java-sdk Dapr SDK for Java
JS-sdk Dapr SDK for JavaScript
Python-sdk Dapr SDK for Python
Dotnet-sdk Dapr SDK for .NET
Rust-sdk Dapr SDK for Rust
Cpp-sdk Dapr SDK for C++
PHP-sdk Dapr SDK for PHP

Code of Conduct

Please refer to our Dapr Community Code of Conduct

quickstarts's People

Contributors

akhilac1 avatar amulyavarote avatar arashrohani avatar artursouza avatar ashiquemd avatar deepanshua avatar dependabot[bot] avatar greenie-msft avatar haishi2016 avatar italypaleale avatar macel94 avatar marcduiker avatar mikeee avatar mukundansundar avatar nyemade-uversky avatar paulyuk avatar pngan avatar pravinpushkar avatar pruthvidhodda avatar ryanlettieri avatar ryanvolum avatar sarsharma avatar shalabhms avatar shivamkm07 avatar shivanisinghnitp avatar tanvigour avatar tcnghia avatar wcs1only avatar xaviergeerinck avatar yaron2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quickstarts's Issues

HelloWorld sample hangs forever if you request to /order first

Screenshot 2019-10-28 16 41 50

When you first start the helloworld sample, if you request to /order it will hang forever
I was just playing around to see the behavior. I'm not sure where to report this, so i just report it here.

Please let me know if you would like me to move this issue to other repo.

Expected Behavior

The error should be propagated to client.

Actual Behavior

The client request hangs forever.

Steps to Reproduce the Problem

Follow the helloworld sample, then execute the /order request right after that

curl http://localhost:3500/v1.0/invoke/mynode/method/order

The readme in sample Hello World has a mistake in a picture

Actual Behavior

The readme in sample Hello World has a mistake in the first postman picture:

{ "data": { "orderID": "42" } }

It cause the node server get a wrong request data:

== APP == Got a new order! Order ID: undefined
== APP == Successfully persisted state

Merge samples 1 and 2 into 1 and create a new sample 2

Samples 1 and 2 are tightly coupled and sample 2 does not make much sense without going though sample 1 first. Even though it is the expected behavior, it breaks the previous principle that each test should be independently understood and executed. This proposal is to do the following:

  1. Merge samples 1 and 2 into 1.
  2. Create a brand new sample 2. (ideas?)

2.hello-kubernetes: ExternalIP pending

External IP of nodeapp stays pending for several hours located in Germany see:
Kubectl get svc nodeapp
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nodeapp LoadBalancer 10.98.150.231 80:31535/TCP 17h

Sample 2 failing to persist state to Redis running in AKS cluster

Expected Behavior

Sample application working correctly and persisting state to redis.

Actual Behavior

a. In the logs of the pod I have:

kubectl logs --selector=app=node -c node
Got a new order! Order ID: 1157
Failed to persist state
Got a new order! Order ID: 1158
Failed to persist state

b. When I do a request to the URL:

curl  <my assigned ip>/order
{"errorCode":"ERR_STATE_STORE_NOT_FOUND","message":""}

c. I deployed everything as per instructions (or I think I did). Some more information:

  • Using an AKS cluster
  • Calling Dapr from Windows
  • My running pods are (not all are related to dapr):
NAME                                     READY   STATUS    RESTARTS   AGE
brawny-pronghorn-redis-master-0          1/1     Running   0          17h
brawny-pronghorn-redis-slave-0           1/1     Running   0          17h
brawny-pronghorn-redis-slave-1           1/1     Running   0          17h
captureorder-894bbf6d7-j2677             1/1     Running   0          30d
captureorder-894bbf6d7-jzqr6             1/1     Running   6          26d
cert-manager-78dd8f6df8-hv9rq            1/1     Running   0          26d
dapr-operator-6b8d659466-5jvzw           1/1     Running   0          17h
dapr-placement-6494df4f78-4k2f5          1/1     Running   0          17h
dapr-sidecar-injector-588d69dc9b-dcfx2   1/1     Running   0          17h
frontend-5bbd877fd-rhcpc                 1/1     Running   0          30d
nodeapp-6cb765cb44-mj4g6                 2/2     Running   0          31m
orders-mongo-mongodb-ddfb9b977-rhpjz     1/1     Running   0          26d
pythonapp-559b6d55d6-x6k52               2/2     Running   0          25m
  • My redis.yaml:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
spec:
  type: state.redis
  metadata:
  - name: redisHost
    value: redis-master:6379
  - name: redisPassword
    value: <base64-decoded password here>
  • I made no changes to node.yaml or python.yaml

Steps to Reproduce the Problem

I just followed the instructions on the sample.

error invoking output binding sample-topic: couldn't find output binding sample-topic"

Expected Behavior

...
{'data': {'orderId': 240}}
<Response [200]>
{'data': {'orderId': 241}}
<Response [200]>
...

Actual Behavior

{'data': {'orderId': 830}}
{"errorCode":"ERR_INVOKE_OUTPUT_BINDING","message":"error invoking output binding sample-topic: couldn't find output binding sample-topic"}

Steps to Reproduce the Problem

Follow the README of bindings example for Kubernetes:

  1. Create Kafka cluster & create a kafka client pod & create a sample topic
  2. Deploy the microservices (by kubectl apply -f .)
  3. kubectl logs bindings-pythonapp-644489969b-c8lg5 and get above error

How do we check if the binding component is working with with Kafka cluster?

Create a Bindings Sample

Create a bindings sample that runs standalone and in K8s. Samples should:

  • Bind to Kafka locally
  • Bind to Kafka in K8s
  • Document the bindings setup locally
  • Document the bindings setup in K8s

Excessive logs in the pub-sub sample frontend

Expected Behavior

Meaningful logs that capture key event should be used

Actual Behavior

The frontend logs every key strokes, but it doesn't log when the message is sent

Steps to Reproduce the Problem

Launch the frontend, enable developer mode
Type in message in the message box, observe the logs

(bug/docs): Python app source missing samples/2.hello-kubernetes/python

Following sample app installation steps here there is reference to the python source being located in samples/2.hello-kubernetes/python/app.py but I don't see that source check in.

Next, let's take a quick look at our python app. Navigate to the python app in the kubernetes sample: cd samples/2.hello-kubernetes/python and open app.py.

It is however located here - 1.hello-world/app.py.

I will raise a PR

example 4 not working

I've tried to set up example 4 with a local redis, but it isn't working. Here's what I've done:

  1. Everything is running in minikube. If used the "non-helm" setup, so everything is in the default namespace in my minikube cluster.
  2. Added a redis deployment/service like so:
kind: Service
apiVersion: v1
metadata:
  name: redis-service
  labels:
    app: redis-service
spec:
  selector:
    app: redis-service
  ports:
  - protocol: TCP
    port: 6379
    targetPort: 6379
  type: NodePort

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-service
  labels:
    app: redis-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-service
  template:
    metadata:
      labels:
        app: redis-service
    spec:
      containers:
      - name: redis-service
        image: redis
        command: ["redis-server", "--requirepass", "yourpassword"]
        ports:
        - containerPort: 6379
        imagePullPolicy: Always

configured the redis.yml file:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: messagebus
spec:
  type: pubsub.redis
  metadata:
  - name: "redisHost"
    value: "redis-service.default.svc.cluster.local:6379"
  - name: "redisPassword"
    value: "yourpassword"

I've used kubectl port-forward to verify that the redis instance is indeed working using the specified password.

The react-app has problems when starting (output from the daprd sidecar):

time="2019-11-14T20:05:34Z" level=error msg="error getting topics from app: invalid character '<' looking for beginning of value"
time="2019-11-14T20:05:34Z" level=warning msg="failed to init actors: actors: state store must be present to initialize the actor runtime"

The other pods also log errors (output from the daprd sidecars):

time="2019-11-14T20:04:57Z" level=warning msg="failed to init actors: actors: state store must be present to initialize the actor runtime"
time="2019-11-14T20:04:57Z" level=info msg="http server is running on port 3500"
time="2019-11-14T20:04:57Z" level=info msg="gRPC server is running on port 50001"
time="2019-11-14T20:04:57Z" level=info msg="dapr initialized. Status: Running. Init Elapsed 38.008444000000004ms"

as far as I can see there's very little health checking going on here (both in the apps and in dapr itself), giving the impression that everything is running as it should when in fact nothing is working.

I just cloned the samples repo just to see what dapr is about, apart from it looking like an interesting thing.

How can I run a sample without Docker?

All the samples seem to have Docker as a requirement. I know it's possible to run Dapr without heavy dependencies on edge etc., can you provide a simple example how to do this?

Add a top level sample README

Add a top level readme for this repo to explain how samples are laid out and help guide users to the right sample(s)

Add original diagram files (Visio, PPT, etc) so anyone can update them

This proposal is to have all diagrams from the samples available to be updated. Right now, we can only find the generated image files but not the original format used to create the diagrams. I got to know they were created in PPT, so we should have those files in this open source repo too.

daprd executable not found

Expected Behavior

I tried running the 1.hello-world sample by running the following command.

dapr run --app-id mynode --app-port 3000 --port 3500 node app.js

I wasn't able to run it due to an error where I expected dapr to start my application and show me the following output:

Starting Dapr with id mynode on port 3500
You're up and running! Both Dapr and your app logs will appear here.

Actual Behavior

โ„น๏ธ  Starting Dapr with id mynode. HTTP Port: 3500. gRPC Port: 51555
โŒ  exec: "daprd": executable file not found in $PATH

Create the release version tag

Describe the proposal

Currently, we have not created the version tag for samples and contributors have changed the samples. then samples in master would be inconsistent with the latest dapr runtime release, which will make users confused.

To resolve this issue, I proposed to add the tag version.

  • : Add tag version
  • : Add latest version link to README.md

[1.hello-world] The port value of the app should be mutable

Describe the proposal

In the document, it seems the port of the app can be changed by user. For example, change it to 3001,

dapr run --app-id mynode --app-port 3001 --port 3500 node app.js

But in the code as below shows, the value of the port seems can't be changed, so user may be confused when run this scenario.

const port = 3000;
app.listen(port, () => console.log(`Node App listening on port ${port}!`));

Create makefile to build and publish samples

Description

We need to have makefile to build and publish samples to reduce the chance of mistakes even if we do not have ci for samples

for example

make docker-build project=distributed-calculator
make docker-push project=distributed-calculator

Problem in "samples/2.hello-kubernetes/"

Followed the instruction "https://github.com/dapr/samples/tree/master/2.hello-kubernetes":
......
Step 2 - Create and Configure a State Store
Dapr can use a number of different state stores (Redis, CosmosDB, DynamoDB, Cassandra, etc.) to persist and retrieve state. For this demo, we'll use Redis.

Follow these steps to create a Redis store.
......
I tried several times to install redis in macos, Unfortunitely, it didn't work, could you let me know how to do it?

Thanks,

Make 1.hello-world consistent with 2.hello-kubernetes

Both samples should use the same two microservices with identical code:

  • Update 1.hello-world node app to have the same code as 2.hello-kubernetes node app
  • Add python app from 2.hello-kubernetes to 1.hello-world
  • Update 1.hello-world instructions to run both microservices

Inaccurate references to Azure Event Hubs in bindings sample

Dapr bindings sample has couple of references to Azure Event Hubs

  1. "... We'll bind to Kafka and Event Hub..."
  2. "... This sample also includes a manifest for using Azure Event Hubs ..."

I don't think this is accurate.

  1. Kafka binding cannot be used with Event Hubs (Kafka endpoint) since current binding does not support authentication
  2. the sample does not include Azure Event Hubs related manifest

1.hello-world example BODY orderId property not correctly set in document

In 1.hello-world example, after execution of the following POST request:
http://localhost:3500/v1.0/invoke/mynode/method/neworder

Expected Behavior

== Got a new order! Order ID: 42

Actual Behavior

== Got a new order! Order ID: undefined

Steps to Reproduce the Problem

Run the example in 1.hello-world and use same BODY raw value in the following POST request
http://localhost:3500/v1.0/invoke/mynode/method/neworder

How to solve the problem

Use "orderId" instead of "orderID" when preparing the POST request

5.bindings connect to redis

Expected Behavior

node app connect kafka and do not connect redis

Actual Behavior

just connect to redis and get error:
== DAPR == 2019/10/26 16:28:36 redis: connection to localhost:6379 failed: redispipe.connection.could_not_connect: {address: localhost:6379}, cause: dial tcp [::1]:6379: connect: connection refused

Steps to Reproduce the Problem

Follow document execution
https://github.com/dapr/samples/tree/master/5.bindings

Application logs in pub-sub sample have empty payload {}

I was trying out the pub-sub sample.

Expected Behavior

In response to dapr publish --topic A --payload '{ "message": "This is a test" }', the pub-sub sample logs should be something like [0m?[94;1m== APP == Topic A: { id: '5780e2ca-f526-4839-92e5-a0a30aff829a', source: 'react-form', type: 'com.dapr.event.sent', specversion: '0.3',data: { message: 'this is a test' } } (as per docs)

Actual Behavior

What I see is the following: APP == A: {}

Steps to Reproduce the Problem

  • git clone https://github.com/dapr/samples
  • cd node-subscriber
  • npm install
  • dapr run --app-id node-subscriber --app-port 3000 node app.js
  • dapr publish --topic A --payload '{ "message": "This is a test" }'

Error occuring in '2. hello-kubernetes' sample when running on k3s

Expected Behavior

When running

kubectl logs --selector=app=node -c node

expect to see logs like

Got a new order! Order ID: 1
Successfully persisted state
Got a new order! Order ID: 2
Successfully persisted state
Got a new order! Order ID: 3
Successfully persisted state

as per the readme.

Actual Behavior

Failing with following error:

HTTPConnectionPool(host='localhost', port=3500): Max retries exceeded with url: /v1.0/invoke/nodeapp/method/neworder (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xb61b4770>: Failed to establish a new connection: [Errno 111] Connection refused'))

Steps to Reproduce the Problem

  • Using vanilla k3s installation, running on a cluster of Raspberry Pis
  • Dapr installed via Helm
  • Followed steps 2-6 of hello-kubernetes example

4.pub-sub Node Subscriber doesn't receive request body

Expected Behavior

When running the pubsub sample in Kubernetes and manufacturing messages with the react front-end, the node subscriber receives messages, but no message body.

Actual Behavior

The node subscriber prints the topic name with an empty body:

A: {}

Steps to Reproduce the Problem

Run the sample in kubernetes and log the node-subscriber's output.

Culprit

The source of the problem seems to be the json type that the express bodyParser is using: application/*+json. When changed to application/json, the sample works as expected. Apparently, however, this causes issues in standalone mode: #79, which @youngbupark noted in #85.

Event Hubs output bindings not working as expected

Expected Behavior

As per this example, input bindings work when the same payload is sent directly to Event Hubs (using native client SDK). Input binding should work the same way when sent using output binding as well.

Here is the scenario:

  • start event hubs input binding app
  • start event hubs output binding app - sends JSON payload to event hubs (using Dapr bindings http://localhost:3500/v1.0/bindings/timebound). Here is the code

Actual Behavior

Event Hubs input bindings app logs indicate that the payload is received but not parsed properly (it's blank)

Steps to Reproduce the Problem

you will see

== APP == waiting for program to exit
== APP == response 200 OK
== APP == response 200 OK
== APP == response 200 OK
== APP == response 200 OK
== APP == response 200 OK

confirm input binding app logs - payload info was blank (it was not parsed properly?)

== APP == time from Event Hubs ''
== APP == time from Event Hubs ''
== APP == time from Event Hubs ''
== APP == time from Event Hubs ''
== APP == time from Event Hubs ''

Broken link in README.md for 2.hello-kubernetes

Expected Behavior

"secret management" url is broken.

Actual Behavior

"secret management" url is not broken :)

Steps to Reproduce the Problem

Open README.md in 2.hello-kubernetes, search for text "secret management" and click on the link.

[Document - hello-world] Remove duplicated word

Expected Behavior

When we use the Dapr CLI, it creates an environment variable for the Dapr port, which defaults to 3500. We'll be using this in step 3 when we POST messages to our system.

Actual Behavior

When we use the Dapr CLI, it creates an environment variable for the Dapr port, which defaults to 3500. We'll be using this in step 3 when we POST messages to to our system.

Steps to Reproduce the Problem

Has the duplicated word "to"

Darp run --kubernetes 1.hello-world SIGSERV Panic (Go 1.13)

Expected Behavior

Expecting to launch the app on Kubernetes. Running on the latest minikube and golang version.

Actual Behavior

Immediate SIGSERV panic from golang.

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x10dbeb4]

goroutine 1 [running]:
github.com/dapr/cli/cmd.glob..func4(0x1f87d00, 0xc000302090, 0x2, 0x9)
	/home/vsts/work/1/s/gopath/src/github.com/dapr/cli/cmd/run.go:65 +0x104
github.com/spf13/cobra.(*Command).execute(0x1f87d00, 0xc000302000, 0x9, 0x9, 0x1f87d00, 0xc000302000)
	/home/vsts/work/1/s/gopath/src/github.com/dapr/cli/vendor/github.com/spf13/cobra/command.go:766 +0x2ae
github.com/spf13/cobra.(*Command).ExecuteC(0x1f87380, 0x10db5e4, 0x1f87380, 0xc000409f60)
	/home/vsts/work/1/s/gopath/src/github.com/dapr/cli/vendor/github.com/spf13/cobra/command.go:852 +0x2c0
github.com/spf13/cobra.(*Command).Execute(...)
	/home/vsts/work/1/s/gopath/src/github.com/dapr/cli/vendor/github.com/spf13/cobra/command.go:800
github.com/dapr/cli/cmd.Execute(0x14ea44c, 0x5, 0x14ea3a4, 0x3)
	/home/vsts/work/1/s/gopath/src/github.com/dapr/cli/cmd/dapr.go:39 +0x88
main.main()
	/home/vsts/work/1/s/gopath/src/github.com/dapr/cli/main.go:19 +0x51

Steps to Reproduce the Problem

Run the following against a fresh minikube with dapr operator installed:

dapr run --app-id mynode --app-port 3000 --port 3500 node app.js --kubernetes

Outdated readme.MD in samples/1.hello-world/

Expected Behavior

In dapr/samples/1.hello-world/readme.MD, step 4, the example command "dapr invoke ..." does not work, only "dapr send ..." works.

Actual Behavior

"dapr invoke ..." command returns error, unknown command "invoke" for "dapr"

Steps to Reproduce the Problem

Try the "dapr invoke ..." commands listed in readme.MD step 4 to see the error message.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.