mirror of https://github.com/dapr/docs.git
				
				
				
			Add how to's for etcd, consul and cassandra (#213)
* add how to for etcd, consul and cassandra * Update setup-cassandra.md * add memcached how to
This commit is contained in:
		
							parent
							
								
									63465c8e17
								
							
						
					
					
						commit
						271aa2cf99
					
				| 
						 | 
				
			
			@ -43,5 +43,9 @@ kubectl apply -f statestore.yaml
 | 
			
		|||
## Reference
 | 
			
		||||
 | 
			
		||||
* [Setup Redis](./setup-redis.md)
 | 
			
		||||
* [Setup Cassandra](./setup-cassandra.md)
 | 
			
		||||
* [Setup etcd](./setup-etcd.md)
 | 
			
		||||
* [Setup Consul](./setup-consul.md)
 | 
			
		||||
* [Setup Memcached](./setup-memcached.md)
 | 
			
		||||
* [Setup Azure CosmosDB](./setup-azure-cosmosdb.md)
 | 
			
		||||
* [Supported State Stores](./supported-state-stores.md)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,98 @@
 | 
			
		|||
# Setup Cassandra 
 | 
			
		||||
 | 
			
		||||
## Locally
 | 
			
		||||
 | 
			
		||||
You can run Cassandra locally with the Datastax Docker image:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
docker run -e DS_LICENSE=accept --memory 4g --name my-dse -d datastax/dse-server -g -s -k
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You can then interact with the server using `localhost:9042`.
 | 
			
		||||
 | 
			
		||||
## Kubernetes
 | 
			
		||||
 | 
			
		||||
The easiest way to install Cassandra on Kubernetes is by using the [Helm chart](https://github.com/helm/charts/tree/master/incubator/cassandra):
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
helm install --namespace "cassandra" -n "cassandra" incubator/cassandra
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This will install Cassandra into the `cassandra` namespace by default.
 | 
			
		||||
To interact with Cassandra, find the service with: `kubectl get svc -n cassandra`.
 | 
			
		||||
 | 
			
		||||
For example, if installing using the example above, the Cassandra DNS would be:
 | 
			
		||||
 | 
			
		||||
`cassandra.cassandra.svc.cluster.local`
 | 
			
		||||
 | 
			
		||||
## Create a Dapr component
 | 
			
		||||
 | 
			
		||||
The next step is to create a Dapr component for Cassandra.
 | 
			
		||||
 | 
			
		||||
Create the following YAML file named `cassandra.yaml`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
apiVersion: dapr.io/v1alpha1
 | 
			
		||||
kind: Component
 | 
			
		||||
metadata:
 | 
			
		||||
  name: <name>
 | 
			
		||||
spec:
 | 
			
		||||
  type: state.cassandra
 | 
			
		||||
  metadata:
 | 
			
		||||
  - name: hosts
 | 
			
		||||
    value: <REPLACE-WITH-COMMA-DELIMITED-HOSTS> # Required. Example: cassandra.cassandra.svc.cluster.local
 | 
			
		||||
  - name: username
 | 
			
		||||
    value: <REPLACE-WITH-PASSWORD> # Optional. default: ""
 | 
			
		||||
  - name: password
 | 
			
		||||
    value: <REPLACE-WITH-PASSWORD> # Optional. default: ""
 | 
			
		||||
  - name: consistency
 | 
			
		||||
    value: <REPLACE-WITH-CONSISTENCY> # Optional. default: "All"
 | 
			
		||||
  - name: table
 | 
			
		||||
    value: <REPLACE-WITH-TABLE> # Optional. default: "items"
 | 
			
		||||
  - name: keyspace
 | 
			
		||||
    value: <REPLACE-WITH-KEYSPACE> # Optional. default: "dapr"
 | 
			
		||||
  - name: protoVersion
 | 
			
		||||
    value: <REPLACE-WITH-PROTO-VERSION> # Optional. default: "4"
 | 
			
		||||
  - name: replicationFactor
 | 
			
		||||
    value: <REPLACE-WITH-REPLICATION-FACTOR> #  Optional. default: "1"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here](../../concepts/components/secrets.md)
 | 
			
		||||
 | 
			
		||||
The following example uses the Kubernetes secret store to retrieve the username and password:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
apiVersion: dapr.io/v1alpha1
 | 
			
		||||
kind: Component
 | 
			
		||||
metadata:
 | 
			
		||||
  name: <name>
 | 
			
		||||
spec:
 | 
			
		||||
  type: state.cassandra
 | 
			
		||||
  metadata:
 | 
			
		||||
  - name: hosts
 | 
			
		||||
    value: <REPLACE-WITH-HOSTS>
 | 
			
		||||
  - name: username
 | 
			
		||||
    secretKeyRef:
 | 
			
		||||
      name: <KUBERNETES-SECRET-NAME>
 | 
			
		||||
      key: <KUBERNETES-SECRET-KEY>
 | 
			
		||||
  - name: password
 | 
			
		||||
    secretKeyRef:
 | 
			
		||||
      name: <KUBERNETES-SECRET-NAME>
 | 
			
		||||
      key: <KUBERNETES-SECRET-KEY>
 | 
			
		||||
  ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Apply the configuration
 | 
			
		||||
 | 
			
		||||
### In Kubernetes
 | 
			
		||||
 | 
			
		||||
To apply the Cassandra state store to Kubernetes, use the `kubectl` CLI:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
kubectl apply -f cassandra.yaml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Running locally
 | 
			
		||||
 | 
			
		||||
The Dapr CLI will automatically create a directory named `components` in your current working directory with a Redis component.
 | 
			
		||||
To use Cassandra, replace the redis.yaml file with the cassandra.yaml above.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,90 @@
 | 
			
		|||
# Setup Consul 
 | 
			
		||||
 | 
			
		||||
## Locally
 | 
			
		||||
 | 
			
		||||
You can run Consul locally using Docker:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
docker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 consul
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You can then interact with the server using `localhost:8500`.
 | 
			
		||||
 | 
			
		||||
## Kubernetes
 | 
			
		||||
 | 
			
		||||
The easiest way to install Consul on Kubernetes is by using the [Helm chart](https://github.com/helm/charts/tree/master/stable/consul):
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
helm install --name consul stable/consul
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This will install Consul into the `default` namespace.
 | 
			
		||||
To interact with Consul, find the service with: `kubectl get svc consul`.
 | 
			
		||||
 | 
			
		||||
For example, if installing using the example above, the Consul host address would be:
 | 
			
		||||
 | 
			
		||||
`consul.default.svc.cluster.local:8500`
 | 
			
		||||
 | 
			
		||||
## Create a Dapr component
 | 
			
		||||
 | 
			
		||||
The next step is to create a Dapr component for Consul.
 | 
			
		||||
 | 
			
		||||
Create the following YAML file named `consul.yaml`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
apiVersion: dapr.io/v1alpha1
 | 
			
		||||
kind: Component
 | 
			
		||||
metadata:
 | 
			
		||||
  name: <name>
 | 
			
		||||
spec:
 | 
			
		||||
  type: state.consul
 | 
			
		||||
  metadata:
 | 
			
		||||
  - name: datacenter
 | 
			
		||||
    value: <REPLACE-WITH-DATA-CENTER> # Required. Example: dc1
 | 
			
		||||
  - name: httpAddr
 | 
			
		||||
    value: <REPLACE-WITH-CONSUL-HTTP-ADDRESS> # Required. Example: "consul.default.svc.cluster.local:8500"
 | 
			
		||||
  - name: aclToken
 | 
			
		||||
    value: <REPLACE-WITH-ACL-TOKEN> # Optional. default: ""
 | 
			
		||||
  - name: scheme
 | 
			
		||||
    value: <REPLACE-WITH-SCHEME> # Optional. default: "http"
 | 
			
		||||
  - name: keyPrefixPath
 | 
			
		||||
    value: <REPLACE-WITH-TABLE> # Optional. default: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here](../../concepts/components/secrets.md)
 | 
			
		||||
 | 
			
		||||
The following example uses the Kubernetes secret store to retrieve the acl token:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
apiVersion: dapr.io/v1alpha1
 | 
			
		||||
kind: Component
 | 
			
		||||
metadata:
 | 
			
		||||
  name: <name>
 | 
			
		||||
spec:
 | 
			
		||||
  type: state.consul
 | 
			
		||||
  metadata:
 | 
			
		||||
  - name: datacenter
 | 
			
		||||
    value: <REPLACE-WITH-DATACENTER>
 | 
			
		||||
  - name: httpAddr
 | 
			
		||||
    value: <REPLACE-WITH-HTTP-ADDRESS>
 | 
			
		||||
  - name: aclToken
 | 
			
		||||
    secretKeyRef:
 | 
			
		||||
      name: <KUBERNETES-SECRET-NAME>
 | 
			
		||||
      key: <KUBERNETES-SECRET-KEY>
 | 
			
		||||
  ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Apply the configuration
 | 
			
		||||
 | 
			
		||||
### In Kubernetes
 | 
			
		||||
 | 
			
		||||
To apply the Consul state store to Kubernetes, use the `kubectl` CLI:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
kubectl apply -f consul.yaml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Running locally
 | 
			
		||||
 | 
			
		||||
The Dapr CLI will automatically create a directory named `components` in your current working directory with a Redis component.
 | 
			
		||||
To use Consul, replace the redis.yaml file with the consul.yaml above.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,67 @@
 | 
			
		|||
# Setup etcd 
 | 
			
		||||
 | 
			
		||||
## Locally
 | 
			
		||||
 | 
			
		||||
You can run etcd locally using Docker:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
docker run -d --name etcd bitnami/etcd
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You can then interact with the server using `localhost:2379`.
 | 
			
		||||
 | 
			
		||||
## Kubernetes
 | 
			
		||||
 | 
			
		||||
The easiest way to install etcd on Kubernetes is by using the [Helm chart](https://github.com/helm/charts/tree/master/incubator/etcd):
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
 | 
			
		||||
helm install --name etcd incubator/etcd
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This will install etcd into the `default` namespace.
 | 
			
		||||
To interact with etcd, find the service with: `kubectl get svc etcd-etcd`.
 | 
			
		||||
 | 
			
		||||
For example, if installing using the example above, the etcd host address would be:
 | 
			
		||||
 | 
			
		||||
`etcd-etcd.default.svc.cluster.local:2379`
 | 
			
		||||
 | 
			
		||||
## Create a Dapr component
 | 
			
		||||
 | 
			
		||||
The next step is to create a Dapr component for etcd.
 | 
			
		||||
 | 
			
		||||
Create the following YAML file named `etcd.yaml`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
apiVersion: dapr.io/v1alpha1
 | 
			
		||||
kind: Component
 | 
			
		||||
metadata:
 | 
			
		||||
  name: <name>
 | 
			
		||||
spec:
 | 
			
		||||
  type: state.etcd
 | 
			
		||||
  metadata:
 | 
			
		||||
  - name: endpoints
 | 
			
		||||
    value: <REPLACE-WITH-COMMA-DELIMITED-ENDPOINTS> # Required. Example: "etcd-etcd.default.svc.cluster.local:2379"
 | 
			
		||||
  - name: dialTimeout
 | 
			
		||||
    value: <REPLACE-WITH-DIAL-TIMEOUT> # Required. Example: "5s"
 | 
			
		||||
  - name: operationTimeout
 | 
			
		||||
    value: <REPLACE-WITH-OPERATION-TIMEOUT> # Optional. default: "10S"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here](../../concepts/components/secrets.md)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Apply the configuration
 | 
			
		||||
 | 
			
		||||
### In Kubernetes
 | 
			
		||||
 | 
			
		||||
To apply the etcd state store to Kubernetes, use the `kubectl` CLI:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
kubectl apply -f etcd.yaml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Running locally
 | 
			
		||||
 | 
			
		||||
The Dapr CLI will automatically create a directory named `components` in your current working directory with a Redis component.
 | 
			
		||||
To use etcd, replace the redis.yaml file with the etcd.yaml above.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
# Setup Memcached 
 | 
			
		||||
 | 
			
		||||
## Locally
 | 
			
		||||
 | 
			
		||||
You can run Memcached locally using Docker:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
docker run --name my-memcache -d memcached
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You can then interact with the server using `localhost:11211`.
 | 
			
		||||
 | 
			
		||||
## Kubernetes
 | 
			
		||||
 | 
			
		||||
The easiest way to install Memcached on Kubernetes is by using the [Helm chart](https://github.com/helm/charts/tree/master/stable/memcached):
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
helm install --name memcached stable/memcached
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This will install Memcached into the `default` namespace.
 | 
			
		||||
To interact with Memcached, find the service with: `kubectl get svc memcached`.
 | 
			
		||||
 | 
			
		||||
For example, if installing using the example above, the Memcached host address would be:
 | 
			
		||||
 | 
			
		||||
`memcached.default.svc.cluster.local:11211`
 | 
			
		||||
 | 
			
		||||
## Create a Dapr component
 | 
			
		||||
 | 
			
		||||
The next step is to create a Dapr component for Memcached.
 | 
			
		||||
 | 
			
		||||
Create the following YAML file named `memcached.yaml`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
apiVersion: dapr.io/v1alpha1
 | 
			
		||||
kind: Component
 | 
			
		||||
metadata:
 | 
			
		||||
  name: <name>
 | 
			
		||||
spec:
 | 
			
		||||
  type: state.memcached
 | 
			
		||||
  metadata:
 | 
			
		||||
  - name: hosts
 | 
			
		||||
    value: <REPLACE-WITH-COMMA-DELIMITED-ENDPOINTS> # Required. Example: "memcached.default.svc.cluster.local:11211"
 | 
			
		||||
  - name: maxIdleConnections
 | 
			
		||||
    value: <REPLACE-WITH-MAX-IDLE-CONNECTIONS> # Optional. default: "2"
 | 
			
		||||
  - name: timeout
 | 
			
		||||
    value: <REPLACE-WITH-TIMEOUT> # Optional. default: "1000ms"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here](../../concepts/components/secrets.md)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Apply the configuration
 | 
			
		||||
 | 
			
		||||
### In Kubernetes
 | 
			
		||||
 | 
			
		||||
To apply the Memcached state store to Kubernetes, use the `kubectl` CLI:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
kubectl apply -f memcached.yaml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Running locally
 | 
			
		||||
 | 
			
		||||
The Dapr CLI will automatically create a directory named `components` in your current working directory with a Redis component.
 | 
			
		||||
To use Memcached, replace the redis.yaml file with the memcached.yaml above.
 | 
			
		||||
| 
						 | 
				
			
			@ -5,3 +5,7 @@
 | 
			
		|||
| ------------- | -------|------ |
 | 
			
		||||
| Redis  | :white_check_mark:  | :white_check_mark:
 | 
			
		||||
| Azure CosmosDB | :white_check_mark: | :x: |
 | 
			
		||||
| Cassandra | :white_check_mark: | :x: |
 | 
			
		||||
| Hashicorp Consul | :white_check_mark: | :x: |
 | 
			
		||||
| etcd | :white_check_mark: | :x: |
 | 
			
		||||
| Memcached | :white_check_mark: | :x: |
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue