You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Update Dockerfile & draft doc update
* Make FAQ
* tweaks
* add more detail
* revision
* Reverse Dockerfile update
* Reverse Dockerfile update
* Added info on how to run with a command line.
* Update README.md
* remove ACI section
* fix documentation in entry point
* Add ACI guidance back to seperate FAQ.md
* fix format
* Update Dockerfile & draft doc update
* Make FAQ
* tweaks
* add more detail
* revision
* Reverse Dockerfile update
* Reverse Dockerfile update
* Added info on how to run with a command line.
* Update README.md
* remove ACI section
* fix documentation in entry point
* Add ACI guidance back to seperate FAQ.md
* fix format
* fix Dockerfile
* Fix Dockerfile
* Add whitespace so no diff
* fix Dockerfile
---------
Co-authored-by: João Valentim <[email protected]>
Co-authored-by: Bruno Martins (bjm) <[email protected]>
### How do I run `outsystemscc` on Azure Container Instances?
14
+
15
+
The command to create a new container with the [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) for the [Usage section example](README.md#usage) is:
*`-g [ResourceGroupName]`: Specifies the name of the resource group where the container instance will be created.
26
+
*`--name [ContainerName]`: Specifies the name of the container instance.
27
+
*`--image ghcr.io/outsystems/outsystemscc`: Specifies the Docker image to use for the container instance.
28
+
*`--command-line '...'`: Specifies the command line to run in the container. This command starts the `outsystemscc` service with the specified header token, server URL, and remote connection details.
29
+
30
+
Ensure to replace `[ResourceGroupName]`, `[ContainerName]`, and the values in the `--command-line` parameter with your actual values.
31
+
32
+
#### Network configuration
33
+
34
+
***Outbound Access to Internet:** Ensure that the Azure Resource Group in which you are deploying `outsystemscc` has outbound access to the Internet with no greater restriction than specified in [Firewall setup](#firewall-setup). This is crucial for `outsystemscc` to communicate with your ODC organization. You may need to configure your Network Security Groups (NSGs), Azure Firewall, or whichever network security solution you have in place to allow outbound connections.
35
+
36
+
***Access to Endpoints:** Additionally, ensure that the network configuration allows traffic from the Azure Container Instance to the internal endpoint(s) you wish to connect to. This may involve configuring your Virtual Network (VNet), Subnets, and Network Security Groups (NSGs) to allow the necessary traffic. If there are firewalls or other network devices blocking traffic, you'll need to configure them accordingly.
37
+
38
+
***Testing Connectivity:** It's a good practice to test the network connectivity before deploying `outsystemscc`. You can use tools like [Azure Network Watcher](https://docs.microsoft.com/en-us/azure/network-watcher/network-watcher-monitoring-overview) or even basic network troubleshooting tools like ping and traceroute to verify connectivity.
39
+
40
+
***Monitoring and Logging:** Implement monitoring and logging to get insights into the network traffic and to troubleshoot any connectivity issues. Azure provides various monitoring and logging tools like [Azure Monitor](https://docs.microsoft.com/en-us/azure/azure-monitor/overview) and [Azure Log Analytics](https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/log-analytics-tutorial) which can be invaluable for diagnosing network-related issues.
Copy file name to clipboardExpand all lines: README.md
+56-52Lines changed: 56 additions & 52 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ Using the OutSystems Cloud Connector (`outsystemscc`) you can connect the apps r
26
26
27
27
You run `outsystemscc` on a system in your private network—an on-premise network, a private cloud, or the public cloud—to establish a secure tunnel between your endpoints and the Private Gateway. Your apps can then access the endpoints through the Private Gateway, the server component you activate for each stage of your ODC organization [using the ODC Portal](https://www.outsystems.com/goto/secure-gateways). Common use cases include accessing data through a private REST API service and making requests to internal services (SMTP, SMB, NFS,..)
28
28
29
-
`outsystemscc` creates a fast TCP/UDP tunnel, with transport over HTTP via WebSockets, secured via SSH using ECDSA with SHA256 keys. The connection is established to either the built-in domain for the stage (for example `<customername>.outsystems.app`) or a custom domain configured for the stage (for example `example.com`). In both cases, the connection is over TLS and always encrypted with a valid X.509 certificate.
29
+
`outsystemscc` creates a fast TCP/UDP tunnel, with transport over HTTP via WebSockets, secured via SSH using ECDSA with SHA256 keys. The connection is established to either the built-in domain for the stage (for example `<organization>.outsystems.app`) or a custom domain configured for the stage (for example `example.com`). In both cases, the connection is over TLS and always encrypted with a valid X.509 certificate.
30
30
31
31
The following diagram is an example of a ODC customer setup for a Private Gateway active on two stages.
32
32
@@ -65,24 +65,28 @@ You may want to configure the binary to run as a service so it can start on syst
65
65
66
66
### <aname="docker"></a> Docker
67
67
68
-
Run the Docker image directly from the OutSystems GitHub Container registry:
68
+
Run the Docker image directly from the OutSystems GitHub container registry:
69
69
70
-
docker run --rm -it ghcr.io/outsystems/outsystemscc:latest --help
70
+
docker run --rm -it ghcr.io/outsystems/outsystemscc --help
71
+
72
+
If you're running the container on a runtime where you need to specify the command line or override the entrypoint (for example on Azure Container Instances or AWS Fargate):
73
+
74
+
docker run --rm -it --entrypoint /app/outsystemscc ghcr.io/outsystems/outsystemscc --help
71
75
72
76
### <aname="firewall-setup"></a> Firewall setup
73
77
74
78
`outsystemscc` requires only outbound access to the internet in the private network(s) in which it's running.
75
79
76
-
You can restrict outbound internet connectivity (via a NAT Gateway, for example) by a firewall. For a Layer 7 firewall, you should allow outbound connections to the built-in domain (for example `<customername>.outsystems.app`) and any custom domains configured for the stage (for example `example.com`). For a Layer 4 firewall, you must open firewall rules to all [CloudFront IP ranges](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html) for port 443.
80
+
You can restrict outbound internet connectivity (via a NAT Gateway, for example) by a firewall. For a Layer 7 firewall, you should allow outbound connections to the built-in domain (for example `<organization>.outsystems.app`) and any custom domains configured for the stage (for example `example.com`). For a Layer 4 firewall, you must open firewall rules to all [CloudFront IP ranges](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html) for port 443.
77
81
78
82
If the network requires outbound traffic to route through a proxy, you specify that using the `--proxy` option.
79
83
80
-
> :information_source: There may be a dedicated person or team at your organization responsible for administering network firewalls. If so, you may want to contact them for help with the process.
84
+
> :bulb: There may be a dedicated person or team at your organization responsible for administering network firewalls. If so, you may want to contact them for help with the process.
The examples below use the binary command, `outsystemscc`. If you are using Docker, replace the command with `docker run --rm -it ghcr.io/outsystems/outsystemscc:latest`.
89
+
The examples below use the binary command, `outsystemscc`. If you are using Docker, replace the command with `docker run --rm -it ghcr.io/outsystems/outsystemscc:latest`.
86
90
87
91
After using `outsystemscc` to connect one or more endpoints, you have a list of connected endpoint(s) of the form `secure-gateway:<port>`. You or a member of your team can use these addresses directly in app development in ODC Studio or in developing external libraries using custom code.
88
92
@@ -98,16 +102,18 @@ Use the **Token** and **Address** to form the `outsystemscc` command to run. For
In this example, you create a tunnel to the endpoint `192.168.0.3:8393`, a REST API service running on IP address `192.168.0.3`. The endpoint is available to consume by apps running in the connected stage at `secure-gateway:8081`.
105
109
110
+
> :bulb: If you want to run `outsystemscc` on Azure Container Instances, [see the FAQs](FAQ.md#how-do-i-run-outsystemscc-on-azure-container-instances) for specific guidance.
111
+
106
112
You can create a tunnel to connect multiple endpoints to the same Private Gateway. To do this, run multiple instances of `outsystemscc` or pass in multiple remotes (`R:<local-port>:<remote-host>:<remote-port>`) to the same instance. In the latter case, for example:
In the above example you create a tunnel to connect two endpoints. One, as before, `192.168.0.3:8393`, a REST API service running on IP address `192.168.0.3`. The endpoint is available for use by apps running in the connected stage at `secure-gateway:8081`. Second, `192.168.0.4:587`, an SMTP server running on `192.168.0.4`, another IP in the internal address range. The endpoint is available for use by apps running in the connected stage at `secure-gateway:8082`.
@@ -123,14 +129,14 @@ You can also use the connected endpoint(s) in custom code development using the
123
129
By default, `outsystemscc` logs timestamped information about the connection status and
124
130
latency to stdout. For example:
125
131
126
-
2022/11/10 12:14:42 client: Connecting to ws://customername.outsystems.app/sq_f5696918-3a8c-4da8-8079-ef768d5479fd:80
132
+
2022/11/10 12:14:42 client: Connecting to ws://organization.outsystems.app/sg_6c23a5b4-b718-4634-a503-f22aed17d4e7:80
0 commit comments