diff --git a/docs/advanced/arm64.md b/docs/advanced/arm64.md index a694a60a..cffe06db 100644 --- a/docs/advanced/arm64.md +++ b/docs/advanced/arm64.md @@ -9,28 +9,55 @@ Typhoon has experimental support for ARM64 on AWS, with Fedora CoreOS or Flatcar Create a cluster with ARM64 controller and worker nodes. Container workloads must be `arm64` compatible and use `arm64` container images. -```tf -module "gravitas" { - source = "git::https://github.com/poseidon/typhoon//aws/fedora-coreos/kubernetes?ref=v1.23.1" +=== "Fedora CoreOS Cluster (arm64)" - # AWS - cluster_name = "gravitas" - dns_zone = "aws.example.com" - dns_zone_id = "Z3PAABBCFAKEC0" + ```tf + module "gravitas" { + source = "git::https://github.com/poseidon/typhoon//aws/fedora-coreos/kubernetes?ref=v1.23.1" - # configuration - ssh_authorized_key = "ssh-ed25519 AAAAB3Nz..." + # AWS + cluster_name = "gravitas" + dns_zone = "aws.example.com" + dns_zone_id = "Z3PAABBCFAKEC0" - # optional - arch = "arm64" - networking = "cilium" - worker_count = 2 - worker_price = "0.0168" + # configuration + ssh_authorized_key = "ssh-ed25519 AAAAB3Nz..." - controller_type = "t4g.small" - worker_type = "t4g.small" -} -``` + # optional + arch = "arm64" + networking = "cilium" + worker_count = 2 + worker_price = "0.0168" + + controller_type = "t4g.small" + worker_type = "t4g.small" + } + ``` + +=== "Flatcar Linux Cluster (arm64)" + + ```tf + module "gravitas" { + source = "git::https://github.com/poseidon/typhoon//aws/flatcar-linux/kubernetes?ref=v1.23.1" + + # AWS + cluster_name = "gravitas" + dns_zone = "aws.example.com" + dns_zone_id = "Z3PAABBCFAKEC0" + + # configuration + ssh_authorized_key = "ssh-ed25519 AAAAB3Nz..." + + # optional + arch = "arm64" + networking = "cilium" + worker_count = 2 + worker_price = "0.0168" + + controller_type = "t4g.small" + worker_type = "t4g.small" + } + ``` Verify the cluster has only arm64 (`aarch64`) nodes. For Flatcar Linux, describe nodes. @@ -46,7 +73,7 @@ ip-10-0-5-79 Ready 77s v1.23.1 10.0.5.79 F Create a hybrid/mixed arch cluster by defining an AWS cluster. Then define a [worker pool](worker-pools.md#aws) with ARM64 workers. Optional taints are added to aid in scheduling. -=== "Cluster (amd64)" +=== "FCOS Cluster" ```tf module "gravitas" { @@ -69,7 +96,30 @@ Create a hybrid/mixed arch cluster by defining an AWS cluster. Then define a [wo } ``` -=== "Worker Pool (arm64)" +=== "Flatcar Cluster" + + ```tf + module "gravitas" { + source = "git::https://github.com/poseidon/typhoon//aws/flatcar-linux/kubernetes?ref=v1.23.1" + + # AWS + cluster_name = "gravitas" + dns_zone = "aws.example.com" + dns_zone_id = "Z3PAABBCFAKEC0" + + # configuration + ssh_authorized_key = "ssh-ed25519 AAAAB3Nz..." + + # optional + networking = "cilium" + worker_count = 2 + worker_price = "0.021" + + daemonset_tolerations = ["arch"] # important + } + ``` + +=== "FCOS ARM64 Workers" ```tf module "gravitas-arm64" { @@ -93,14 +143,38 @@ Create a hybrid/mixed arch cluster by defining an AWS cluster. Then define a [wo } ``` +=== "Flatcar ARM64 Workers" + + ```tf + module "gravitas-arm64" { + source = "git::https://github.com/poseidon/typhoon//aws/flatcar-linux/kubernetes/workers?ref=v1.23.1" + + # 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"] + } + ``` + Verify amd64 (x86_64) and arm64 (aarch64) nodes are present. ``` $ kubectl get nodes -o wide -NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME -ip-10-0-1-81 Ready 4m28s v1.23.1 10.0.1.81 Fedora CoreOS 34.20210427.3.0 5.11.15-300.fc34.x86_64 docker://20.10.6 -ip-10-0-17-86 Ready 4m28s v1.23.1 10.0.17.86 Fedora CoreOS 33.20210413.dev.0 5.10.19-200.fc33.aarch64 docker://19.3.13 -ip-10-0-21-45 Ready 4m28s v1.23.1 10.0.21.45 Fedora CoreOS 34.20210427.3.0 5.11.15-300.fc34.x86_64 docker://20.10.6 -ip-10-0-40-36 Ready 4m22s v1.23.1 10.0.40.36 Fedora CoreOS 34.20210427.3.0 5.11.15-300.fc34.x86_64 docker://20.10.6 +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +ip-10-0-1-73 Ready 111m v1.23.1 10.0.1.73 Fedora CoreOS 35.20211215.3.0 5.15.7-200.fc35.x86_64 containerd://1.5.8 +ip-10-0-22-79... Ready 111m v1.23.1 10.0.22.79 Flatcar Container Linux by Kinvolk 3033.2.0 (Oklo) 5.10.84-flatcar containerd://1.5.8 +ip-10-0-24-130 Ready 111m v1.23.1 10.0.24.130 Fedora CoreOS 35.20211215.3.0 5.15.7-200.fc35.x86_64 containerd://1.5.8 +ip-10-0-39-19 Ready 111m v1.23.1 10.0.39.19 Fedora CoreOS 35.20211215.3.0 5.15.7-200.fc35.x86_64 containerd://1.5.8 ``` diff --git a/mkdocs.yml b/mkdocs.yml index cca4920d..a7ad3b06 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -43,7 +43,8 @@ markdown_extensions: - pymdownx.mark - pymdownx.smartsymbols - pymdownx.superfences - - pymdownx.tabbed + - pymdownx.tabbed: + alternate_style: true - pymdownx.tasklist: custom_checkbox: true - pymdownx.tilde