zuplo 7.0.1 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/articles/connect-to-aws-alb-with-mtls.mdx +1 -1
- package/docs/articles/gke-with-upstream-auth-policy.mdx +1 -1
- package/docs/articles/secure-tunnel.mdx +156 -80
- package/docs/articles/securing-backend-mtls.mdx +2 -1
- package/docs/articles/securing-your-backend.mdx +53 -48
- package/docs/articles/tunnel-advanced.mdx +202 -0
- package/docs/articles/tunnel-services.mdx +165 -0
- package/docs/articles/tunnel-setup.mdx +151 -198
- package/docs/articles/tunnel-troubleshooting.mdx +136 -33
- package/docs/articles/upstream-iam-auth.mdx +100 -0
- package/docs/cli/tunnel-create.mdx +5 -3
- package/docs/cli/tunnel-create.partial.mdx +7 -3
- package/docs/cli/tunnel-delete.mdx +5 -3
- package/docs/cli/tunnel-delete.partial.mdx +7 -3
- package/docs/cli/tunnel-describe.mdx +8 -6
- package/docs/cli/tunnel-describe.partial.mdx +13 -5
- package/docs/cli/tunnel-list.mdx +5 -3
- package/docs/cli/tunnel-list.partial.mdx +7 -3
- package/docs/cli/tunnel-rotate-token.mdx +8 -0
- package/docs/cli/tunnel-rotate-token.partial.mdx +13 -0
- package/docs/cli/tunnel-services-describe.mdx +5 -3
- package/docs/cli/tunnel-services-describe.partial.mdx +7 -3
- package/docs/cli/tunnel-services-update.mdx +8 -0
- package/docs/cli/tunnel-services-update.partial.mdx +13 -0
- package/package.json +5 -5
- package/docs/cli/tunnel-rate-token.partial.mdx +0 -9
|
@@ -1,53 +1,156 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Tunnel
|
|
2
|
+
title: Troubleshoot a Tunnel
|
|
3
|
+
sidebar_label: Troubleshooting
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
A tunnel spans your network and Zuplo's, so traffic often fails to reach its
|
|
7
|
+
destination on the first attempt. The cause is usually a configuration in your
|
|
8
|
+
own network — a firewall, VPC route, security group, or IAM rule — rather than
|
|
9
|
+
the tunnel itself.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
Work through the checks on this page in order. Each one narrows down which part
|
|
12
|
+
of the path is failing.
|
|
12
13
|
|
|
13
|
-
##
|
|
14
|
+
## Confirm the tunnel is connected
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
following CLI command to check the status of the tunnel:
|
|
16
|
+
Start here. If the tunnel isn't connected, nothing else matters.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
#
|
|
19
|
+
# The commands below assume you exported your API key:
|
|
20
20
|
# export ZUPLO_API_KEY=zpka_d67b7e241bb948758f415b79aa8exxxx_2efbxxxx
|
|
21
21
|
|
|
22
|
-
zuplo tunnel list
|
|
23
|
-
zuplo tunnel describe --tunnel-id
|
|
22
|
+
zuplo tunnel list
|
|
23
|
+
zuplo tunnel describe --tunnel-id tnl_TRMZwunq2PLNQDwhu6A04Bmx
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Check the `status` field
|
|
27
|
-
"down" that means that your tunnel isn't up. If you are using a Docker
|
|
28
|
-
container, check the container for errors. It takes a few seconds for new
|
|
29
|
-
tunnels to register with the Cloudflare network for the first time.
|
|
26
|
+
Check the `status` field in the output of `zuplo tunnel describe`.
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
If the status is down:
|
|
32
29
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
- Wait a few seconds. A newly created tunnel takes a moment to register the
|
|
31
|
+
first time it connects.
|
|
32
|
+
- Check the container or process for errors. A container that exits immediately
|
|
33
|
+
usually indicates a bad or missing `TUNNEL_TOKEN`.
|
|
34
|
+
- Confirm the token matches the tunnel. Re-run `zuplo tunnel describe` and
|
|
35
|
+
compare it against the value your container receives. If the token was
|
|
36
|
+
rotated, the old value no longer establishes new connections.
|
|
37
|
+
- Verify the host has outbound internet access. The tunnel connects outbound on
|
|
38
|
+
TCP port 7844, and the `zuplo/tunnel` image uses HTTP/2 rather than QUIC, so
|
|
39
|
+
outbound UDP isn't required. An egress firewall or proxy that blocks that port
|
|
40
|
+
prevents the tunnel from connecting.
|
|
41
|
+
- Confirm the host runs Linux. See
|
|
42
|
+
[tunnel requirements](./secure-tunnel.mdx#requirements).
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
useful to set a more verbose log level. To set logging to a different level,
|
|
39
|
-
simply set the environment variable `TUNNEL_LOGLEVEL` on your Zuplo tunnel
|
|
40
|
-
instance to `debug`. Other log levels available are `info`, `warn`, `error`, and
|
|
41
|
-
`fatal`, but `debug` is recommended for troubleshooting.
|
|
44
|
+
## Check the service configuration
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
environment variables for the container. See your cloud provider's documentation
|
|
46
|
-
for more details.
|
|
46
|
+
A connected tunnel that returns errors is often missing a service, or has one
|
|
47
|
+
that's scoped to a different environment.
|
|
47
48
|
|
|
48
|
-
```
|
|
49
|
+
```bash
|
|
50
|
+
zuplo tunnel services describe --tunnel-id tnl_TRMZwunq2PLNQDwhu6A04Bmx
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Compare the output against the `service://` URL your gateway calls:
|
|
54
|
+
|
|
55
|
+
- **The service name matches exactly.** `service://payments-api` requires a
|
|
56
|
+
service named `payments-api`. Names are case-sensitive and don't allow partial
|
|
57
|
+
matches.
|
|
58
|
+
- **Your project is listed.** A project absent from a service's `configurations`
|
|
59
|
+
can't reach it.
|
|
60
|
+
- **Your environment is allowed.** Check that `accessibleBy` includes the
|
|
61
|
+
environment you're testing from: `production`, `preview`, or `working-copy`. A
|
|
62
|
+
service scoped to `production` returns an error when called from a preview
|
|
63
|
+
build.
|
|
64
|
+
- **The configuration is the one you meant to upload.** Each
|
|
65
|
+
`zuplo tunnel services update` replaces the whole configuration, so a partial
|
|
66
|
+
file removes services you left out.
|
|
67
|
+
|
|
68
|
+
For the meaning of each property, see
|
|
69
|
+
[Service configuration reference](./tunnel-services.mdx#service-configuration-reference).
|
|
70
|
+
|
|
71
|
+
## Enable debug logging
|
|
72
|
+
|
|
73
|
+
If the tunnel is connected and the services look right but traffic still doesn't
|
|
74
|
+
arrive, raise the log level to see what the tunnel does with each request.
|
|
75
|
+
|
|
76
|
+
Set `TUNNEL_LOGLEVEL` to `debug` on your tunnel instance:
|
|
77
|
+
|
|
78
|
+
```text
|
|
49
79
|
TUNNEL_LOGLEVEL=debug
|
|
50
80
|
```
|
|
51
81
|
|
|
52
|
-
|
|
53
|
-
|
|
82
|
+
How you set the variable depends on where you deployed. For a container, set it
|
|
83
|
+
as a container environment variable and restart the instance. Consult your
|
|
84
|
+
platform's documentation for the specific mechanism.
|
|
85
|
+
|
|
86
|
+
Debug logs show each connection attempt the tunnel makes to your internal
|
|
87
|
+
endpoint, which distinguishes the two common failures:
|
|
88
|
+
|
|
89
|
+
- **No attempt logged.** The request isn't reaching the tunnel. Recheck the
|
|
90
|
+
service configuration and the `service://` URL in your gateway.
|
|
91
|
+
- **An attempt that fails.** The tunnel is working and can't reach your backend.
|
|
92
|
+
Continue to
|
|
93
|
+
[Check connectivity to your backend](#check-connectivity-to-your-backend).
|
|
94
|
+
|
|
95
|
+
Return the log level to `info` or `error` when you finish. Debug logging is
|
|
96
|
+
verbose.
|
|
97
|
+
|
|
98
|
+
## Check connectivity to your backend
|
|
99
|
+
|
|
100
|
+
The tunnel reaches your backend the same way any other process in the same
|
|
101
|
+
network position would, so reproduce the request from there.
|
|
102
|
+
|
|
103
|
+
The tunnel image is distroless and has no shell, so you can't exec into it. Run
|
|
104
|
+
a debug container in the same network instead:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
docker run --rm --network container:zuplo-tunnel curlimages/curl \
|
|
108
|
+
-sv http://payments.internal:8080/health
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
On Kubernetes, run the equivalent pod in the same namespace as the tunnel:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
kubectl run tunnel-debug --rm -it --image=curlimages/curl --restart=Never \
|
|
115
|
+
-- -sv http://payments.internal:8080/health
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Use the exact `endpoint` value from your service configuration. Common failures:
|
|
119
|
+
|
|
120
|
+
- **DNS doesn't resolve.** The tunnel host can't see your internal DNS zone. On
|
|
121
|
+
Kubernetes, confirm the service name and namespace. On ECS, check that service
|
|
122
|
+
discovery is configured for the tunnel's task.
|
|
123
|
+
- **The connection times out.** A security group, network ACL, or firewall rule
|
|
124
|
+
blocks traffic from the tunnel to the backend. The tunnel's host needs egress
|
|
125
|
+
to your backend's port.
|
|
126
|
+
- **The connection is refused.** The backend isn't listening on that host and
|
|
127
|
+
port, or it binds only to localhost. A backend bound to `127.0.0.1` isn't
|
|
128
|
+
reachable from a separate container or host.
|
|
129
|
+
- **TLS fails.** If the endpoint uses `https` with an internal certificate
|
|
130
|
+
authority, the tunnel must trust that certificate authority. Use `http` for
|
|
131
|
+
internal traffic that's already isolated, or
|
|
132
|
+
[contact support](mailto:support@zuplo.com) to discuss certificate options.
|
|
133
|
+
|
|
134
|
+
## Check the gateway side
|
|
135
|
+
|
|
136
|
+
If the tunnel reaches your backend directly but requests through the gateway
|
|
137
|
+
still fail, the problem is in your Zuplo project rather than the tunnel:
|
|
138
|
+
|
|
139
|
+
- Confirm the route's rewrite URL or `fetch` call uses the `service://` scheme,
|
|
140
|
+
not an internal hostname. Your gateway can't resolve internal DNS names
|
|
141
|
+
directly.
|
|
142
|
+
- If the URL comes from an environment variable, confirm the variable is set in
|
|
143
|
+
the environment you're testing and holds the full `service://` prefix.
|
|
144
|
+
- Check your [gateway logs](./monitoring-your-gateway.mdx) for the actual error
|
|
145
|
+
status and message.
|
|
146
|
+
|
|
147
|
+
## Get help
|
|
148
|
+
|
|
149
|
+
If you've worked through these checks and traffic still doesn't arrive, contact
|
|
150
|
+
[Zuplo support](mailto:support@zuplo.com). Include:
|
|
151
|
+
|
|
152
|
+
- Your tunnel ID.
|
|
153
|
+
- The output of `zuplo tunnel describe` and `zuplo tunnel services describe`.
|
|
154
|
+
- Tunnel logs at `debug` level covering a failed request.
|
|
155
|
+
- The `service://` URL your gateway calls and the environment you called it
|
|
156
|
+
from.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: IAM Authentication for Your Backend
|
|
3
|
+
sidebar_label: Overview
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
IAM authentication lets your cloud provider decide whether a request from Zuplo
|
|
7
|
+
is allowed to reach your backend. Instead of sharing a secret you both store,
|
|
8
|
+
your gateway proves its identity to AWS, Azure, or Google Cloud, and your
|
|
9
|
+
provider's own authorization rules do the rest.
|
|
10
|
+
|
|
11
|
+
Zuplo handles this with a set of upstream auth policies. Each one resolves a
|
|
12
|
+
credential before your request leaves the gateway, then attaches it — as an
|
|
13
|
+
`Authorization` header, or as a signature the handler computes.
|
|
14
|
+
|
|
15
|
+
This approach suits backends that already run behind cloud IAM: Cloud Run, API
|
|
16
|
+
Gateway, Lambda, App Service, Identity-Aware Proxy, or anything fronted by an
|
|
17
|
+
identity provider you control. For the alternatives, see
|
|
18
|
+
[Securing your backend](./securing-your-backend.mdx).
|
|
19
|
+
|
|
20
|
+
## Federated identity or stored credentials
|
|
21
|
+
|
|
22
|
+
Every provider offers two paths, and the choice matters more than which cloud
|
|
23
|
+
you're on.
|
|
24
|
+
|
|
25
|
+
**Federated identity** is the stronger option. Zuplo presents a short-lived,
|
|
26
|
+
audience-bound OIDC token that proves which gateway is calling, and your cloud
|
|
27
|
+
exchanges it for temporary credentials. No long-lived key exists, so there's
|
|
28
|
+
nothing to leak or rotate. Use it when your provider supports it.
|
|
29
|
+
|
|
30
|
+
**Stored credentials** mean you create a key or client secret in your cloud and
|
|
31
|
+
save it as a Zuplo environment variable. This works everywhere and is simpler to
|
|
32
|
+
set up, but the credential is long-lived, so you own rotating it.
|
|
33
|
+
|
|
34
|
+
## Choose a policy
|
|
35
|
+
|
|
36
|
+
| Provider | Federated identity | Stored credentials |
|
|
37
|
+
| ------------ | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
38
|
+
| AWS | [Upstream AWS Federated Auth](../policies/upstream-aws-federated-auth-inbound.mdx) | [Upstream AWS Service Auth](../policies/upstream-aws-service-auth-inbound.mdx) |
|
|
39
|
+
| Google Cloud | [Upstream GCP Federated Auth](../policies/upstream-gcp-federated-auth-inbound.mdx) | [Upstream GCP Service Auth](../policies/upstream-gcp-service-auth-inbound.mdx) |
|
|
40
|
+
| Azure | — | [Upstream Azure AD Service Auth](../policies/upstream-azure-ad-service-auth-inbound.mdx) |
|
|
41
|
+
|
|
42
|
+
Two more policies cover cases that aren't tied to one cloud:
|
|
43
|
+
|
|
44
|
+
- [Upstream GCP JWT](../policies/upstream-gcp-jwt-inbound.mdx) issues a signed
|
|
45
|
+
JWT from a service account, for backends that verify a Google-issued token
|
|
46
|
+
rather than calling an IAM-protected endpoint.
|
|
47
|
+
- [Upstream OAuth Client Credentials](../policies/upstream-oauth-client-credentials-inbound.mdx)
|
|
48
|
+
handles any backend that accepts an OAuth 2.0 client credentials token,
|
|
49
|
+
including identity providers outside the three major clouds.
|
|
50
|
+
|
|
51
|
+
Each policy page documents its options and the setup required on the cloud side.
|
|
52
|
+
|
|
53
|
+
## How AWS differs
|
|
54
|
+
|
|
55
|
+
The AWS policies behave differently from the others, and it's worth knowing
|
|
56
|
+
before you configure a route. They don't add an `Authorization` header. AWS
|
|
57
|
+
Signature Version 4 signs the exact final request — method, host, path, query,
|
|
58
|
+
and a hash of the body — which isn't known until the handler builds it.
|
|
59
|
+
|
|
60
|
+
So the AWS policies resolve credentials onto the request context, and the
|
|
61
|
+
[AWS Lambda handler](../handlers/aws-lambda.mdx) or your own code signs with
|
|
62
|
+
them. In custom code, read them with `AwsClient.fromContext(context)`. When you
|
|
63
|
+
use the Lambda handler, attach the policy to the route and omit the handler's
|
|
64
|
+
own `accessKeyId` and `secretAccessKey`.
|
|
65
|
+
|
|
66
|
+
The Azure and GCP policies fetch a token and set the `Authorization` header
|
|
67
|
+
themselves, so a URL Rewrite route needs no extra code.
|
|
68
|
+
|
|
69
|
+
## Keep credentials out of source control
|
|
70
|
+
|
|
71
|
+
Whichever policy you pick, reference secrets through environment variables
|
|
72
|
+
rather than writing them into `policies.json`:
|
|
73
|
+
|
|
74
|
+
```json title="config/policies.json"
|
|
75
|
+
{
|
|
76
|
+
"name": "upstream-auth",
|
|
77
|
+
"policyType": "upstream-azure-ad-service-auth-inbound",
|
|
78
|
+
"handler": {
|
|
79
|
+
"export": "UpstreamAzureAdServiceAuthInboundPolicy",
|
|
80
|
+
"module": "$import(@zuplo/runtime)",
|
|
81
|
+
"options": {
|
|
82
|
+
"activeDirectoryTenantId": "$env(AZURE_TENANT_ID)",
|
|
83
|
+
"activeDirectoryClientId": "$env(AZURE_CLIENT_ID)",
|
|
84
|
+
"activeDirectoryClientSecret": "$env(AZURE_CLIENT_SECRET)"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Mark each value as a secret when you create it. For per-environment values, see
|
|
91
|
+
[Configuring environment variables](./environment-variables.mdx).
|
|
92
|
+
|
|
93
|
+
## Next steps
|
|
94
|
+
|
|
95
|
+
- [Secure a GCP backend with Zuplo upstream auth](./gke-with-upstream-auth-policy.mdx)
|
|
96
|
+
— a full walkthrough, including Identity-Aware Proxy.
|
|
97
|
+
- [Gateway to origin mTLS authentication](./securing-backend-mtls.mdx) — use
|
|
98
|
+
client certificates instead, when your backend isn't behind cloud IAM.
|
|
99
|
+
- [Secure tunnel](./secure-tunnel.mdx) — reach a backend that has no public
|
|
100
|
+
endpoint at all.
|
|
@@ -48,6 +48,8 @@ The following global options are available for all commands:
|
|
|
48
48
|
|
|
49
49
|
## Additional resources
|
|
50
50
|
|
|
51
|
-
- [Secure
|
|
52
|
-
- [
|
|
53
|
-
- [Tunnel
|
|
51
|
+
- [Secure Tunnel](../articles/secure-tunnel.mdx)
|
|
52
|
+
- [Set up a Tunnel](../articles/tunnel-setup.mdx)
|
|
53
|
+
- [Connect to Tunnel Services](../articles/tunnel-services.mdx)
|
|
54
|
+
- [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
|
|
55
|
+
- [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
additional-resources:
|
|
3
|
-
- name: Secure
|
|
3
|
+
- name: Secure Tunnel
|
|
4
4
|
href: ../articles/secure-tunnel.mdx
|
|
5
|
-
- name:
|
|
5
|
+
- name: Set up a Tunnel
|
|
6
6
|
href: ../articles/tunnel-setup.mdx
|
|
7
|
-
- name: Tunnel
|
|
7
|
+
- name: Connect to Tunnel Services
|
|
8
|
+
href: ../articles/tunnel-services.mdx
|
|
9
|
+
- name: Advanced Tunnel Configuration
|
|
10
|
+
href: ../articles/tunnel-advanced.mdx
|
|
11
|
+
- name: Troubleshoot a Tunnel
|
|
8
12
|
href: ../articles/tunnel-troubleshooting.mdx
|
|
9
13
|
---
|
|
@@ -30,6 +30,8 @@ The following global options are available for all commands:
|
|
|
30
30
|
|
|
31
31
|
## Additional resources
|
|
32
32
|
|
|
33
|
-
- [Secure
|
|
34
|
-
- [
|
|
35
|
-
- [Tunnel
|
|
33
|
+
- [Secure Tunnel](../articles/secure-tunnel.mdx)
|
|
34
|
+
- [Set up a Tunnel](../articles/tunnel-setup.mdx)
|
|
35
|
+
- [Connect to Tunnel Services](../articles/tunnel-services.mdx)
|
|
36
|
+
- [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
|
|
37
|
+
- [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
additional-resources:
|
|
3
|
-
- name: Secure
|
|
3
|
+
- name: Secure Tunnel
|
|
4
4
|
href: ../articles/secure-tunnel.mdx
|
|
5
|
-
- name:
|
|
5
|
+
- name: Set up a Tunnel
|
|
6
6
|
href: ../articles/tunnel-setup.mdx
|
|
7
|
-
- name: Tunnel
|
|
7
|
+
- name: Connect to Tunnel Services
|
|
8
|
+
href: ../articles/tunnel-services.mdx
|
|
9
|
+
- name: Advanced Tunnel Configuration
|
|
10
|
+
href: ../articles/tunnel-advanced.mdx
|
|
11
|
+
- name: Troubleshoot a Tunnel
|
|
8
12
|
href: ../articles/tunnel-troubleshooting.mdx
|
|
9
13
|
---
|
|
@@ -29,12 +29,6 @@ sidebar_label: tunnel describe
|
|
|
29
29
|
usage="$0 tunnel describe --tunnel-id <id> [options]"
|
|
30
30
|
>
|
|
31
31
|
|
|
32
|
-
**Additional Resources**
|
|
33
|
-
|
|
34
|
-
- [Secure Tunnels](../articles/secure-tunnel.mdx)
|
|
35
|
-
- [Tunnel Setup & Configuration](../articles/tunnel-setup.mdx)
|
|
36
|
-
- [Tunnel Troubleshooting](../articles/tunnel-troubleshooting.mdx)
|
|
37
|
-
|
|
38
32
|
</CliCommand>
|
|
39
33
|
|
|
40
34
|
## Global options
|
|
@@ -43,3 +37,11 @@ The following global options are available for all commands:
|
|
|
43
37
|
|
|
44
38
|
- [`--help`](./global-options.mdx#help)
|
|
45
39
|
- [`--api-key`](./global-options.mdx#api-key)
|
|
40
|
+
|
|
41
|
+
## Additional resources
|
|
42
|
+
|
|
43
|
+
- [Secure Tunnel](../articles/secure-tunnel.mdx)
|
|
44
|
+
- [Set up a Tunnel](../articles/tunnel-setup.mdx)
|
|
45
|
+
- [Connect to Tunnel Services](../articles/tunnel-services.mdx)
|
|
46
|
+
- [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
|
|
47
|
+
- [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
-
|
|
4
|
-
|
|
5
|
-
-
|
|
1
|
+
---
|
|
2
|
+
additional-resources:
|
|
3
|
+
- name: Secure Tunnel
|
|
4
|
+
href: ../articles/secure-tunnel.mdx
|
|
5
|
+
- name: Set up a Tunnel
|
|
6
|
+
href: ../articles/tunnel-setup.mdx
|
|
7
|
+
- name: Connect to Tunnel Services
|
|
8
|
+
href: ../articles/tunnel-services.mdx
|
|
9
|
+
- name: Advanced Tunnel Configuration
|
|
10
|
+
href: ../articles/tunnel-advanced.mdx
|
|
11
|
+
- name: Troubleshoot a Tunnel
|
|
12
|
+
href: ../articles/tunnel-troubleshooting.mdx
|
|
13
|
+
---
|
package/docs/cli/tunnel-list.mdx
CHANGED
|
@@ -30,6 +30,8 @@ The following global options are available for all commands:
|
|
|
30
30
|
|
|
31
31
|
## Additional resources
|
|
32
32
|
|
|
33
|
-
- [Secure
|
|
34
|
-
- [
|
|
35
|
-
- [Tunnel
|
|
33
|
+
- [Secure Tunnel](../articles/secure-tunnel.mdx)
|
|
34
|
+
- [Set up a Tunnel](../articles/tunnel-setup.mdx)
|
|
35
|
+
- [Connect to Tunnel Services](../articles/tunnel-services.mdx)
|
|
36
|
+
- [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
|
|
37
|
+
- [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
additional-resources:
|
|
3
|
-
- name: Secure
|
|
3
|
+
- name: Secure Tunnel
|
|
4
4
|
href: ../articles/secure-tunnel.mdx
|
|
5
|
-
- name:
|
|
5
|
+
- name: Set up a Tunnel
|
|
6
6
|
href: ../articles/tunnel-setup.mdx
|
|
7
|
-
- name: Tunnel
|
|
7
|
+
- name: Connect to Tunnel Services
|
|
8
|
+
href: ../articles/tunnel-services.mdx
|
|
9
|
+
- name: Advanced Tunnel Configuration
|
|
10
|
+
href: ../articles/tunnel-advanced.mdx
|
|
11
|
+
- name: Troubleshoot a Tunnel
|
|
8
12
|
href: ../articles/tunnel-troubleshooting.mdx
|
|
9
13
|
---
|
|
@@ -37,3 +37,11 @@ The following global options are available for all commands:
|
|
|
37
37
|
|
|
38
38
|
- [`--help`](./global-options.mdx#help)
|
|
39
39
|
- [`--api-key`](./global-options.mdx#api-key)
|
|
40
|
+
|
|
41
|
+
## Additional resources
|
|
42
|
+
|
|
43
|
+
- [Secure Tunnel](../articles/secure-tunnel.mdx)
|
|
44
|
+
- [Set up a Tunnel](../articles/tunnel-setup.mdx)
|
|
45
|
+
- [Connect to Tunnel Services](../articles/tunnel-services.mdx)
|
|
46
|
+
- [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
|
|
47
|
+
- [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
additional-resources:
|
|
3
|
+
- name: Secure Tunnel
|
|
4
|
+
href: ../articles/secure-tunnel.mdx
|
|
5
|
+
- name: Set up a Tunnel
|
|
6
|
+
href: ../articles/tunnel-setup.mdx
|
|
7
|
+
- name: Connect to Tunnel Services
|
|
8
|
+
href: ../articles/tunnel-services.mdx
|
|
9
|
+
- name: Advanced Tunnel Configuration
|
|
10
|
+
href: ../articles/tunnel-advanced.mdx
|
|
11
|
+
- name: Troubleshoot a Tunnel
|
|
12
|
+
href: ../articles/tunnel-troubleshooting.mdx
|
|
13
|
+
---
|
|
@@ -40,6 +40,8 @@ The following global options are available for all commands:
|
|
|
40
40
|
|
|
41
41
|
## Additional resources
|
|
42
42
|
|
|
43
|
-
- [Secure
|
|
44
|
-
- [
|
|
45
|
-
- [Tunnel
|
|
43
|
+
- [Secure Tunnel](../articles/secure-tunnel.mdx)
|
|
44
|
+
- [Set up a Tunnel](../articles/tunnel-setup.mdx)
|
|
45
|
+
- [Connect to Tunnel Services](../articles/tunnel-services.mdx)
|
|
46
|
+
- [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
|
|
47
|
+
- [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
additional-resources:
|
|
3
|
-
- name: Secure
|
|
3
|
+
- name: Secure Tunnel
|
|
4
4
|
href: ../articles/secure-tunnel.mdx
|
|
5
|
-
- name:
|
|
5
|
+
- name: Set up a Tunnel
|
|
6
6
|
href: ../articles/tunnel-setup.mdx
|
|
7
|
-
- name: Tunnel
|
|
7
|
+
- name: Connect to Tunnel Services
|
|
8
|
+
href: ../articles/tunnel-services.mdx
|
|
9
|
+
- name: Advanced Tunnel Configuration
|
|
10
|
+
href: ../articles/tunnel-advanced.mdx
|
|
11
|
+
- name: Troubleshoot a Tunnel
|
|
8
12
|
href: ../articles/tunnel-troubleshooting.mdx
|
|
9
13
|
---
|
|
@@ -46,3 +46,11 @@ The following global options are available for all commands:
|
|
|
46
46
|
|
|
47
47
|
- [`--help`](./global-options.mdx#help)
|
|
48
48
|
- [`--api-key`](./global-options.mdx#api-key)
|
|
49
|
+
|
|
50
|
+
## Additional resources
|
|
51
|
+
|
|
52
|
+
- [Secure Tunnel](../articles/secure-tunnel.mdx)
|
|
53
|
+
- [Set up a Tunnel](../articles/tunnel-setup.mdx)
|
|
54
|
+
- [Connect to Tunnel Services](../articles/tunnel-services.mdx)
|
|
55
|
+
- [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
|
|
56
|
+
- [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
additional-resources:
|
|
3
|
+
- name: Secure Tunnel
|
|
4
|
+
href: ../articles/secure-tunnel.mdx
|
|
5
|
+
- name: Set up a Tunnel
|
|
6
|
+
href: ../articles/tunnel-setup.mdx
|
|
7
|
+
- name: Connect to Tunnel Services
|
|
8
|
+
href: ../articles/tunnel-services.mdx
|
|
9
|
+
- name: Advanced Tunnel Configuration
|
|
10
|
+
href: ../articles/tunnel-advanced.mdx
|
|
11
|
+
- name: Troubleshoot a Tunnel
|
|
12
|
+
href: ../articles/tunnel-troubleshooting.mdx
|
|
13
|
+
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zuplo",
|
|
3
|
-
"version": "7.0
|
|
3
|
+
"version": "7.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The programmable API Gateway",
|
|
6
6
|
"author": "Zuplo, Inc.",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"zuplo": "zuplo.js"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@zuplo/cli": "7.0
|
|
23
|
-
"@zuplo/core": "7.0
|
|
24
|
-
"@zuplo/runtime": "7.0
|
|
25
|
-
"@zuplo/test": "7.0
|
|
22
|
+
"@zuplo/cli": "7.1.0",
|
|
23
|
+
"@zuplo/core": "7.1.0",
|
|
24
|
+
"@zuplo/runtime": "7.1.0",
|
|
25
|
+
"@zuplo/test": "7.1.0"
|
|
26
26
|
}
|
|
27
27
|
}
|