mirror of https://github.com/dapr/docs.git
114 lines
3.0 KiB
Markdown
114 lines
3.0 KiB
Markdown
---
|
|
type: docs
|
|
title: "Define a component"
|
|
linkTitle: "Define a component"
|
|
weight: 70
|
|
description: "Create a component definition file to interact with the secrets building block"
|
|
---
|
|
|
|
When building an app, you'd most likely create your own component file definitions, depending on the building block and specific component that you'd like to use.
|
|
|
|
In this tutorial, you will create a component definition file to interact with the [secrets building block API]({{< ref secrets >}}):
|
|
|
|
- Create a local JSON secret store.
|
|
- Register the secret store with Dapr using a component definition file.
|
|
- Obtain the secret using the Dapr HTTP API.
|
|
|
|
## Step 1: Create a JSON secret store
|
|
|
|
1. Create a new directory named `my-components` to hold the new secret and component file:
|
|
|
|
```bash
|
|
mkdir my-components
|
|
```
|
|
|
|
1. Navigate into this directory.
|
|
|
|
```bash
|
|
cd my-components
|
|
```
|
|
|
|
1. Dapr supports [many types of secret stores]({{< ref supported-secret-stores >}}), but for this tutorial, create a local JSON file named `mysecrets.json` with the following secret:
|
|
|
|
```json
|
|
{
|
|
"my-secret" : "I'm Batman"
|
|
}
|
|
```
|
|
|
|
## Step 2: Create a secret store Dapr component
|
|
|
|
1. Create a new file `localSecretStore.yaml` with the following contents:
|
|
|
|
```yaml
|
|
apiVersion: dapr.io/v1alpha1
|
|
kind: Component
|
|
metadata:
|
|
name: my-secret-store
|
|
namespace: default
|
|
spec:
|
|
type: secretstores.local.file
|
|
version: v1
|
|
metadata:
|
|
- name: secretsFile
|
|
value: ./mysecrets.json
|
|
- name: nestedSeparator
|
|
value: ":"
|
|
```
|
|
|
|
In the above file definition:
|
|
- `type: secretstores.local.file` tells Dapr to use the local file component as a secret store.
|
|
- The metadata fields provide component-specific information needed to work with this component. In this case, the secret store JSON path is relative to where you call `dapr run`.
|
|
|
|
## Step 3: Run the Dapr sidecar
|
|
|
|
Launch a Dapr sidecar that will listen on port 3500 for a blank application named `myapp`:
|
|
|
|
|
|
PowerShell environment:
|
|
```bash
|
|
dapr run --app-id myapp --dapr-http-port 3500 --resources-path ../
|
|
```
|
|
non-PowerShell environment:
|
|
```bash
|
|
dapr run --app-id myapp --dapr-http-port 3500 --resources-path .
|
|
```
|
|
|
|
{{% alert title="Tip" color="primary" %}}
|
|
If an error message occurs, stating the `app-id` is already in use, you may need to stop any currently running Dapr sidecars. Stop the sidecar before running the next `dapr run` command by either:
|
|
|
|
- Pressing Ctrl+C or Command+C.
|
|
- Running the `dapr stop` command in the terminal.
|
|
|
|
{{% /alert %}}
|
|
|
|
## Step 4: Get a secret
|
|
|
|
In a separate terminal, run:
|
|
|
|
{{< tabs "HTTP API (Bash)" "HTTP API (PowerShell)">}}
|
|
{{% codetab %}}
|
|
|
|
```bash
|
|
curl http://localhost:3500/v1.0/secrets/my-secret-store/my-secret
|
|
```
|
|
|
|
{{% /codetab %}}
|
|
|
|
{{% codetab %}}
|
|
|
|
```powershell
|
|
Invoke-RestMethod -Uri 'http://localhost:3500/v1.0/secrets/my-secret-store/my-secret'
|
|
```
|
|
|
|
{{% /codetab %}}
|
|
{{< /tabs >}}
|
|
|
|
**Output:**
|
|
|
|
```json
|
|
{"my-secret":"I'm Batman"}
|
|
```
|
|
|
|
{{< button text="Next step: Set up a Pub/sub broker >>" page="pubsub-quickstart" >}}
|