> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensor9.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EKS

> Managed Kubernetes, where AWS runs and patches the control plane while worker nodes run in your VPC.

**On this page**

* [Coverage by target cloud](#coverage-by-target-cloud)
* [How the targets compare](#how-the-targets-compare)
  * [Max adaptation](#max-adaptation)
  * [Infrastructure-only adaptation](#infrastructure-only-adaptation)
* [On Google Cloud](#on-google-cloud)
* [On Azure](#on-azure)
* [On OCI](#on-oci)
* [On Private Kubernetes](#on-private-kubernetes)

## Coverage by target cloud

| Target             | Available |
| ------------------ | --------- |
| Google Cloud       | ✓         |
| Azure              | ✓         |
| OCI                | ✓         |
| Private Kubernetes | ✓         |

## How the targets compare

Each row compares a capability of EKS with its adaptation on each target.
A dash means this row is not stated for that target.

### Max adaptation

| Capability                                      | EKS                                              | Google Cloud                                                                                                                   | Azure                                                                                                                   | OCI                                                                                                                                                                                  |
| ----------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Control plane · who operates it                 | EKS managed control plane                        | GKE Standard, regional (control plane across multiple zones), Google-operated                                                  | azurerm\_kubernetes\_cluster, Microsoft-operated; SystemAssigned cluster identity                                       | oci\_containerengine\_cluster ENHANCED\_CLUSTER, Oracle-operated                                                                                                                     |
| Kubernetes version · version selection          | requested minor version (e.g. 1.29)              | release channel (STABLE); the build reports the selected minor version, which may differ from the requested version            | -                                                                                                                       | -                                                                                                                                                                                    |
| Node groups → node pools · machine mapping      | aws\_eks\_node\_group (instance\_types)          | one node pool per group; same hardware class (m5→n2/e2, c5→c2, arm→t2a, GPU→g2/L4; default e2-medium); region-wide autoscaling | -                                                                                                                       | -                                                                                                                                                                                    |
| Workload identity (IRSA → WI)                   | Yes - IRSA (OIDC + AssumeRoleWithWebIdentity)    | Yes - GKE Workload Identity                                                                                                    | -                                                                                                                       | Partial - OKE Workload Identity, the OCI-native analog: workload-principal policies scoped to cluster, namespace and service account                                                 |
| Private cluster endpoint                        | Yes                                              | Partial - public control-plane endpoint; a private endpoint is not part of this equivalence, surfaced                          | Partial - public control-plane endpoint; a private endpoint is not part of this equivalence, surfaced                   | Yes - private in this mapping; a public-access origin gets a network-access warning, not an apply failure                                                                            |
| Add-ons · core vs custom                        | EKS add-ons (vpc-cni/coredns/kube-proxy/ebs-csi) | GKE platform components (managed for you); a non-core add-on with no analog is dropped and surfaced                            | -                                                                                                                       | -                                                                                                                                                                                    |
| API coverage                                    | full                                             | high                                                                                                                           | high                                                                                                                    | high                                                                                                                                                                                 |
| Kubernetes version · version selection          | requested minor version                          | -                                                                                                                              | AKS recommended default; the build reports the selected minor version, which may differ from the requested version      | a supported patch of your requested minor version; exact patch chosen at plan time, surfaced                                                                                         |
| Node groups → node pools · machine mapping      | aws\_eks\_node\_group                            | -                                                                                                                              | default\_node\_pool + one node pool per additional group; VM size in the same hardware class, default Standard\_D2s\_v5 | -                                                                                                                                                                                    |
| Workload identity (IRSA → WI)                   | Yes - IRSA                                       | -                                                                                                                              | Yes - Azure Workload Identity: OIDC issuer + UAMI + federated identity credential                                       | -                                                                                                                                                                                    |
| Add-ons · core vs custom                        | EKS add-ons                                      | -                                                                                                                              | AKS platform components (managed for you); non-core add-on with no analog dropped and surfaced                          | -                                                                                                                                                                                    |
| Node groups → node pools · shapes + autoscaling | aws\_eks\_node\_group (scaling\_config min/max)  | -                                                                                                                              | -                                                                                                                       | one node pool per group; flex shapes specify ocpus + memory; the desired size is applied, min/max bounds are unsupported on the node-pool resource; the build reports their omission |
| Pod networking · CNI                            | VPC-CNI                                          | -                                                                                                                              | -                                                                                                                       | VCN-native pod IPs (OCI\_VCN\_IP\_NATIVE)                                                                                                                                            |

### Infrastructure-only adaptation

| Capability                                      | EKS                                              | Google Cloud                                                                                                                   | Azure                                                                                                                   | OCI                                                                                                                                                                                  | Private Kubernetes                                                                                                            |
| ----------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| Control plane · who operates it                 | EKS managed control plane                        | GKE Standard, regional (control plane across multiple zones), Google-operated                                                  | azurerm\_kubernetes\_cluster, Microsoft-operated; SystemAssigned cluster identity                                       | oci\_containerengine\_cluster ENHANCED\_CLUSTER, Oracle-operated                                                                                                                     | your existing cluster; you operate the API server, and it is not provisioned                                                  |
| Kubernetes version · version selection          | requested minor version (e.g. 1.29)              | release channel (STABLE); the build reports the selected minor version, which may differ from the requested version            | -                                                                                                                       | -                                                                                                                                                                                    | -                                                                                                                             |
| Node groups → node pools · machine mapping      | aws\_eks\_node\_group (instance\_types)          | one node pool per group; same hardware class (m5→n2/e2, c5→c2, arm→t2a, GPU→g2/L4; default e2-medium); region-wide autoscaling | -                                                                                                                       | -                                                                                                                                                                                    | -                                                                                                                             |
| Workload identity (IRSA → WI)                   | Yes - IRSA (OIDC + AssumeRoleWithWebIdentity)    | Yes - GKE Workload Identity                                                                                                    | -                                                                                                                       | Partial - OKE Workload Identity, the OCI-native analog: workload-principal policies scoped to cluster, namespace and service account                                                 | -                                                                                                                             |
| Private cluster endpoint                        | Yes                                              | Partial - public control-plane endpoint; a private endpoint is not part of this equivalence, surfaced                          | Partial - public control-plane endpoint; a private endpoint is not part of this equivalence, surfaced                   | Yes - private in this mapping; a public-access origin gets a network-access warning, not an apply failure                                                                            | -                                                                                                                             |
| Add-ons · core vs custom                        | EKS add-ons (vpc-cni/coredns/kube-proxy/ebs-csi) | GKE platform components (managed for you); a non-core add-on with no analog is dropped and surfaced                            | -                                                                                                                       | -                                                                                                                                                                                    | -                                                                                                                             |
| API coverage                                    | full                                             | high                                                                                                                           | high                                                                                                                    | high                                                                                                                                                                                 | high                                                                                                                          |
| Kubernetes version · version selection          | requested minor version                          | -                                                                                                                              | AKS recommended default; the build reports the selected minor version, which may differ from the requested version      | a supported patch of your requested minor version; exact patch chosen at plan time, surfaced                                                                                         | -                                                                                                                             |
| Node groups → node pools · machine mapping      | aws\_eks\_node\_group                            | -                                                                                                                              | default\_node\_pool + one node pool per additional group; VM size in the same hardware class, default Standard\_D2s\_v5 | -                                                                                                                                                                                    | -                                                                                                                             |
| Workload identity (IRSA → WI)                   | Yes - IRSA                                       | -                                                                                                                              | Yes - Azure Workload Identity: OIDC issuer + UAMI + federated identity credential                                       | -                                                                                                                                                                                    | -                                                                                                                             |
| Add-ons · core vs custom                        | EKS add-ons                                      | -                                                                                                                              | AKS platform components (managed for you); non-core add-on with no analog dropped and surfaced                          | -                                                                                                                                                                                    | -                                                                                                                             |
| Node groups → node pools · shapes + autoscaling | aws\_eks\_node\_group (scaling\_config min/max)  | -                                                                                                                              | -                                                                                                                       | one node pool per group; flex shapes specify ocpus + memory; the desired size is applied, min/max bounds are unsupported on the node-pool resource; the build reports their omission | -                                                                                                                             |
| Pod networking · CNI                            | VPC-CNI                                          | -                                                                                                                              | -                                                                                                                       | VCN-native pod IPs (OCI\_VCN\_IP\_NATIVE)                                                                                                                                            | -                                                                                                                             |
| Node groups · who owns the nodes                | aws\_eks\_node\_group                            | -                                                                                                                              | -                                                                                                                       | -                                                                                                                                                                                    | your nodes; node-group provisioning is owned by you                                                                           |
| Workload identity (IRSA)                        | Yes - IRSA (cloud-federated)                     | -                                                                                                                              | -                                                                                                                       | -                                                                                                                                                                                    | Partial - Kubernetes RBAC for cluster access; selected STS adapter for AWS role sessions; no native cloud binding provisioned |
| Cluster authentication · how Tensor9 reaches it | data.aws\_eks\_cluster\_auth token               | -                                                                                                                              | -                                                                                                                       | -                                                                                                                                                                                    | the client cert / token you supply with the existing cluster                                                                  |

## On Google Cloud

| Operation                                                 | Area               | Support      | Depth        | Notes                                                                                                                                                                             |
| --------------------------------------------------------- | ------------------ | ------------ | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| DescribeCluster / ListClusters                            | EKS management API | Supported    | Common       | if a workload calls the EKS management API at runtime, it is translated to the target's managed-Kubernetes API                                                                    |
| DescribeNodegroup / ListNodegroups                        | EKS management API | Supported    | Most usage   | answered against the compiled GKE node pools                                                                                                                                      |
| CreateCluster / DeleteCluster / UpdateClusterVersion      | Provisioning       | Supported    | Most usage   | Maximum adaptation accepts supported cluster lifecycle requests and reconciles them onto GKE. Creation and deletion complete asynchronously; describes expose observed readiness. |
| Fargate profile                                           | Serverless nodes   | Out of scope | Full surface | no GKE-Standard analog; fargate-selected pods reschedule onto real node pools, and a Fargate-only cluster stops the build                                                         |
| In-cluster Kubernetes API (client-go / in-cluster config) | Workload           | Supported    | Full surface | native GKE API server: standard workload verbs and objects; cloud-specific annotations and controllers need target configuration                                                  |

#### The GKE control plane

Tensor9 translates your EKS cluster definition into a **regional GKE Standard** cluster. Google operates the Kubernetes control plane: its API server, controllers, upgrades, availability, and scaling. The regional control plane spans multiple zones, preserving EKS's availability across zones.

Two GKE choices matter here. GKE can run in **Autopilot** mode, where Google also owns the nodes and you never size a pool, or **Standard** mode, where you keep node pools and their machine types. Tensor9 compiles to **Standard**, so your EKS node-group sizing maps across one-to-one rather than being handed to a fully-managed node fleet. The second choice is the version: EKS lets you select an exact minor, while GKE keeps the control plane on a **release channel** and holds a supported version near your requested version. You get a channel-managed version, not the exact number, and Tensor9 surfaces that at the build rather than letting you assume an exact match.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgRUtTIEFQSSBzZXJ2ZXIsIEFXUy1tYW5hZ2VkIHdpdGggYSByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgbWFwcyB0byBhIHJlZ2lvbmFsIEdLRSBTdGFuZGFyZCBjb250cm9sIHBsYW5lIHRoYXQgR29vZ2xlIG9wZXJhdGVzIGFuZCB0aGF0IHVzZXMgYSByZWxlYXNlIGNoYW5uZWwuIEJvdGggYXJlIGNvbmZvcm1hbnQgS3ViZXJuZXRlcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0iY3AtZ2tlIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiMwNTk2NjkiLz48L21hcmtlcj48L2RlZnM+CjxyZWN0IHg9IjI4IiB5PSI0MCIgd2lkdGg9IjM0MCIgaGVpZ2h0PSI3MiIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE5OCIgeT0iNzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5FS1MgQVBJIHNlcnZlcjwvdGV4dD4KPHRleHQgeD0iMTk4IiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPkFXUy1tYW5hZ2VkIMK3IHJlcXVlc3RlZCBtaW5vciB2ZXJzaW9uPC90ZXh0Pgo8bGluZSB4MT0iMzcwIiB5MT0iNzYiIHgyPSI0NTIiIHkyPSI3NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjY3AtZ2tlKSIvPgo8dGV4dCB4PSI0MTEiIHk9IjY4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6OXB4Ij5zYW1lIEt1YmVybmV0ZXMgQVBJPC90ZXh0Pgo8cmVjdCB4PSI0NjYiIHk9IjQwIiB3aWR0aD0iMzQyIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNjM3IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMS41cHgiPkdLRSBTdGFuZGFyZCBjb250cm9sIHBsYW5lPC90ZXh0Pgo8dGV4dCB4PSI2MzciIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5Hb29nbGUtb3BlcmF0ZWQgwrcgcmVnaW9uYWw8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIxMjgiIHdpZHRoPSI3ODAiIGhlaWdodD0iMzQiIHJ4PSIxMCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI0MTgiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPlJpZGVzIGEgcmVsZWFzZSBjaGFubmVsOiBhIHN1cHBvcnRlZCB2ZXJzaW9uIG5lYXIgeW91ciByZXF1ZXN0ZWQgdmVyc2lvbiwgc3VyZmFjZWQgYXQgdGhlIGJ1aWxkLjwvdGV4dD4KPC9zdmc+" alt="The EKS API server, AWS-managed with a requested minor version, maps to a regional GKE Standard control plane that Google operates and that uses a release channel. Both are conformant Kubernetes." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgRUtTIEFQSSBzZXJ2ZXIsIEFXUy1tYW5hZ2VkIHdpdGggYSByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgbWFwcyB0byBhIHJlZ2lvbmFsIEdLRSBTdGFuZGFyZCBjb250cm9sIHBsYW5lIHRoYXQgR29vZ2xlIG9wZXJhdGVzIGFuZCB0aGF0IHVzZXMgYSByZWxlYXNlIGNoYW5uZWwuIEJvdGggYXJlIGNvbmZvcm1hbnQgS3ViZXJuZXRlcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0iY3AtZ2tlIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiMyMGY3YjQiLz48L21hcmtlcj48L2RlZnM+CjxyZWN0IHg9IjI4IiB5PSI0MCIgd2lkdGg9IjM0MCIgaGVpZ2h0PSI3MiIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE5OCIgeT0iNzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4Ij5FS1MgQVBJIHNlcnZlcjwvdGV4dD4KPHRleHQgeD0iMTk4IiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPkFXUy1tYW5hZ2VkIMK3IHJlcXVlc3RlZCBtaW5vciB2ZXJzaW9uPC90ZXh0Pgo8bGluZSB4MT0iMzcwIiB5MT0iNzYiIHgyPSI0NTIiIHkyPSI3NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjY3AtZ2tlKSIvPgo8dGV4dCB4PSI0MTEiIHk9IjY4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OXB4Ij5zYW1lIEt1YmVybmV0ZXMgQVBJPC90ZXh0Pgo8cmVjdCB4PSI0NjYiIHk9IjQwIiB3aWR0aD0iMzQyIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNjM3IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPkdLRSBTdGFuZGFyZCBjb250cm9sIHBsYW5lPC90ZXh0Pgo8dGV4dCB4PSI2MzciIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5Hb29nbGUtb3BlcmF0ZWQgwrcgcmVnaW9uYWw8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIxMjgiIHdpZHRoPSI3ODAiIGhlaWdodD0iMzQiIHJ4PSIxMCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI0MTgiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPlJpZGVzIGEgcmVsZWFzZSBjaGFubmVsOiBhIHN1cHBvcnRlZCB2ZXJzaW9uIG5lYXIgeW91ciByZXF1ZXN0ZWQgdmVyc2lvbiwgc3VyZmFjZWQgYXQgdGhlIGJ1aWxkLjwvdGV4dD4KPC9zdmc+" alt="The EKS API server, AWS-managed with a requested minor version, maps to a regional GKE Standard control plane that Google operates and that uses a release channel. Both are conformant Kubernetes." />
</div>

<p className="t9-caption">Tensor9 provisions a Google-operated, regional GKE Standard cluster; the exact minor version uses a release channel, surfaced at the build.</p>

#### The managed platform: add-ons and APIs

GKE offers managed services alongside Kubernetes: capabilities Google operates that go beyond plain Kubernetes. Its control plane exposes the **Gateway API** through Google's built-in GKE Gateway controller, and Config Connector lets a cluster manage Google Cloud resources as Kubernetes objects. On the operations side, Google ships **Managed Service for Prometheus**, **Backup for GKE**, and the managed persistent-disk and Filestore **CSI drivers** as first-party add-ons, and the cluster autoscaler can grow the fleet through **node auto-provisioning**.

These are what GKE makes available; Tensor9 does not switch them on for you. What the translation actually compiles from your EKS definition is the cluster, its node pools, Workload Identity, and VPC-native networking, with the **core EKS add-ons** you rely on (the CNI, CoreDNS, kube-proxy, and the CSI driver) re-provided as GKE's own platform components. A non-core EKS add-on with no GKE analog is dropped and surfaced at the build rather than silently discarded.

#### Kubernetes workloads and cloud integrations

GKE supports the Kubernetes workload API. Deployments, Services and other standard resources remain usable; review AWS-specific identity annotations, storage classes, ingress controllers and add-ons in manifests and Helm values.

#### Nodes and scaling

Each EKS node group becomes one GKE **node pool**, and the instance type maps to a Google machine type by a rule that preserves the hardware class: general-purpose (m5) becomes n2 or e2, compute-optimized (c5) becomes c2, Graviton (ARM) becomes t2a, and a GPU node becomes g2 with an L4 accelerator, defaulting to e2-medium when nothing more specific fits. The workload class you chose on AWS is preserved, so a compute-optimized group never quietly lands on a general-purpose machine.

Your node-group scaling settings become GKE's **cluster autoscaler** with region-wide minimum and maximum bounds, and Spot or preemptible nodes remain interruptible. Unsupported accelerator requirements fail during the build: an oversized accelerator such as the A100 or H100 classes has no clean machine analog, so the build stops with a clear error rather than substituting a smaller GPU; a lesser GPU swap that does have an analog still reaches you as a surfaced warning, so a change in accelerator class is never silent.

#### Identity and authorization (IRSA → GKE Workload Identity)

On EKS, **IRSA** (IAM Roles for Service Accounts) does two jobs at once: it gives a pod an AWS **identity** (a role it runs as) and it governs that role's **permissions**. Tensor9 preserves the role identity and evaluates its permissions separately.

**Role identity.** Your workload's identity reads (`aws sts get-caller-identity`, `iam:GetRole`) are answered **in-appliance** from the identity injected into the pod, so they return your own role and account (the same account the instance metadata serves) without contacting AWS. On GKE that reflected identity is **bound to a real cloud identity**: Kubernetes ServiceAccount (KSA) is tied to a Google service account (GSA) through GKE **Workload Identity** (the KSA holds the `iam.gke.io/gcp-service-account` annotation), and at boot the appliance **verifies** the pod really runs as that GSA before it serves an identity; an unbound pod fails closed and is pulled from service rather than presenting a role it cannot prove. A migrated EKS-plus-IRSA pod has its `get-caller-identity` answered on real GKE with the pod's own role.

**AWS request authorization.** Tensor9 prepares the supported AWS IAM policy rules at build time and evaluates the verified role, requested action and resource inside the appliance. A denial overrides an allowance; policy changes arrive through verified policy delivery. Native Google Cloud permissions are granted separately to the Google service account. Those grants do not replace the AWS policy or supply its role session. The selected STS or EKS Auth adapter separately supplies AWS credentials for supported AWS API calls.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJJUlNBIGluY2x1ZGVzIGFuIGlkZW50aXR5IGFuZCBwZXJtaXNzaW9ucy4gSWRlbnRpdHk6IHlvdXIgSVJTQSByb2xlIGlzIHJlZmxlY3RlZCBpbi1hcHBsaWFuY2UgYW5kIGJvdW5kIHRvIEdLRSBXb3JrbG9hZCBJZGVudGl0eSwgc28gZ2V0LWNhbGxlci1pZGVudGl0eSBhbnN3ZXJzIHlvdXIgb3duIHJvbGUuIEF1dGhvcml6YXRpb246IFRlbnNvcjkgZXZhbHVhdGVzIHN1cHBvcnRlZCBBV1MgSUFNIHBvbGljeSBydWxlcyBmb3IgQVdTIGFkYXB0ZXIgcmVxdWVzdHM7IGEgZGVuaWFsIG92ZXJyaWRlcyBhbiBhbGxvd2FuY2UuIE5hdGl2ZSBwcm92aWRlciBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBzZXBhcmF0ZWx5LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJpZGF1dGh6LWdrZSIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjMDU5NjY5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyOCIgeT0iMjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM5NGEzYjgiPklERU5USVRZIMK3IFdITyBBTSBJPC90ZXh0Pgo8cmVjdCB4PSIyOCIgeT0iMzAiIHdpZHRoPSIyNTAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxNTMiIHk9IjU2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweCI+WW91ciBJUlNBIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjE1MyIgeT0iNzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5hIHBvZCBhc3N1bWVzIGFuIElBTSByb2xlPC90ZXh0Pgo8bGluZSB4MT0iMjc4IiB5MT0iNjAiIHgyPSIzNTIiIHkyPSI2MCIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1na2UpIi8+Cjx0ZXh0IHg9IjMxNSIgeT0iNTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo4LjVweCI+cmVmbGVjdGVkICsgYm91bmQ8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMzAiIHdpZHRoPSI0NTIiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIzNzQiIHk9IjU0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+R0tFIFdvcmtsb2FkIElkZW50aXR5PC90ZXh0Pgo8dGV4dCB4PSIzNzQiIHk9Ijc0IiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTBweCI+S1NBIOKGkiBHb29nbGUgc2VydmljZSBhY2NvdW50IMK3IGdldC1jYWxsZXItaWRlbnRpdHkgYW5zd2VycyB5b3VyIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjI4IiB5PSIxMTgiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM5NGEzYjgiPkFVVEhPUklaQVRJT04gwrcgTUFZIEk8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIxMjYiIHdpZHRoPSIyNTAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxNTMiIHk9IjE1MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPllvdXIgQVdTIElBTSBwb2xpY3k8L3RleHQ+Cjx0ZXh0IHg9IjE1MyIgeT0iMTcwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+QWxsb3cgLyBEZW55IHN0YXRlbWVudHM8L3RleHQ+CjxsaW5lIHgxPSIyNzgiIHkxPSIxNTYiIHgyPSIzNTIiIHkyPSIxNTYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2lkYXV0aHotZ2tlKSIvPgo8dGV4dCB4PSIzMTUiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjguNXB4Ij5BV1MgcG9saWN5IHJ1bGVzPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjEyNiIgd2lkdGg9IjQ1MiIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjM3NCIgeT0iMTUwIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+QVdTIHJlcXVlc3QgYXV0aG9yaXphdGlvbjwvdGV4dD4KPHRleHQgeD0iMzc0IiB5PSIxNzAiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMHB4Ij5jYWxsZXIgwrcgYWN0aW9uIMK3IHJlc291cmNlIMK3IGRlbnkgd2luczwvdGV4dD4KPC9zdmc+" alt="IRSA includes an identity and permissions. Identity: your IRSA role is reflected in-appliance and bound to GKE Workload Identity, so get-caller-identity answers your own role. Authorization: Tensor9 evaluates supported AWS IAM policy rules for AWS adapter requests; a denial overrides an allowance. Native provider permissions are granted separately." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJJUlNBIGluY2x1ZGVzIGFuIGlkZW50aXR5IGFuZCBwZXJtaXNzaW9ucy4gSWRlbnRpdHk6IHlvdXIgSVJTQSByb2xlIGlzIHJlZmxlY3RlZCBpbi1hcHBsaWFuY2UgYW5kIGJvdW5kIHRvIEdLRSBXb3JrbG9hZCBJZGVudGl0eSwgc28gZ2V0LWNhbGxlci1pZGVudGl0eSBhbnN3ZXJzIHlvdXIgb3duIHJvbGUuIEF1dGhvcml6YXRpb246IFRlbnNvcjkgZXZhbHVhdGVzIHN1cHBvcnRlZCBBV1MgSUFNIHBvbGljeSBydWxlcyBmb3IgQVdTIGFkYXB0ZXIgcmVxdWVzdHM7IGEgZGVuaWFsIG92ZXJyaWRlcyBhbiBhbGxvd2FuY2UuIE5hdGl2ZSBwcm92aWRlciBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBzZXBhcmF0ZWx5LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJpZGF1dGh6LWdrZSIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjMjBmN2I0Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyOCIgeT0iMjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTRhM2I4Ij5JREVOVElUWSDCtyBXSE8gQU0gSTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjMwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTUzIiB5PSI1NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPllvdXIgSVJTQSByb2xlPC90ZXh0Pgo8dGV4dCB4PSIxNTMiIHk9Ijc0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+YSBwb2QgYXNzdW1lcyBhbiBJQU0gcm9sZTwvdGV4dD4KPGxpbmUgeDE9IjI3OCIgeTE9IjYwIiB4Mj0iMzUyIiB5Mj0iNjAiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2lkYXV0aHotZ2tlKSIvPgo8dGV4dCB4PSIzMTUiIHk9IjUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OC41cHgiPnJlZmxlY3RlZCArIGJvdW5kPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjMwIiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMzc0IiB5PSI1NCIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPkdLRSBXb3JrbG9hZCBJZGVudGl0eTwvdGV4dD4KPHRleHQgeD0iMzc0IiB5PSI3NCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPktTQSDihpIgR29vZ2xlIHNlcnZpY2UgYWNjb3VudCDCtyBnZXQtY2FsbGVyLWlkZW50aXR5IGFuc3dlcnMgeW91ciByb2xlPC90ZXh0Pgo8dGV4dCB4PSIyOCIgeT0iMTE4IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzk0YTNiOCI+QVVUSE9SSVpBVElPTiDCtyBNQVkgSTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjEyNiIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE1MyIgeT0iMTUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+WW91ciBBV1MgSUFNIHBvbGljeTwvdGV4dD4KPHRleHQgeD0iMTUzIiB5PSIxNzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5BbGxvdyAvIERlbnkgc3RhdGVtZW50czwvdGV4dD4KPGxpbmUgeDE9IjI3OCIgeTE9IjE1NiIgeDI9IjM1MiIgeTI9IjE1NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1na2UpIi8+Cjx0ZXh0IHg9IjMxNSIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OC41cHgiPkFXUyBwb2xpY3kgcnVsZXM8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMTI2IiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMzc0IiB5PSIxNTAiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTEuNXB4Ij5BV1MgcmVxdWVzdCBhdXRob3JpemF0aW9uPC90ZXh0Pgo8dGV4dCB4PSIzNzQiIHk9IjE3MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPmNhbGxlciDCtyBhY3Rpb24gwrcgcmVzb3VyY2UgwrcgZGVueSB3aW5zPC90ZXh0Pgo8L3N2Zz4=" alt="IRSA includes an identity and permissions. Identity: your IRSA role is reflected in-appliance and bound to GKE Workload Identity, so get-caller-identity answers your own role. Authorization: Tensor9 evaluates supported AWS IAM policy rules for AWS adapter requests; a denial overrides an allowance. Native provider permissions are granted separately." />
</div>

<p className="t9-caption">IRSA identity and permissions: your identity is reflected in-appliance and bound to GKE Workload Identity; your AWS IAM policy authorizes supported adapter requests, with deny precedence. Native provider grants remain separate.</p>

#### Limitations

Almost everything maps onto the GKE cluster: the Kubernetes workload, the managed control plane, node pools, VPC-native pod networking (alias-IP, with your pod and service secondary ranges), and workload identity bound to a real cloud identity. What has no counterpart is named here and surfaced at the build, never dropped silently.

△ Where EKS and GKE diverge

* **Fargate serverless nodes have no GKE-Standard analog.** Fargate-selected pods reschedule onto real node pools, and a Fargate-only cluster stops the build rather than pretending to have serverless capacity.
* **The Kubernetes version may change.** GKE uses a release channel, so you get a supported version near your requested minor version, surfaced at the build.
* **The control-plane endpoint is public.** A private GKE control-plane endpoint is not part of this equivalence; the public endpoint is surfaced rather than assumed.
* **The AWS cluster endpoint, ARN, and token have no equivalent.** References are repointed to GKE's own endpoint and certificate authority, or the build stops rather than binding a value that points at nothing.

#### Other considerations

Account for the following operating requirements.

* **Review cloud integrations in manifests.** Standard Kubernetes workload resources remain usable; adapt identity annotations, storage classes and controllers to the selected target.
* **Google operates the control plane; you still run the nodes:** upgrades, API-server availability, and control-plane scaling become Google's, while node-pool sizing, capacity, and cost stay yours to set on Google Cloud.
* **Migrate persistent data separately:** a PersistentVolume rebinds to GKE's persistent-disk or Filestore CSI, but the durable data behind it is migrated or re-provisioned separately; the cluster otherwise comes up empty of it.
* **Account for cluster and node charges:** a regional GKE Standard control plane has an hourly management charge, and you pay for the node pools you size rather than a serverless node fleet, so set the autoscaler bounds for the load you expect.

#### Runtime cluster management and credentials

With maximum adaptation, the EKS management API handles supported cluster lifecycle requests at runtime on managed Kubernetes targets. A self-managed target continues to use the existing cluster described in its target-specific configuration. The adapter stores accepted cluster, node-group, add-on and pod-identity-association requests. Reconciliation applies the corresponding configuration to the target Kubernetes service. Creation and deletion remain asynchronous: a returned cluster record is not proof that its endpoint is ready, and describes reflect the observed target state.

Kubernetes workload requests and AWS credential exchanges are separate from cluster management. Native target workload identity authorizes access to that cloud. An unchanged AWS SDK instead needs the selected STS or EKS Auth adapter to obtain an AWS session for the configured IAM role. Creating a cloud identity alone does not perform that exchange. Confirm the cluster issuer, service-account binding and role trust together, then test the application's actual API calls.

## On Azure

| Operation                                                 | Area               | Support      | Depth        | Notes                                                                                                               |
| --------------------------------------------------------- | ------------------ | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------- |
| DescribeCluster / ListClusters                            | EKS management API | Supported    | Common       | if a workload calls the EKS management API at runtime, it is translated to the target's managed-Kubernetes API      |
| CreateCluster / DeleteCluster / node pools                | Provisioning       | Supported    | Most usage   | Max lifecycle requests reconcile an AKS cluster and node pools; readiness is asynchronous and target settings apply |
| Fargate profile                                           | Serverless nodes   | Out of scope | Full surface | no AKS analog; pods reschedule onto node pools; Fargate-only cluster stops the build                                |
| In-cluster Kubernetes API (client-go / in-cluster config) | Workload           | Supported    | Full surface | native AKS API server: standard workload verbs and objects; cloud-specific integrations need target configuration   |

#### The AKS control plane

Tensor9 translates your EKS cluster definition into an **AKS** cluster. Microsoft operates its Kubernetes control plane, including upgrades, availability, and API-server scaling. The cluster uses a system-assigned **managed identity** in Microsoft Entra ID to access Azure resources.

Two AKS traits shape this equivalent. Upgrades are **managed**: AKS drives control-plane upgrades and holds you on a supported version, so rather than selecting an exact Kubernetes minor as EKS lets you, the cluster rides AKS's **recommended default** near your requested version, surfaced at the build. And AKS structures nodes as a required **system node pool** (which runs the cluster's own system pods) plus any number of **user node pools** for your workloads, which receive your translated EKS node groups.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgRUtTIEFQSSBzZXJ2ZXIsIEFXUy1tYW5hZ2VkIHdpdGggYSByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgbWFwcyB0byBhbiBBS1MgY29udHJvbCBwbGFuZSB0aGF0IE1pY3Jvc29mdCBvcGVyYXRlcyB3aXRoIGEgTWljcm9zb2Z0IEVudHJhIG1hbmFnZWQgaWRlbnRpdHkuIEFLUyBkcml2ZXMgY29udHJvbC1wbGFuZSB1cGdyYWRlcyBhbmQgcmlkZXMgaXRzIHJlY29tbWVuZGVkIGRlZmF1bHQgdmVyc2lvbi4gQm90aCBhcmUgY29uZm9ybWFudCBLdWJlcm5ldGVzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJjcC1ha3MiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzA1OTY2OSIvPjwvbWFya2VyPjwvZGVmcz4KPHJlY3QgeD0iMjgiIHk9IjQwIiB3aWR0aD0iMzQwIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTk4IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPkVLUyBBUEkgc2VydmVyPC90ZXh0Pgo8dGV4dCB4PSIxOTgiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+QVdTLW1hbmFnZWQgwrcgcmVxdWVzdGVkIG1pbm9yIHZlcnNpb248L3RleHQ+CjxsaW5lIHgxPSIzNzAiIHkxPSI3NiIgeDI9IjQ1MiIgeTI9Ijc2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNjcC1ha3MpIi8+Cjx0ZXh0IHg9IjQxMSIgeT0iNjgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo5cHgiPnNhbWUgS3ViZXJuZXRlcyBBUEk8L3RleHQ+CjxyZWN0IHg9IjQ2NiIgeT0iNDAiIHdpZHRoPSIzNDIiIGhlaWdodD0iNzIiIHJ4PSIxMiIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI2MzciIHk9IjcyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+QUtTIGNvbnRyb2wgcGxhbmU8L3RleHQ+Cjx0ZXh0IHg9IjYzNyIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPk1pY3Jvc29mdC1vcGVyYXRlZCDCtyBFbnRyYSBJRCBpZGVudGl0eTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjEyOCIgd2lkdGg9Ijc4MCIgaGVpZ2h0PSIzNCIgcng9IjEwIiBmaWxsPSIjZjhmYWZjIiBzdHJva2U9IiNjYmQ1ZTEiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjQxOCIgeT0iMTUwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+TWFuYWdlZCB1cGdyYWRlczogcmlkZXMgdGhlIHJlY29tbWVuZGVkIGRlZmF1bHQgbmVhciB5b3VyIHJlcXVlc3RlZCB2ZXJzaW9uLCBzdXJmYWNlZCBhdCB0aGUgYnVpbGQuPC90ZXh0Pgo8L3N2Zz4=" alt="The EKS API server, AWS-managed with a requested minor version, maps to an AKS control plane that Microsoft operates with a Microsoft Entra managed identity. AKS drives control-plane upgrades and rides its recommended default version. Both are conformant Kubernetes." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgRUtTIEFQSSBzZXJ2ZXIsIEFXUy1tYW5hZ2VkIHdpdGggYSByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgbWFwcyB0byBhbiBBS1MgY29udHJvbCBwbGFuZSB0aGF0IE1pY3Jvc29mdCBvcGVyYXRlcyB3aXRoIGEgTWljcm9zb2Z0IEVudHJhIG1hbmFnZWQgaWRlbnRpdHkuIEFLUyBkcml2ZXMgY29udHJvbC1wbGFuZSB1cGdyYWRlcyBhbmQgcmlkZXMgaXRzIHJlY29tbWVuZGVkIGRlZmF1bHQgdmVyc2lvbi4gQm90aCBhcmUgY29uZm9ybWFudCBLdWJlcm5ldGVzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJjcC1ha3MiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzIwZjdiNCIvPjwvbWFya2VyPjwvZGVmcz4KPHJlY3QgeD0iMjgiIHk9IjQwIiB3aWR0aD0iMzQwIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTk4IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPkVLUyBBUEkgc2VydmVyPC90ZXh0Pgo8dGV4dCB4PSIxOTgiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+QVdTLW1hbmFnZWQgwrcgcmVxdWVzdGVkIG1pbm9yIHZlcnNpb248L3RleHQ+CjxsaW5lIHgxPSIzNzAiIHkxPSI3NiIgeDI9IjQ1MiIgeTI9Ijc2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNjcC1ha3MpIi8+Cjx0ZXh0IHg9IjQxMSIgeT0iNjgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZTo5cHgiPnNhbWUgS3ViZXJuZXRlcyBBUEk8L3RleHQ+CjxyZWN0IHg9IjQ2NiIgeT0iNDAiIHdpZHRoPSIzNDIiIGhlaWdodD0iNzIiIHJ4PSIxMiIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI2MzciIHk9IjcyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjExLjVweCI+QUtTIGNvbnRyb2wgcGxhbmU8L3RleHQ+Cjx0ZXh0IHg9IjYzNyIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPk1pY3Jvc29mdC1vcGVyYXRlZCDCtyBFbnRyYSBJRCBpZGVudGl0eTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjEyOCIgd2lkdGg9Ijc4MCIgaGVpZ2h0PSIzNCIgcng9IjEwIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjQxOCIgeT0iMTUwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+TWFuYWdlZCB1cGdyYWRlczogcmlkZXMgdGhlIHJlY29tbWVuZGVkIGRlZmF1bHQgbmVhciB5b3VyIHJlcXVlc3RlZCB2ZXJzaW9uLCBzdXJmYWNlZCBhdCB0aGUgYnVpbGQuPC90ZXh0Pgo8L3N2Zz4=" alt="The EKS API server, AWS-managed with a requested minor version, maps to an AKS control plane that Microsoft operates with a Microsoft Entra managed identity. AKS drives control-plane upgrades and rides its recommended default version. Both are conformant Kubernetes." />
</div>

<p className="t9-caption">Tensor9 provisions a Microsoft-operated AKS cluster with a managed Entra identity; upgrades are managed and the version uses AKS's recommended default, surfaced at the build.</p>

#### The managed platform: add-ons and APIs

AKS offers managed add-ons and cluster extensions : first-party capabilities Microsoft operates on top of the control plane. Event-driven autoscaling ships as the managed **KEDA** add-on; **Dapr** and GitOps with Flux are managed cluster extensions; **Azure Policy** enforces guardrails on the cluster; **Container Insights** feeds metrics and logs to Azure Monitor; the Key Vault Secrets Store CSI add-on mounts secrets from Azure Key Vault; and the **application-routing** add-on runs a managed NGINX ingress. AKS also offers a **virtual-node** option that schedules pods onto Azure Container Instances through a virtual kubelet.

These are what AKS makes available; Tensor9 does not switch them on for you. What the translation compiles from your EKS definition is the cluster, its system and user node pools, Azure Workload Identity, and native pod networking, with your **core EKS add-ons** (the CNI, CoreDNS, kube-proxy, and the CSI driver) re-provided as AKS's platform components. A non-core EKS add-on with no AKS analog is dropped and surfaced at the build.

#### Kubernetes workloads and cloud integrations

The target exposes the Kubernetes workload API for Deployments, Services, ConfigMaps, StatefulSets and other supported resources. Review AWS-specific identity annotations, storage classes, ingress controllers and add-ons when adapting manifests and Helm values. Kubernetes conformance does not make those cloud integrations interchangeable.

#### Nodes and scaling

Each EKS node group becomes an AKS **node pool** (the first is the required system pool, the rest are user pools) and the instance type maps to an Azure VM size by a rule that preserves the hardware class, defaulting to `Standard_D2s_v5` when nothing more specific fits. Your node-group scaling settings become the AKS **cluster autoscaler**, and a spot posture comes across.

The **virtual-node** option above is a distinct model, not a drop-in for EKS Fargate: Fargate profiles have no AKS analog and their pods reschedule onto real node pools. An oversized accelerator with no clean VM analog stops the build rather than downgrading silently, so a change in machine class is never silent.

#### Identity and authorization (IRSA → Microsoft Entra Workload ID)

On EKS, **IRSA** (IAM Roles for Service Accounts) does two jobs at once: it gives a pod an AWS **identity** (a role it runs as) and it governs that role's **permissions**. Tensor9 preserves the role identity and evaluates its permissions separately.

**Role identity.** Your workload's identity reads (`aws sts get-caller-identity`, `iam:GetRole`) are answered **in-appliance** from the identity injected into the pod, so they return your own role and account (the same account the instance metadata serves) without contacting AWS. On AKS that reflected identity is **bound to a real cloud identity** through Microsoft Entra Workload ID : the cluster's OIDC issuer is enabled and Kubernetes ServiceAccount is federated to a **user-assigned managed identity** in Entra ID by a federated identity credential (with the `azure.workload.identity` annotations marking the pod), so the pod exchanges its ServiceAccount token for Entra tokens with no long-lived secret.

**AWS request authorization.** Tensor9 prepares the supported AWS IAM policy rules at build time and evaluates the verified role, requested action and resource inside the appliance. A denial overrides an allowance; policy changes arrive through verified policy delivery. Native Azure permissions are granted separately to the managed identity. Those grants do not replace the AWS policy or supply its role session. The selected STS or EKS Auth adapter separately supplies AWS credentials for supported AWS API calls.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJJUlNBIGluY2x1ZGVzIGFuIGlkZW50aXR5IGFuZCBwZXJtaXNzaW9ucy4gSWRlbnRpdHk6IHlvdXIgSVJTQSByb2xlIGlzIHJlZmxlY3RlZCBpbi1hcHBsaWFuY2UgYW5kIGJvdW5kIHRvIE1pY3Jvc29mdCBFbnRyYSBXb3JrbG9hZCBJRCwgc28gZ2V0LWNhbGxlci1pZGVudGl0eSBhbnN3ZXJzIHlvdXIgb3duIHJvbGUuIEF1dGhvcml6YXRpb246IFRlbnNvcjkgZXZhbHVhdGVzIHN1cHBvcnRlZCBBV1MgSUFNIHBvbGljeSBydWxlcyBmb3IgQVdTIGFkYXB0ZXIgcmVxdWVzdHM7IGEgZGVuaWFsIG92ZXJyaWRlcyBhbiBhbGxvd2FuY2UuIE5hdGl2ZSBwcm92aWRlciBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBzZXBhcmF0ZWx5LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJpZGF1dGh6LWFrcyIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjMDU5NjY5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyOCIgeT0iMjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM5NGEzYjgiPklERU5USVRZIMK3IFdITyBBTSBJPC90ZXh0Pgo8cmVjdCB4PSIyOCIgeT0iMzAiIHdpZHRoPSIyNTAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxNTMiIHk9IjU2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweCI+WW91ciBJUlNBIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjE1MyIgeT0iNzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5hIHBvZCBhc3N1bWVzIGFuIElBTSByb2xlPC90ZXh0Pgo8bGluZSB4MT0iMjc4IiB5MT0iNjAiIHgyPSIzNTIiIHkyPSI2MCIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1ha3MpIi8+Cjx0ZXh0IHg9IjMxNSIgeT0iNTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo4LjVweCI+cmVmbGVjdGVkICsgYm91bmQ8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMzAiIHdpZHRoPSI0NTIiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIzNzQiIHk9IjU0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+TWljcm9zb2Z0IEVudHJhIFdvcmtsb2FkIElEPC90ZXh0Pgo8dGV4dCB4PSIzNzQiIHk9Ijc0IiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTBweCI+S1NBIOKGkiBtYW5hZ2VkIGlkZW50aXR5IMK3IGdldC1jYWxsZXItaWRlbnRpdHkgYW5zd2VycyB5b3VyIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjI4IiB5PSIxMTgiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM5NGEzYjgiPkFVVEhPUklaQVRJT04gwrcgTUFZIEk8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIxMjYiIHdpZHRoPSIyNTAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxNTMiIHk9IjE1MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPllvdXIgQVdTIElBTSBwb2xpY3k8L3RleHQ+Cjx0ZXh0IHg9IjE1MyIgeT0iMTcwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+QWxsb3cgLyBEZW55IHN0YXRlbWVudHM8L3RleHQ+CjxsaW5lIHgxPSIyNzgiIHkxPSIxNTYiIHgyPSIzNTIiIHkyPSIxNTYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2lkYXV0aHotYWtzKSIvPgo8dGV4dCB4PSIzMTUiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjguNXB4Ij5BV1MgcG9saWN5IHJ1bGVzPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjEyNiIgd2lkdGg9IjQ1MiIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjM3NCIgeT0iMTUwIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+QVdTIHJlcXVlc3QgYXV0aG9yaXphdGlvbjwvdGV4dD4KPHRleHQgeD0iMzc0IiB5PSIxNzAiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMHB4Ij5jYWxsZXIgwrcgYWN0aW9uIMK3IHJlc291cmNlIMK3IGRlbnkgd2luczwvdGV4dD4KPC9zdmc+" alt="IRSA includes an identity and permissions. Identity: your IRSA role is reflected in-appliance and bound to Microsoft Entra Workload ID, so get-caller-identity answers your own role. Authorization: Tensor9 evaluates supported AWS IAM policy rules for AWS adapter requests; a denial overrides an allowance. Native provider permissions are granted separately." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJJUlNBIGluY2x1ZGVzIGFuIGlkZW50aXR5IGFuZCBwZXJtaXNzaW9ucy4gSWRlbnRpdHk6IHlvdXIgSVJTQSByb2xlIGlzIHJlZmxlY3RlZCBpbi1hcHBsaWFuY2UgYW5kIGJvdW5kIHRvIE1pY3Jvc29mdCBFbnRyYSBXb3JrbG9hZCBJRCwgc28gZ2V0LWNhbGxlci1pZGVudGl0eSBhbnN3ZXJzIHlvdXIgb3duIHJvbGUuIEF1dGhvcml6YXRpb246IFRlbnNvcjkgZXZhbHVhdGVzIHN1cHBvcnRlZCBBV1MgSUFNIHBvbGljeSBydWxlcyBmb3IgQVdTIGFkYXB0ZXIgcmVxdWVzdHM7IGEgZGVuaWFsIG92ZXJyaWRlcyBhbiBhbGxvd2FuY2UuIE5hdGl2ZSBwcm92aWRlciBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBzZXBhcmF0ZWx5LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJpZGF1dGh6LWFrcyIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjMjBmN2I0Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyOCIgeT0iMjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTRhM2I4Ij5JREVOVElUWSDCtyBXSE8gQU0gSTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjMwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTUzIiB5PSI1NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPllvdXIgSVJTQSByb2xlPC90ZXh0Pgo8dGV4dCB4PSIxNTMiIHk9Ijc0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+YSBwb2QgYXNzdW1lcyBhbiBJQU0gcm9sZTwvdGV4dD4KPGxpbmUgeDE9IjI3OCIgeTE9IjYwIiB4Mj0iMzUyIiB5Mj0iNjAiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2lkYXV0aHotYWtzKSIvPgo8dGV4dCB4PSIzMTUiIHk9IjUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OC41cHgiPnJlZmxlY3RlZCArIGJvdW5kPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjMwIiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMzc0IiB5PSI1NCIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPk1pY3Jvc29mdCBFbnRyYSBXb3JrbG9hZCBJRDwvdGV4dD4KPHRleHQgeD0iMzc0IiB5PSI3NCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPktTQSDihpIgbWFuYWdlZCBpZGVudGl0eSDCtyBnZXQtY2FsbGVyLWlkZW50aXR5IGFuc3dlcnMgeW91ciByb2xlPC90ZXh0Pgo8dGV4dCB4PSIyOCIgeT0iMTE4IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzk0YTNiOCI+QVVUSE9SSVpBVElPTiDCtyBNQVkgSTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjEyNiIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE1MyIgeT0iMTUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+WW91ciBBV1MgSUFNIHBvbGljeTwvdGV4dD4KPHRleHQgeD0iMTUzIiB5PSIxNzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5BbGxvdyAvIERlbnkgc3RhdGVtZW50czwvdGV4dD4KPGxpbmUgeDE9IjI3OCIgeTE9IjE1NiIgeDI9IjM1MiIgeTI9IjE1NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1ha3MpIi8+Cjx0ZXh0IHg9IjMxNSIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OC41cHgiPkFXUyBwb2xpY3kgcnVsZXM8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMTI2IiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMzc0IiB5PSIxNTAiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTEuNXB4Ij5BV1MgcmVxdWVzdCBhdXRob3JpemF0aW9uPC90ZXh0Pgo8dGV4dCB4PSIzNzQiIHk9IjE3MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPmNhbGxlciDCtyBhY3Rpb24gwrcgcmVzb3VyY2UgwrcgZGVueSB3aW5zPC90ZXh0Pgo8L3N2Zz4=" alt="IRSA includes an identity and permissions. Identity: your IRSA role is reflected in-appliance and bound to Microsoft Entra Workload ID, so get-caller-identity answers your own role. Authorization: Tensor9 evaluates supported AWS IAM policy rules for AWS adapter requests; a denial overrides an allowance. Native provider permissions are granted separately." />
</div>

<p className="t9-caption">IRSA identity and permissions: your identity is reflected in-appliance and bound to Microsoft Entra Workload ID; your AWS IAM policy authorizes supported adapter requests, with deny precedence. Native provider grants remain separate.</p>

#### Limitations

Almost everything maps onto the AKS cluster: the Kubernetes workload, the managed control plane, system and user node pools, native pod networking, and workload identity bound per workload. What has no counterpart is named here and surfaced at the build, never dropped silently.

△ Where EKS and AKS diverge

* **Fargate serverless nodes have no AKS analog.** Fargate-selected pods reschedule onto real node pools, and a Fargate-only cluster stops the build rather than pretending to have serverless capacity.
* **The Kubernetes version may change.** AKS rides its recommended default, so you get a supported version near your requested minor version, surfaced at the build.
* **The control-plane endpoint is public.** A private AKS control-plane endpoint is not part of this equivalence; the public endpoint is surfaced rather than assumed.
* **The AWS cluster endpoint, ARN, and token have no equivalent.** References are repointed to the AKS endpoint and certificate authority, or the build stops rather than binding a value that points at nothing.

#### Other considerations

Account for the following operating requirements.

* **Review cloud integrations in manifests.** Standard Kubernetes workload resources remain usable; adapt identity annotations, storage classes and controllers to the selected target.
* **Microsoft operates the control plane, and a system node pool is now required.** AKS mandates a system pool for the cluster's own pods alongside your user pools: capacity and cost you did not size on EKS.
* **Workload identity is set up per workload:** each ServiceAccount is federated to a user-assigned managed identity in Entra ID, so a migrated pod gets the workload-identity annotations rather than an IRSA role annotation.
* **Account for cluster and node charges:** the AKS control plane is free on the base tier (the Uptime-SLA tier is paid), and you pay for the node pools you run including the required system pool; size the autoscaler bounds for expected load.

#### Management and credentials on AKS

Supported cluster, node-group, add-on and association changes reconcile onto AKS asynchronously. Entra Workload ID grants access only through separately configured Azure permissions; AWS SDK calls need the selected AWS credential exchange. See [cluster management and credential separation](/service-adapters/aws/compute-containers/eks#runtime-cluster-management-and-credentials) for the common model and its managed-target restriction.

## On OCI

| Operation                                                 | Area               | Support      | Depth        | Notes                                                                                                                            |
| --------------------------------------------------------- | ------------------ | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| DescribeCluster / ListClusters                            | EKS management API | Supported    | Common       | if a workload calls the EKS management API at runtime, it is translated to the target's managed-Kubernetes API                   |
| Node-group autoscaling bounds                             | Node pools         | Partial      | Most usage   | the desired size is applied; cluster-autoscaler min/max is unsupported on the node-pool resource; the build reports its omission |
| CreateCluster / DeleteCluster / node pools                | Provisioning       | Supported    | Most usage   | Max lifecycle requests reconcile an enhanced OKE cluster and node pools; readiness is asynchronous and target settings apply     |
| Fargate profile                                           | Serverless nodes   | Out of scope | Full surface | no OKE analog; pods reschedule onto node pools; Fargate-only cluster stops the build                                             |
| In-cluster Kubernetes API (client-go / in-cluster config) | Workload           | Supported    | Full surface | native OKE API server: standard workload verbs and objects; cloud-specific integrations need target configuration                |

#### The OKE control plane

On Oracle Cloud the control plane is run by **OKE**, and Tensor9 provisions it as an **enhanced cluster**, OKE's fuller tier, the one that includes the cluster autoscaler, workload identity, and higher node ceilings. Oracle operates the control plane, and its API-server endpoint is **private in this mapping**, so the cluster is reached over your own VCN by default rather than a public address.

OKE gives you more than one way to run nodes under that control plane: **managed node pools**, where OKE manages the Kubernetes components on nodes in your tenancy; fully OKE-run virtual nodes , where Oracle runs the node capacity for you; and self-managed nodes. Tensor9 compiles your EKS node groups into **managed node pools**, so the sizing you chose maps directly. On the version, EKS lets you pin an exact minor; OKE selects a **supported patch** of that requested minor version, chosen at plan time and surfaced.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgRUtTIEFQSSBzZXJ2ZXIsIEFXUy1tYW5hZ2VkIHdpdGggYSByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgbWFwcyB0byBhbiBlbmhhbmNlZCBPS0UgY29udHJvbCBwbGFuZSB0aGF0IE9yYWNsZSBvcGVyYXRlcyB3aXRoIGEgcHJpdmF0ZSBlbmRwb2ludCBpbiB0aGlzIG1hcHBpbmcuIE9LRSBzZWxlY3RzIGEgc3VwcG9ydGVkIHBhdGNoIG9mIHlvdXIgcmVxdWVzdGVkIG1pbm9yIHZlcnNpb24uIEJvdGggYXJlIGNvbmZvcm1hbnQgS3ViZXJuZXRlcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0iY3Atb2tlIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiMwNTk2NjkiLz48L21hcmtlcj48L2RlZnM+CjxyZWN0IHg9IjI4IiB5PSI0MCIgd2lkdGg9IjM0MCIgaGVpZ2h0PSI3MiIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE5OCIgeT0iNzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5FS1MgQVBJIHNlcnZlcjwvdGV4dD4KPHRleHQgeD0iMTk4IiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPkFXUy1tYW5hZ2VkIMK3IHJlcXVlc3RlZCBtaW5vciB2ZXJzaW9uPC90ZXh0Pgo8bGluZSB4MT0iMzcwIiB5MT0iNzYiIHgyPSI0NTIiIHkyPSI3NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjY3Atb2tlKSIvPgo8dGV4dCB4PSI0MTEiIHk9IjY4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6OXB4Ij5zYW1lIEt1YmVybmV0ZXMgQVBJPC90ZXh0Pgo8cmVjdCB4PSI0NjYiIHk9IjQwIiB3aWR0aD0iMzQyIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNjM3IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMS41cHgiPk9LRSBlbmhhbmNlZCBjb250cm9sIHBsYW5lPC90ZXh0Pgo8dGV4dCB4PSI2MzciIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5PcmFjbGUtb3BlcmF0ZWQgwrcgcHJpdmF0ZSBpbiB0aGlzIG1hcHBpbmc8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIxMjgiIHdpZHRoPSI3ODAiIGhlaWdodD0iMzQiIHJ4PSIxMCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI0MTgiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPlNlbGVjdHMgYSBzdXBwb3J0ZWQgcGF0Y2ggb2YgeW91ciByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgc3VyZmFjZWQgYXQgdGhlIGJ1aWxkLjwvdGV4dD4KPC9zdmc+" alt="The EKS API server, AWS-managed with a requested minor version, maps to an enhanced OKE control plane that Oracle operates with a private endpoint in this mapping. OKE selects a supported patch of your requested minor version. Both are conformant Kubernetes." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgRUtTIEFQSSBzZXJ2ZXIsIEFXUy1tYW5hZ2VkIHdpdGggYSByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgbWFwcyB0byBhbiBlbmhhbmNlZCBPS0UgY29udHJvbCBwbGFuZSB0aGF0IE9yYWNsZSBvcGVyYXRlcyB3aXRoIGEgcHJpdmF0ZSBlbmRwb2ludCBpbiB0aGlzIG1hcHBpbmcuIE9LRSBzZWxlY3RzIGEgc3VwcG9ydGVkIHBhdGNoIG9mIHlvdXIgcmVxdWVzdGVkIG1pbm9yIHZlcnNpb24uIEJvdGggYXJlIGNvbmZvcm1hbnQgS3ViZXJuZXRlcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0iY3Atb2tlIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiMyMGY3YjQiLz48L21hcmtlcj48L2RlZnM+CjxyZWN0IHg9IjI4IiB5PSI0MCIgd2lkdGg9IjM0MCIgaGVpZ2h0PSI3MiIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE5OCIgeT0iNzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4Ij5FS1MgQVBJIHNlcnZlcjwvdGV4dD4KPHRleHQgeD0iMTk4IiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPkFXUy1tYW5hZ2VkIMK3IHJlcXVlc3RlZCBtaW5vciB2ZXJzaW9uPC90ZXh0Pgo8bGluZSB4MT0iMzcwIiB5MT0iNzYiIHgyPSI0NTIiIHkyPSI3NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjY3Atb2tlKSIvPgo8dGV4dCB4PSI0MTEiIHk9IjY4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OXB4Ij5zYW1lIEt1YmVybmV0ZXMgQVBJPC90ZXh0Pgo8cmVjdCB4PSI0NjYiIHk9IjQwIiB3aWR0aD0iMzQyIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNjM3IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPk9LRSBlbmhhbmNlZCBjb250cm9sIHBsYW5lPC90ZXh0Pgo8dGV4dCB4PSI2MzciIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5PcmFjbGUtb3BlcmF0ZWQgwrcgcHJpdmF0ZSBpbiB0aGlzIG1hcHBpbmc8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIxMjgiIHdpZHRoPSI3ODAiIGhlaWdodD0iMzQiIHJ4PSIxMCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI0MTgiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPlNlbGVjdHMgYSBzdXBwb3J0ZWQgcGF0Y2ggb2YgeW91ciByZXF1ZXN0ZWQgbWlub3IgdmVyc2lvbiwgc3VyZmFjZWQgYXQgdGhlIGJ1aWxkLjwvdGV4dD4KPC9zdmc+" alt="The EKS API server, AWS-managed with a requested minor version, maps to an enhanced OKE control plane that Oracle operates with a private endpoint in this mapping. OKE selects a supported patch of your requested minor version. Both are conformant Kubernetes." />
</div>

<p className="t9-caption">Tensor9 provisions an Oracle-operated enhanced OKE cluster with a private endpoint in this mapping; the version selects a supported patch of your requested minor version, surfaced at the build.</p>

#### The managed platform: add-ons and APIs

Tensor9 provisions OKE's **enhanced-cluster** tier. It includes managed cluster add-ons that Oracle operates and version-manages (the cluster autoscaler among them) along with **OKE Workload Identity** and higher node-count ceilings. Under the control plane, OKE lets you run nodes as managed node pools, fully OKE-run virtual nodes, or self-managed nodes, and its API-server endpoint is private in this mapping, reached over your own VCN.

These are what the enhanced OKE cluster makes available; what Tensor9 compiles from your EKS definition is the enhanced cluster, its managed node pools on flexible shapes, the OCI-native workload-identity binding, and VCN-native pod networking, with your **core EKS add-ons** re-provided as OKE's platform components. A non-core EKS add-on with no OKE analog is dropped and surfaced at the build.

#### Kubernetes workloads and cloud integrations

The target exposes the Kubernetes workload API for Deployments, Services, ConfigMaps, StatefulSets and other supported resources. Review AWS-specific identity annotations, storage classes, ingress controllers and add-ons when adapting manifests and Helm values. Kubernetes conformance does not make those cloud integrations interchangeable.

#### Nodes and scaling

Each EKS node group becomes one OKE **node pool** on an OCI **flexible shape**, which takes your core (OCPU) and memory sizing directly rather than rounding to a fixed instance size. Pod networking is **VCN-native** (pods get IPs from your VCN) matching the routable-pod-IP model EKS gives you.

There is one node-pool limit specific to OKE: its cluster-autoscaler minimum and maximum bounds have no node-pool-resource analog, so the desired size is provisioned and the min/max bounds are dropped and surfaced. An oversized accelerator with no clean shape analog stops the build rather than downgrading silently.

#### Identity and authorization (IRSA → OCI workload identity)

On EKS, **IRSA** (IAM Roles for Service Accounts) does two jobs at once: it gives a pod an AWS **identity** (a role it runs as) and it governs that role's **permissions**. Tensor9 preserves the role identity and evaluates its permissions separately.

**Role identity.** Your workload's identity reads (`aws sts get-caller-identity`, `iam:GetRole`) are answered **in-appliance** from the identity injected into the pod, so they return your own role and account (the same account the instance metadata serves) without contacting AWS. On OKE that reflected identity is **bound to a real cloud identity** through OCI workload identity . OCI IAM policies select the workload principal by cluster, namespace and service account. These native grants are separate from the AWS role policy and credential exchange.

**AWS request authorization.** Tensor9 prepares the supported AWS IAM policy rules at build time and evaluates the verified role, requested action and resource inside the appliance. A denial overrides an allowance; policy changes arrive through verified policy delivery. Native OCI permissions are granted separately to the workload principal. Those grants do not replace the AWS policy or supply its role session. The selected STS or EKS Auth adapter separately supplies AWS credentials for supported AWS API calls.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJJUlNBIGluY2x1ZGVzIGFuIGlkZW50aXR5IGFuZCBwZXJtaXNzaW9ucy4gSWRlbnRpdHk6IHlvdXIgSVJTQSByb2xlIGlzIHJlZmxlY3RlZCBpbi1hcHBsaWFuY2UgYW5kIGJvdW5kIHRvIE9DSSB3b3JrbG9hZCBpZGVudGl0eSwgc28gZ2V0LWNhbGxlci1pZGVudGl0eSBhbnN3ZXJzIHlvdXIgb3duIHJvbGUuIEF1dGhvcml6YXRpb246IFRlbnNvcjkgZXZhbHVhdGVzIHN1cHBvcnRlZCBBV1MgSUFNIHBvbGljeSBydWxlcyBmb3IgQVdTIGFkYXB0ZXIgcmVxdWVzdHM7IGEgZGVuaWFsIG92ZXJyaWRlcyBhbiBhbGxvd2FuY2UuIE5hdGl2ZSBwcm92aWRlciBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBzZXBhcmF0ZWx5LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJpZGF1dGh6LW9rZSIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjMDU5NjY5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyOCIgeT0iMjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM5NGEzYjgiPklERU5USVRZIMK3IFdITyBBTSBJPC90ZXh0Pgo8cmVjdCB4PSIyOCIgeT0iMzAiIHdpZHRoPSIyNTAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxNTMiIHk9IjU2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweCI+WW91ciBJUlNBIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjE1MyIgeT0iNzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5hIHBvZCBhc3N1bWVzIGFuIElBTSByb2xlPC90ZXh0Pgo8bGluZSB4MT0iMjc4IiB5MT0iNjAiIHgyPSIzNTIiIHkyPSI2MCIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1va2UpIi8+Cjx0ZXh0IHg9IjMxNSIgeT0iNTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo4LjVweCI+cmVmbGVjdGVkICsgYm91bmQ8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMzAiIHdpZHRoPSI0NTIiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIzNzQiIHk9IjU0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+T0NJIHdvcmtsb2FkIGlkZW50aXR5PC90ZXh0Pgo8dGV4dCB4PSIzNzQiIHk9Ijc0IiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTBweCI+S1NBIOKGkiBPQ0kgcHJpbmNpcGFsIMK3IGdldC1jYWxsZXItaWRlbnRpdHkgYW5zd2VycyB5b3VyIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjI4IiB5PSIxMTgiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM5NGEzYjgiPkFVVEhPUklaQVRJT04gwrcgTUFZIEk8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIxMjYiIHdpZHRoPSIyNTAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxNTMiIHk9IjE1MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPllvdXIgQVdTIElBTSBwb2xpY3k8L3RleHQ+Cjx0ZXh0IHg9IjE1MyIgeT0iMTcwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+QWxsb3cgLyBEZW55IHN0YXRlbWVudHM8L3RleHQ+CjxsaW5lIHgxPSIyNzgiIHkxPSIxNTYiIHgyPSIzNTIiIHkyPSIxNTYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2lkYXV0aHotb2tlKSIvPgo8dGV4dCB4PSIzMTUiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjguNXB4Ij5BV1MgcG9saWN5IHJ1bGVzPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjEyNiIgd2lkdGg9IjQ1MiIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjM3NCIgeT0iMTUwIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+QVdTIHJlcXVlc3QgYXV0aG9yaXphdGlvbjwvdGV4dD4KPHRleHQgeD0iMzc0IiB5PSIxNzAiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMHB4Ij5jYWxsZXIgwrcgYWN0aW9uIMK3IHJlc291cmNlIMK3IGRlbnkgd2luczwvdGV4dD4KPC9zdmc+" alt="IRSA includes an identity and permissions. Identity: your IRSA role is reflected in-appliance and bound to OCI workload identity, so get-caller-identity answers your own role. Authorization: Tensor9 evaluates supported AWS IAM policy rules for AWS adapter requests; a denial overrides an allowance. Native provider permissions are granted separately." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJJUlNBIGluY2x1ZGVzIGFuIGlkZW50aXR5IGFuZCBwZXJtaXNzaW9ucy4gSWRlbnRpdHk6IHlvdXIgSVJTQSByb2xlIGlzIHJlZmxlY3RlZCBpbi1hcHBsaWFuY2UgYW5kIGJvdW5kIHRvIE9DSSB3b3JrbG9hZCBpZGVudGl0eSwgc28gZ2V0LWNhbGxlci1pZGVudGl0eSBhbnN3ZXJzIHlvdXIgb3duIHJvbGUuIEF1dGhvcml6YXRpb246IFRlbnNvcjkgZXZhbHVhdGVzIHN1cHBvcnRlZCBBV1MgSUFNIHBvbGljeSBydWxlcyBmb3IgQVdTIGFkYXB0ZXIgcmVxdWVzdHM7IGEgZGVuaWFsIG92ZXJyaWRlcyBhbiBhbGxvd2FuY2UuIE5hdGl2ZSBwcm92aWRlciBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBzZXBhcmF0ZWx5LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJpZGF1dGh6LW9rZSIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjMjBmN2I0Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyOCIgeT0iMjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTRhM2I4Ij5JREVOVElUWSDCtyBXSE8gQU0gSTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjMwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTUzIiB5PSI1NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPllvdXIgSVJTQSByb2xlPC90ZXh0Pgo8dGV4dCB4PSIxNTMiIHk9Ijc0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+YSBwb2QgYXNzdW1lcyBhbiBJQU0gcm9sZTwvdGV4dD4KPGxpbmUgeDE9IjI3OCIgeTE9IjYwIiB4Mj0iMzUyIiB5Mj0iNjAiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI2lkYXV0aHotb2tlKSIvPgo8dGV4dCB4PSIzMTUiIHk9IjUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OC41cHgiPnJlZmxlY3RlZCArIGJvdW5kPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjMwIiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMzc0IiB5PSI1NCIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPk9DSSB3b3JrbG9hZCBpZGVudGl0eTwvdGV4dD4KPHRleHQgeD0iMzc0IiB5PSI3NCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPktTQSDihpIgT0NJIHByaW5jaXBhbCDCtyBnZXQtY2FsbGVyLWlkZW50aXR5IGFuc3dlcnMgeW91ciByb2xlPC90ZXh0Pgo8dGV4dCB4PSIyOCIgeT0iMTE4IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzk0YTNiOCI+QVVUSE9SSVpBVElPTiDCtyBNQVkgSTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjEyNiIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE1MyIgeT0iMTUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+WW91ciBBV1MgSUFNIHBvbGljeTwvdGV4dD4KPHRleHQgeD0iMTUzIiB5PSIxNzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5BbGxvdyAvIERlbnkgc3RhdGVtZW50czwvdGV4dD4KPGxpbmUgeDE9IjI3OCIgeTE9IjE1NiIgeDI9IjM1MiIgeTI9IjE1NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1va2UpIi8+Cjx0ZXh0IHg9IjMxNSIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OC41cHgiPkFXUyBwb2xpY3kgcnVsZXM8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMTI2IiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMzc0IiB5PSIxNTAiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTEuNXB4Ij5BV1MgcmVxdWVzdCBhdXRob3JpemF0aW9uPC90ZXh0Pgo8dGV4dCB4PSIzNzQiIHk9IjE3MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPmNhbGxlciDCtyBhY3Rpb24gwrcgcmVzb3VyY2UgwrcgZGVueSB3aW5zPC90ZXh0Pgo8L3N2Zz4=" alt="IRSA includes an identity and permissions. Identity: your IRSA role is reflected in-appliance and bound to OCI workload identity, so get-caller-identity answers your own role. Authorization: Tensor9 evaluates supported AWS IAM policy rules for AWS adapter requests; a denial overrides an allowance. Native provider permissions are granted separately." />
</div>

<p className="t9-caption">IRSA identity and permissions: your identity is reflected in-appliance and bound to OCI workload identity; your AWS IAM policy authorizes supported adapter requests, with deny precedence. Native provider grants remain separate.</p>

#### Limitations

Almost everything maps onto the OKE cluster: the Kubernetes workload, the enhanced managed control plane, node pools on flexible shapes, VCN-native pod networking, and a private endpoint in this mapping. What has no counterpart is named here and surfaced at the build, never dropped silently.

△ Where EKS and OKE diverge

* **Fargate serverless nodes have no OKE analog.** Fargate-selected pods reschedule onto real node pools, and a Fargate-only cluster stops the build rather than pretending to have serverless capacity.
* **The Kubernetes version may change.** OKE selects a supported patch of your requested minor version, chosen at plan time and surfaced at the build.
* **Cluster-autoscaler bounds have no node-pool analog.** The desired size is kept; the autoscaler minimum and maximum are dropped and surfaced.
* **The AWS cluster endpoint, ARN, and token have no equivalent.** References are repointed to the OKE endpoint and certificate authority, or the build stops rather than binding a value that points at nothing.

#### Other considerations

Account for the following operating requirements.

* **Deploy workloads onto the enhanced OKE cluster.** Review OCI identity bindings, storage classes and VCN networking alongside Kubernetes manifests.
* **This mapping selects a private control-plane endpoint.** OKE reaches the API server over your own VCN, so cluster administration needs in-VCN reachability (a bastion or private access) rather than a public endpoint.
* **Autoscaler bounds have no counterpart:** the desired node count is provisioned, but the cluster-autoscaler minimum and maximum have no node-pool analog, so scaling limits are re-established on OCI after cutover.
* **Account for cluster and node charges.** OKE's enhanced tier has a per-cluster charge and you pay for the managed node pools you size on flexible shapes (OCPU and memory directly), rather than an EKS control-plane fee plus fixed instance types.

#### Management and credentials on OKE

Supported cluster and node-pool changes reconcile onto OKE asynchronously. OCI workload identity and its native grants remain separate from STS or EKS Auth role sessions used for AWS adapter calls. See [cluster management and credential separation](/service-adapters/aws/compute-containers/eks#runtime-cluster-management-and-credentials) for the common model and its managed-target restriction.

## On Private Kubernetes

| Operation                                                 | Area             | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                   |
| --------------------------------------------------------- | ---------------- | ------------ | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Workload identity (IRSA)                                  | Identity         | Partial      | Full surface | Kubernetes ServiceAccounts and RBAC govern cluster access. The selected STS service adapter supplies supported AWS role sessions; this mapping does not provision a native cloud identity binding. Real external-cloud access requires separately authorized credentials or federation. |
| Cluster provisioning (control plane / node groups)        | Provisioning     | Out of scope | Full surface | not provisioned: you bring the API server and the nodes; Tensor9 emits a reference to your existing cluster's endpoint and auth                                                                                                                                                         |
| Fargate profile                                           | Serverless nodes | Out of scope | Full surface | no analog; you run the nodes                                                                                                                                                                                                                                                            |
| In-cluster Kubernetes API (client-go / in-cluster config) | Workload         | Supported    | Full surface | your existing cluster's API server: standard workload verbs and objects; cloud-specific integrations need target configuration                                                                                                                                                          |

#### The control plane you run

Tensor9 uses an existing Kubernetes cluster in the customer's environment, such as kubeadm, k3s, or kops. It generates references to that cluster's endpoint and authentication; it creates no control plane or node pools.

The customer operates the API server, maintains control-plane availability, upgrades Kubernetes, and provisions and replaces nodes. They also supply the capacity your workloads need.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJVbmxpa2UgdGhlIG1hbmFnZWQgdGFyZ2V0cywgbm90aGluZyBpcyBwcm92aXNpb25lZCBoZXJlLiBUaGUgRUtTIGNvbnRyb2wgcGxhbmUgaXMgcmVwb2ludGVkIGF0IHRoZSBidWlsZCBvbnRvIGEgS3ViZXJuZXRlcyBjbHVzdGVyIHlvdSBhbHJlYWR5IG9wZXJhdGUgKGt1YmVhZG0sIGszcywgb3Iga29wcykgdGhhdCB5b3UgcnVuIHlvdXJzZWxmLiBUZW5zb3I5IHJlZmVyZW5jZXMgdGhhdCBjbHVzdGVyJ3MgZW5kcG9pbnQgYW5kIGF1dGhlbnRpY2F0aW9uLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJyaC1rOHMiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHJlY3QgeD0iMjgiIHk9IjQwIiB3aWR0aD0iMzQwIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTk4IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPkVLUyBjb250cm9sIHBsYW5lPC90ZXh0Pgo8dGV4dCB4PSIxOTgiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+QVdTLW1hbmFnZWQ8L3RleHQ+CjxsaW5lIHgxPSIzNzAiIHkxPSI3NiIgeDI9IjQ1MiIgeTI9Ijc2IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNyaC1rOHMpIi8+Cjx0ZXh0IHg9IjQxMSIgeT0iNjgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OXB4Ij5yZXBvaW50ZWQgYXQgdGhlIGJ1aWxkPC90ZXh0Pgo8cmVjdCB4PSI0NjYiIHk9IjQwIiB3aWR0aD0iMzQyIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSI2MzciIHk9IjcyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweDtmaWxsOiM0NzU1NjkiPllvdXIgZXhpc3RpbmcgY2x1c3RlcjwvdGV4dD4KPHRleHQgeD0iNjM3IiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPmt1YmVhZG0gwrcgazNzIMK3IGtvcHMsIHlvdSBvcGVyYXRlIGl0PC90ZXh0Pgo8cmVjdCB4PSIyOCIgeT0iMTI4IiB3aWR0aD0iNzgwIiBoZWlnaHQ9IjM0IiByeD0iMTAiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iNDE4IiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5Ob3RoaW5nIGlzIHByb3Zpc2lvbmVkOiBUZW5zb3I5IHJlZmVyZW5jZXMgdGhlIHRhcmdldCBjbHVzdGVyJ3MgZW5kcG9pbnQgYW5kIGF1dGhlbnRpY2F0aW9uLjwvdGV4dD4KPC9zdmc+" alt="Unlike the managed targets, nothing is provisioned here. The EKS control plane is repointed at the build onto a Kubernetes cluster you already operate (kubeadm, k3s, or kops) that you run yourself. Tensor9 references that cluster's endpoint and authentication." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJVbmxpa2UgdGhlIG1hbmFnZWQgdGFyZ2V0cywgbm90aGluZyBpcyBwcm92aXNpb25lZCBoZXJlLiBUaGUgRUtTIGNvbnRyb2wgcGxhbmUgaXMgcmVwb2ludGVkIGF0IHRoZSBidWlsZCBvbnRvIGEgS3ViZXJuZXRlcyBjbHVzdGVyIHlvdSBhbHJlYWR5IG9wZXJhdGUgKGt1YmVhZG0sIGszcywgb3Iga29wcykgdGhhdCB5b3UgcnVuIHlvdXJzZWxmLiBUZW5zb3I5IHJlZmVyZW5jZXMgdGhhdCBjbHVzdGVyJ3MgZW5kcG9pbnQgYW5kIGF1dGhlbnRpY2F0aW9uLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJyaC1rOHMiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHJlY3QgeD0iMjgiIHk9IjQwIiB3aWR0aD0iMzQwIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTk4IiB5PSI3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPkVLUyBjb250cm9sIHBsYW5lPC90ZXh0Pgo8dGV4dCB4PSIxOTgiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+QVdTLW1hbmFnZWQ8L3RleHQ+CjxsaW5lIHgxPSIzNzAiIHkxPSI3NiIgeDI9IjQ1MiIgeTI9Ijc2IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNyaC1rOHMpIi8+Cjx0ZXh0IHg9IjQxMSIgeT0iNjgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OXB4Ij5yZXBvaW50ZWQgYXQgdGhlIGJ1aWxkPC90ZXh0Pgo8cmVjdCB4PSI0NjYiIHk9IjQwIiB3aWR0aD0iMzQyIiBoZWlnaHQ9IjcyIiByeD0iMTIiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSI2MzciIHk9IjcyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweDtmaWxsOiAjYzljZmQ4Ij5Zb3VyIGV4aXN0aW5nIGNsdXN0ZXI8L3RleHQ+Cjx0ZXh0IHg9IjYzNyIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5rdWJlYWRtIMK3IGszcyDCtyBrb3BzLCB5b3Ugb3BlcmF0ZSBpdDwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjEyOCIgd2lkdGg9Ijc4MCIgaGVpZ2h0PSIzNCIgcng9IjEwIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjQxOCIgeT0iMTUwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+Tm90aGluZyBpcyBwcm92aXNpb25lZDogVGVuc29yOSByZWZlcmVuY2VzIHRoZSB0YXJnZXQgY2x1c3RlcidzIGVuZHBvaW50IGFuZCBhdXRoZW50aWNhdGlvbi48L3RleHQ+Cjwvc3ZnPg==" alt="Unlike the managed targets, nothing is provisioned here. The EKS control plane is repointed at the build onto a Kubernetes cluster you already operate (kubeadm, k3s, or kops) that you run yourself. Tensor9 references that cluster's endpoint and authentication." />
</div>

<p className="t9-caption">Nothing is provisioned here: the EKS cluster is redirected onto a Kubernetes cluster you already operate, and Tensor9 references its endpoint and authentication.</p>

#### Cluster add-ons

The customer installs and operates the cluster's ingress controller, autoscaler, monitoring, secrets driver, and backup service. Tensor9 deploys workloads onto the existing cluster without adding those services.

The API server, scheduler, controller-manager, and existing networking (CNI), DNS, and storage (CSI) components stay in place.

#### Kubernetes workloads and cloud integrations

Deploy the workload onto the existing cluster's Kubernetes API. Match API versions, identity annotations, storage classes and installed controllers to that cluster; AWS-specific integrations may need different manifests or Helm values.

#### Node capacity

The nodes are yours. There is no machine-type mapping to a cloud instance family and no cloud autoscaler wired for you, because **you own node provisioning and lifecycle**: you decide how nodes are added, sized, and retired, and you run an autoscaler (cluster-autoscaler, Karpenter, or none) if you want one. Tensor9 does not size or scale the fleet; it schedules your workloads onto the capacity you already run.

#### Cluster access and AWS credentials

**Kubernetes API access.** ServiceAccounts and RBAC govern what workloads may do against the existing cluster's API. They do not by themselves supply AWS credentials.

**AWS adapter credentials.** With IRSA (IAM Roles for Service Accounts), the AWS SDK sends a projected service-account token to the selected STS adapter through `AssumeRoleWithWebIdentity`. That exchange supplies a supported AWS role session for calls handled by Tensor9. Pod Identity uses the selected EKS Auth adapter's `AssumeRoleForPodIdentity` exchange. Configure the cluster issuer, service-account binding and IAM role trust for the selected exchange.

**Real external-cloud access.** Calls to real external-cloud services need credentials or federation authorized by that cloud. This mapping does not provision a native cloud identity binding; configure that access using the cluster's identity integration or mounted credentials.

**AWS adapter permissions.** Tensor9 evaluates the role's AWS policies for API calls handled by its service adapters. An explicit deny overrides an allow. Kubernetes RBAC and the external cloud's own authorization govern their respective APIs.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBhbiBleGlzdGluZyBLdWJlcm5ldGVzIGNsdXN0ZXIsIHRoZSBzZWxlY3RlZCBTVFMgYWRhcHRlciBleGNoYW5nZXMgYSBzZXJ2aWNlLWFjY291bnQgdG9rZW4gZm9yIGEgc3VwcG9ydGVkIEFXUyByb2xlIHNlc3Npb24uIFRlbnNvcjkgZXZhbHVhdGVzIHRoYXQgcm9sZSdzIEFXUyBwb2xpY3kgZm9yIGFkYXB0ZXIgY2FsbHMuIEt1YmVybmV0ZXMgUkJBQyBzZXBhcmF0ZWx5IGdvdmVybnMgY2x1c3RlciBBUEkgYWNjZXNzOyByZWFsIGV4dGVybmFsLWNsb3VkIGNhbGxzIG5lZWQgc2VwYXJhdGVseSBhdXRob3JpemVkIGNyZWRlbnRpYWxzIG9yIGZlZGVyYXRpb24uIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImlkYXV0aHotazhzIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiMwNTk2NjkiLz48L21hcmtlcj48bWFya2VyIGlkPSJpZGF1dGh6LWs4cy1uIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjI4IiB5PSIyMiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6Izk0YTNiOCI+SURFTlRJVFkgwrcgV0hPIEFNIEk8L3RleHQ+CjxyZWN0IHg9IjI4IiB5PSIzMCIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE1MyIgeT0iNTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5Zb3VyIElSU0Egcm9sZTwvdGV4dD4KPHRleHQgeD0iMTUzIiB5PSI3NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPmNsb3VkLWZlZGVyYXRlZCBvbiBFS1M8L3RleHQ+CjxsaW5lIHgxPSIyNzgiIHkxPSI2MCIgeDI9IjM1MiIgeTI9IjYwIiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNpZGF1dGh6LWs4cy1uKSIvPgo8dGV4dCB4PSIzMTUiIHk9IjUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4O2ZpbGw6IzQ3NTU2OSI+U1RTPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjMwIiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzNzQiIHk9IjU0IiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweDtmaWxsOiM0NzU1NjkiPkFXUyByb2xlIHNlc3Npb24gZm9yIGFkYXB0ZXIgY2FsbHM8L3RleHQ+Cjx0ZXh0IHg9IjM3NCIgeT0iNzQiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6MTBweCI+Y2x1c3RlciBpc3N1ZXIsIHNlcnZpY2UgYWNjb3VudCBhbmQgcm9sZSB0cnVzdCBjb25maWd1cmVkPC90ZXh0Pgo8dGV4dCB4PSIyOCIgeT0iMTE4IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojOTRhM2I4Ij5BVVRIT1JJWkFUSU9OIMK3IE1BWSBJPC90ZXh0Pgo8cmVjdCB4PSIyOCIgeT0iMTI2IiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMTUzIiB5PSIxNTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5Zb3VyIEFXUyBJQU0gcG9saWN5PC90ZXh0Pgo8dGV4dCB4PSIxNTMiIHk9IjE3MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPkFsbG93IC8gRGVueSBzdGF0ZW1lbnRzPC90ZXh0Pgo8bGluZSB4MT0iMjc4IiB5MT0iMTU2IiB4Mj0iMzUyIiB5Mj0iMTU2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNpZGF1dGh6LWs4cykiLz4KPHRleHQgeD0iMzE1IiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo4LjVweCI+ZXZhbHVhdGU8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMTI2IiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjYwIiByeD0iMTIiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMzc0IiB5PSIxNTAiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTEuNXB4Ij5UZW5zb3I5IHBvbGljeSBldmFsdWF0aW9uPC90ZXh0Pgo8dGV4dCB4PSIzNzQiIHk9IjE3MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEwcHgiPkFXUyBhZGFwdGVyIHBlcm1pc3Npb25zIMK3IGV4cGxpY2l0IGRlbnkgb3ZlcnJpZGVzIGFsbG93PC90ZXh0Pgo8L3N2Zz4=" alt="On an existing Kubernetes cluster, the selected STS adapter exchanges a service-account token for a supported AWS role session. Tensor9 evaluates that role's AWS policy for adapter calls. Kubernetes RBAC separately governs cluster API access; real external-cloud calls need separately authorized credentials or federation." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgODM2IDIwMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBhbiBleGlzdGluZyBLdWJlcm5ldGVzIGNsdXN0ZXIsIHRoZSBzZWxlY3RlZCBTVFMgYWRhcHRlciBleGNoYW5nZXMgYSBzZXJ2aWNlLWFjY291bnQgdG9rZW4gZm9yIGEgc3VwcG9ydGVkIEFXUyByb2xlIHNlc3Npb24uIFRlbnNvcjkgZXZhbHVhdGVzIHRoYXQgcm9sZSdzIEFXUyBwb2xpY3kgZm9yIGFkYXB0ZXIgY2FsbHMuIEt1YmVybmV0ZXMgUkJBQyBzZXBhcmF0ZWx5IGdvdmVybnMgY2x1c3RlciBBUEkgYWNjZXNzOyByZWFsIGV4dGVybmFsLWNsb3VkIGNhbGxzIG5lZWQgc2VwYXJhdGVseSBhdXRob3JpemVkIGNyZWRlbnRpYWxzIG9yIGZlZGVyYXRpb24uIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImlkYXV0aHotazhzIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiMyMGY3YjQiLz48L21hcmtlcj48bWFya2VyIGlkPSJpZGF1dGh6LWs4cy1uIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjI4IiB5PSIyMiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5NGEzYjgiPklERU5USVRZIMK3IFdITyBBTSBJPC90ZXh0Pgo8cmVjdCB4PSIyOCIgeT0iMzAiIHdpZHRoPSIyNTAiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIxNTMiIHk9IjU2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+WW91ciBJUlNBIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjE1MyIgeT0iNzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5jbG91ZC1mZWRlcmF0ZWQgb24gRUtTPC90ZXh0Pgo8bGluZSB4MT0iMjc4IiB5MT0iNjAiIHgyPSIzNTIiIHkyPSI2MCIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1rOHMtbikiLz4KPHRleHQgeD0iMzE1IiB5PSI1MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweDtmaWxsOiAjYzljZmQ4Ij5TVFM8L3RleHQ+CjxyZWN0IHg9IjM1NiIgeT0iMzAiIHdpZHRoPSI0NTIiIGhlaWdodD0iNjAiIHJ4PSIxMiIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjM3NCIgeT0iNTQiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4O2ZpbGw6ICNjOWNmZDgiPkFXUyByb2xlIHNlc3Npb24gZm9yIGFkYXB0ZXIgY2FsbHM8L3RleHQ+Cjx0ZXh0IHg9IjM3NCIgeT0iNzQiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6MTBweCI+Y2x1c3RlciBpc3N1ZXIsIHNlcnZpY2UgYWNjb3VudCBhbmQgcm9sZSB0cnVzdCBjb25maWd1cmVkPC90ZXh0Pgo8dGV4dCB4PSIyOCIgeT0iMTE4IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzk0YTNiOCI+QVVUSE9SSVpBVElPTiDCtyBNQVkgSTwvdGV4dD4KPHJlY3QgeD0iMjgiIHk9IjEyNiIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjE1MyIgeT0iMTUyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+WW91ciBBV1MgSUFNIHBvbGljeTwvdGV4dD4KPHRleHQgeD0iMTUzIiB5PSIxNzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5BbGxvdyAvIERlbnkgc3RhdGVtZW50czwvdGV4dD4KPGxpbmUgeDE9IjI3OCIgeTE9IjE1NiIgeDI9IjM1MiIgeTI9IjE1NiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjaWRhdXRoei1rOHMpIi8+Cjx0ZXh0IHg9IjMxNSIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OC41cHgiPmV2YWx1YXRlPC90ZXh0Pgo8cmVjdCB4PSIzNTYiIHk9IjEyNiIgd2lkdGg9IjQ1MiIgaGVpZ2h0PSI2MCIgcng9IjEyIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjM3NCIgeT0iMTUwIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjExLjVweCI+VGVuc29yOSBwb2xpY3kgZXZhbHVhdGlvbjwvdGV4dD4KPHRleHQgeD0iMzc0IiB5PSIxNzAiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMHB4Ij5BV1MgYWRhcHRlciBwZXJtaXNzaW9ucyDCtyBleHBsaWNpdCBkZW55IG92ZXJyaWRlcyBhbGxvdzwvdGV4dD4KPC9zdmc+" alt="On an existing Kubernetes cluster, the selected STS adapter exchanges a service-account token for a supported AWS role session. Tensor9 evaluates that role's AWS policy for adapter calls. Kubernetes RBAC separately governs cluster API access; real external-cloud calls need separately authorized credentials or federation." />
</div>

<p className="t9-caption">AWS adapter calls use the selected credential adapter and role policy. Kubernetes RBAC and real external-cloud credentials authorize separate destinations.</p>

#### Limitations

Workloads use the existing cluster's Kubernetes API. Review its identity, storage, ingress and installed controllers when adapting manifests; this mapping provisions no control plane or nodes.

△ Where EKS and a self-managed cluster diverge

* **You run the control plane and nodes.** Nothing is provisioned: no managed control plane, no node pools. Tensor9 references your existing cluster's endpoint and authentication.
* **Native cloud identity bindings are not provisioned.** Supported AWS role sessions use the selected STS or EKS Auth adapter. Configure credentials or federation separately for real external-cloud services.
* **Fargate serverless nodes have no analog.** You run the nodes, so there is no serverless node capacity to schedule onto.
* **No cloud autoscaler or machine mapping is wired for you.** You own node sizing, scaling, and lifecycle.

#### Other considerations

Account for the following operating requirements.

* **Deploy onto the existing cluster:** the build emits a reference to a cluster you already operate and schedules your adapted Kubernetes manifests onto it, so the move is wiring the workloads onto existing capacity, not standing up a cluster.
* **Every operational duty stays with you:** control-plane HA, version upgrades, node lifecycle, and any platform layer (ingress, autoscaler, monitoring, backup) are yours to run; a managed target would have operated them.
* **Configure each credential path.** Kubernetes RBAC authorizes cluster access. The selected STS or EKS Auth adapter supplies supported AWS sessions; real external-cloud services require separately authorized credentials or federation.
* **Budget for cluster capacity and maintenance:** there is no managed control-plane charge, but the cluster's capacity, availability, and upkeep run on infrastructure you own and staff.

#### Management and credentials on an existing cluster

This target uses your existing cluster; it does not provision a managed Kubernetes service. Cluster RBAC and selected AWS role sessions are separate. External cloud access still requires credentials or federation authorized by that provider. See [cluster management and credential separation](/service-adapters/aws/compute-containers/eks#runtime-cluster-management-and-credentials) for the common model and its managed-target restriction.

[Service Catalog](/service-adapters/catalog).
