# Overview

Get to know the features of Infra App - The simplest Kubernetes desktop client that fits your workflow. It is available for MacOS, Windows and Linux.

### The Interface

Once you've [downloaded](https://infra.app/download) and started Infra App, you'll be presented with the main user interface. Below is a quick guide to help you navigate the app.

### Main View

![](/files/-MKCKgPL3yaQYe1vrfc0)

1. **The Cluster Switcher.** The cluster switcher is where you can switch between your configured Kubernetes Clusters. By default Infra App detects your local Kubernetes Configuration file (Kubeconfig) and can be extended by adding your own configuration file by selecting **Add Configuration** in the dropdown or via the hotkey **⌘+O**.
2. **Activity Tabs.** The ***application tab*** allows you to view main Kubernetes workloads including CronJob/Job, DaemonSet Deployment, Pods, and StatefulSet. The ***all resources*** tab allows you to view all the resources in the cluster or per namespace if a namespace is selected on the left-hand bar.&#x20;
3. **Search Bar**. In the search bar, you will be able to search for different Kubernetes resources by its name or namespace.&#x20;
4. **Browse.** In this view, Infra App will display everything in the Kubernetes cluster based on Applications (workloads) or All Resources. To filter for particular namespaces, please select a namespace from the left hand bar.&#x20;
5. **Utilization.** The utilization page displays the health of the cluster including a summary of CPU / Memory usage/requests/limits for the whole cluster and individual nodes.&#x20;
6. **Resource View.** This section displays a summary of the Kubernetes resources based on the filters selected.&#x20;

### Resource Detail

![](/files/-MKCMAHlfyym3SJpNV9d)

1. **Activity Tabs.** You can use the activity tabs to switch between **Overview**, **Logs**, **Events**, and **YAML** for the particular resource.&#x20;
   1. **Logs tab**. Infra App will **automatically aggregate** all the logs for this workload from different pods and containers in **real-time**. By default the log streamer will auto-refresh when the scroll bar is scrolled to the bottom. The log stream will stop auto-scrolling when you move the scroll bar away from the bottom.
   2. **Events tab.** In the events tab, Infra App automatically fetches all the related events pertaining to this resource -- such as volumes, endpoints, controllers, and more.&#x20;
   3. **YAML tab.** YAML tab will show you the YAML file used to set-up the resource with the ability to **edit**.&#x20;
2. **Resource Status.** Resource status shows the current status of the resource as reported by Kubernetes.
3. **Overview.** Here you will find the kind of the resource, the namespace it's associated with, its age, the labels attached to the workload, and the image(s) the resource is currently using.
4. **Utilization.** For CPU / Memory utilization, Infra App automatically detects whether you have metrics-server installed by looking at the Kubernetes metrics endpoint.
5. **Pods.** In the pods section, you will be able to see a list of all related pods and its current status.
6. **Pod Actions.** In the actions dropdown via the **"..." button** or via **right-click,** you will be able to perform actions on individual pods such as **open shell** to a particular container, view logs from a pod, and ability to delete a pod.
7. **Related Resources**
   1. **Services.** In the services section, you will be able to see the type of the service(s) and its endpoints. Infra App makes the endpoints hyperlinked so you can click on it to see the result in a web browser if supported.
   2. **Ingresses**. If your cluster is using an IngressController and you are routing traffic to this resource, the ingress rules will show up here.
   3. **Config Maps.** For resources with a configuration map, you'll be able to view it in this section.
   4. **Persistent Volume Claims.** Infra App will show any related Persistent volume claims.&#x20;

### Utilization

![](/files/-MKCOh6ax9hahVoke-ON)

1. **Overview.** High-level details about the cluster, including the total number of node and pods with its capacity.&#x20;
2. **Utilization.** CPU & Memory utilization percentages of the cluster, broken down by usage, requests & limits. This tells you how full your cluster is in terms of actual usage but also in terms of resources requested by workloads.
3. **Nodes.** The nodes connected to this cluster and their statuses. Click on a node to view its detail, or click on the table headers to sort nodes. For example, you can sort by Memory to view which nodes are closest to being over capacity.
4. **Utilization switcher.** View node utilization in terms of usage, requests or limits.

### Node Detail

![](/files/-MKCT9UVzN2ToGi6dOZM)

1. **Activity Tab.** You can use the activity tabs to switch between **Overview**, **Events**, and **YAML** for the particular node.&#x20;
2. **Node Status.** Tells you if this node is running and accepting resources.
3. **Overview.** High-level details about the node, including it's total pod usage & capacity and IP addresses.
4. **Utilization.** Similar to cluster utilization, this section tells you the CPU & Memory utilization percentages of the node, broken down by usage, requests & limits.
5. **Pods.** Shows you which pods are running on this node. Pods are sorted by status by default but you can sort them by CPU & Memory to see which are using the most resources on this node.
6. **Detail**. View labels & annotations for this node. This is handy to view metadata provided by the cloud provider.


# Getting started

Get started by connecting Infra App to your Kubernetes Clusters

### Download Infra App

Visit <https://infra.app/download> to download the latest version of Infra App

{% hint style="info" %}
**Additional instructions for Linux AppImage**

If using the AppImage format, make sure to mark the app as executable. For example, on Ubuntu, this can be done by right-clicking on the AppImage file, clicking on Permissions, and then "Allow executing file as program"

&#x20;<img src="/files/-MMXsfROIxJMKNIpTzhU" alt="" data-size="original">&#x20;

Or on the command line, run`chmod +x ./Infra-0.43.0.AppImage`
{% endhint %}

### Connect your Kubernetes cluster

Upon starting, Infra App will automatically look at your local Kubernetes configuration to discover clusters you have access to.

{% hint style="info" %}
**Not seeing any Kubernetes clusters?**

If Infra App doesn't detect your Kubernetes clusters check out one of the [guides below](/getting-started#connection-guides-for-common-kubernetes-providers) on connecting Infra App to an existing Kubernetes cluster.&#x20;

If you don't have a Kubernetes cluster, we recommend trying Infra App with [Docker Desktop](/connect-your-cluster/docker-desktop).
{% endhint %}

Locally discovered clusters appear in the Cluster Switcher, as shown below.

![](/files/-MKCYzf7cR6dMDVon4DM)

Infra App will automatically load your active cluster, if you have one:

![](/files/-MKCg9NswNI3E0NcgCAL)

And that's it. You're up and running with Infra App.

### Connection guides for common Kubernetes providers

{% content-ref url="/pages/-MBocR-Yx\_YAFSVWUfG4" %}
[Amazon Web Services (EKS)](/connect-your-cluster/amazon-web-services-eks)
{% endcontent-ref %}

{% content-ref url="/pages/-MBocZ2T3EsZV-gJdUL9" %}
[Google Cloud Platform (GKE)](/connect-your-cluster/google-cloud-platform-gke)
{% endcontent-ref %}

{% content-ref url="/pages/-MBocbfpZ-Wt8oULeQS7" %}
[Digital Ocean (DOKS)](/connect-your-cluster/digital-ocean-doks)
{% endcontent-ref %}

{% content-ref url="/pages/-MBtffoU0JKcxQKGHRHo" %}
[Docker Desktop](/connect-your-cluster/docker-desktop)
{% endcontent-ref %}

{% content-ref url="/pages/-MBtfaTZBh7g2UcwHFhv" %}
[Minikube](/connect-your-cluster/minikube)
{% endcontent-ref %}

If you aren't using any of the above, check out the [this guide](/connect-your-cluster/other-clusters) on connecting any other Kubernetes cluster.


# Amazon Web Services (EKS)

Connect your AWS Elastic Kubernetes Service clusters to Infra App.

{% hint style="info" %}
Infra App connects automatically to most clusters. If running `kubectl` works without any modifications or custom scripts, then Infra App will also work out of the box.
{% endhint %}

### Prerequisites

* Create an [EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
* Download and setup the [AWS CLI](https://www.google.com/search?q=aws+cli+v2\&oq=aws+cli+v2\&aqs=chrome..69i57j69i59j69i60l4.765j0j7\&sourceid=chrome\&ie=UTF-8) (preferably version 2)
* [Configure the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) with the credentials AWS user that has access to the cluster

### Generating a config file

[Create a config file entry](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) using the `aws` CLI. For example:

```bash
aws eks --region <region-code> update-kubeconfig --name <cluster_name>
```

You're done! Infra App should automatically switch to your cluster. You can switch to it at any time via the cluster dropdown:

![](/files/-MKCh7FQ1vexF0q_U-Qu)

### Installing Metrics Server

AWS EKS clusters don't include metrics server by default, so real-time CPU & Memory usage metrics won't show out of the box with Infra App.

Follow the [official guide](https://docs.aws.amazon.com/eks/latest/userguide/metrics-server.html) on the AWS docs site to install metrics server on your cluster.

### Usage with custom profiles

In order to use a custom AWS profile to connect to your cluster, you'll need to edit your Kubernetes config file. This file is usually found in:

* `~/.kube/config` on macOS and Linux
* `C:\Users\<your user>\.kube\config` on Windows

Open this file and edit the relevant user object in the `users:` section. add an `AWS_PROFILE` environment variable .

```yaml
users:
- name: arn:aws:eks:us-east-1:00919287195771:cluster/example-cluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - --region
      - us-east-1
      - eks
      - get-token
      - --cluster-name
      - example-cluster
      command: aws
      # Add these lines to your KubeConfig
      env:
      - name: AWS_PROFILE
        value: <your profile>
```

### Usage with `aws-iam-authenticator`

Older EKS clusters may use `aws-iam-authenticator` to generate tokens. If your cluster uses this make sure it's [installed](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) before using Infra App.

### Usage with `aws-okta`

Usage with `aws-okta` is not supported yet, but we are working on it.

### Usage with `aws-vault`

Usage with `aws-vault` is not supported yet, but we are working on it.


# Google Cloud Platform (GKE)

Connect your GCP Google Kubernetes Engine Service clusters to Infra App.

{% hint style="info" %}
Infra App connects automatically to most clusters. If running `kubectl` works without any modifications or custom scripts, then Infra App will also work out of the box.
{% endhint %}

### Prerequisites

* [Create a GKE cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-cluster)&#x20;
* [Download and install](https://cloud.google.com/sdk/install) the Google Cloud SDK (this includes the `gcloud`  CLI tool)
* [Login ](https://cloud.google.com/sdk/gcloud/reference/auth/login)with a user that has access to the cluster via `gcloud auth login`

### Generate the config file

[Create a config file entry](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#generate_kubeconfig_entry) using  `gcloud`. For example:

```
gcloud container clusters get-credentials <cluster-name>
```

You're done! Infra App will discover the entry in your Kubernetes config file and automatically switch to your cluster. At any time you can access this cluster via the Cluster Switcher:

![](/files/-MKCh4mpJ9OmJ0P9U5Et)


# Digital Ocean (DOKS)

Connect your Digital Ocean Kubernetes clusters to Infra App.

### Prerequisites

* [Create a Kubernetes cluster](https://www.digitalocean.com/docs/kubernetes/how-to/create-clusters/) on Digital Ocean

### Download the cluster's config file

Log into Digital Ocean, click on Kubernetes in the sidebar, and then click on the cluster you want to connect to Infra App. On the main cluster view click on **Download Config File**.

![](/files/-MBoclPYl0JGPlkhfpOO)

### Add the cluster's config file into Infra App

In Infra App, click on File → Add Configuration

![](/files/-MBocnWixj6p37MuJH8Y)

Choose configuration file you downloaded from Digital Ocean. Infra App will automatically connect to the cluster.

You're done! You can switch to your cluster anytime via the cluster switcher:

![](/files/-MKCh1SD-X52FfwsYUDB)

{% hint style="warning" %}
On older versions of Kubernetes, the certificates in Digital Ocean DOKS configuration files expire after 7 days. Read more [here](https://www.digitalocean.com/docs/kubernetes/how-to/connect-to-cluster/) on how to renew the certificates in this case.
{% endhint %}

### Installing Metrics Server

Digital Ocean Kubernetes clusters don't include metrics server by default. To install metrics server, follow the [installation guide](https://marketplace.digitalocean.com/apps/kubernetes-metrics-server) provided by Digital Ocean.


# Docker Desktop

Connect Infra App to your local Kubernetes cluster in Docker Desktop

### Prerequisites

* Install [Docker Desktop](https://www.docker.com/products/docker-desktop)

### Enable Kubernetes

Access Docker Desktop preferences by click on the Docker Desktop menu bar icon and then **Preferences...**

![](/files/-MBuGWlndQbsRQj8eWan)

Navigate to **Kubernetes** in the sidebar, then click **Enable Kubernetes.** Finally click **Apply & Restart**

![](/files/-MBuGbqbx0u_UvzQ-r_T)

### Connect Infra App

Infra App will automatically work with Docker Desktop. Simply open it by clicking on the **Cluster Switcher** and then choosing **docker-desktop:**

![](/files/-MKChMlBD3M20aVppUgT)

Voila! Infra App is now connected to Docker Desktop's Kubernetes cluster:

### Installing Metrics Server

Metrics server isn't included with Docker Desktop's installation of Kubernetes, and the default metrics-server setup guide won't work out of the box. Follow the steps below to install metrics server:

Download the latest `components.yaml` file from <https://github.com/kubernetes-sigs/metrics-server/releases> and open it in your text editor.

Then, add the line `--kubelet-insecure-tls` under the `args:` section:

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: metrics-server
  namespace: kube-system
  labels:
    k8s-app: metrics-server
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  template:
    metadata:
      name: metrics-server
      labels:
        k8s-app: metrics-server
    spec:
      serviceAccountName: metrics-server
      volumes:
      # mount in tmp so we can safely use from-scratch images and/or read-only containers
      - name: tmp-dir
        emptyDir: {}
      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.6
        imagePullPolicy: IfNotPresent
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
          - --kubelet-insecure-tls # Add this line
        ports:
        - name: main-port
          containerPort: 4443
          protocol: TCP
        securityContext:
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000
        volumeMounts:
        - name: tmp-dir
          mountPath: /tmp
      nodeSelector:
        kubernetes.io/os: linux
        kubernetes.io/arch: "amd64"
```

{% hint style="warning" %}
**Warning**: This setting should only be used for the local Docker Desktop Kubernetes cluster, and not recommended for any hosted or production clusters.
{% endhint %}

Last, apply the modified `components.yaml` config file to your cluster.

```
kubectl apply -f components.yaml
```


# Minikube

Connect Infra App to your local minikube Kubernetes cluster

### Prerequisites

* Install and start [Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/)

### Connect Infra App

Infra App will automatically discover the Minikube cluster. Switch to it by selecting the **Cluster Switcher** and then **minikube**:

![](/files/-MKChrGvmkfrlBv0L2Dt)

### Installing Metrics Server

Minikube doesn't include metrics server by default. You can install it via the minikube `addons` command:

```
minikube addons enable metrics-server
```


# Other Clusters

Connect any other Kubernetes cluster to Infra App via manual configuration

### How Infra App detects clusters

Similarly to `kubectl`, Infra App looks for your default Kubernetes configuration file (also commonly referred to as KubeConfig) to discover clusters. This file is found under:

* `~/.kube/config` on macOS and Linux
* `C:\Users\<your user>\.kube\config` on Windows

### Adding additional config files

Some Kubernetes providers (such as IBM Cloud or Digital Ocean) don't use the default Kubernetes config file. Infra App can connect to these clusters as well. Simply click on the Cluster Switcher and then **Add Configuration...**

![](/files/-MKChywAsTHYgxygWggF)

### Still having trouble connecting?

If you're still having trouble connecting Infra App to your cluster, feel free to shoot us an [email](mailto:contact@infra.app)


# CPU & memory utilization

View resource utilization for your cluster's applications and nodes

### Overview

Infra App provides real-time information about cluster and workload utilization, so you can identify how resources such as CPU and Memory are being used and reserved across your Kubernetes cluster.

{% hint style="info" %}
**Metrics Server Required**

CPU & memory utilization will work out of the box with most clusters. For real-time usage metrics, you'll need to make sure the official Kubernetes [metrics server](https://github.com/kubernetes-sigs/metrics-server) is installed. Many cloud Kubernetes providers such as GKE include it by default.
{% endhint %}

### Resource utilization

In the main view, Infra App shows the resource utilization of each resource at a glance. Infra App automatically adds up all the resources used by all pods of your resource, so you can view the total footprint of your workload across the cluster:

![](/files/-MKCm1GSYbxaZe1aKykr)

**To view top resources by utilization,** click on **CPU Usage** or **Memory Usage** in the table to sort the resources:

![](/files/-MKCm8oKrhMKvbC3N7c4)

### Individual resource utilization

By clicking on an individual resource, you can see more details about its CPU & Memory utilization:

![](/files/-MKCmHkvoNIgecwizBNS)

{% hint style="info" %}
**Hint:** CPU & Memory Percent is calculated by comparing the workload's usage against (in order):

* Requests (if set)
* Limits (if set)
* Total cluster capacity
  {% endhint %}

To further view a resource's utilization breakdown by pod, the pod table includes the utilization per-pod:

![](/files/-MBuOYSDRe-Ep7nD2_l-)

### Cluster Utilization

In the utilization view, Infra App shows what percent your Kubernetes cluster's resources are being used:

![](/files/-MKCmUhdGGokTDGoGtDy)

In this case, the cluster is almost out of CPU requests, meaning that future resources may not be successfully deployed by Kubernetes.

### Node Utilization

In the utilization view, Infra App includes a list of nodes with CPU & Memory utilization included. You can switch between usage, requests and limits to compare different utilization metrics for your nodes.

![](/files/-MKCmdEJ_U8uqEpUFEHv)

Clicking on a node in the table, you'll see the node's utilization at a glance:

![](/files/-MKCmiop0_NTbZjhFjdf)

Lastly, a list of pods on the node view can show you how resources are allocated on this node:

![](/files/-MKCmmnpAkuLiXAimVG-)


# Container shell access

Debug an app hosted on Kubernetes by opening a shell to its container

### Opening a Shell

When viewing a workload, click on the ***...*****&#x20;button** (or right click) on any pod, and then click **Open Shell** to open a new shell session with a pod's container. If there are many containers, Infra App will show a list of containers to choose from.

![](/files/-MKCiVbXWg5RDegJw4rF)

Once connected, this session will persist until you close it or change clusters in Infra App.

![](/files/-MKCiTkWhuKOL7JbrP_u)

To close the shell, simply click on the **X** button in the top right of the terminal view.&#x20;

{% hint style="warning" %}

#### Not all containers can open a shell

Not all containers include files required to open shell access. You may receive an error such as `OCI runtime exec failed: exec failed.`&#x20;
{% endhint %}


# Log search & filtering

Stream & search logs in Infra App

### Overview

Infra App automatically streams live logs from all of the pods and containers of a workload, including:

* Sidecar containers
* Init containers

{% hint style="info" %}
To avoid fetching excessive data, Infra App streams your application's *most recent* 50 pods.
{% endhint %}

### Filtering Logs

To filter logs by a specific container , click the container dropdown.&#x20;

![](/files/-MKClIskrL86nj-k7WxX)

{% hint style="info" %}
The container filter will only show if there are multiple containers to filter.&#x20;
{% endhint %}

### Searching Logs

Searching logs works like a regular web browser or text editor - Infra App will automatically jump to the first result.

![](/files/-MKCleRb1sogTQQZDl4P)

{% hint style="info" %}
Press **Enter** to cycle to the next search result, and **Shift + Enter** to cycle backwards.
{% endhint %}


# Editing Resources / Nodes

Edit a workload to make ad-hoc changes

### Use Cases

Editing a resource or node can be handy for several use cases:

* Changing resource constraints
* Scaling a resource (by editing the workload's **replicas** field)
* Updating the workload image to trigger a rollout of a new version

### Editing a Resource

First, click on the workload in Infra App. Then on the **YAML** tab:

![](/files/-MKCj-kSgY3UyfEzfFlW)

Next, make changes to the YAML directly inline. You'll notice the **Apply** button become clickable. Click this button and confirm your changes to continue.

![](/files/-MKCjFRMpnPAtM2FBXhd)

That's all. Your workload should now begin to reflect your changes.&#x20;

### Common Errors

* `Version out of date` this can occur if the workload is updated in the background while making edits. Click **Revert** and then re-apply changes on the latest version of the workload.


# Deleting Pods

Delete a workload's pod through Infra App

To delete a pod in Infra App, first click on the resource:

![](/files/-MKCjfzft9H_5TfSxYLs)

Next, under **Pods**, find the pod you'd like to delete.

Click on the **...** to open the actions menu. Next, click **Delete Pod** as shown below:

![](/files/-MKCjhidoEFifCIIi-fo)

After confirming, your pod will be deleted.


# Clusters with RBAC

Using Infra App in RBAC-enabled clusters

Infra App is designed to work out of the box with RBAC-enabled environments. It assumes users have one of two roles:

* Full cluster access
* Single-namespace access

### Single Namespace access

#### Kubernetes configuration file

Infra App looks at the `context` entry the Kubernetes configuration file (KubeConfig) to know which namespace it should attempt to load for the user. For example:

```yaml
- context:
    cluster: gke_test-cluster-abcdefg_us-central1-c_cluster-1
    namespace: default # This tells Infra App which namespace to use
    user: gke_test-cluster-abcdefg_us-central1-c_cluster-1
  name: gke_test-cluster-abcdefg_us-central1-c_cluster-1-single-namespace
```

#### Required RBAC Rules

The configuration below outlines the permissions Infra App needs for a single-namespace user. Note that Infra App will work continue to work gracefully if users can't access the full list of resources.

```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default #replace with your namespace
  name: example-role #replace with your role name
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log", "events", "services", "configmaps", "persistentvolumeclaims", "endpoints"]
  verbs: ["get", "watch", "list", "delete"]
- apiGroups: [""] # For pod shell access
  resources: ["pods/exec"]
  verbs: ["get", "watch", "create"]
- apiGroups: ["extensions", "apps"]
  resources: ["deployments", "replicasets", "statefulsets", "daemonsets"]
  verbs: ["get", "watch", "list"]
- apiGroups: ["extensions", "batch"]
  resources: ["jobs", "cronjobs"]
  verbs: ["get", "watch", "list"]
- apiGroups: ["extensions", "networking.k8s.io"] # For ingresses
  resources: ["ingresses"]
  verbs: ["get", "watch", "list"]
- apiGroups: ["metrics.k8s.io"] # For metrics access
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
```


# FAQs

Answers to common questions about Infra App

#### What is Infra App?

Infra App is a Desktop client to manage Kubernetes from Mac, Windows or Linux.

#### Does Infra App support connecting to my cluster via an HTTP/HTTPS proxy?

Not currently, this feature is on our roadmap.

#### Does Infra App support connecting to my cluster via OpenID Connect (OIDC)?

Not currently, this feature is on our roadmap.

#### Does Infra App support connecting to my cluster via Okta?

Not currently, this feature is on our roadmap.

#### I'm seeing an error when connecting to my cluster and I don't know how to fix it. What should I do?

If you're using a Kubernetes solution such as AWS EKS, Docker Desktop, first check out the [docs](/connect-your-cluster/amazon-web-services-eks).

If this doesn't help, contact us [via email](mailto:contact@infra.app) so we can ask more about how your cluster is set up.

#### How often do resource metrics (e.g. CPU & memory) update?

CPU & Memory values update every 5 seconds Note that values may not change this often, as the Kubernetes metrics server will often keep a 30-second rolling average.

#### Does Infra App support large clusters?

We test Infra App internally against large clusters, and many use it with 100+ node clusters. For connecting Infra App to very large Kubernetes clusters with 100s or 1000s of nodes, please [contact us](mailto:contact@infra.app).

#### Is Infra App Secure? Where is my data stored?

All cluster data is downloaded directly from your cluster to Infra App running on your computer (locally). No cluster data is ever sent to Infra App's servers. Further, we:

* Scan Infra App for vulnerabilities before every release and on monitor a continual basis.
* Force HTTPS on all connections and downloads


