Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Azure Container Instances guidance #20

Merged
merged 31 commits into from
Dec 5, 2023
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
9259b57
Update Dockerfile & draft doc update
jonathanalgar Oct 5, 2023
2319f96
Make FAQ
jonathanalgar Oct 5, 2023
83f8d13
tweaks
jonathanalgar Oct 6, 2023
9ff57e9
add more detail
jonathanalgar Oct 6, 2023
992a0b8
revision
jonathanalgar Oct 6, 2023
7f0d07d
Reverse Dockerfile update
jonathanalgar Oct 9, 2023
2993d67
Reverse Dockerfile update
jonathanalgar Oct 9, 2023
2138d30
Added info on how to run with a command line.
joaomvalentim Oct 17, 2023
d7e7ce2
Update README.md
jonathanalgar Oct 20, 2023
20d86fb
remove ACI section
jonathanalgar Dec 5, 2023
b47f1b0
fix documentation in entry point
bmartins-unit Nov 29, 2023
aab19b1
Add ACI guidance back to seperate FAQ.md
jonathanalgar Dec 5, 2023
743f94f
fix format
jonathanalgar Dec 5, 2023
d2df891
Update Dockerfile & draft doc update
jonathanalgar Oct 5, 2023
af4f690
Make FAQ
jonathanalgar Oct 5, 2023
bf36764
tweaks
jonathanalgar Oct 6, 2023
f384fa7
add more detail
jonathanalgar Oct 6, 2023
d35ea7f
revision
jonathanalgar Oct 6, 2023
e9b59a0
Reverse Dockerfile update
jonathanalgar Oct 9, 2023
760cad1
Reverse Dockerfile update
jonathanalgar Oct 9, 2023
9d07d06
Added info on how to run with a command line.
joaomvalentim Oct 17, 2023
3a5f285
Update README.md
jonathanalgar Oct 20, 2023
a845651
remove ACI section
jonathanalgar Dec 5, 2023
82ad02d
fix documentation in entry point
bmartins-unit Nov 29, 2023
b425954
Add ACI guidance back to seperate FAQ.md
jonathanalgar Dec 5, 2023
c5521d3
fix format
jonathanalgar Dec 5, 2023
4c7aef9
Merge branch 'update-azure-aci-guidance' of https://github.com/OutSys…
jonathanalgar Dec 5, 2023
3421a9f
fix Dockerfile
jonathanalgar Dec 5, 2023
97a370f
Fix Dockerfile
jonathanalgar Dec 5, 2023
1021c47
Add whitespace so no diff
jonathanalgar Dec 5, 2023
4939eb8
fix Dockerfile
jonathanalgar Dec 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Make FAQ
  • Loading branch information
jonathanalgar committed Dec 5, 2023
commit 2319f9620bc7a9e7ccbb936fe21070e6d359d846
116 changes: 64 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ OutSystems Cloud Connector
1. [Usage](#usage)
* [Logging](#logging)
1. [Detailed options](#detailed-options)
1. [FAQs](#faqs)
1. [License](#license)

## 1. <a name="overview"></a> Overview <small><sup>[Top ▲](#table-of-contents)</sup></small>
Expand Down Expand Up @@ -103,16 +104,7 @@ 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`.

> :bulb: If you want to run `outsystemscc` on Azure Container Instances, the command to create a new container with the [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) for this example would be:
>
> ```bash
> az container create \
> -g [ResourceGroupName] \
> --name [ContainerName] \
> --image ghcr.io/outsystems/outsystemscc \
> --command-line 'outsystemscc --header "token: N2YwMDIxZTEtNGUzNS1jNzgzLTRkYjAtYjE2YzRkZGVmNjcy" https://customername.outsystems.app/sq_f5696918-3a8c-4da8-8079-ef768d5479fd R:8081:192.168.0.3:8393'
> ```
> Make sure the Resource Group has outbound access to the internet and network access to the endpoint(s). This may involve configuring your Virtual Network (VNet), Subnets, and Network Security Groups (NSGs) to allow the necessary traffic. You can use tools like Azure Network Watcher to verify connectivity.
> :bulb: If you want to run `outsystemscc` on Azure Container Instances, [see the FAQs](#how-do-i-run-outsystemscc-on-azure-container-instances).

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:

Expand Down Expand Up @@ -152,64 +144,84 @@ If your organization uses a centralized log management product, see its document

Keep remaining options with the default unless your network topology requires you to modify them.

```bash
Usage: outsystemscc [options] <server> <remote> [remote] [remote] ...
Usage: outsystemscc [options] <server> <remote> [remote] [remote] ...

<server> is the URL to the server. Use the Address displayed on ODC Portal.
<server> is the URL to the server. Use the Address displayed on ODC Portal.

<remote>s are remote connections tunneled through the server, each of
which come in the form:
<remote>s are remote connections tunneled through the server, each of
which come in the form:

R:<local-port>:<remote-host>:<remote-port>
R:<local-port>:<remote-host>:<remote-port>

which does reverse port forwarding, sharing <remote-host>:<remote-port>
from the client to the server's <local-port>.
which does reverse port forwarding, sharing <remote-host>:<remote-port>
from the client to the server's <local-port>.

example remotes
example remotes

R:8081:192.168.0.3:8393
R:8082:192.168.0.4:587
R:8081:192.168.0.3:8393
R:8082:192.168.0.4:587

See https://github.com/OutSystems/cloud-connector for examples in context.

Options:
See https://github.com/OutSystems/cloud-connector for examples in context.
Options:

--keepalive, An optional keepalive interval. Since the underlying
transport is HTTP, in many instances we'll be traversing through
proxies, often these proxies will close idle connections. You must
specify a time with a unit, for example '5s' or '2m'. Defaults
to '25s' (set to 0s to disable).
--keepalive, An optional keepalive interval. Since the underlying
transport is HTTP, in many instances we'll be traversing through
proxies, often these proxies will close idle connections. You must
specify a time with a unit, for example '5s' or '2m'. Defaults
to '25s' (set to 0s to disable).

--max-retry-count, Maximum number of times to retry before exiting.
Defaults to unlimited.
--max-retry-count, Maximum number of times to retry before exiting.
Defaults to unlimited.

--max-retry-interval, Maximum wait time before retrying after a
disconnection. Defaults to 5 minutes.
--max-retry-interval, Maximum wait time before retrying after a
disconnection. Defaults to 5 minutes.

--proxy, An optional HTTP CONNECT or SOCKS5 proxy which will be
used to reach the server. Authentication can be specified
inside the URL.
For example, http://admin:[email protected]:8081
or: socks://admin:[email protected]:1080
--proxy, An optional HTTP CONNECT or SOCKS5 proxy which will be
used to reach the server. Authentication can be specified
inside the URL.
For example, http://admin:[email protected]:8081
or: socks://admin:[email protected]:1080

--header, Set a custom header in the form "HeaderName: HeaderContent".
Use the Token displayed on ODC Portal in using token as HeaderName.
--hostname, Optionally set the 'Host' header (defaults to the host
found in the server url).
--header, Set a custom header in the form "HeaderName: HeaderContent".
Use the Token displayed on ODC Portal in using token as HeaderName.
--hostname, Optionally set the 'Host' header (defaults to the host
found in the server url).

--pid Generate pid file in current working directory
--pid Generate pid file in current working directory

-v, Enable verbose logging
-v, Enable verbose logging

--help, This help text
--help, This help text

Signals:
The outsystemscc process is listening for:
a SIGUSR2 to print process stats, and
a SIGHUP to short-circuit the client reconnect timer
```
Signals:
The outsystemscc process is listening for:
a SIGUSR2 to print process stats, and
a SIGHUP to short-circuit the client reconnect timer

## 5. <a name="license"></a> License <small><sup>[Top ▲](#table-of-contents)</sup></small>
## 5. <a name="faqs"></a> FAQs <small><sup>[Top ▲](#table-of-contents)</sup></small>

### How do I run `outsystemscc` on Azure Container Instances?
jonathanalgar marked this conversation as resolved.
Show resolved Hide resolved

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](#usage) is:

az container create \
-g [ResourceGroupName] \
--name [ContainerName] \
--image ghcr.io/outsystems/outsystemscc \
--command-line 'outsystemscc --header "token: N2YwMDIxZTEtNGUzNS1jNzgzLTRkYjAtYjE2YzRkZGVmNjcy" https://customername.outsystems.app/sq_f5696918-3a8c-4da8-8079-ef768d5479fd R:8081:192.168.0.3:8393'

#### Network configuration

* **Outbound Access to Internet:** Ensure that the Azure Resource Group in which you are deploying outsystemscc has outbound access to the Internet. 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. It's advisable to work with your network administrator to verify the outbound connectivity.

* **Access to Endpoints:** Additionally, ensure that the network configuration allows traffic from the Azure Container Instance to the internal endpoints 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.

* **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.

* **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.

## 6. <a name="license"></a> License <small><sup>[Top ▲](#table-of-contents)</sup></small>

[MIT](https://github.com/outsystems/cloud-connector/blob/master/LICENSE) © OutSystems