From ff672bc721eb7306b7bd4ff81d3b52e216c1933e Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Fri, 3 Oct 2025 10:43:46 -0600 Subject: [PATCH 01/16] CMX doc findability improvements --- docs/vendor/testing-how-to.md | 2 +- docs/vendor/testing-ingress.md | 83 +------------ docs/vendor/testing-network-policy.md | 14 +-- docs/vendor/testing-shared-networks.md | 84 +++++++++++++ docs/vendor/testing-vm-create.md | 113 +---------------- docs/vendor/testing-vm-networking.md | 148 +++++++++++++---------- docs/vendor/testing-vm-transfer-files.md | 91 ++++++++++++++ sidebars.js | 35 +++--- 8 files changed, 292 insertions(+), 278 deletions(-) create mode 100644 docs/vendor/testing-shared-networks.md create mode 100644 docs/vendor/testing-vm-transfer-files.md diff --git a/docs/vendor/testing-how-to.md b/docs/vendor/testing-how-to.md index d1f26c2c99..55e1abfb56 100644 --- a/docs/vendor/testing-how-to.md +++ b/docs/vendor/testing-how-to.md @@ -1,6 +1,6 @@ import Prerequisites from "../partials/cmx/_prerequisites.mdx" -# Create Clusters +# Create and Manage Clusters This topic describes how to use Replicated Compatibility Matrix to create and manage ephemeral clusters to test your applications across different Kubernetes distributions and versions. diff --git a/docs/vendor/testing-ingress.md b/docs/vendor/testing-ingress.md index 8317bbaeed..f0a934817b 100644 --- a/docs/vendor/testing-ingress.md +++ b/docs/vendor/testing-ingress.md @@ -1,4 +1,4 @@ -# Cluster Networking +# About Cluster Networking Options This topic describes the networking options for accessing applications deployed on clusters created with Replicated Compatibility Matrix. It also describes how to use and manage Compatibility Matrix tunnels. @@ -32,83 +32,4 @@ Compatibility matrix supports ingress controllers that are running as a `NodePor ### Compatibility Matrix Tunnels All VM-based Compatibility Matrix clusters support tunneling traffic into a `NodePort` service. When this option is used, Replicated is responsible for creating the DNS record and TLS certs. -Replicated will route traffic from `:443` and/or `:80` into the `NodePort` service you defined. For more information about using tunnels, see [Managing Compatibility Matrix Tunnels](#manage-nodes) below. - -The following diagram shows how the traffic is routed into the service using Compatibility Matrix tunnels: - -Compatibility Matrix ingress - -[View a larger version of this image](/images/compatibility-matrix-ingress.png) - -## Managing Compatibility Matrix Tunnels {#manage-nodes} - -Tunnels are viewed, created, and removed using the Compatibility Matrix UI within Vendor Portal, the Replicated CLI, GitHub Actions, or directly with the Vendor API v3. There is no limit to the number of tunnels you can create for a cluster and multiple tunnels can connect to a single service, if desired. - -### Limitations - -Compatibility Matrix tunnels have the following limitations: -* One tunnel can only connect to one service. If you need fanout routing into different services, consider installing the nginx ingress controller as a `NodePort` service and exposing it. -* Tunnels are not supported for cloud distributions (EKS, GKE, AKS). - -### Supported Protocols - -A tunnel can support one or more protocols. -The supported protocols are HTTP, HTTPS, WS and WSS. -GRPC and other protocols are not routed into the cluster. - -### Exposing Ports -Once you have a node port available on the cluster, you can use the Replicated CLI to expose the node port to the public internet. -This can be used multiple times on a single cluster. - -Optionally, you can specify the `--wildcard` flag to expose this port with wildcard DNS and TLS certificate. -This feature adds extra time to provision the port, so it should only be used if necessary. - -```bash -replicated cluster port expose \ - [cluster id] \ - --port [node port] \ - --protocol [protocol] \ - --wildcard -``` - -For example, if you have the nginx ingress controller installed and the node port is 32456: - -```bash -% replicated cluster ls -ID NAME DISTRIBUTION VERSION STATUS -1e616c55 tender_ishizaka k3s 1.29.2 running - -% replicated cluster port expose \ - 1e616c55 \ - --port 32456 \ - --protocol http \ - --protocol https \ - --wildcard -``` - -:::note -You can expose a node port that does not yet exist in the cluster. -This is useful if you have a deterministic node port, but need the DNS name as a value in your Helm chart. -::: - -### Viewing Ports -To view all exposed ports, use the Replicated CLI `port ls` subcommand with the cluster ID: - -```bash -% replicated cluster port ls 1e616c55 -ID CLUSTER PORT PROTOCOL EXPOSED PORT WILDCARD STATUS -d079b2fc 32456 http http://happy-germain.ingress.replicatedcluster.com true ready - -d079b2fc 32456 https https://happy-germain.ingress.replicatedcluster.com true ready -``` - -### Removing Ports -Exposed ports are automatically deleted when a cluster terminates. -If you want to remove a port (and the associated DNS records and TLS certs) prior to cluster termination, run the `port rm` subcommand with the cluster ID: - -```bash -% replicated cluster port rm 1e616c55 --id d079b2fc -``` - -You can remove just one protocol, or all. -Removing all protocols also removes the DNS record and TLS cert. +Replicated will route traffic from `:443` and/or `:80` into the `NodePort` service you defined. For more information about using tunnels, see [Expose Ports Using Tunnels](testing-vm-networking). \ No newline at end of file diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index 7ea4ff2d60..f25903feec 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -1,6 +1,6 @@ -# Set Network Policies (Beta) +# Use Air Gap Networks (Beta) -This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix. +This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix to use an air gap network with no outbound internet connection. ## About Network Policies @@ -26,11 +26,11 @@ The `airgap` network policy is particularly useful for testing air gap installat * Setting network policies is only supported through the Replicated CLI. You cannot make changes to the network policy through the Compatibility Matrix UI in the Vendor Portal. * Network policies are supported only for VMs and VM-based clusters (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). -## Set the Network Policy to `airgap` +## Use an Air Gap Network -### For VM-Based Clusters +### VM-Based Clusters -To set the network policy of a VM-based cluster: +To set the network policy of a VM-based cluster to `airgap`: 1. Create a cluster: @@ -101,9 +101,9 @@ To set the network policy of a VM-based cluster: 1. (Optional) Test an air gap installation of your application in the cluster. See [Install and Update with Helm in Air Gap Environments](/vendor/helm-install-airgap). -### For VMs +### VMs -To set the network policy of a VM-based cluster: +To set the network policy of a VM-based cluster to `airgap`: 1. Create a VM: diff --git a/docs/vendor/testing-shared-networks.md b/docs/vendor/testing-shared-networks.md new file mode 100644 index 0000000000..aa22b7f925 --- /dev/null +++ b/docs/vendor/testing-shared-networks.md @@ -0,0 +1,84 @@ +# Use Shared Networks + +This topic explains how to create VMs and clusters with Replicated Compatibility Matrix on the same network. + +## Connect a VM with a Cluster on the Same Network + +You can make a Compatibility Matrix cluster available on the same network as a Compatibility Matrix VM. + +#### Supported Cluster Distributions + +Openshift, K3s, RKE2, EC, kURL, kind + +#### Requirement + +Replicated CLI 0.90.0 or later + +To connect a VM with a cluster on the same network: + +1. Create a cluster: + + ```bash + replicated cluster create --distribution K8S_DISTRIBUTION + ``` + + For example, `replicated cluster create --distribution k3s`. + +1. In the output of the `cluster create` command, under `NETWORK`, copy the network ID. + + Example: + + ``` + ID NAME DISTRIBUTION VERSION STATUS NETWORK CREATED EXPIRES COST + 6b14376c ecstatic_raman k3s 1.33.2 queued accbd6a7 2025-08-04 13:20 PDT - $0.60 + ``` + In the example above, the network ID is `accbd6a7`. + +1. Create a VM on the same network: + + ```bash + replicated vm create --distribution DISTRIBUTION --network NETWORK_ID + ``` + Where `NETWORK_ID` is the network ID that you copied in the previous step. + + For example, `replicated vm create --distribution ubuntu --network accbd6a7`. + + Example output: + + ``` + ID NAME DISTRIBUTION VERSION STATUS NETWORK CREATED EXPIRES COST + 760a30b1 suspicious_poitras ubuntu 24.04 assigned accbd6a7 2025-08-04 13:24 PDT - $0.60 + ``` + +## Create VMs on the Same Network + +Use the `--count` flag to create multiple VMs with the same name, all running on the same Network ID. + +```bash +replicated vm create --distribution ubuntu --count 3 +``` + +## Join VMs to an Existing Network + +To join one or more new VMs to the network of an existing VM: + +1. Run one of the following commands to get the ID of an existing VM network: + + * List VMs: + ```bash + replicated vm ls + ``` + + * List networks: + ```bash + replicated network ls + ``` + +1. In the output of the command, copy the network ID. + +1. Use the `--network` flag to create a new VM on the same network: + + ```bash + replicated vm create --distribution ubuntu --network NETWORK_ID + ``` + Where `NETWORK_ID` is the network ID that you copied in the previous step. \ No newline at end of file diff --git a/docs/vendor/testing-vm-create.md b/docs/vendor/testing-vm-create.md index a855d0285a..6ee939422d 100644 --- a/docs/vendor/testing-vm-create.md +++ b/docs/vendor/testing-vm-create.md @@ -304,115 +304,4 @@ To connect to a VM using direct SSH: ``` ssh $(replicated vm ssh-endpoint aba1acc2) - ``` - -## Expose Ports on Running VMs - -After creating a VM, you can create update the ingress and ports settings to add DNS records. This allows you to connect to ports on the VM. - -To update the ingress and ports settings for a running VM: - -1. In the Vendor Portal, go to [**Compatibility Matrix**](https://vendor.replicated.com/compatibility-matrix). - -1. Open the dot menu for the target VM and click **Edit VM**. - - ![Edit VM in the dot menu](/images/compatibility-matrix-edit-vm.png) - - [View a larger version of this image](/images/compatibility-matrix-edit-vm.png) - -1. Under **Ingress & Ports**, for **Add DNS record**, edit the fields as desired and click **Add** to create a DNS record. - - ![DNS record for a VM](/images/compatibility-matrix-ingress-ports.png) - [View a larger version of this image](/images/compatibility-matrix-ingress-ports.png) - - A DNS record and valid TLS cert are created and connected to the specified port. - -## Copy Files to a VM - -You can copy files to a VM either using direct SSH and an SCP endpoint, or by using SCP after connecting to the VM with the Compatibility Matrix Forwarder. Transferring files using direct SSH allows you to use your SSH tool of choice, and pass any client-supported flags. - -### Using the SCP Endpoint - -To copy files to a VM using the scp endpoint: - -1. Run the following command to get the SCP endpoint: - - ```bash - replicated vm scp-endpoint VMID_OR_VMNAME [--username GITHUB_USERNAME] - ``` - - Where - * `VMID_OR_VMNAME` is the ID or name of the VM. - * (Optional) `GITHUB_USERNAME` is a GitHub username used to connect to the SCP endpoint. This is an optional flag that overrides the GitHub username listed in your Vendor Portal account. The `--username` flag is required if you want to: - * Use a different GitHub username than what is in Vendor Portal (or if there is no username set in the Vendor Portal) - * When creating a VM, you used the `--ssh-public-key` flag to associate the VM with a GitHub service account, and this doesn't match the GitHub username set in Vendor Portal - - **Example** - ```bash - replicated vm scp-endpoint aba1acc2 - ``` - - The output of the command lists the SCP endpoint for the VM: - - ``` - scp://GITHUB_USERNAME@SSH_ENDPOINT:PORT - ``` - - For example, `scp://yourusername@37.27.52.116:46795`. - -1. Copy the SCP endpoint. - -1. SCP files into the VM: - - ```bash - scp somefile scp://GITHUB_USERNAME@SSH_ENDPOINT:PORT//PATH - ``` - Where: - * `GITHUB_USERNAME`, `SSH_ENDPOINT`, and `PORT` are all copied from the SCP endpoint that you retrieved. - * `PATH` is the destination path on the VM. - - Alternatively, run the following command to SCP files into the VM without needing to copy the endpoint: - - ```bash - scp somefile $(replicated vm scp-endpoint VMID_OR_VMNAME)//PATH - ``` - -### After Connecting to the VM with the Forwarder - -:::note -Transferring files using Compatibility Matrix Forwarder is slower than using direct SSH due to added latency. If you want to transfer large files such as air gap bundles onto the VM, use direct SSH in combination with SCP. See [Using the SCP Endpoint](#using-the-scp-endpoint) above. -::: - -#### Limitations -Transferring files using the Compatibility Matrix Forwarder has the following limitations: -- `scp` with flag `-O` (legacy scp protocol) is not supported. -- Relative paths is not supported. For example: - - Unsupported: `scp somefile VMID@replicatedvm.com:~` - - Supported: `scp somefile VMID@replicatedvm:/home/folder/somefile` -- File permissions are not inherited. - -To copy files to the VM using SCP after connecting with the Compatibility Matrix Forwarder: - -1. SSH into the VM using the Forwarder: - - ```bash - ssh VMID@replicatedvm.com - ``` - - Where `VMID` is the ID of the VM. - -1. Copy files onto the machine: - ```bash - scp FILENAME VMID@replicatedvm:PATH - ``` - - Where: - * `FILENAME` is the name of the file. - * `VMID` is the ID of the VM. - * `PATH` is the path on the VM where you want to copy the file. For example, `/home/folder/somefile`. Relative paths are not supported. - - **Example:** - - ```bash - scp somefile 123abc@replicatedvm:/home/folder/somefile - ``` + ``` \ No newline at end of file diff --git a/docs/vendor/testing-vm-networking.md b/docs/vendor/testing-vm-networking.md index 18eec08950..23da963b4f 100644 --- a/docs/vendor/testing-vm-networking.md +++ b/docs/vendor/testing-vm-networking.md @@ -1,16 +1,16 @@ -# VM Networking (Beta) +# Expose Ports Using Tunnels -This topic describes advanced networking features for Replicated Compatibility Matrix VMs, including port exposure, VM-to-cluster connections, and shared networks. +This topic explains how to expose ports on VMs and VM-based clusters created with Compatibility Matrix. -## Limitations +## Expose Ports on VMs -Creating wildcard DNS entries for VMs is not supported. For feedback, contact Replicated support. +You can expose ports on a VM and make them accessible on the public internet. -## Compatibility Matrix Tunnels +### Limitation -You can expose ports on a VM and make them accessible on the public internet. For more information about a similar feature, see [Compatibility Matrix Tunnels for Clusters](testing-ingress#compatibility-matrix-tunnels). +Creating wildcard DNS entries for VMs is not supported. For feedback, contact Replicated support. -### Create a Tunnel +### CLI ```bash replicated vm port expose VMID_OR_VMNAME --port PORT --protocol PROTOCOL @@ -21,90 +21,112 @@ For example, to expose port 3000 with HTTP protocol: replicated vm port expose VM_ID --port 30000 --protocol http ``` -### List Tunnels +### Vendor Portal -```bash -replicated vm port ls VMID_OR_VMNAME -``` +To update the ingress and ports settings for a VM: -### Remove a Tunnel +1. In the Vendor Portal, go to [**Compatibility Matrix**](https://vendor.replicated.com/compatibility-matrix). -```bash -replicated vm port rm VMID_OR_VMNAME -``` +1. Create a VM. + +1. Open the dot menu for the VM and click **Edit VM**. + + ![Edit VM in the dot menu](/images/compatibility-matrix-edit-vm.png) + + [View a larger version of this image](/images/compatibility-matrix-edit-vm.png) + +1. Under **Ingress & Ports**, for **Add DNS record**, edit the fields as desired and click **Add** to create a DNS record. + + ![DNS record for a VM](/images/compatibility-matrix-ingress-ports.png) + [View a larger version of this image](/images/compatibility-matrix-ingress-ports.png) + + A DNS record and valid TLS cert are created and connected to the specified port. -## Connect a Compatibility Matrix VM with a Compatibility Matrix Cluster +## Expose Ports on VM-Based Clusters -You can make a Compatibility Matrix cluster available on the same network as a Compatibility Matrix VM. +After you have a node port available on the cluster, you can expose the node port to the public internet using the Replicated CLI. +There is no limit to the number of tunnels you can create for a cluster and multiple tunnels can connect to a single service. -**Compatible clusters:** Openshift, K3s, RKE2, EC, kURL, kind -**Requirement:** Replicated CLI 0.90.0 or later +:::note +You can expose a node port that does not yet exist in the cluster. +This is useful if you have a deterministic node port, but need the DNS name as a value in your Helm chart. +::: -To connect a Compatibility Matrix VM with a Compatibility Matrix cluster on the same network: +The following diagram shows how the traffic is routed into the service using Compatibility Matrix tunnels: -1. Create a cluster: +Compatibility Matrix ingress - ```bash - replicated cluster create --distribution K8S_DISTRIBUTION - ``` +[View a larger version of this image](/images/compatibility-matrix-ingress.png) - For example, `replicated cluster create --distribution k3s`. +### Limitations -1. In the output of the `cluster create` command, under `NETWORK`, copy the network ID. +* A tunnel can only connect to one service. If you need fanout routing into different services, consider installing the nginx ingress controller as a `NodePort` service and exposing it. +* Tunnels are not supported for cloud distributions (EKS, GKE, AKS). - Example: +### Supported Protocols - ``` - ID NAME DISTRIBUTION VERSION STATUS NETWORK CREATED EXPIRES COST - 6b14376c ecstatic_raman k3s 1.33.2 queued accbd6a7 2025-08-04 13:20 PDT - $0.60 - ``` - In the example above, the network ID is `accbd6a7`. +A tunnel can support one or more protocols. +The supported protocols are HTTP, HTTPS, WS and WSS. +GRPC and other protocols are not routed into the cluster. -1. Create a VM on the same network: +### Expose Ports with the CLI - ```bash - replicated vm create --distribution DISTRIBUTION --network NETWORK_ID - ``` - Where `NETWORK_ID` is the network ID that you copied in the previous step. +To expose a port on a cluster using the Replicated CLI: - For example, `replicated vm create --distribution ubuntu --network accbd6a7`. +```bash +replicated cluster port expose \ + [cluster id] \ + --port [node port] \ + --protocol [protocol] +``` - Example output: +See [cluster port](/reference/replicated-cli-cluster-port). - ``` - ID NAME DISTRIBUTION VERSION STATUS NETWORK CREATED EXPIRES COST - 760a30b1 suspicious_poitras ubuntu 24.04 assigned accbd6a7 2025-08-04 13:24 PDT - $0.60 - ``` +### Use Wildcard DNS -## Connect Compatibility Matrix VMs on a Shared Network +Optionally, you can specify the `--wildcard` flag to expose this port with wildcard DNS and TLS certificate. +This feature adds extra time to provision the port, so it should only be used if necessary. -### Create VMs on the Same Network +For example, if you have the nginx ingress controller installed and the node port is 32456: -Use the `--count` flag to create multiple VMs with the same name, all running on the same Network ID. +```bash +% replicated cluster ls +ID NAME DISTRIBUTION VERSION STATUS +1e616c55 tender_ishizaka k3s 1.29.2 running + +% replicated cluster port expose \ + 1e616c55 \ + --port 32456 \ + --protocol http \ + --protocol https \ + --wildcard +``` + +## View Exposed Ports + +To view all exposed ports, use the `replicated port ls` subcommand with the cluster or VM ID: ```bash -replicated vm create --distribution ubuntu --count 3 +replicated cluster port ls CLUSTER_ID ``` -### Join VMs to an Existing VM Network +```bash +replicated vm port ls VMID_OR_VMNAME +``` -1. Run one of the following commands to get the ID of an existing VM network: +## Remove Ports - * List VMs: - ```bash - replicated vm ls - ``` +Exposed ports are automatically deleted when the cluster or VM terminates. - * List networks: - ```bash - replicated network ls - ``` +If you want to remove a port (and the associated DNS records and TLS certs) prior to termination, run the `port rm` subcommand with the cluster or VM ID: -1. In the output of the command, copy the network ID. +```bash +replicated cluster port rm PORT_ID --id CLUSTER_ID +``` -1. Use the `--network` flag to create a new VM on the same network: +```bash +replicated vm port rm VMID_OR_VMNAME +``` - ```bash - replicated vm create --distribution ubuntu --network NETWORK_ID - ``` - Where `NETWORK_ID` is the network ID that you copied in the previous step. \ No newline at end of file +You can remove just one protocol, or all. +Removing all protocols also removes the DNS record and TLS cert. \ No newline at end of file diff --git a/docs/vendor/testing-vm-transfer-files.md b/docs/vendor/testing-vm-transfer-files.md new file mode 100644 index 0000000000..2a16dd9f5d --- /dev/null +++ b/docs/vendor/testing-vm-transfer-files.md @@ -0,0 +1,91 @@ +# Copy Files to a VM + +This topic describes how to transfer files to a VM created with Replicated Compatibility Matrix. + +You can copy files to a VM either using direct SSH and an SCP endpoint, or by using SCP after connecting to the VM with the Compatibility Matrix Forwarder. Transferring files using direct SSH allows you to use your SSH tool of choice, and pass any client-supported flags. + +## Using the SCP Endpoint + +To copy files to a VM using the scp endpoint: + +1. Run the following command to get the SCP endpoint: + + ```bash + replicated vm scp-endpoint VMID_OR_VMNAME [--username GITHUB_USERNAME] + ``` + + Where + * `VMID_OR_VMNAME` is the ID or name of the VM. + * (Optional) `GITHUB_USERNAME` is a GitHub username used to connect to the SCP endpoint. This is an optional flag that overrides the GitHub username listed in your Vendor Portal account. The `--username` flag is required if you want to: + * Use a different GitHub username than what is in Vendor Portal (or if there is no username set in the Vendor Portal) + * When creating a VM, you used the `--ssh-public-key` flag to associate the VM with a GitHub service account, and this doesn't match the GitHub username set in Vendor Portal + + **Example** + ```bash + replicated vm scp-endpoint aba1acc2 + ``` + + The output of the command lists the SCP endpoint for the VM: + + ``` + scp://GITHUB_USERNAME@SSH_ENDPOINT:PORT + ``` + + For example, `scp://yourusername@37.27.52.116:46795`. + +1. Copy the SCP endpoint. + +1. SCP files into the VM: + + ```bash + scp somefile scp://GITHUB_USERNAME@SSH_ENDPOINT:PORT//PATH + ``` + Where: + * `GITHUB_USERNAME`, `SSH_ENDPOINT`, and `PORT` are all copied from the SCP endpoint that you retrieved. + * `PATH` is the destination path on the VM. + + Alternatively, run the following command to SCP files into the VM without needing to copy the endpoint: + + ```bash + scp somefile $(replicated vm scp-endpoint VMID_OR_VMNAME)//PATH + ``` + +## After Connecting to the VM with the Forwarder + +:::note +Transferring files using Compatibility Matrix Forwarder is slower than using direct SSH due to added latency. If you want to transfer large files such as air gap bundles onto the VM, use direct SSH in combination with SCP. See [Using the SCP Endpoint](#using-the-scp-endpoint) above. +::: + +#### Limitations +Transferring files using the Compatibility Matrix Forwarder has the following limitations: +- `scp` with flag `-O` (legacy scp protocol) is not supported. +- Relative paths is not supported. For example: + - Unsupported: `scp somefile VMID@replicatedvm.com:~` + - Supported: `scp somefile VMID@replicatedvm:/home/folder/somefile` +- File permissions are not inherited. + +To copy files to the VM using SCP after connecting with the Compatibility Matrix Forwarder: + +1. SSH into the VM using the Forwarder: + + ```bash + ssh VMID@replicatedvm.com + ``` + + Where `VMID` is the ID of the VM. + +1. Copy files onto the machine: + ```bash + scp FILENAME VMID@replicatedvm:PATH + ``` + + Where: + * `FILENAME` is the name of the file. + * `VMID` is the ID of the VM. + * `PATH` is the path on the VM where you want to copy the file. For example, `/home/folder/somefile`. Relative paths are not supported. + + **Example:** + + ```bash + scp somefile 123abc@replicatedvm:/home/folder/somefile + ``` diff --git a/sidebars.js b/sidebars.js index 750672e064..9fb7ee671b 100644 --- a/sidebars.js +++ b/sidebars.js @@ -192,26 +192,33 @@ const sidebars = { 'vendor/testing-pricing', { type: 'category', - label: 'Use Compatibility Matrix', + label: 'Create and Manage Clusters', items: [ 'vendor/testing-how-to', 'vendor/testing-supported-clusters', - 'vendor/testing-cluster-addons', + 'vendor/testing-cluster-addons', + ] + }, + { + type: 'category', + label: 'Create and Manage VMs', + items: [ 'vendor/testing-vm-create', - 'vendor/testing-ci-cd', - { - type: 'category', - label: 'Networking', - items: [ - 'vendor/testing-ingress', - 'vendor/testing-vm-networking', - 'vendor/testing-network-policy', - ] - } - ], + 'vendor/testing-vm-transfer-files', + ] + }, + { + type: 'category', + label: 'Networking', + items: [ + 'vendor/testing-vm-networking', + 'vendor/testing-ingress', + 'vendor/testing-shared-networks', + 'vendor/testing-network-policy', + ] }, - 'vendor/compatibility-matrix-usage', + 'vendor/testing-ci-cd', ], }, { From df242ccc7a05ee27b91a7d12b19fab4cd4d5face Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Fri, 3 Oct 2025 10:49:31 -0600 Subject: [PATCH 02/16] edit xrefs --- docs/vendor/testing-vm-create.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/vendor/testing-vm-create.md b/docs/vendor/testing-vm-create.md index 6ee939422d..b086e34e05 100644 --- a/docs/vendor/testing-vm-create.md +++ b/docs/vendor/testing-vm-create.md @@ -228,7 +228,7 @@ You can SSH into a VM using one of the following methods: * [**Direct SSH**](#direct-ssh): When you connect to a VM using direct SSH, you can use your SSH tool of choice and pass any client supported flags, without any added connection lag of being routed through the Compatibility Matrix Forwarder. Example use cases for direct SSH include transferring large assets such as air gap bundles to the VM using SCP, or passing specific SHH flags during testing workflows. -For information about how to copy files to a VM after connecting, see [Copy Files to a VM](#copy-files-to-a-vm) below. +For information about how to copy files to a VM after connecting, see [Copy Files to a VM](testing-vm-transfer-files). ### Compatibility Matrix Forwarder @@ -242,7 +242,7 @@ To connect to a VM using the Forwarder: Where `VMID` is the ID of the VM. -For information about copying files to the VM after connecting, see [After Connecting to the VM with the Forwarder](#after-connecting-to-the-vm-with-the-forwarder) below. +For information about copying files to the VM after connecting, see [Copy Files to a VM](testing-vm-transfer-files). ### Direct SSH From 11be45361b24f47368e0cabbfbb7ec346fa592f5 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Fri, 3 Oct 2025 10:51:43 -0600 Subject: [PATCH 03/16] edit xrefs --- docs/vendor/environment-setup.mdx | 2 +- docs/vendor/support-inspecting-support-bundles.md | 2 +- docs/vendor/testing-about.md | 2 +- docs/vendor/testing-vm-create.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/vendor/environment-setup.mdx b/docs/vendor/environment-setup.mdx index 93739662e1..673b66ddc4 100644 --- a/docs/vendor/environment-setup.mdx +++ b/docs/vendor/environment-setup.mdx @@ -283,6 +283,6 @@ You need access to a VM to test installations and updates with the [Replicated E To test installations with Helm, you need kubectl access to a cluster. -* **Option 1: Use Compatibility Matrix.** You can use Replicated Compatibility Matrix to create clusters. For more information, see [Create Clusters](/vendor/testing-how-to). +* **Option 1: Use Compatibility Matrix.** You can use Replicated Compatibility Matrix to create clusters. For more information, see [Create and Manage Clusters](/vendor/testing-how-to). * **Option 2: Use another cloud provider or tool.** You can use any cloud provider or tool that you prefer to create a cluster, such as Google Kubernetes Engine (GKE) or minikube. diff --git a/docs/vendor/support-inspecting-support-bundles.md b/docs/vendor/support-inspecting-support-bundles.md index b5ad4ee6d4..a9afa60342 100644 --- a/docs/vendor/support-inspecting-support-bundles.md +++ b/docs/vendor/support-inspecting-support-bundles.md @@ -26,7 +26,7 @@ To inspect a support bundle: 1. (Optional) Click **Download bundle** to download the bundle. This can be helpful if you want to access the bundle from another system or if other team members want to access the bundle and use other tools to examine the files. -1. (Optional) Navigate back to the [**Troubleshoot**](https://vendor.replicated.com/troubleshoot) page and click **Create cluster** to provision a cluster with Replicated Compatibility Matrix. This can be helpful for creating customer-representative environments for troubleshooting. For more information about creating clusters with Compatibility Matrix, see [Use Compatibility Matrix](testing-how-to). +1. (Optional) Navigate back to the [**Troubleshoot**](https://vendor.replicated.com/troubleshoot) page and click **Create cluster** to provision a cluster with Replicated Compatibility Matrix. This can be helpful for creating customer-representative environments for troubleshooting. For more information about creating clusters with Compatibility Matrix, see [Create and Manage Clusters](testing-how-to). Cluster configuration dialog diff --git a/docs/vendor/testing-about.md b/docs/vendor/testing-about.md index acb62c8c47..145e7bf31f 100644 --- a/docs/vendor/testing-about.md +++ b/docs/vendor/testing-about.md @@ -11,7 +11,7 @@ Example use cases for Compatibility Matrix include: * Get access to a cluster or VM to develop on and quickly test changes * Reproduce a reported issue on a customer-representative environment for troubleshooting -You can use Compatibility Matrix with the Replicated CLI or the Replicated Vendor Portal. For more information about how to use Compatibility Matrix, see [Create Clusters](testing-how-to) and [Create VMs](testing-vm-create). +You can use Compatibility Matrix with the Replicated CLI or the Replicated Vendor Portal. For more information about how to use Compatibility Matrix, see [Create and Manage Clusters](testing-how-to) and [Create VMs](testing-vm-create). ## Supported Clusters and VMs diff --git a/docs/vendor/testing-vm-create.md b/docs/vendor/testing-vm-create.md index b086e34e05..c89a8617e2 100644 --- a/docs/vendor/testing-vm-create.md +++ b/docs/vendor/testing-vm-create.md @@ -11,7 +11,7 @@ Compatibility Matrix VMs provide isolated Linux environments for testing your ap You can use Compatibility Matrix VMs for testing and troubleshooting VM-based installations for your application with [Replicated Embedded Cluster](/intro-replicated#embedded-cluster). -For information about creating clusters with Compatibility Matrix to test Kubernetes-based deployments and Helm installations, see [Create Clusters](/vendor/testing-how-to). +For information about creating clusters with Compatibility Matrix to test Kubernetes-based deployments and Helm installations, see [Create and Manage Clusters](/vendor/testing-how-to). ## Supported VM Types From 3386ea030f5dc8ddcc361066a1a54ecc20abce6f Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Fri, 3 Oct 2025 11:05:08 -0600 Subject: [PATCH 04/16] add air gap subheadings --- docs/vendor/testing-how-to.md | 23 ++++++++++++++++++++++- docs/vendor/testing-vm-create.md | 32 +++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/docs/vendor/testing-how-to.md b/docs/vendor/testing-how-to.md index 55e1abfb56..51aaa49ae7 100644 --- a/docs/vendor/testing-how-to.md +++ b/docs/vendor/testing-how-to.md @@ -25,7 +25,6 @@ Compatibility Matrix has the following limitations: - ARM instance types are only supported on Cloud Clusters. For distribution-specific details, see [Supported Compatibility Matrix Cluster Types](/vendor/testing-supported-clusters). - GPU instance types are only supported on Cloud Clusters. For distribution-specific details, see [Supported Compatibility Matrix Cluster Types](/vendor/testing-supported-clusters). - There is no support for IPv6 as a single stack. Dual stack support is available on kind clusters. -- There is no support for air gap testing. - The `cluster upgrade` feature is available only for kURL distributions. See [cluster upgrade](/reference/replicated-cli-cluster-upgrade). - Cloud clusters do not allow for the configuration of CNI, CSI, CRI, Ingress, or other plugins, add-ons, services, and interfaces. - The node operating systems for clusters created with Compatibility Matrix cannot be configured nor replaced with different operating systems. @@ -171,6 +170,28 @@ To create a cluster using the Vendor Portal: [View a larger version of this image](/images/cmx-assigned-cluster.png) +## Create Air Gap Clusters (Beta) + +For any VM-based cluster distributions, you can create a cluster that uses an air-gapped network by setting the network policy to `airgap`. + +For more information, see [Use Air Gap Networks (Beta)](testing-network-policy). + +To set the network policy of a VM-based cluster to `airgap`: + +1. Create a cluster: + + ```bash + replicated cluster create --distribution VM_BASED_DISTRIBUTION + ``` + Where `VM_BASED_DISTRIBUTION` is the target VM-based cluster distribution. For a list of supported distributions, see [VM Clusters](/vendor/testing-supported-clusters#vm-clusters). + +1. Change the network policy to `airgap`: + + ```bash + replicated network update NETWORK_ID --policy airgap + ``` + Where `NETWORK_ID` is the ID of the network from the output of the `cluster ls` command. + ## Prepare Clusters For applications distributed with the Replicated Vendor Portal, the [`cluster prepare`](/reference/replicated-cli-cluster-prepare) command reduces the number of steps required to provision a cluster and then deploy a release to the cluster for testing. This is useful in continuous integration (CI) workflows that run multiple times a day. For an example workflow that uses the `cluster prepare` command, see [Recommended CI/CD Workflows](/vendor/ci-workflows). diff --git a/docs/vendor/testing-vm-create.md b/docs/vendor/testing-vm-create.md index c89a8617e2..d4f7ba5ae3 100644 --- a/docs/vendor/testing-vm-create.md +++ b/docs/vendor/testing-vm-create.md @@ -304,4 +304,34 @@ To connect to a VM using direct SSH: ``` ssh $(replicated vm ssh-endpoint aba1acc2) - ``` \ No newline at end of file + ``` + +## Create Air Gap VMs (Beta) + +You can create a VM that uses an air-gapped network by setting the network policy to `airgap`. + +For more information, see [Use Air Gap Networks (Beta)](testing-network-policy). + +To set the network policy of a VM to `airgap`: + +1. Create a VM: + + ```bash + replicated vm create --distribution VM_DISTRIBUTION + ``` + +1. After the VM is running, SSH onto the VM: + + ```bash + ssh VM_ID@replicatedvm.com + ``` + Where `VM_ID` is the ID of the VM from the output of the `vm ls` command. + + For more information and additional options, see [Connect to a VM](/vendor/testing-vm-create#connect-to-a-vm). + +1. Set the network policy to `airgap`: + + ```bash + replicated network update NETWORK_ID --policy airgap + ``` + Where `NETWORK_ID` is the ID of the network from the output of the `vm ls` command. \ No newline at end of file From 382f13c0474fe77f5abf4563cf7e830703e84548 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Fri, 3 Oct 2025 13:23:23 -0600 Subject: [PATCH 05/16] edits --- docs/vendor/testing-network-policy.md | 2 +- docs/vendor/testing-supported-clusters.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index f25903feec..e050e203ca 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -1,4 +1,4 @@ -# Use Air Gap Networks (Beta) +# Test in Air Gap Environments (Beta) This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix to use an air gap network with no outbound internet connection. diff --git a/docs/vendor/testing-supported-clusters.md b/docs/vendor/testing-supported-clusters.md index ed860c11ac..46ee02d617 100644 --- a/docs/vendor/testing-supported-clusters.md +++ b/docs/vendor/testing-supported-clusters.md @@ -11,6 +11,10 @@ Compatibility Matrix provisions cloud-based or virtual machine (VM) clusters. This section lists the supported VM cluster distributions for clusters created with Compatibility Matrix. +VM-based clusters refers to clusters that run on Hetzner servers with the Compatibility Matrix cluster provisioner. This allows for greater flexibility than with Cloud Clusters like AWS, EKS, etc. For example, with VM-based distributions, Compatibility Matrix offers warm pools to make Openshift startup times very fast. + +For information about provisioning VMs, which come without pre-installed clusters and allow for more access to the OS, see [Create VMs](testing-vm-create). + ### kind Compatibility Matrix supports creating [kind](https://kind.sigs.k8s.io/) clusters. From ee2c0543fadcac49e93352ae2e0c53f16b5277a4 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Wed, 8 Oct 2025 16:25:38 -0400 Subject: [PATCH 06/16] Update sidebar and add draft for Network Policy Reporting --- docs/vendor/compatibility-matrix-usage.md | 2 +- docs/vendor/testing-ci-cd.md | 2 +- docs/vendor/testing-how-to.md | 2 +- docs/vendor/testing-ingress.md | 2 +- docs/vendor/testing-network-policy.md | 96 ++++++++++++++++++++--- docs/vendor/testing-supported-clusters.md | 2 +- docs/vendor/testing-vm-about.md | 46 +++++++++++ docs/vendor/testing-vm-create.md | 47 +---------- docs/vendor/testing-vm-networking.md | 2 +- sidebars.js | 37 +++------ 10 files changed, 150 insertions(+), 88 deletions(-) create mode 100644 docs/vendor/testing-vm-about.md diff --git a/docs/vendor/compatibility-matrix-usage.md b/docs/vendor/compatibility-matrix-usage.md index a9b52461bc..5e7e6d9cfc 100644 --- a/docs/vendor/compatibility-matrix-usage.md +++ b/docs/vendor/compatibility-matrix-usage.md @@ -1,4 +1,4 @@ -# View Compatibility Matrix Usage History +# Compatibility Matrix Usage History This topic describes using the Replicated Vendor Portal to understand Compatibility Matrix usage across your team. diff --git a/docs/vendor/testing-ci-cd.md b/docs/vendor/testing-ci-cd.md index 1749e06b5e..bc0cb479a7 100644 --- a/docs/vendor/testing-ci-cd.md +++ b/docs/vendor/testing-ci-cd.md @@ -1,6 +1,6 @@ import TestRecs from "../partials/ci-cd/_test-recs.mdx" -# Use Compatibility Matrix with CI/CD +# Test in Compatibility Matrix with CI/CD This topic describes how to integrate Replicated Compatibility Matrix into your CI/CD workflows. diff --git a/docs/vendor/testing-how-to.md b/docs/vendor/testing-how-to.md index 51aaa49ae7..2ff1cd3818 100644 --- a/docs/vendor/testing-how-to.md +++ b/docs/vendor/testing-how-to.md @@ -1,6 +1,6 @@ import Prerequisites from "../partials/cmx/_prerequisites.mdx" -# Create and Manage Clusters +# Use Compatibility Matrix Clusters This topic describes how to use Replicated Compatibility Matrix to create and manage ephemeral clusters to test your applications across different Kubernetes distributions and versions. diff --git a/docs/vendor/testing-ingress.md b/docs/vendor/testing-ingress.md index f0a934817b..a2b45cc8ed 100644 --- a/docs/vendor/testing-ingress.md +++ b/docs/vendor/testing-ingress.md @@ -1,4 +1,4 @@ -# About Cluster Networking Options +# Compatibility Matrix Cluster Networking This topic describes the networking options for accessing applications deployed on clusters created with Replicated Compatibility Matrix. It also describes how to use and manage Compatibility Matrix tunnels. diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index e050e203ca..f7a01f750b 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -1,6 +1,6 @@ # Test in Air Gap Environments (Beta) -This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix to use an air gap network with no outbound internet connection. +This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix, and how to collect and analyze network events to understand your application's behavior in an air gap environment. ## About Network Policies @@ -15,22 +15,33 @@ By default, all VMs and clusters are created with an `open` network policy. You The `airgap` network policy is particularly useful for testing air gap installations for your application. For information about installing with Embedded Cluster in an air-gapped environment, see [Air Gap Installation with Embedded Cluster](/enterprise/installing-embedded-air-gap). For information about installing with the Helm CLI in an air-gapped environment, see [Install and Update with Helm in Air Gap Environments](/vendor/helm-install-airgap). + ## Requirements -* Replicated CLI 0.109.0 or later -* The user must have the Admin or Developer role. Read Only users cannot change network settings. +- **VM-Based Only**: Network policies are supported only for VMs and VM-based clusters (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). +- **Replicated CLI 0.109.0 or later** +- **User Role**: The user must have the Admin or Developer role. Read Only users cannot change network settings. ## Limitations -* Network policies are a beta feature. For feedback on this feature, including requests for additional types of network policies, contact Replicated support. -* Setting network policies is only supported through the Replicated CLI. You cannot make changes to the network policy through the Compatibility Matrix UI in the Vendor Portal. -* Network policies are supported only for VMs and VM-based clusters (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). +- **Network Status**: Reporting can only be enabled on running networks +- **Policy Changes**: Changing policies creates a new report (historical data remains) +- **Real-time**: Events may have a 1-2 second delay before appearing in reports + +## Network Policy Overview + +### Basic Network Policies (for traffic control) + +| Policy Name | Description | Use Case | +|-------------|-------------|----------| +| `open` | No restrictions on network traffic | Standard development and testing | +| `airgap` | Restrict all network traffic | Air gap installation testing | -## Use an Air Gap Network +## Set Network Policy to `airgap` -### VM-Based Clusters +### For VM-Based Clusters -To set the network policy of a VM-based cluster to `airgap`: +To set the network policy of a VM-based cluster: 1. Create a cluster: @@ -101,9 +112,9 @@ To set the network policy of a VM-based cluster to `airgap`: 1. (Optional) Test an air gap installation of your application in the cluster. See [Install and Update with Helm in Air Gap Environments](/vendor/helm-install-airgap). -### VMs +### For VMs -To set the network policy of a VM-based cluster to `airgap`: +To set the network policy of a VM: 1. Create a VM: @@ -158,4 +169,65 @@ To set the network policy of a VM-based cluster to `airgap`: curl: (28) Failed to connect to www.google.com port 80 after 129976 ms: Couldn't connect to server ``` -1. (Optional) Test an air gap installation of your application on the VM. See [Air Gap Installation with Embedded Cluster](/enterprise/installing-embedded-air-gap). \ No newline at end of file + +## Collect and View Network Reports + +### Enable Network Reporting + +#### Via Vendor Portal + +1. Navigate to **Compatibility Matrix** > **Network Policy** +2. In the **Reporting** column, toggle switch from "off" to "on" + +#### Via CLI + +```bash +replicated network update NETWORK_ID --collect-report +``` + +### View Network Reports + +#### Via Vendor Portal + +1. Navigate to **Compatibility Matrix** > **Network Policy** +2. Click on a network name in the Active Resources table +3. The Network Policy Report will appear below the table +4. Use the table to browse and filter network events + +#### Via CLI + +**View detailed network report as JSON:** + +```bash +replicated network report NETWORK_ID +``` + +**View network summary as JSON:** + +```bash +replicated network report NETWORK_ID --summary +``` + + +**List all networks and their reporting status:** + +```bash +replicated network ls +``` + +**Example output:** + +``` +ID NAME STATUS CREATED EXPIRES POLICY REPORTING +a1b2c3d4 example_network_1 running 2025-01-28 16:04 PST 2025-01-28 18:06 PST open off +e5f6g7h8 example_network_2 running 2025-01-28 12:10 PST 2025-01-28 20:11 PST airgap on +``` + + +### Policy Configuration + +Policies are configured at the network level and apply to all VMs and clusters within that network. You can change the policy at any time, but note that: + +- Policy changes terminate the current report and start a new one +- Historical data from the previous policy remains available +- The new policy takes effect immediately for new events diff --git a/docs/vendor/testing-supported-clusters.md b/docs/vendor/testing-supported-clusters.md index 46ee02d617..817428a3ce 100644 --- a/docs/vendor/testing-supported-clusters.md +++ b/docs/vendor/testing-supported-clusters.md @@ -1,7 +1,7 @@ import Pool from "../partials/cmx/_openshift-pool.mdx" import InstanceTypes from "../partials/cmx/_instance-types.mdx" -# Supported Compatibility Matrix Cluster Types +# Compatibility Matrix Cluster Types This topic describes the supported Kubernetes distributions, Kubernetes versions, instance types, nodes, limitations, and common use cases for clusters created with Replicated Compatibility Matrix. diff --git a/docs/vendor/testing-vm-about.md b/docs/vendor/testing-vm-about.md new file mode 100644 index 0000000000..d27d459d51 --- /dev/null +++ b/docs/vendor/testing-vm-about.md @@ -0,0 +1,46 @@ +import Prerequisites from "../partials/cmx/_prerequisites.mdx" +import InstanceTypes from "../partials/cmx/_instance-types.mdx" + +# About Compatibility Matrix VMs (Beta) + +This topic describes Compatibility Matrix VMs and their capabilities for testing your applications. + +## About Compatibility Matrix VMs + +Compatibility Matrix VMs provide isolated Linux environments for testing your applications. Unlike clusters, VMs give you full control over the operating system (OS) and allow you to test installation methods that require direct OS access. + +You can use Compatibility Matrix VMs for testing and troubleshooting VM-based installations for your application with [Replicated Embedded Cluster](/intro-replicated#embedded-cluster). + +For information about creating clusters with Compatibility Matrix to test Kubernetes-based deployments and Helm installations, see [Create and Manage Clusters](/vendor/testing-how-to). + +## Supported VM Types + +The following VM types are supported: + +| Distribution | Versions | Instance Types | +| :---- | :---- | :---- | +| ubuntu | 24.04, 22.04 | r1.small, r1.medium, r1.large, r1.xlarge, r1.2xlarge. See [Replicated Instance Types](#replicated-instance-types).| +| almalinux | 8, 9, 10 | r1.small, r1.medium, r1.large, r1.xlarge, r1.2xlarge. See [Replicated Instance Types](#replicated-instance-types). | + +## Replicated Instance Types + +The following describes the Replicated instance types for VMs: + + + +## Limitations + +Creating VMs with Compatibility Matrix has the following limitations: + +- Creating VMs with Compatibility Matrix is a Beta feature. +- Installing Embedded Cluster on a VM created with Compatibility Matrix is supported for Embedded Cluster versions 1.21.0 or later. +- [GitHub Actions](/vendor/testing-ci-cd#replicated-github-actions) are not supported for Compatibility Matrix VMs. +- The [cluster prepare](/reference/replicated-cli-cluster-prepare) command is not supported for Compatibility Matrix VMs. + +## Prerequisites + +Before you can use Compatibility Matrix VMs, you must complete the following prerequisites: + + + +* Existing accounts must accept the TOS for the trial on the [**Compatibility Matrix**](https://vendor.replicated.com/compatibility-matrix) page in the Replicated Vendor Portal. diff --git a/docs/vendor/testing-vm-create.md b/docs/vendor/testing-vm-create.md index d4f7ba5ae3..0a63aa44c2 100644 --- a/docs/vendor/testing-vm-create.md +++ b/docs/vendor/testing-vm-create.md @@ -1,50 +1,7 @@ -import Prerequisites from "../partials/cmx/_prerequisites.mdx" -import InstanceTypes from "../partials/cmx/_instance-types.mdx" - -# Create VMs (Beta) +# Use Compatibility Matrix VMs (Beta) This topic describes how to use Replicated Compatibility Matrix to create and manage ephemeral VMs. -## About Compatibility Matrix VMs - -Compatibility Matrix VMs provide isolated Linux environments for testing your applications. Unlike clusters, VMs give you full control over the operating system (OS) and allow you to test installation methods that require direct OS access. - -You can use Compatibility Matrix VMs for testing and troubleshooting VM-based installations for your application with [Replicated Embedded Cluster](/intro-replicated#embedded-cluster). - -For information about creating clusters with Compatibility Matrix to test Kubernetes-based deployments and Helm installations, see [Create and Manage Clusters](/vendor/testing-how-to). - -## Supported VM Types - -The following VM types are supported: - -| Distribution | Versions | Instance Types | -| :---- | :---- | :---- | -| ubuntu | 24.04, 22.04 | r1.small, r1.medium, r1.large, r1.xlarge, r1.2xlarge. See [Replicated Instance Types](#replicated-instance-types).| -| almalinux | 8, 9, 10 | r1.small, r1.medium, r1.large, r1.xlarge, r1.2xlarge. See [Replicated Instance Types](#replicated-instance-types). | - -## Replicated Instance Types - -The following describes the Replicated instance types for VMs: - - - -## Limitations - -Creating VMs with Compatibility Matrix has the following limitations: - -- Creating VMs with Compatibility Matrix is a Beta feature. -- Installing Embedded Cluster on a VM created with Compatibility Matrix is supported for Embedded Cluster versions 1.21.0 or later. -- [GitHub Actions](/vendor/testing-ci-cd#replicated-github-actions) are not supported for Compatibility Matrix VMs. -- The [cluster prepare](/reference/replicated-cli-cluster-prepare) command is not supported for Compatibility Matrix VMs. - -## Prerequisites - -Before you can use Compatibility Matrix VMs, you must complete the following prerequisites: - - - -* Existing accounts must accept the TOS for the trial on the [**Compatibility Matrix**](https://vendor.replicated.com/compatibility-matrix) page in the Replicated Vendor Portal. - ## Set Up SSH Access In order to access VMs that you create with Compatibility Matrix, you need to set up SSH access. You can do this using your personal GitHub account or a GitHub service account used by your team. @@ -310,7 +267,7 @@ To connect to a VM using direct SSH: You can create a VM that uses an air-gapped network by setting the network policy to `airgap`. -For more information, see [Use Air Gap Networks (Beta)](testing-network-policy). +For more information, see [Test in Use Air Gap Networks (Beta)](testing-network-policy). To set the network policy of a VM to `airgap`: diff --git a/docs/vendor/testing-vm-networking.md b/docs/vendor/testing-vm-networking.md index 23da963b4f..28c0ff4b69 100644 --- a/docs/vendor/testing-vm-networking.md +++ b/docs/vendor/testing-vm-networking.md @@ -1,4 +1,4 @@ -# Expose Ports Using Tunnels +# Compatibility Matrix VM Networking This topic explains how to expose ports on VMs and VM-based clusters created with Compatibility Matrix. diff --git a/sidebars.js b/sidebars.js index 9fb7ee671b..fbf96d15b5 100644 --- a/sidebars.js +++ b/sidebars.js @@ -189,36 +189,23 @@ const sidebars = { label: 'Compatibility Matrix', items: [ 'vendor/testing-about', - 'vendor/testing-pricing', - { - type: 'category', - label: 'Create and Manage Clusters', - items: [ - 'vendor/testing-how-to', - 'vendor/testing-supported-clusters', - 'vendor/testing-cluster-addons', - ] - }, - { - type: 'category', - label: 'Create and Manage VMs', - items: [ - 'vendor/testing-vm-create', - 'vendor/testing-vm-transfer-files', - ] - }, + 'vendor/testing-supported-clusters', + 'vendor/testing-how-to', + 'vendor/testing-ingress', + 'vendor/testing-cluster-addons', + 'vendor/testing-vm-about', + 'vendor/testing-vm-create', + 'vendor/testing-vm-networking', + 'vendor/testing-network-policy', + 'vendor/testing-ci-cd', { type: 'category', - label: 'Networking', + label: 'Managing Cost with CMX', items: [ - 'vendor/testing-vm-networking', - 'vendor/testing-ingress', - 'vendor/testing-shared-networks', - 'vendor/testing-network-policy', + 'vendor/testing-pricing', + 'vendor/compatibility-matrix-usage', ] }, - 'vendor/compatibility-matrix-usage', - 'vendor/testing-ci-cd', ], }, { From e0b7d0cef60c7ea2a7e9068b6ff4da50f8a053b0 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 14 Oct 2025 10:20:58 -0600 Subject: [PATCH 07/16] docs edits to test in air gap environments --- docs/vendor/testing-network-policy.md | 112 ++++++++++++-------------- 1 file changed, 50 insertions(+), 62 deletions(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index f7a01f750b..94bae3bb7b 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -1,8 +1,8 @@ # Test in Air Gap Environments (Beta) -This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix, and how to collect and analyze network events to understand your application's behavior in an air gap environment. +This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix, and how to collect and analyze network events to understand your application's behavior in air-gapped environments. -## About Network Policies +## Overview VMs and VM-based clusters created with Compatibility Matrix can use one of the following network policies: @@ -11,34 +11,24 @@ VMs and VM-based clusters created with Compatibility Matrix can use one of the f | `open` | No restrictions on network traffic. | | `airgap` | Restrict all network traffic. | -By default, all VMs and clusters are created with an `open` network policy. You can change the network policy to `airgap` to create an _air-gapped_ environment with no outbound internet access. - -The `airgap` network policy is particularly useful for testing air gap installations for your application. For information about installing with Embedded Cluster in an air-gapped environment, see [Air Gap Installation with Embedded Cluster](/enterprise/installing-embedded-air-gap). For information about installing with the Helm CLI in an air-gapped environment, see [Install and Update with Helm in Air Gap Environments](/vendor/helm-install-airgap). +By default, all VMs and clusters are created with an `open` network policy. You can change the network policy to `airgap` to simulate an _air-gapped_ environment with no outbound internet access. The `airgap` network policy is particularly useful for testing air gap installations for your application. +Compatibility Matrix also supports collecting network reports, which track and expose network events. Viewing network reports for environments with an `airgap` network policy can help you understand your application's behavior in air-gapped environments, such as if the application attempts to make an outbound request. ## Requirements - -- **VM-Based Only**: Network policies are supported only for VMs and VM-based clusters (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). -- **Replicated CLI 0.109.0 or later** -- **User Role**: The user must have the Admin or Developer role. Read Only users cannot change network settings. +- Setting the network policy from the CLI requires the Replicated CLI 0.109.0 or later +- To set a network policy, the user must have the Admin or Developer role. Read Only users cannot change network settings. ## Limitations - -- **Network Status**: Reporting can only be enabled on running networks -- **Policy Changes**: Changing policies creates a new report (historical data remains) -- **Real-time**: Events may have a 1-2 second delay before appearing in reports - -## Network Policy Overview - -### Basic Network Policies (for traffic control) - -| Policy Name | Description | Use Case | -|-------------|-------------|----------| -| `open` | No restrictions on network traffic | Standard development and testing | -| `airgap` | Restrict all network traffic | Air gap installation testing | +- Setting the network policy is supported only for VMs and VM-based clusters (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). +- You can change the network policy at any time, but note that policy changes terminate the current network report and start a new one. In this case, historical data from the previous policy remains available. +- Network events might have a one to two second delay before appearing in network reports +- Network reporting can only be enabled on running networks ## Set Network Policy to `airgap` +To simulate an air-gapped environment that prevents outbound network requests, you can change the policy for a network from `open` to `airgap`. Network policies are configured at the network level and apply to all VMs and clusters within the network. + ### For VM-Based Clusters To set the network policy of a VM-based cluster: @@ -169,65 +159,63 @@ To set the network policy of a VM: curl: (28) Failed to connect to www.google.com port 80 after 129976 ms: Couldn't connect to server ``` - ## Collect and View Network Reports -### Enable Network Reporting - -#### Via Vendor Portal +You can collect network reports to analyze network events. Analyzing networking events is helpful to understand your application's behavior in air-gapped environments, such as when your application attempts to make outbound internet requests. -1. Navigate to **Compatibility Matrix** > **Network Policy** -2. In the **Reporting** column, toggle switch from "off" to "on" +### Vendor Portal -#### Via CLI +To collect and view a network report from the Vendor Portal: -```bash -replicated network update NETWORK_ID --collect-report -``` +1. Go to **Compatibility Matrix** > **Network Policy**. -### View Network Reports +1. In the **Reporting** column for the target network, toggle the switch from "off" to "on". -#### Via Vendor Portal +1. In the **Report** column, click **View report**. -1. Navigate to **Compatibility Matrix** > **Network Policy** -2. Click on a network name in the Active Resources table -3. The Network Policy Report will appear below the table -4. Use the table to browse and filter network events + The **Network Policy Report** table is displayed. -#### Via CLI +1. Use the table to browse and filter network events. -**View detailed network report as JSON:** +### CLI -```bash -replicated network report NETWORK_ID -``` +To collect and view a network report from the CLI: -**View network summary as JSON:** +1. Collect a network report: -```bash -replicated network report NETWORK_ID --summary -``` + ```bash + replicated network update NETWORK_ID --collect-report + ``` + Where `NETWORK_ID` is the ID of the network. You can get the network ID by running `replicated network ls`. +1. (Optional) Confirm that reporting is `on` for the network: -**List all networks and their reporting status:** + ```bash + replicated network ls + ``` -```bash -replicated network ls -``` + **Example output:** -**Example output:** + ``` + ID NAME STATUS CREATED EXPIRES POLICY REPORTING + a1b2c3d4 example_network_1 running 2025-01-28 16:04 PST 2025-01-28 18:06 PST open off + e5f6g7h8 example_network_2 running 2025-01-28 12:10 PST 2025-01-28 20:11 PST airgap on + ``` +1. View the network report: + + * View the full report as JSON: -``` -ID NAME STATUS CREATED EXPIRES POLICY REPORTING -a1b2c3d4 example_network_1 running 2025-01-28 16:04 PST 2025-01-28 18:06 PST open off -e5f6g7h8 example_network_2 running 2025-01-28 12:10 PST 2025-01-28 20:11 PST airgap on -``` + ```bash + replicated network report NETWORK_ID + ``` + * View the report summary as JSON: -### Policy Configuration + ```bash + replicated network report NETWORK_ID --summary + ``` -Policies are configured at the network level and apply to all VMs and clusters within that network. You can change the policy at any time, but note that: +## Related Topics -- Policy changes terminate the current report and start a new one -- Historical data from the previous policy remains available -- The new policy takes effect immediately for new events +* [Air Gap Installation with Embedded Cluster](/enterprise/installing-embedded-air-gap) +* [Install and Update with Helm in Air Gap Environments](/vendor/helm-install-airgap). \ No newline at end of file From 78f4d36dfa6c79aabd0189ccb19b2c7ced062303 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Wed, 15 Oct 2025 13:44:15 -0400 Subject: [PATCH 08/16] Review and update Network Policy + Reporting docs --- docs/vendor/testing-network-policy.md | 89 ++++++++++----------------- 1 file changed, 33 insertions(+), 56 deletions(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index 94bae3bb7b..d1fd4bf1fb 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -4,23 +4,26 @@ This topic describes how to change the network policy of a virtual machine (VM) ## Overview -VMs and VM-based clusters created with Compatibility Matrix can use one of the following network policies: +VMs and [VM-based clusters](/vendor/testing-supported-clusters#vm-clusters) created with Compatibility Matrix can use one of the following network policies: | Network Policy | Description | | :---- | :---- | | `open` | No restrictions on network traffic. | | `airgap` | Restrict all network traffic. | -By default, all VMs and clusters are created with an `open` network policy. You can change the network policy to `airgap` to simulate an _air-gapped_ environment with no outbound internet access. The `airgap` network policy is particularly useful for testing air gap installations for your application. +By default, all VMs and clusters are created with an `open` network policy. You can change the network policy to `airgap` to simulate an air-gapped environment with no outbound internet access. This `airgap` network policy is particularly useful for previewing how your application will perform in air-gapped end customer environments. + +Compatibility Matrix also supports collecting network reports. Viewing a report of network events can help you understand your application's behavior in air-gapped environments, with details on outbound network requests. + +Network policy enforcement is separate from network reporting. For greater flexibility in testing, the report captures all network activity whether the policy is set to `open` or `airgap`. -Compatibility Matrix also supports collecting network reports, which track and expose network events. Viewing network reports for environments with an `airgap` network policy can help you understand your application's behavior in air-gapped environments, such as if the application attempts to make an outbound request. ## Requirements -- Setting the network policy from the CLI requires the Replicated CLI 0.109.0 or later +- Setting network policy from the CLI requires Replicated CLI 0.109.0 or later - To set a network policy, the user must have the Admin or Developer role. Read Only users cannot change network settings. ## Limitations -- Setting the network policy is supported only for VMs and VM-based clusters (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). +- Setting the network policy is supported only for VMs and [VM-based clusters](/vendor/testing-supported-clusters#vm-clusters) (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). - You can change the network policy at any time, but note that policy changes terminate the current network report and start a new one. In this case, historical data from the previous policy remains available. - Network events might have a one to two second delay before appearing in network reports - Network reporting can only be enabled on running networks @@ -46,26 +49,7 @@ To set the network policy of a VM-based cluster: replicated cluster ls --watch ``` -1. (Optional) Verify the initial outbound network connectivity for the cluster: - - 1. Access the cluster in a shell: - - ``` - replicated cluster shell CLUSTER_ID - ``` - Where `CLUSTER_ID` is the ID of the cluster that you created from the output of the `cluster ls` command. - - 1. In the cluster, install a networking testing tool. For example, [netshoot](https://github.com/nicolaka/netshoot). - - **Example:** - - ```bash - kubectl run tmp-shell --rm -i --tty --image nicolaka/netshoot - ``` - - 1. Curl an endpoint to confirm a successful response. For example, `curl www.google.com`. - -1. Open a new shell to access the cluster: +1. Access the cluster in a shell: ``` replicated cluster shell CLUSTER_ID @@ -92,13 +76,7 @@ To set the network policy of a VM-based cluster: The air gap network is enabled when the status is `running`. -1. (Optional) Use a networking testing tool such as [netshoot](https://github.com/nicolaka/netshoot) to curl an endpoint and verify that there is no outbound connectivity from the cluster. - - If the air gap was successful, a request to curl an endpoint will time out. For example: - - ```bash - curl: (28) Failed to connect to www.google.com port 80 after 129976 ms: Couldn't connect to server - ``` +1. (Optional) To verify that there is no outbound connectivity from the cluster, enable network reporting and view network events. See [Collect and View Network Reports](#collect-and-view-network-reports). 1. (Optional) Test an air gap installation of your application in the cluster. See [Install and Update with Helm in Air Gap Environments](/vendor/helm-install-airgap). @@ -127,8 +105,6 @@ To set the network policy of a VM: For more information and additional options, see [Connect to a VM](/vendor/testing-vm-create#connect-to-a-vm). -1. (Optional) Curl an endpoint to verify the network connectivity of the VM. For example, `curl www.google.com`. - 1. Set the network policy to `airgap`: ```bash @@ -151,13 +127,7 @@ To set the network policy of a VM: 85eb50a8 silly_rosalind updating 2025-01-28 16:16 PST 2025-01-28 17:18 PST airgap off ``` -1. (Optional) Curl an endpoint to verify that there is no outbound connectivity from the VM. For example, `curl www.google.com`. - - If the air gap was successful, a request to curl an endpoint will time out. For example: - - ```bash - curl: (28) Failed to connect to www.google.com port 80 after 129976 ms: Couldn't connect to server - ``` +1. (Optional) To verify that there is no outbound connectivity from the VM, enable network reporting and view network events. See [Collect and View Network Reports](#collect-and-view-network-reports). ## Collect and View Network Reports @@ -165,23 +135,22 @@ You can collect network reports to analyze network events. Analyzing networking ### Vendor Portal -To collect and view a network report from the Vendor Portal: +In Vendor Portal, you can set network policy, and collect network reports: 1. Go to **Compatibility Matrix** > **Network Policy**. -1. In the **Reporting** column for the target network, toggle the switch from "off" to "on". +1. To collect a network report, toggle on the switch under **Reporting**. -1. In the **Report** column, click **View report**. +1. Toggle from `open` to `airgap` under **Policy Type** to block all network egress. - The **Network Policy Report** table is displayed. +1. Where available, click "View" under **Report** to see the reporting table. -1. Use the table to browse and filter network events. ### CLI To collect and view a network report from the CLI: -1. Collect a network report: +1. Turn on network reporting: ```bash replicated network update NETWORK_ID --collect-report @@ -202,18 +171,26 @@ To collect and view a network report from the CLI: e5f6g7h8 example_network_2 running 2025-01-28 12:10 PST 2025-01-28 20:11 PST airgap on ``` 1. View the network report: - - * View the full report as JSON: + + See all network events: - ```bash - replicated network report NETWORK_ID - ``` + ```bash + replicated network report NETWORK_ID + ``` - * View the report summary as JSON: + See summary of all Domains and IPs: - ```bash - replicated network report NETWORK_ID --summary - ``` + ```bash + replicated network report NETWORK_ID --summary + ``` + + Watch for new network events: + + ```bash + replicated network report NETWORK_ID --watch + ``` + + Each of these commands outputs in JSON format. ## Related Topics From 6de8e9b1a8200818e22049aceb6ba43fa0ab7d80 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Wed, 15 Oct 2025 14:29:22 -0400 Subject: [PATCH 09/16] Remove redundant sections --- docs/vendor/testing-network-policy.md | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index d1fd4bf1fb..bc1f73b8b9 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -18,16 +18,6 @@ Compatibility Matrix also supports collecting network reports. Viewing a report Network policy enforcement is separate from network reporting. For greater flexibility in testing, the report captures all network activity whether the policy is set to `open` or `airgap`. -## Requirements -- Setting network policy from the CLI requires Replicated CLI 0.109.0 or later -- To set a network policy, the user must have the Admin or Developer role. Read Only users cannot change network settings. - -## Limitations -- Setting the network policy is supported only for VMs and [VM-based clusters](/vendor/testing-supported-clusters#vm-clusters) (K3s, RKE2, Embedded Cluster, kURL, Kind, OpenShift). Network policies are not supported for cloud-based clusters (EKS, GKE, AKE, OKE). -- You can change the network policy at any time, but note that policy changes terminate the current network report and start a new one. In this case, historical data from the previous policy remains available. -- Network events might have a one to two second delay before appearing in network reports -- Network reporting can only be enabled on running networks - ## Set Network Policy to `airgap` To simulate an air-gapped environment that prevents outbound network requests, you can change the policy for a network from `open` to `airgap`. Network policies are configured at the network level and apply to all VMs and clusters within the network. @@ -172,25 +162,28 @@ To collect and view a network report from the CLI: ``` 1. View the network report: - See all network events: + See network event summary that aggregates all unique domains and destination IPs, with connection counts and other details (JSON format): ```bash - replicated network report NETWORK_ID + replicated network report NETWORK_ID --summary ``` - See summary of all Domains and IPs: + See all network events (JSON format): ```bash - replicated network report NETWORK_ID --summary + replicated network report NETWORK_ID ``` - Watch for new network events: + Watch as new network events occur (JSON format): ```bash replicated network report NETWORK_ID --watch ``` + + :::note + Network events might have a one to two second delay before appearing in network reports. + ::: - Each of these commands outputs in JSON format. ## Related Topics From dc8b7ab28a4da67624d1043b64eb1fe5b4047856 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Wed, 15 Oct 2025 16:26:02 -0400 Subject: [PATCH 10/16] More detailed intro for airgap --- docs/vendor/testing-network-policy.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index bc1f73b8b9..d8b1469b45 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -121,7 +121,12 @@ To set the network policy of a VM: ## Collect and View Network Reports -You can collect network reports to analyze network events. Analyzing networking events is helpful to understand your application's behavior in air-gapped environments, such as when your application attempts to make outbound internet requests. +Compatibility Matrix network reporting helps you understand your application's network activity. Even when the network policy is set to `airgap` and network egress is blocked, all connection attempts and DNS queries are still captured in the report. This helps you identify unexpected network calls which might be inappropriate in an air-gapped environment. + +| Report Type | Contents | +|---|---| +| **Summary Report**
Aggregated analysis of
captured network events|
  • Total Events Count
  • Time Range (start/end)
  • Domain Names Requested (Domain, Count)
  • Destination IP Addresses Connected To (IP, Port, Count)
  • Details: Source IP, Service, Command, Pod
| +| **Full Report**
See all network events
captured in near real-time |
  • Timestamp
  • Source IP, Source Port, Source PID
  • Source Command, Source Pod
  • Destination IP, Destination Port
  • DNS Query Name
  • Protocol
  • Likely Service
| ### Vendor Portal From c6d0ed4cb9a5cb787d20a3d0cf20112a57d1e042 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Wed, 15 Oct 2025 16:32:05 -0400 Subject: [PATCH 11/16] Final edits for Network Reports --- docs/vendor/testing-network-policy.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index d8b1469b45..51d28af854 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -118,15 +118,14 @@ To set the network policy of a VM: ``` 1. (Optional) To verify that there is no outbound connectivity from the VM, enable network reporting and view network events. See [Collect and View Network Reports](#collect-and-view-network-reports). - ## Collect and View Network Reports -Compatibility Matrix network reporting helps you understand your application's network activity. Even when the network policy is set to `airgap` and network egress is blocked, all connection attempts and DNS queries are still captured in the report. This helps you identify unexpected network calls which might be inappropriate in an air-gapped environment. +Compatibility Matrix network reporting helps you understand your application's network activity. Even when the network policy is set to `airgap` and network egress is blocked, all connection attempts and DNS queries are still captured in the report. This helps you identify unexpected network calls before deploying to an air-gapped environment. | Report Type | Contents | |---|---| -| **Summary Report**
Aggregated analysis of
captured network events|
  • Total Events Count
  • Time Range (start/end)
  • Domain Names Requested (Domain, Count)
  • Destination IP Addresses Connected To (IP, Port, Count)
  • Details: Source IP, Service, Command, Pod
| -| **Full Report**
See all network events
captured in near real-time |
  • Timestamp
  • Source IP, Source Port, Source PID
  • Source Command, Source Pod
  • Destination IP, Destination Port
  • DNS Query Name
  • Protocol
  • Likely Service
| +| **Summary Report**
Aggregated analysis of
captured network events|
  • Total Events Count
  • Time Range (start/end)
  • Report Creation Date
  • Domain Names Requested (Domain, Count)
  • Destination IP Addresses Connected To (IP, Port, Count)
  • Source Details (expandable): Source IP, Service, Command, Pod
| +| **Full Report**
See all network events
captured in near real-time |
  • Timestamp (with microseconds)
  • Source IP, Source Port, Source PID
  • Source Command, Source Pod
  • Destination IP, Destination Port
  • DNS Query Name
  • Protocol
  • Likely Service
| ### Vendor Portal @@ -134,12 +133,11 @@ In Vendor Portal, you can set network policy, and collect network reports: 1. Go to **Compatibility Matrix** > **Network Policy**. -1. To collect a network report, toggle on the switch under **Reporting**. - -1. Toggle from `open` to `airgap` under **Policy Type** to block all network egress. +2. To collect a network report, toggle on the switch under **Reporting**. -1. Where available, click "View" under **Report** to see the reporting table. +3. Toggle from `open` to `airgap` under **Policy Type** to block all network egress. +4. Where available, click "View report" under **Report** to see the reporting table. You can also click "Export JSON" to download the raw report data. ### CLI @@ -152,7 +150,7 @@ To collect and view a network report from the CLI: ``` Where `NETWORK_ID` is the ID of the network. You can get the network ID by running `replicated network ls`. -1. (Optional) Confirm that reporting is `on` for the network: +1. (Optional) Confirm that reporting is **ON** for the network: ```bash replicated network ls @@ -186,7 +184,7 @@ To collect and view a network report from the CLI: ``` :::note - Network events might have a one to two second delay before appearing in network reports. + Network events are batched for display in the report, so appear with a short delay. ::: From 31da11f6637b04cb4e651f7e845efd1786a92115 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Wed, 15 Oct 2025 16:44:44 -0400 Subject: [PATCH 12/16] Remove note on policy delay --- docs/vendor/testing-network-policy.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index 51d28af854..d58d4dcf38 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -108,10 +108,6 @@ To set the network policy of a VM: replicated network update 85eb50a8 --policy airgap ``` - :::note - It can take a few seconds for the setting to apply. - ::: - ```bash ID NAME STATUS CREATED EXPIRES POLICY REPORTING 85eb50a8 silly_rosalind updating 2025-01-28 16:16 PST 2025-01-28 17:18 PST airgap off From 0578f4974034514efd58702acef5a89598917723 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Thu, 16 Oct 2025 10:01:29 -0600 Subject: [PATCH 13/16] copy edits --- docs/vendor/testing-network-policy.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index 51d28af854..59705a8d8d 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -2,7 +2,7 @@ This topic describes how to change the network policy of a virtual machine (VM) or a VM-based cluster with Replicated Compatibility Matrix, and how to collect and analyze network events to understand your application's behavior in air-gapped environments. -## Overview +## Set Network Policy to `airgap` VMs and [VM-based clusters](/vendor/testing-supported-clusters#vm-clusters) created with Compatibility Matrix can use one of the following network policies: @@ -13,14 +13,7 @@ VMs and [VM-based clusters](/vendor/testing-supported-clusters#vm-clusters) crea By default, all VMs and clusters are created with an `open` network policy. You can change the network policy to `airgap` to simulate an air-gapped environment with no outbound internet access. This `airgap` network policy is particularly useful for previewing how your application will perform in air-gapped end customer environments. -Compatibility Matrix also supports collecting network reports. Viewing a report of network events can help you understand your application's behavior in air-gapped environments, with details on outbound network requests. - -Network policy enforcement is separate from network reporting. For greater flexibility in testing, the report captures all network activity whether the policy is set to `open` or `airgap`. - - -## Set Network Policy to `airgap` - -To simulate an air-gapped environment that prevents outbound network requests, you can change the policy for a network from `open` to `airgap`. Network policies are configured at the network level and apply to all VMs and clusters within the network. +Network policies are configured at the network level and apply to all VMs and VM-based clusters within the network. ### For VM-Based Clusters @@ -118,9 +111,14 @@ To set the network policy of a VM: ``` 1. (Optional) To verify that there is no outbound connectivity from the VM, enable network reporting and view network events. See [Collect and View Network Reports](#collect-and-view-network-reports). + ## Collect and View Network Reports -Compatibility Matrix network reporting helps you understand your application's network activity. Even when the network policy is set to `airgap` and network egress is blocked, all connection attempts and DNS queries are still captured in the report. This helps you identify unexpected network calls before deploying to an air-gapped environment. +Compatibility Matrix network reporting helps you understand your application's network activity. To provide flexibility in testing, you can enable network reporting to capture all network activity, whether the network policy is set to `open` or `airgap`. Even when the network policy is set to `airgap` and network egress is blocked, all connection attempts and DNS queries are still captured in the report. This helps you identify unexpected network calls before deploying to an air-gapped environment. + +Network reporting is not enabled by default. For information about how to collect and view reports through the Vendor Portal or the Replicated CLI, see the sections below. + +The following table describes the contents of the supported network report types: | Report Type | Contents | |---|---| @@ -129,7 +127,7 @@ Compatibility Matrix network reporting helps you understand your application's n ### Vendor Portal -In Vendor Portal, you can set network policy, and collect network reports: +To set the network policy and collect and view reports in the Vendor Portal: 1. Go to **Compatibility Matrix** > **Network Policy**. From ed4c8a6874535b74d9910ba754d277e8482e3e90 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Thu, 16 Oct 2025 13:43:49 -0400 Subject: [PATCH 14/16] Update Network Report section with images --- docs/vendor/testing-network-policy.md | 24 +++++++++++++++---- static/images/cmx-network-report-summary.png | Bin 0 -> 104098 bytes static/images/cmx-network-report.png | Bin 0 -> 125828 bytes 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 static/images/cmx-network-report-summary.png create mode 100644 static/images/cmx-network-report.png diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index c2058fbd7a..507cd58785 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -114,12 +114,12 @@ Compatibility Matrix network reporting helps you understand your application's n Network reporting is not enabled by default. For information about how to collect and view reports through the Vendor Portal or the Replicated CLI, see the sections below. -The following table describes the contents of the supported network report types: +There are two types of network reports: | Report Type | Contents | |---|---| -| **Summary Report**
Aggregated analysis of
captured network events|
  • Total Events Count
  • Time Range (start/end)
  • Report Creation Date
  • Domain Names Requested (Domain, Count)
  • Destination IP Addresses Connected To (IP, Port, Count)
  • Source Details (expandable): Source IP, Service, Command, Pod
| -| **Full Report**
See all network events
captured in near real-time |
  • Timestamp (with microseconds)
  • Source IP, Source Port, Source PID
  • Source Command, Source Pod
  • Destination IP, Destination Port
  • DNS Query Name
  • Protocol
  • Likely Service
| +| **Running Report**
See all network events
captured in near real-time |
  • Timestamp (with microseconds)
  • Source IP, Source Port, Source PID
  • Source Command, Source Pod
  • Destination IP, Destination Port
  • DNS Query Name
  • Protocol
  • Likely Service
| +| **Report Summary**
Aggregated analysis of
captured network events|
  • Total Events Count
  • Time Range (start/end)
  • Report Creation Date
  • Domain Names Requested (Domain, Count)
  • Destination IP Addresses Connected To (IP, Port, Count)
  • Source Details (expandable): Source IP, Service, Command, Pod
| ### Vendor Portal @@ -129,10 +129,26 @@ To set the network policy and collect and view reports in the Vendor Portal: 2. To collect a network report, toggle on the switch under **Reporting**. -3. Toggle from `open` to `airgap` under **Policy Type** to block all network egress. +3. (Optional) Toggle from `open` to `airgap` under **Policy Type** to block all network egress. 4. Where available, click "View report" under **Report** to see the reporting table. You can also click "Export JSON" to download the raw report data. + :::note + When reporting is **ON** for an active network, all network events display in a **Running Report**. Once the network is terminated, the **Report Summary** is automatically generated. + ::: + + **Running Report** + + ![Network Policy page with running report, showing all network events captured](/images/cmx-network-report.png) + + [View a larger version of this image](/images/cmx-network-report.png) + + **Report Summary** + + ![Network Policy page with report summary, showing domain names and destination IPs](/images/cmx-network-report-summary.png) + + [View a larger version of this image](/images/cmx-network-report-summary.png) + ### CLI To collect and view a network report from the CLI: diff --git a/static/images/cmx-network-report-summary.png b/static/images/cmx-network-report-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..dece2373476a859b10d9a18e82e17f346b61d167 GIT binary patch literal 104098 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 M1=X`p<*)kw2aUovVgLXD literal 0 HcmV?d00001 diff --git a/static/images/cmx-network-report.png b/static/images/cmx-network-report.png new file mode 100644 index 0000000000000000000000000000000000000000..210099ca6fa9826bd3a6c1d3b02ac9c5e2769db8 GIT binary patch literal 125828 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 literal 0 HcmV?d00001 From 944f476752d41df72e881e3161cdc9c4bee904dc Mon Sep 17 00:00:00 2001 From: Han Yu Date: Thu, 16 Oct 2025 13:46:48 -0400 Subject: [PATCH 15/16] Update CLI reference --- .../replicated-cli-network-report.mdx | 49 +++++++++++++++++++ docs/reference/replicated-cli-network.mdx | 4 ++ sidebars.js | 1 + 3 files changed, 54 insertions(+) create mode 100644 docs/reference/replicated-cli-network-report.mdx diff --git a/docs/reference/replicated-cli-network-report.mdx b/docs/reference/replicated-cli-network-report.mdx new file mode 100644 index 0000000000..b0cddecd0d --- /dev/null +++ b/docs/reference/replicated-cli-network-report.mdx @@ -0,0 +1,49 @@ +# replicated network report + +Get network report + +### Synopsis + +Get a report showing network events for a specified network. You can view all network events, or use the --summary flag to see an aggregated analysis of captured network events. + +Network reporting is a beta feature. For more information, see [Test in Air Gap Environments (Beta)](/vendor/testing-network-policy). + +``` +replicated network report [network-id] [flags] +``` + +### Examples + +``` +# Get report for a network by ID (using positional argument) +replicated network report abc123 + +# Get report for a network by ID (using flag) +replicated network report --id abc123 + +# Watch for new network events (JSON Lines format) +replicated network report abc123 --watch +``` + +### Options + +``` + -h, --help help for report + --id string Network ID to get report for + --summary Get the report summary + -w, --watch Watch for new network events +``` + +### Options inherited from parent commands + +``` + --app string The app slug or app id to use in all calls + --debug Enable debug output + --token string The API token to use to access your app in the Vendor API +``` + +### SEE ALSO + +* [replicated network](replicated-cli-network) - Manage test networks for VMs and Clusters + + diff --git a/docs/reference/replicated-cli-network.mdx b/docs/reference/replicated-cli-network.mdx index 84f5cc4641..0ce402e7d0 100644 --- a/docs/reference/replicated-cli-network.mdx +++ b/docs/reference/replicated-cli-network.mdx @@ -16,6 +16,9 @@ replicated network ls # Update a network with an airgap policy replicated network update --policy airgap +# View network report +replicated network report --summary + ``` ### Options @@ -36,5 +39,6 @@ replicated network update --policy airgap * [replicated](replicated) - Manage your Commercial Software Distribution Lifecycle using Replicated * [replicated network ls](replicated-cli-network-ls) - List test networks +* [replicated network report](replicated-cli-network-report) - View network activity reports * [replicated network update](replicated-cli-network-update) - Update network settings diff --git a/sidebars.js b/sidebars.js index 4fc7f16c36..1a8103461b 100644 --- a/sidebars.js +++ b/sidebars.js @@ -673,6 +673,7 @@ const sidebars = { 'reference/replicated-cli-logout', 'reference/replicated-cli-network', 'reference/replicated-cli-network-ls', + 'reference/replicated-cli-network-report', 'reference/replicated-cli-network-update', 'reference/replicated-cli-registry', 'reference/replicated-cli-registry-add', From 1f2fb6e3f73fd57d1a376fcbe4cf2bfd1c2f0e02 Mon Sep 17 00:00:00 2001 From: Han Yu Date: Thu, 16 Oct 2025 14:02:23 -0400 Subject: [PATCH 16/16] Updating CLI output --- docs/vendor/testing-network-policy.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/vendor/testing-network-policy.md b/docs/vendor/testing-network-policy.md index 507cd58785..4eee2f18c5 100644 --- a/docs/vendor/testing-network-policy.md +++ b/docs/vendor/testing-network-policy.md @@ -53,7 +53,7 @@ To set the network policy of a VM-based cluster: ``` ```bash - ID NAME STATUS CREATED EXPIRES POLICY REPORTING + ID NAME STATUS CREATED EXPIRES POLICY HAS REPORT bdeb3515 gifted_antonelli running 2025-01-28 18:45 PST 2025-01-28 19:45 PST airgap off ``` @@ -102,7 +102,7 @@ To set the network policy of a VM: ``` ```bash - ID NAME STATUS CREATED EXPIRES POLICY REPORTING + ID NAME STATUS CREATED EXPIRES POLICY HAS REPORT 85eb50a8 silly_rosalind updating 2025-01-28 16:16 PST 2025-01-28 17:18 PST airgap off ``` @@ -169,7 +169,7 @@ To collect and view a network report from the CLI: **Example output:** ``` - ID NAME STATUS CREATED EXPIRES POLICY REPORTING + ID NAME STATUS CREATED EXPIRES POLICY HAS REPORT a1b2c3d4 example_network_1 running 2025-01-28 16:04 PST 2025-01-28 18:06 PST open off e5f6g7h8 example_network_2 running 2025-01-28 12:10 PST 2025-01-28 20:11 PST airgap on ```