Skip to main content
Version: 1.48

ARM Support

Okteto supports installation on ARM-based Kubernetes clusters for Self-Hosted deployments. Running Okteto on ARM lets developers build and test against the same architecture as their target operational clusters, avoiding compatibility differences that can surface when developing on a different architecture than the one that runs the application.

Support Status​

Cloud ProviderRecommended InstanceStatus
Google GKETau T2A (t2a-standard-4)GA
Amazon EKSGraviton 2/3 (m7g.xlarge)Beta

ARM support is covered by the same release pipeline as x86. All control plane images are published as multi-arch (amd64 + arm64).

note

ARM support is available for Self-Hosted deployments only. Bring Your Own Cloud (BYOC) deployments are not supported.

Requirements​

  • Fresh installations only. Migrating an existing x86 cluster to ARM is not supported. ARM clusters must be provisioned from scratch.
  • Homogeneous clusters. All nodes in the cluster must be ARM-based. Mixed architecture clusters (ARM + x86 nodes) are not supported.

Google GKE (GA)​

ARM support on GCP using Tau T2A instances is generally available. Automated tests run against ARM clusters on GCP for every release and in weekly scheduled runs.

Cluster Configuration​

We recommend creating a GKE cluster using Tau T2A nodes. The recommended instance type is t2a-standard-4:

gcloud container clusters create CLUSTER_NAME \
--zone ZONE \
--machine-type=t2a-standard-4 \
--num-nodes=3 \
--disk-size=250
note

Tau T2A instances are only available in certain GCP regions and zones. See the GCP documentation for regional availability.

Helm Configuration​

GKE automatically applies kubernetes.io/arch=arm64:NoSchedule taints to ARM nodes. You must add the following tolerations to your config.yaml so that Okteto components can be scheduled on those nodes:

globals:
tolerations:
okteto:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "arm64"
effect: "NoSchedule"
dev:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "arm64"
effect: "NoSchedule"
ingress-nginx:
controller:
tolerations:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "arm64"
effect: "NoSchedule"
okteto-nginx:
controller:
tolerations:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "arm64"
effect: "NoSchedule"
reloader:
reloader:
deployment:
tolerations:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "arm64"
effect: "NoSchedule"

For the full installation walkthrough, follow the GKE installation guide.

Amazon EKS (Beta)​

Beta

ARM support on Amazon EKS is in Beta. The functionality is complete, but automated test coverage on EKS ARM is still maturing — validation is performed manually when introducing support for new Kubernetes versions. Until coverage matures, running this on operational clusters carries a higher chance of encountering an unexpected issue.

AWS Graviton 2 and Graviton 3 instances are supported. The recommended instance type is m7g.xlarge, which is equivalent in size to the standard m5.xlarge used in the default EKS guide.

Cluster Configuration​

eksctl create cluster -f - <<EOF
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
name: ${CLUSTER_NAME}
region: ${AWS_REGION}
version: "${K8S_VERSION}"

autoModeConfig:
enabled: false

iam:
withOIDC: true

nodeGroups:
- name: ng-1
instanceType: m7g.xlarge
desiredCapacity: 3
volumeSize: 250
volumeType: gp3
amiFamily: AmazonLinux2023
EOF

Helm Configuration​

EKS does not apply architecture taints to Graviton nodes, so no additional tolerations are required for ARM scheduling.

For the full installation walkthrough, follow the Amazon EKS installation guide.

Dependencies​

The following dependencies bundled in the Okteto Helm chart have been validated for ARM compatibility:

  • Reloader
  • Redis
  • ingress-nginx
warning

ARM compatibility of these dependencies must be re-verified before bumping their versions. Check the relevant project release notes for architecture support before upgrading.

Limitations​

The following scenarios are not supported in the current release:

ScenarioNotes
Migration from x86 clustersNo migration tooling; fresh install required
Mixed architecture clustersAll nodes must be the same architecture
BYOC deploymentsNot supported
Azure AKS ARMNot supported
GCP Axion (C4A) instancesNot supported
Oracle Ampere A1/A2Not supported
Bare metal ARMNot supported
DivertNot supported on ARM (planned for a future release)
GPU workloadsThe supported ARM instance types (Tau T2A, Graviton 2/3) do not offer GPUs
Windows containersNot supported on ARM
WebAssembly (WASM) runtimeNot supported on ARM