Skip to content

Commit 61a93f3

Browse files
authored
Merge pull request #302098 from tfitzmac/0701edit3
copy edit
2 parents 404c299 + 7d38706 commit 61a93f3

10 files changed

+200
-223
lines changed

articles/cyclecloud/how-to/running-behind-proxy.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,32 @@
22
title: Using a Web Proxy
33
description: Configure Azure CycleCloud to use a proxy for HTTP/HTTPS web traffic, which is useful to monitor traffic or when direct internet access isn't allowed.
44
author: dpwatrous
5-
ms.date: 2/18/2020
5+
ms.date: 07/01/2025
66
ms.author: dawatrou
77
---
88

99
# Configuring CycleCloud to Use an HTTP(s) Proxy
1010

11-
Azure CycleCloud can be configured to use a proxy for all internet-bound HTTP and/or HTTPS traffic. This is generally useful when direct internet access is not allowed, or for traffic monitoring purposes.
11+
You can configure Azure CycleCloud to use a proxy for all internet-bound HTTP and/or HTTPS traffic. This configuration is generally useful when direct internet access isn't allowed or when you want to monitor traffic.
1212

1313
## Proxy Setup
1414

15-
To enable proxies, go into the CycleCloud GUI and navigate to the **Settings** tab from the left frame, then double click on the **HTTP(s) Proxies** row. In the configuration dialog that pops up, verify that **Enabled** is checked and enter the proxy details in the form.
15+
To enable proxies, go to the CycleCloud GUI and navigate to the **Settings** tab in the left frame. Then, double-click the **HTTP(s) Proxies** row. In the configuration dialog that appears, verify that **Enabled** is checked and enter the proxy details in the form.
1616

1717
![Proxy Settings window](~/articles/cyclecloud/images/proxy-settings.png)
1818

19-
Changes to the proxy settings will not take effect until after a restart. To restart CycleCloud, run the following command:
19+
Changes to the proxy settings don't take effect until after a restart. To restart CycleCloud, run the following command:
2020

2121
```bash
2222
/opt/cycle_server/cycle_server restart --wait
2323
```
2424

2525
## Add storage endpoint for Blob access
2626

27-
CycleCloud requires access to a Blob Storage container in your subscription in order to cache installation files for nodes. When operating behind a proxy or on a locked down network, you should configure a [Virtual Network Service Endpoint](/azure/virtual-network/virtual-network-service-endpoints-overview) or a [Private Endpoint](/azure/storage/common/storage-private-endpoints) to the storage service. This will route requests to the storage container through the Azure backbone network instead of through the public management URLs.
27+
CycleCloud needs access to a Blob Storage container in your subscription to cache installation files for nodes. When operating behind a proxy or on a locked down network, configure a [Virtual Network Service Endpoint](/azure/virtual-network/virtual-network-service-endpoints-overview) or a [Private Endpoint](/azure/storage/common/storage-private-endpoints) to the storage service. This configuration routes requests to the storage container through the Azure backbone network instead of through the public management URLs.
2828

2929
> [!TIP]
30-
> When combining a Service Endpoint for Azure Storage access with an HTTPS Proxy for outbound Azure API traffic, CycleCloud itself can be configured to avoid the Proxy and send Storage requests directly via the Service Endpoint.
30+
> When you combine a Service Endpoint for Azure Storage access with an HTTPS Proxy for outbound Azure API traffic, you can configure CycleCloud to avoid the Proxy and send Storage requests directly via the Service Endpoint.
3131
>
3232
> To disable the proxy for Storage Account access, add:
3333
> `-Dhttp.nonProxyHosts="*.core.windows.net"`
@@ -36,16 +36,15 @@ CycleCloud requires access to a Blob Storage container in your subscription in o
3636
3737
## Export HTTPS_PROXY before running the CycleCloud CLI installer
3838

39-
The [CycleCloud CLI installer](~/articles/cyclecloud/how-to/install-cyclecloud-cli.md) requires outbound access to install packages via `pip`. Prior to running the install script, be sure to set the **HTTPS_PROXY** environment variable to point to your
40-
proxy server and port:
39+
The [CycleCloud CLI installer](~/articles/cyclecloud/how-to/install-cyclecloud-cli.md) needs outbound access to install packages through `pip`. Before running the install script, set the **HTTPS_PROXY** environment variable to point to your proxy server and port:
4140

4241
```bash
4342
export HTTPS_PROXY=myserver:8080
4443
```
4544

4645
## Exporting proxy settings on nodes
4746

48-
If the nodes started by CycleCloud also need to have traffic routed through a proxy server, we suggest the use of [cloud-init](~/articles/cyclecloud/how-to/cloud-init.md) to help configure your proxy settings as needed. For example:
47+
If the nodes that CycleCloud starts also need to route traffic through a proxy server, we suggest using [cloud-init](~/articles/cyclecloud/how-to/cloud-init.md) to help configure your proxy settings. For example:
4948

5049
```ini
5150
[node scheduler]

articles/cyclecloud/how-to/running-in-locked-down-network.md

Lines changed: 44 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
title: Running in Locked Down Networks
33
description: Learn how to install and run Azure CycleCloud in a locked down networks. Details on internal communication between cluster nodes and CycleCloud.
44
author: anhoward
5-
ms.date: 2/26/2020
5+
ms.date: 07/01/2025
66
ms.author: anhoward
77
---
88

99
# Operating in a locked down network
1010

11-
The CycleCloud application and cluster nodes can operate in environments with limited internet access, though there are a minimal number of TCP ports that must remain open.
11+
The CycleCloud application and cluster nodes can operate in environments with limited internet access, though you must keep a minimal number of TCP ports open.
1212

13-
## Installing Azure CycleCloud in a locked down network
13+
## Install Azure CycleCloud in a locked down network
1414

15-
The CycleCloud VM must be able to connect to a number of Azure APIs to orchestrate cluster VMs and to authenticate to Azure Active Directory. Since these APIs use HTTPS, CycleCloud requires outbound HTTPS access to:
15+
The CycleCloud VM needs to connect to several Azure APIs to manage cluster VMs and authenticate to Azure Active Directory. Since these APIs use HTTPS, CycleCloud requires outbound HTTPS access to:
1616

1717
* _management.azure.com_ (Azure ARM Management)
1818
* _login.microsoftonline.com_ (Azure AD)
@@ -22,40 +22,40 @@ The CycleCloud VM must be able to connect to a number of Azure APIs to orchestra
2222
* _dc.services.visualstudio.com_ (Azure Application Insights)
2323
* _ratecard.azure-api.net_ (Azure Price Data)
2424

25-
The management API is hosted regionally, and the public IP address ranges can be found [here](https://www.microsoft.com/en-us/download/details.aspx?id=41653).
25+
The management API is hosted regionally. You can find the public IP address ranges [here](https://www.microsoft.com/en-us/download/details.aspx?id=41653).
2626

27-
The Azure AD login is part of the Microsoft 365 common APIs and IP address ranges for the service can be found [here](/office365/enterprise/urls-and-ip-address-ranges).
27+
The Azure AD authentication is part of the Microsoft 365 common APIs. You can find the IP address ranges for this service [here](/office365/enterprise/urls-and-ip-address-ranges).
2828

29-
The Azure Insights and Log Analytics IP address ranges can be found [here](/azure/azure-monitor/app/ip-addresses).
29+
You can find the IP address ranges for Azure Insights and Log Analytics [here](/azure/azure-monitor/app/ip-addresses).
3030

31-
Azure CycleCloud must be able to access Azure Storage accounts. The recommended way to provide private access to this service and any other supported Azure service is through [Virtual Network Service Endpoints](/azure/virtual-network/virtual-network-service-endpoints-overview).
31+
Azure CycleCloud must access Azure Storage accounts. To provide private access to this service and any other supported Azure service, we recommend using [Virtual Network Service Endpoints](/azure/virtual-network/virtual-network-service-endpoints-overview).
3232

33-
If using Network Security Groups or the Azure Firewall to limit outbound access to the required domains, then it is possible to configure Azure Cyclecloud to route all requests through an HTTPS proxy. See: [Using a Web Proxy](./running-behind-proxy.md)
33+
If you use Network Security Groups or the Azure Firewall to limit outbound access to the required domains, you can configure Azure CycleCloud to route all requests through an HTTPS proxy. For more information, see [Using a Web Proxy](./running-behind-proxy.md).
3434

3535
### Configuring an Azure Network Security Group for the CycleCloud VM
3636

37-
One way to limit outbound internet access from the CycleCloud VM without configuring the Azure Firewall or an HTTPS proxy is to configure a strict Azure Network Security Group for the CycleCloud VM's subnet. The simplest way to do that is to use [Service Tags](/azure/virtual-network/service-tags-overview) in the subnet or VM level [Network Security Group](/azure/virtual-network/security-overview) to permit the required outbound Azure access.
37+
You can limit outbound internet access from the CycleCloud VM by configuring a strict Azure Network Security Group for the CycleCloud VM's subnet. This approach doesn't require configuring the Azure Firewall or an HTTPS proxy. The simplest way to do that is to use [Service Tags](/azure/virtual-network/service-tags-overview) in the subnet or VM level [Network Security Group](/azure/virtual-network/security-overview) to permit the required outbound Azure access.
3838

3939
1. Configure a **Storage Service Endpoint** for the Subnet to allow access from CycleCloud to Azure Storage
4040

41-
2. Add the following NSG Outbound rule to *Deny* outbound access by default using the "**Internet**" destination Service Tag:
41+
1. Add the following NSG Outbound rule to *Deny* outbound access by default using the "**Internet**" destination Service Tag:
4242

43-
| Priority | Name | Port | Protocol | Source | Destination | Action |
44-
| ----------- | ----------------- | ---------- | -------- | -------- | -------------- | ------ |
45-
| 4000 | BlockOutbound | Any | Any | Any | Internet | Deny |
43+
| Priority | Name | Port | Protocol | Source | Destination | Action |
44+
| ----------- | ----------------- | ---------- | -------- | -------- | -------------- | ------ |
45+
| 4000 | BlockOutbound | Any | Any | Any | Internet | Deny |
4646

47-
3. Add the following NSG Outbound rules to *Allow* outbound access to the required Azure services by destination Service Tag:
47+
1. Add the following NSG Outbound rules to *Allow* outbound access to the required Azure services by destination Service Tag:
4848

49-
| Priority | Name | Port | Protocol | Source | Destination | Action |
50-
| ----------- | -------------------- | ---------- | -------- | -------- | -------------------- | ------ |
51-
| 100 | AllowAzureStorage | 443 | TCP | Any | Storage | Allow |
52-
| 101 | AllowActiveDirectory | 443 | TCP | Any | AzureActiveDirectory | Allow |
53-
| 102 | AllowAzureMonitor | 443 | TCP | Any | AzureMonitor | Allow |
54-
| 103 | AllowAzureRM | 443 | TCP | Any | AzureResourceManager | Allow |
49+
| Priority | Name | Port | Protocol | Source | Destination | Action |
50+
| ----------- | -------------------- | ---------- | -------- | -------- | -------------------- | ------ |
51+
| 100 | AllowAzureStorage | 443 | TCP | Any | Storage | Allow |
52+
| 101 | AllowActiveDirectory | 443 | TCP | Any | AzureActiveDirectory | Allow |
53+
| 102 | AllowAzureMonitor | 443 | TCP | Any | AzureMonitor | Allow |
54+
| 103 | AllowAzureRM | 443 | TCP | Any | AzureResourceManager | Allow |
5555

5656
## Internal communications between cluster nodes and CycleCloud
5757

58-
These ports need to be open to allow for communication between the cluster nodes and CycleCloud server:
58+
Open these ports to allow communication between the cluster nodes and CycleCloud server:
5959

6060
| Name | Source | Destination | Service | Protocol | Port Range |
6161
| ----------- | ----------------- | -------------- | ------- | -------- | ---------- |
@@ -65,45 +65,34 @@ These ports need to be open to allow for communication between the cluster nodes
6565
## Launching Azure CycleCloud clusters in a locked down network
6666

6767
> [!NOTE]
68-
> Running cluster nodes in a subnet without outbound internet access is fully supported today, but it is an advanced topic that often requires either a custom image or customization of the default CycleCloud cluster types and projects or both.
68+
> Azure CycleCloud supports running cluster nodes in a subnet without outbound internet access. However, it's an advanced topic that often requires either a custom image or customization of the default CycleCloud cluster types and projects, or both.
6969
>
70-
> We are actively updating the cluster types and projects to eliminate most or all of that work. But, if you encounter failures with your cluster type or project in your locked down environment, please consider opening a Support request for assistance.
70+
> We're actively updating the cluster types and projects to eliminate most or all of that work. If you encounter failures with your cluster type or project in your locked down environment, consider opening a support request for assistance.
7171
>
7272
7373
Running VMs or Cyclecloud clusters in a virtual network or subnet with outbound internet access generally requires
74-
the following:
74+
the following steps:
7575

76-
1. Azure Cyclecloud must be reachable from the cluster VMs for full functionality. Either:
77-
1. Cluster VMs must be able to connect to Azure Cyclecloud directly via HTTPS and AMQP, or
78-
2. The Cyclecloud ReturnProxy feature must be enabled at cluster creation time and Cyclecloud itself must be able to connect to the ReturnProxy VM via SSH
79-
2. All software packages required by the cluster must either be:
80-
1. Pre-installed in a custom Managed Image for the cluster VMs, or
81-
2. Available in a package repository mirror accessible from the VMs, or
82-
3. Copied to the VM from Azure Storage and installed directly by a Cyclecloud project
83-
3. All Cluster nodes must be able to access Azure Storage accounts. The recommended way
84-
to provide private access to this service and any other supported Azure service is to enable a [Virtual Network Service Endpoint](/azure/virtual-network/virtual-network-service-endpoints-overview) for Azure Storage.
76+
1. Make Azure Cyclecloud reachable from the cluster VMs for full functionality. Either:
77+
1. Cluster VMs connect to Azure Cyclecloud directly via HTTPS and AMQP, or
78+
1. Enable the Cyclecloud ReturnProxy feature when you create the cluster. Cyclecloud must be able to connect to the ReturnProxy VM through SSH.
79+
1. Make sure the cluster VMs have all the required software packages by:
80+
1. Preinstalling them in a custom Managed Image,
81+
1. Providing a package repository mirror that the VMs can access, or
82+
1. Copying them to the VM from Azure Storage and installing them directly through a Cyclecloud project.
83+
1. Make sure all cluster nodes can access Azure Storage accounts. To provide private access to this service and any other supported Azure service, enable a [Virtual Network Service Endpoint](/azure/virtual-network/virtual-network-service-endpoints-overview) for Azure Storage.
8584

8685

87-
## Project Updates from GitHub
86+
## Project updates from GitHub
8887

89-
Cyclecloud will download cluster projects from GitHub during the "Staging" orchestration
90-
phase. This download will occur after initial installation, after upgrading Cyclecloud, or
91-
when starting a cluster of a certain type for the first time. In a locked down environment, HTTPS
92-
outbound traffic to [github.com](https://www.github.com) may be blocked. In such a case, node
93-
creation during the staging resources phase will fail.
88+
CycleCloud downloads cluster projects from GitHub during the **Staging** orchestration phase. This download happens after initial installation, after upgrading CycleCloud, or when you start a cluster of a certain type for the first time. In a locked down environment, HTTPS outbound traffic to [github.com](https://www.github.com) might be blocked. If this traffic is blocked, node creation during the staging resources phase fails.
9489

95-
If access to GitHub can be opened temporarily during the creation of the first node
96-
then CycleCloud will prepare the local files for all subsequent nodes. If temporary
97-
access is not possible then the necessary files can be downloaded
98-
from another machine and copied to CycleCloud.
90+
If you can temporarily open access to GitHub during the creation of the first node, CycleCloud prepares the local files for all subsequent nodes. If temporary access isn't possible, you can download the necessary files from another machine and copy them to CycleCloud.
9991

100-
First determine which project and
101-
version your cluster will need, e.g. Slurm 3.0.8. It's normally the highest version
102-
number in the database for a given project.
103-
You can determine the latest version either by visiting the github project page or by
104-
querying CycleCloud for the latest version.
92+
First, determine which project and version your cluster needs, such as Slurm 3.0.8. It's usually the highest version number in the database for a given project.
93+
You can find the latest version by visiting the GitHub project page or by querying CycleCloud for the latest version.
10594

106-
To query CycleCloud (note that there will often be multiple versions listed):
95+
To query CycleCloud (note that there are often multiple versions listed):
10796

10897
```shell
10998
/opt/cycle_server/cycle_server execute 'select Name, Version, Url from cloud.project where name == "slurm" order by Version'
@@ -113,14 +102,11 @@ Version = "3.0.8"
113102
Url = "https://github.com/Azure/cyclecloud-slurm/releases/3.0.8"
114103
```
115104

116-
This project version and all dependencies are found in the [release tag]
117-
(https://github.com/Azure/cyclecloud-slurm/releases/tag/3.0.8).
105+
You can find this project version and all dependencies in the [release tag](https://github.com/Azure/cyclecloud-slurm/releases/tag/3.0.8).
118106

119-
You can download all release artifacts manually, but the CycleCloud CLI provides
120-
a helper for this operation.
107+
You can manually download all release artifacts, but the CycleCloud CLI provides a helper for this operation.
121108

122-
First, use the CycleCloud CLI to fetch and prepare the repository from github
123-
(this is the same operation CycleCloud performs during the "Staging Resources" phase):
109+
First, use the CycleCloud CLI to fetch and prepare the repository from GitHub. This operation is the same operation CycleCloud performs during the "Staging Resources" phase:
124110

125111
```bash
126112
RELEASE_URL="https://github.com/Azure/cyclecloud-slurm/releases/3.0.8"
@@ -136,7 +122,7 @@ mv ./build/slurm "./${RELEASE_VERSION}"
136122
tar czf "slurm-${RELEASE_VERSION}.tgz" ./blobs "./${RELEASE_VERSION}"
137123
```
138124

139-
Next, copy the packaged project tarball to the CycleCloud server and extract:
125+
Next, copy the packaged project tarball to the CycleCloud server and extract it:
140126

141127
```bash
142128
#... copy the "slurm-${RELEASE_VERSION}.tgz" file to the Cyclecloud server in /tmp
@@ -147,7 +133,6 @@ tar xzf "/tmp/slurm-${RELEASE_VERSION}.tgz"
147133
chown -R cycle_server:cycle_server /opt/cycle_server/work/staging
148134
```
149135

150-
Once these files have been staged locally Cyclecloud will detect them and
151-
won't try to download them from GitHub.
136+
Once you stage these files locally, CycleCloud detects them and doesn't try to download them from GitHub.
152137

153138

0 commit comments

Comments
 (0)