Installing Runtime Fabric Using RTFCTL | MuleSoft Documentation
# Installing Runtime Fabric Using RTFCTL
You can use the Runtime Fabric command line tool, `rtfctl`, to install Anypoint Runtime Fabric on an Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Kubernetes Service Anywhere (Amazon EKS-A), Azure Kubernetes Service (AKS), Alibaba Cloud Container Service for Kubernetes (ACK), Google Kubernetes Engine (GKE), Rancher Kubernetes Engine (RKE) installation that you manage.
Runtime Fabric versions 2.2.5 or later that support multiple instances require `rtfctl` version 0.4.1 or later.   
---  
`rtfctl` always installs the latest version of Runtime Fabric agent.   
---  
Refer to scalability benchmarking to review the limits for `rtfctl`-based deployments. For larger deployments, use Helm-based Runtime Fabric deployments so you can allocate additional resources to the agent for optimal performance.
## Before you Begin
Before installing Anypoint Runtime Fabric in a Kubernetes environment, ensure:
  * You have reviewed the architecture and requirements outlined in Runtime Fabric
  * You have configured your network to support Runtime Fabric
  * You have installed and configured your Kubernetes environment with:
    * An ACK, AKS, EKS, EKS-A, GKE, or RKE Kubernetes environment. Other Kubernetes environments are not supported.
    * A supported Kubernetes version.
    * An ingress controller to send external requests to applications.
  * You create your clusters using the latest Runtime Fabric agent version available. If you can’t do so, refer to How to Specify the RTF Agent Version in Upgrades.


  * If you want to use a local registry with Runtime Fabric, follow the installation instructions in Using a Local Registry with Runtime Fabric. You must set up the local registry during installation.

  
---  
## RTFCTL Versions Compatibility
The following tables list the `rtfctl` versions compatibility with Runtime Fabric appliance 1.x.x agent versions and Runtime Fabric self-managed 2.x.x agent versions.
### Runtime Fabric Appliance 1.x.x
The following `rtfctl` versions are compatible with all supported Runtime Fabric agents on appliance clusters:
RTF appliance 1.x.x agent version | `rtfctl` version  
---|---  
All versions | 0.6.0-2.release-gravity  
All versions | 0.5.2-4.release-gravity  
All versions | 0.3.87 to 0.4.22  
### Runtime Fabric Self-Managed (BYOK) 2.x.x
The following `rtfctl` versions are compatible with Runtime Fabric agents in self-managed Kubernetes clusters:
RTF self-managed 2.x.x agent version | `rtfctl` version  
---|---  
1.0.79 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.4.1 or later  
0.3.87 to 1.0.12  
0.3.87 to 1.0.12  
0.3.87 to 1.0.12  
## Create a Runtime Fabric using Runtime Manager
To install Runtime Fabric, first create a Runtime Fabric using Runtime Manager. This is required to obtain the activation data which is needed during installation.
  1. From Anypoint Platform, select Runtime Manager.
  2. Click **Runtime Fabrics**.
  3. Click **Create Runtime Fabric**.
  4. Enter the name of the new Runtime Fabric, then select one of the following options:
     * Amazon Elastic Kubernetes Service
     * Azure Kubernetes Service
     * Google Kubernetes Engine
  5. Click **Next**.
  6. Click **rtfctl**.
  7. Review the **Support responsibility** disclaimer, then if you agree click **Accept**.
Runtime Manager creates the Runtime Fabric and displays the Activation State page. This page displays the activation data used to install Runtime Fabric on a Kubernetes service. Copy this data to the clipboard for use in the next section.


When creating the Runtime Fabric, the business unit you choose is set as the owner business unit. This business unit is referenced in usage reports for reporting allocated cluster capacity. Ensure that you select the correct business unit during installation.
## Download the rtfctl Utility
Runtime Fabric uses the `rtfctl` command-line utility for installation and management tasks. See Install the Runtime Fabric Command Line Tool.
  1. Download the `rtfctl` command-line utility:
`rtfctl` is supported on Windows, MacOS (Darwin), and Linux. Choose the appropriate method:
     * Windows
```
curl -L https://anypoint.mulesoft.com/runtimefabric/api/download/rtfctl-windows/latest -o rtfctl.exe
```

     * MacOS (Darwin)
```
curl -L https://anypoint.mulesoft.com/runtimefabric/api/download/rtfctl-darwin/latest -o rtfctl
```

     * Linux
```
curl -L https://anypoint.mulesoft.com/runtimefabric/api/download/rtfctl/latest -o rtfctl
```

  2. Change file permissions for the `rtfctl` command-line utility:
```
sudo chmod +x rtfctl
```



## Install Runtime Fabric
After creating a Runtime Fabric in Runtime Manager and obtaining the activation data, install Runtime Fabric into your Kubernetes service using the `rtfctl` command-line utility.
If your Kubernetes configuration is not located in the `\~/.kube/config` directory, set the `KUBECONFIG` environment variable before running `rtfctl`:
```
export KUBECONFIG=<path-to-kubeconfig>
```

  1. Validate that your Kubernetes environment is ready for installation:
```
rtfctl validate <activation_data>
```

The `validate` option verifies that:
     * The Kubernetes environment is running.
     * All required components exist.
     * All required services are available.
The `rtfctl` command-line utility outputs any incompatibilities with the Kubernetes environment.
  2. Install Runtime Fabric:
```
rtfctl install <activation_data>
```

`<activation_data>` is the activation data obtained after creating the Runtime Fabric using Runtime Manager. During installation, the `rtfctl` utility displays any errors encountered.


For private registry installations, add the `--cluster-ops-image` flag and select the image version as per the release notes of the agent version to install:
```
rtfctl install <ACTIVATION_DATA> --cluster-ops-image <local-reg-host>/mulesoft/rtf-cluster-ops:<version-here>
```

## Insert the Mule License Key
If you didn’t add the Mule license key during install, you can add it using the `rtfctl` command line utility or Helm.
Before you install the license key, encode it to Base64 format.
### Encode the License Key
  * On MacOS, run the following command:
```
base64 -b 0 -i <license-file>
```

  * On Unix, run the following command:
```
base64 -w0 <license-file>
```

  * On Windows, choose one of the following:
    * Use a WSL or Cygwin shell that includes the base64 tool and use the above Unix command.
    * Use the base64.exe program included with Windows git (C:\Program Files\Git\usr\bin).
    * Use the following Powershell command:
```
$BASE64_ENCODED_LICENSE=[convert]::ToBase64String((Get-Content -path "license.lic" -Encoding byte))
```



### Apply the License Key Using rtfctl
  1. On the controller node acting as the leader during installation (the installer node), run the following command:
```
rtfctl apply mule-license $BASE64_ENCODED_LICENSE
```

You can also apply the Mule license providing the file path directly:
```
rtfctl apply mule-license --file /path/to/license.lic
```

Any value used with `rtfcl apply` updates does not work for OpenShift. You have to update the values in the OpenShift console.   
---  
  2. To verify the Mule license key has applied correctly, run:
```
rtfctl get mule-license
```



### Apply the License Key Using Helm
To apply the license using Helm, run the following command:
```
helm upgrade runtime-fabric rtf/rtf-agent --set muleLicense=$BASE64_ENCODED_LICENSE -n rtf --reuse-values --version <current-version>
```

## Configure the Ingress Resource Template
If your ingress controller requires custom annotations and ingress class definition, follow the instructions in Defining a Custom Ingress Configuration.
For GKE customers, the ingress controller included with GKE will provision a separate HTTP load balancer per application by default. Please read this KB article for more details.  
---  
## Validate Your Runtime Fabric
After completing the installation, your Runtime Fabric should be activated within your Anypoint organization. To validate your installation, go to Anypoint Runtime Manager and confirm that the status of the Runtime Fabric is `Active`.
Before deploying an application to your Runtime Fabric:
  1. Associate the Runtime Fabric with at least one Anypoint environment.
  2. Review and update the Inbound Traffic settings based upon your Kubernetes environment.
  3. Deploy an application to verify that Runtime Fabric is installed and configured correctly.
Any value used with `rtfcl apply` updates does not work for OpenShift. You have to update the values in the OpenShift console.   
---  
  2. To verify the Mule license key has applied correctly, run:
```
rtfctl get mule-license
```



### Apply the License Key Using Helm
To apply the license using Helm, run the following command:
```
helm upgrade runtime-fabric rtf/rtf-agent --set muleLicense=$BASE64_ENCODED_LICENSE -n rtf --reuse-values --version <current-version>
```

## Configure the Ingress Resource Template
If your ingress controller requires custom annotations and ingress class definition, follow the instructions in Defining a Custom Ingress Configuration.
For GKE customers, the ingress controller included with GKE will provision a separate HTTP load balancer per application by default. Please read this KB article for more details.  
---  
## Validate Your Runtime Fabric
After completing the installation, your Runtime Fabric should be activated within your Anypoint organization. To validate your installation, go to Anypoint Runtime Manager and confirm that the status of the Runtime Fabric is `Active`.
Before deploying an application to your Runtime Fabric:
  1. Associate the Runtime Fabric with at least one Anypoint environment.
  2. Review and update the Inbound Traffic settings based upon your Kubernetes environment.
  3. Deploy an application to verify that Runtime Fabric is installed and configured correctly.


## Perform a Rollback
To roll back to a previous version of Runtime Fabric trigerred automatically on failed upgrade, refer to the How to Specify the RTF Agent Version in Upgrades Knowledge base article for details.
## See Also
  * Runtime Fabric Overview
  * Configure Ingress for Runtime Fabric
  * Deploy a Mule Application to Runtime Fabric