Files
ziti/doc/003-local-deploy.md
T
2023-07-12 16:31:14 -04:00

123 lines
4.7 KiB
Markdown

# Overview
This local deployment README guides you to set up a running local Ziti stack. If you have not already built the apps in this repo you may go back
to [the previous tutorial about getting set up for local development](./002-local-dev.md) for build instructions. The remainder of the tutorial will assume you have installed all the apps so they can
be found in your shell's executable search `PATH`.
You will configure and run:
- `ziti controller` with the provided demo certificate authority in `./etc/ca`
- `ziti router` as an edge router
## A Note About Windows
These commands require a running BASH shell. Windows users will need to use WSL, [cygwin](https://www.cygwin.com/), a Linux virtual machine, or some other environment that supports BASH. The easiest
thing might just be to use the shell that comes with [git bashfor windows](https://gitforwindows.org/). WSL is maturing more and more: [Mintty and WSL](https://github.com/mintty/wsltty).
Also note that the `ziti` command may need to have the `.exe` suffix appended to the example commands.
## Initialize the Environment
The remainder of this local development tutorital will instruct you to run terminal commands with current working directory of the top-level of this checked-out repo. The generated configuration files
will use filesystem paths that are relative to this directory.
Go ahead and create a `./db` directory. Git is configured to ignore this directory and it will house the tutorial files. You may delete this directory to reset the tutorial.
```bash
mkdir -p ./db
```
## Initialize the Controller
Before you can run the controller will initialize its configuration and database. We'll use the demo CA that's checked in to this repo in `./etc/ca`.
```bash
ZITI_HOME=. \
ZITI_CTRL_ADVERTISED_ADDRESS=127.0.0.1 \
ZITI_CTRL_EDGE_ADVERTISED_HOST_PORT=127.0.0.1:1280 \
ZITI_EDGE_CTRL_ADVERTISED_HOST_PORT=127.0.0.1:1280 \
ZITI_PKI_CTRL_CERT=./etc/ca/intermediate/certs/ctrl-client.cert.pem \
ZITI_PKI_CTRL_SERVER_CERT=./etc/ca/intermediate/certs/ctrl-server.cert.pem \
ZITI_PKI_CTRL_KEY=./etc/ca/intermediate/private/ctrl.key.pem \
ZITI_PKI_CTRL_CA=./etc/ca/intermediate/certs/ca-chain.cert.pem \
ZITI_PKI_SIGNER_CERT=./etc/ca/intermediate/certs/intermediate.cert.pem \
ZITI_PKI_SIGNER_KEY=./etc/ca/intermediate/private/intermediate.key.decrypted.pem \
ziti create config controller \
--output ./db/ctrl-config.yml
```
```bash
ziti controller edge init ./db/ctrl-config.yml -u ADMIN_NAME -p ADMIN_PW
```
## Run the Controller
Edge SDKs will connect to the running controller to authenticate and request a session. Leave the controller running in a terminal so that you may inspect the log messages.
```bash
ziti controller run ./db/ctrl-config.yml
```
## Login to the Controller
You will need a new terminal with current directory set to the top-level of this repo.This login step will save a session token in the `ziti` CLI's configuration cache.
```bash
ziti edge login -u ADMIN_NAME -p ADMIN_PW
```
Subsequent `ziti` CLI commands will automatically re-use this session token. You'll need to perform this login step again when the token expires.
## Initialize an Edge Router
Request an enrollment token from the controller for router01.
```bash
ziti edge create edge-router router01 \
--jwt-output-file /tmp/router01.jwt \
--tunneler-enabled
```
Generate a configuration file for router01.
```bash
ZITI_HOME=./db \
ZITI_CTRL_EDGE_ADVERTISED_ADDRESS=127.0.0.1 \
ZITI_ROUTER_NAME=localhost \
ziti create config router edge \
--routerName router01 \
--output ./db/router01-config.yml
```
Enroll router01 by presenting the token to the controller to receive a certificate in the filesystem location specified in the configuration file.
```bash
ziti router enroll --jwt /tmp/router01.jwt ./db/router01-config.yml
```
## Run the Edge Router
Edge SDKs will connect to the running edge router to connect to services. Leave the router process running in a terminal so you can monitor the log messages while you continue the tutorial in a new
terminal.
```bash
ziti router run ./db/router01-config.yml
```
## Create Your First Service
A service is an entity that stores metadata about a server application. The `ziti` CLI has an interactive tutorial to step you through creating your first service.
When prompted, select your running edge router `router01`.
```bash
ziti demo first-service
```
If you prefer, you may read [the first-service tutorial as a web site](../ziti/cmd/demo/tutorials/first-service.md)
## Further Exploration
- The [Go SDK examples](https://github.com/openziti/sdk-golang/tree/main/example#readme) illustrate embedding OpenZiti in both client and server applications.
- You may wish to [know more about controller PKI](./004-controller-pki.md).