Clusters with ARM64 nodes

Typhoon v1.19.4 adds experimental support for Fedora CoreOS ARM64 on AWS, with either full-cluster or mixed-arch clusters. These clusters allow container workloads supporting arm64 to leverage AWS Graviton2 processors for both performance and cost-savings.

Currently, only the flannel CNI provider and a few regions (us-east-1, us-east-2, us-west-1) are available.

Define a cluster with ARM64 controller and worker nodes (i.e. full-cluster).

module "gravitas" {
  source = "git::https://github.com/poseidon/typhoon//aws/fedora-coreos/kubernetes?ref=v1.19.4"

  # AWS
  cluster_name = "gravitas"
  dns_zone     = "aws.example.com"
  dns_zone_id  = "Z3PAABBCFAKEC0"

  # configuration
  ssh_authorized_key = "ssh-rsa AAAAB3Nz..."

  # optional
  arch         = "arm64"
  networking   = "flannel"
  worker_count = 2

  controller_type = "t4g.small"
  worker_type     = "t4g.small"
}

Alternately, create a hybrid / mixed architecture cluster by defining a typical (Intel, AMD64) cluster, then defining an ARM64 worker pool of nodes (likely with taints).

module "gravitas" {
  source = "git::https://github.com/poseidon/typhoon//aws/fedora-coreos/kubernetes?ref=v1.19.4"

  # AWS
  cluster_name = "gravitas"
  dns_zone     = "aws.example.com"
  dns_zone_id  = "Z3PAABBCFAKEC0"

  # configuration
  ssh_authorized_key = "ssh-rsa AAAAB3Nz..."

  # optional
  networking   = "flannel"
  worker_count = 2
  worker_price = "0.021"

  daemonset_tolerations = ["arch"]     # important
}
module "gravitas-arm64" {
  source = "git::https://github.com/poseidon/typhoon//aws/fedora-coreos/kubernetes/workers?ref=v1.19.4"

  # AWS
  vpc_id          = module.gravitas.vpc_id
  subnet_ids      = module.gravitas.subnet_ids
  security_groups = module.gravitas.worker_security_groups

  # configuration
  name               = "gravitas-arm64"
  kubeconfig         = module.gravitas.kubeconfig
  ssh_authorized_key = var.ssh_authorized_key

  # optional
  arch          = "arm64"
  instance_type = "t4g.small"
  spot_price    = "0.0168"
  node_taints   = ["arch=arm64:NoSchedule"]
}

See the Typhoon docs for details.