diff --git a/cmd/README.md b/cmd/README.md index 44c6ee49..09d53b10 100644 --- a/cmd/README.md +++ b/cmd/README.md @@ -2,16 +2,110 @@ Effectively manage your workflows using the versatile Command Line Interface (CLI) designed for a variety of tasks. This CLI is provided as a base executable that includes [built-in extensions](../ext/README.md). -## Configuration +### Configuration -Before running commands, configure your system using environment variables. You can use either the `.uniflow.toml` file or system environment variables. +Settings can be modified using the `.uniflow.toml` file or system environment variables. The key configuration options are: -| TOML Key | Environment Variable Key | Example | -|-----------------------|----------------------------|----------------------------| -| `database.url` | `DATABASE.URL` | `mem://` or `mongodb://` | -| `database.name` | `DATABASE.NAME` | - | -| `collection.charts` | `COLLECTION.CHARTS` | `charts` | -| `collection.nodes` | `COLLECTION.NODES` | `nodes` | -| `collection.secrets` | `COLLECTION.SECRETS` | `secrets` | +| TOML Key | Environment Variable Key | Example | +|----------------------|--------------------------|-----------------------------| +| `database.url` | `DATABASE.URL` | `mem://` or `mongodb://` | +| `database.name` | `DATABASE.NAME` | - | +| `collection.charts` | `COLLECTION.CHARTS` | `charts` | +| `collection.nodes` | `COLLECTION.NODES` | `nodes` | +| `collection.secrets` | `COLLECTION.SECRETS` | `secrets` | -If using [MongoDB](https://www.mongodb.com/), ensure that [Change Streams](https://www.mongodb.com/docs/manual/changeStreams/) are enabled so that the engine can track changes to resources. To utilize Change Streams, set up a [Replica Set](https://www.mongodb.com/docs/manual/replication/#std-label-replication). +If you are using [MongoDB](https://www.mongodb.com/), enable [Change Streams](https://www.mongodb.com/docs/manual/changeStreams/) to track resource changes in real time. This requires setting up a [replica set](https://www.mongodb.com/docs/manual/replication/). + +## Using Uniflow + +`uniflow` is primarily used to start and manage the runtime environment. + +### Start Command + +The `start` command executes all node specifications in the specified namespace. If no namespace is provided, the default namespace (`default`) is used. + +```sh +./dist/uniflow start --namespace default +``` + +If the namespace is empty, you can provide an initial node specification using the `--from-specs` flag: + +```sh +./dist/uniflow start --namespace default --from-specs examples/nodes.yaml +``` + +You can specify an initial secrets file with the `--from-secrets` flag: + +```sh +./dist/uniflow start --namespace default --from-secrets examples/secrets.yaml +``` + +Charts can be initialized using the `--from-charts` flag: + +```sh +./dist/uniflow start --namespace default --from-charts examples/charts.yaml +``` + +## Using Uniflowctl + +`uniflowctl` is a command used to manage resources within a namespace. + +### Apply Command + +The `apply` command applies the contents of a specified file to the namespace. If no namespace is specified, the `default` namespace is used. + +```sh +./dist/uniflowctl apply nodes --namespace default --filename examples/nodes.yaml +``` + +To apply secrets: + +```sh +./dist/uniflowctl apply secrets --namespace default --filename examples/secrets.yaml +``` + +To apply charts: + +```sh +./dist/uniflowctl apply charts --namespace default --filename examples/charts.yaml +``` + +### Delete Command + +The `delete` command removes all resources defined in the specified file. If no namespace is specified, the `default` namespace is used. + +```sh +./dist/uniflowctl delete nodes --namespace default --filename examples/nodes.yaml +``` + +To delete secrets: + +```sh +./dist/uniflowctl delete secrets --namespace default --filename examples/secrets.yaml +``` + +To delete charts: + +```sh +./dist/uniflowctl delete charts --namespace default --filename examples/charts.yaml +``` + +### Get Command + +The `get` command retrieves all resources in the specified namespace. If no namespace is specified, the `default` namespace is used. + +```sh +./dist/uniflowctl get nodes --namespace default +``` + +To retrieve secrets: + +```sh +./dist/uniflowctl get secrets --namespace default +``` + +To retrieve charts: + +```sh +./dist/uniflowctl get charts --namespace default +``` diff --git a/cmd/README_kr.md b/cmd/README_kr.md index 1f0f3ddd..2037d9aa 100644 --- a/cmd/README_kr.md +++ b/cmd/README_kr.md @@ -2,16 +2,109 @@ 다양한 작업 흐름을 관리하기 위해 설계된 다목적 명령줄 인터페이스 (CLI)를 효과적으로 사용하세요. 이 CLI는 [내장 확장 기능](../ext/README.md)을 포함한 기본 실행 파일로 제공됩니다. -## 구성 +### 설정 -명령을 실행하기 전에 환경 변수를 사용하여 시스템을 구성해야 합니다. `.uniflow.toml` 파일이나 시스템 환경 변수를 활용할 수 있습니다. +설정은 `.uniflow.toml` 파일이나 시스템 환경 변수를 사용해 유연하게 변경할 수 있습니다. 주요 설정 항목은 다음과 같습니다: | TOML 키 | 환경 변수 키 | 예시 | -|----------------------|--------------------------|----------------------------| -| `database.url` | `DATABASE.URL` | `mem://` 또는 `mongodb://` | -| `database.name` | `DATABASE.NAME` | - | -| `collection.charts` | `COLLECTION.CHARTS` | `charts` | -| `collection.nodes` | `COLLECTION.NODES` | `nodes` | -| `collection.secrets` | `COLLECTION.SECRETS` | `secrets` | - -[MongoDB](https://www.mongodb.com/)를 사용할 경우, 엔진이 리소스의 변경을 추적할 수 있도록 [변경 스트림](https://www.mongodb.com/docs/manual/changeStreams/)을 활성화해야 합니다. 변경 스트림을 이용하려면 [복제본 세트](https://www.mongodb.com/ko-kr/docs/manual/replication/#std-label-replication)를 설정하세요. +|----------------------|-------------------------|----------------------------| +| `database.url` | `DATABASE.URL` | `mem://` 또는 `mongodb://` | +| `database.name` | `DATABASE.NAME` | - | +| `collection.charts` | `COLLECTION.CHARTS` | `charts` | +| `collection.nodes` | `COLLECTION.NODES` | `nodes` | +| `collection.secrets` | `COLLECTION.SECRETS` | `secrets` | + +만약 [MongoDB](https://www.mongodb.com/)를 사용한다면, 리소스의 변경 사항을 실시간으로 추적하기 위해 [변경 스트림](https://www.mongodb.com/docs/manual/changeStreams/)을 활성화해야 합니다. 이를 위해서는 [복제 세트](https://www.mongodb.com/docs/manual/replication/) 설정이 필요합니다. + +## Uniflow 사용하기 + +`uniflow`는 주로 런타임 환경을 시작하고 관리하는 명령어입니다. + +### Start 명령어 + +`start` 명령어는 지정된 네임스페이스 내의 모든 노드 명세를 실행합니다. 네임스페이스가 지정되지 않으면 기본적으로 `default` 네임스페이스가 사용됩니다. + +```sh +./dist/uniflow start --namespace default +``` + +네임스페이스가 비어 있을 경우, 초기 노드 명세를 `--from-specs` 플래그로 제공할 수 있습니다: + +```sh +./dist/uniflow start --namespace default --from-specs examples/nodes.yaml +``` + +초기 시크릿 파일은 `--from-secrets` 플래그로 설정할 수 있습니다: +```sh +./dist/uniflow start --namespace default --from-secrets examples/secrets.yaml +``` + +초기 차트 파일은 `--from-charts` 플래그로 제공할 수 있습니다: + +```sh +./dist/uniflow start --namespace default --from-charts examples/charts.yaml +``` + +## Uniflowctl 사용하기 + +`uniflowctl`는 네임스페이스 내에서 리소스를 관리하는 명령어입니다. + +### Apply 명령어 + +`apply` 명령어는 지정된 파일 내용을 네임스페이스에 적용합니다. 네임스페이스를 지정하지 않으면 기본적으로 `default` 네임스페이스가 사용됩니다. + +```sh +./dist/uniflowctl apply nodes --namespace default --filename examples/nodes.yaml +``` + +시크릿을 적용하려면: + +```sh +./dist/uniflowctl apply secrets --namespace default --filename examples/secrets.yaml +``` + +차트를 적용하려면: + +```sh +./dist/uniflowctl apply charts --namespace default --filename examples/charts.yaml +``` + +### Delete 명령어 + +`delete` 명령어는 지정된 파일에 정의된 모든 리소스를 삭제합니다. 네임스페이스를 지정하지 않으면 기본적으로 `default` 네임스페이스가 사용됩니다. + +```sh +./dist/uniflowctl delete nodes --namespace default --filename examples/nodes.yaml +``` + +시크릿을 삭제하려면: + +```sh +./dist/uniflowctl delete secrets --namespace default --filename examples/secrets.yaml +``` + +차트를 삭제하려면: + +```sh +./dist/uniflowctl delete charts --namespace default --filename examples/charts.yaml +``` + +### Get 명령어 + +`get` 명령어는 지정된 네임스페이스 내 모든 리소스를 조회합니다. 네임스페이스가 지정되지 않으면 기본적으로 `default` 네임스페이스가 사용됩니다. + +```sh +./dist/uniflowctl get nodes --namespace default +``` + +시크릿을 조회하려면: + +```sh +./dist/uniflowctl get secrets --namespace default +``` + +차트를 조회하려면: + +```sh +./dist/uniflowctl get charts --namespace default +``` diff --git a/docs/getting_started.md b/docs/getting_started.md index dde14dc7..d4dfa5fd 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -45,6 +45,50 @@ Settings can be modified using the `.uniflow.toml` file or system environment va If you are using [MongoDB](https://www.mongodb.com/), enable [Change Streams](https://www.mongodb.com/docs/manual/changeStreams/) to track resource changes in real time. This requires setting up a [replica set](https://www.mongodb.com/docs/manual/replication/). +## Running an Example + +To run a basic HTTP request handler example using [ping.yaml](./examples/ping.yaml): + +```yaml +- kind: listener + name: listener + protocol: http + port: 8000 + ports: + out: + - name: router + port: in + +- kind: router + name: router + routes: + - method: GET + path: /ping + port: out[0] + ports: + out[0]: + - name: pong + port: in + +- kind: snippet + name: pong + language: text + code: pong +``` + +To start the workflow, run: + +```sh +uniflow start --from-specs example/ping.yaml +``` + +Verify it's running by calling the HTTP endpoint: + +```sh +curl localhost:8000/ping +pong# +``` + ## Using Uniflow `uniflow` is primarily used to start and manage the runtime environment. diff --git a/docs/getting_started_kr.md b/docs/getting_started_kr.md index d94d3cc3..04c97b8f 100644 --- a/docs/getting_started_kr.md +++ b/docs/getting_started_kr.md @@ -45,6 +45,51 @@ make build 만약 [MongoDB](https://www.mongodb.com/)를 사용한다면, 리소스의 변경 사항을 실시간으로 추적하기 위해 [변경 스트림](https://www.mongodb.com/docs/manual/changeStreams/)을 활성화해야 합니다. 이를 위해서는 [복제 세트](https://www.mongodb.com/docs/manual/replication/) 설정이 필요합니다. +## 예제 실행 + +다음은 HTTP 요청 처리 예제인 [ping.yaml](./examples/ping.yaml)을 실행하는 방법입니다: + +```yaml +- kind: listener + name: listener + protocol: http + port: 8000 + ports: + out: + - name: router + port: in + +- kind: router + name: router + routes: + - method: GET + path: /ping + port: out[0] + ports: + out[0]: + - name: pong + port: in + +- kind: snippet + name: pong + language: text + code: pong +``` + +다음 명령어로 워크플로우를 실행합니다: + +```sh +uniflow start --from-specs example/ping.yaml +``` + +정상 작동 여부를 확인하려면 HTTP 엔드포인트를 호출하세요: + +```sh +curl localhost:8000/ping +pong# +``` + + ## Uniflow 사용하기 `uniflow`는 주로 런타임 환경을 시작하고 관리하는 명령어입니다. @@ -64,7 +109,6 @@ make build ``` 초기 시크릿 파일은 `--from-secrets` 플래그로 설정할 수 있습니다: - ```sh ./dist/uniflow start --namespace default --from-secrets examples/secrets.yaml ```