From f90f15e91e88f7fecd466729b9f577fb6e21618d Mon Sep 17 00:00:00 2001 From: gillcaleb Date: Wed, 22 May 2024 14:35:59 -0400 Subject: [PATCH] docs: Include ref to addon naming and config documentation (#3043) * docs: include ref to addon naming and config * docs: including addon configuration details in the faq * docs: including addon configuration details in the faq doc * docs: including addon configuration details in the faq * chore: Updates --------- Co-authored-by: Caleb Gill Co-authored-by: Bryant Biggs --- docs/faq.md | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 214 insertions(+), 2 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 395c8c3..2abd669 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -4,8 +4,9 @@ - [I received an error: `expect exactly one securityGroup tagged with kubernetes.io/cluster/ ...`](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#i-received-an-error-expect-exactly-one-securitygroup-tagged-with-kubernetesioclustername-) - [Why are nodes not being registered?](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#why-are-nodes-not-being-registered) - [Why are there no changes when a node group's `desired_size` is modified?](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#why-are-there-no-changes-when-a-node-groups-desired_size-is-modified) -- [How can I deploy Windows based nodes?](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#how-can-i-deploy-windows-based-nodes) - [How do I access compute resource attributes?](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#how-do-i-access-compute-resource-attributes) +- [What add-ons are available?](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#what-add-ons-are-available) +- [What configuration values are available for an add-on?](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#what-configuration-values-are-available-for-an-add-on) ### Setting `disk_size` or `remote_access` does not make any changes @@ -65,7 +66,7 @@ Examples of accessing the attributes of the compute resource(s) created by the r ```hcl eks_managed_role_arns = [for group in module.eks_managed_node_group : group.iam_role_arn] -```` +``` - Self Managed Node Group attributes @@ -78,3 +79,214 @@ self_managed_role_arns = [for group in module.self_managed_node_group : group.ia ```hcl fargate_profile_pod_execution_role_arns = [for group in module.fargate_profile : group.fargate_profile_pod_execution_role_arn] ``` + +### What add-ons are available? + +The available EKS add-ons can be [found here](https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html). You can also retrieve the available addons from the API using: + +```sh +aws eks describe-addon-versions --query 'addons[*].addonName' +``` + +### What configuration values are available for an add-on? + +You can retrieve the configuration value schema for a given addon using the following command: + +```sh +aws eks describe-addon-configuration --addon-name --addon-version --query 'configurationSchema' --output text | jq +``` + +For example: + +```sh +aws eks describe-addon-configuration --addon-name coredns --addon-version v1.11.1-eksbuild.8 --query 'configurationSchema' --output text | jq +``` + +Returns (at the time of writing): + +```json +{ + "$ref": "#/definitions/Coredns", + "$schema": "http://json-schema.org/draft-06/schema#", + "definitions": { + "Coredns": { + "additionalProperties": false, + "properties": { + "affinity": { + "default": { + "affinity": { + "nodeAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "nodeSelectorTerms": [ + { + "matchExpressions": [ + { + "key": "kubernetes.io/os", + "operator": "In", + "values": [ + "linux" + ] + }, + { + "key": "kubernetes.io/arch", + "operator": "In", + "values": [ + "amd64", + "arm64" + ] + } + ] + } + ] + } + }, + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchExpressions": [ + { + "key": "k8s-app", + "operator": "In", + "values": [ + "kube-dns" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + } + }, + "description": "Affinity of the coredns pods", + "type": [ + "object", + "null" + ] + }, + "computeType": { + "type": "string" + }, + "corefile": { + "description": "Entire corefile contents to use with installation", + "type": "string" + }, + "nodeSelector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "title": "The podAnnotations Schema", + "type": "object" + }, + "podDisruptionBudget": { + "description": "podDisruptionBudget configurations", + "enabled": { + "default": true, + "description": "the option to enable managed PDB", + "type": "boolean" + }, + "maxUnavailable": { + "anyOf": [ + { + "pattern": ".*%$", + "type": "string" + }, + { + "type": "integer" + } + ], + "default": 1, + "description": "minAvailable value for managed PDB, can be either string or integer; if it's string, should end with %" + }, + "minAvailable": { + "anyOf": [ + { + "pattern": ".*%$", + "type": "string" + }, + { + "type": "integer" + } + ], + "description": "maxUnavailable value for managed PDB, can be either string or integer; if it's string, should end with %" + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "title": "The podLabels Schema", + "type": "object" + }, + "replicaCount": { + "type": "integer" + }, + "resources": { + "$ref": "#/definitions/Resources" + }, + "tolerations": { + "default": [ + { + "key": "CriticalAddonsOnly", + "operator": "Exists" + }, + { + "effect": "NoSchedule", + "key": "node-role.kubernetes.io/control-plane" + } + ], + "description": "Tolerations of the coredns pod", + "items": { + "type": "object" + }, + "type": "array" + }, + "topologySpreadConstraints": { + "description": "The coredns pod topology spread constraints", + "type": "array" + } + }, + "title": "Coredns", + "type": "object" + }, + "Limits": { + "additionalProperties": false, + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "title": "Limits", + "type": "object" + }, + "Resources": { + "additionalProperties": false, + "properties": { + "limits": { + "$ref": "#/definitions/Limits" + }, + "requests": { + "$ref": "#/definitions/Limits" + } + }, + "title": "Resources", + "type": "object" + } + } +} +``` + +> [!NOTE] +> The available configuration values will vary between add-on versions, +> typically more configuration values will be added in later versions as functionality is enabled by EKS.