From 925b4c8d22766c2ca9290aebd343f514ce216de7 Mon Sep 17 00:00:00 2001 From: Geoffrey Cline Date: Mon, 13 Jan 2025 19:06:57 +0000 Subject: [PATCH] github publish --- .crux_dry_run_build | 3 + .gitconfig | 8 + .github/PULL_REQUEST_TEMPLATE.md | 6 + .github/workflows/vale.yml | 27 + .gitignore | 80 + .vale.ini | 16 + .vscode/asciidoc.code-snippets | 185 + .vscode/tasks.json | 35 + CODEOWNERS | 32 + CODE_OF_CONDUCT.md | 4 + CONTRIBUTING.md | 56 + Config | 31 + LICENSE | 152 + LICENSE-SAMPLECODE | 14 + LICENSE-SUMMARY | 5 + README.md | 37 + build-info.xml | 49 + build.xml | 6 + eks-docs.code-workspace | 32 + latest/ug/YAML/aws-auth-hybrid.yml | 12 + .../allow-ui-client.yaml | 13 + .../network-policy-stars-demo/allow-ui.yaml | 13 + .../backend-policy.yaml | 17 + .../network-policy-stars-demo/backend.yaml | 37 + .../network-policy-stars-demo/client.yaml | 43 + .../default-deny.yaml | 7 + .../default-deny.yaml.1 | 7 + .../frontend-policy.yaml | 17 + .../network-policy-stars-demo/frontend.yaml | 37 + .../management-ui.yaml | 41 + .../network-policy-stars-demo/namespace.yaml | 4 + .../ug/YAML/vpc-cni-nodeaffinity-hybrid.yml | 22 + latest/ug/attributes.txt | 230 + latest/ug/automode/adoc-windows.adoc | 98 + latest/ug/automode/api-reference.adoc | 191 + latest/ug/automode/associate-workload.adoc | 52 + latest/ug/automode/auto-configure-alb.adoc | 209 + latest/ug/automode/auto-configure-nlb.adoc | 156 + latest/ug/automode/auto-disable.adoc | 63 + latest/ug/automode/auto-elb-example.adoc | 241 + latest/ug/automode/auto-enable-existing.adoc | 150 + latest/ug/automode/auto-glossary.adoc | 77 + latest/ug/automode/auto-learn-iam.adoc | 196 + .../ug/automode/auto-migrate-karpenter.adoc | 137 + latest/ug/automode/auto-migrate-mng.adoc | 30 + latest/ug/automode/auto-mng.adoc | 153 + latest/ug/automode/auto-net-pol.adoc | 74 + latest/ug/automode/auto-networking.adoc | 70 + latest/ug/automode/auto-reference.adoc | 38 + latest/ug/automode/auto-troubleshoot.adoc | 88 + latest/ug/automode/auto-upgrade.adoc | 39 + latest/ug/automode/auto-workloads.adoc | 32 + latest/ug/automode/automode-attributes.txt | 0 .../ug/automode/automode-get-started-cli.adoc | 330 ++ .../automode-get-started-console.adoc | 54 + .../automode/automode-get-started-eksctl.adoc | 83 + .../ug/automode/automode-learn-instances.adoc | 112 + latest/ug/automode/automode-workload.adoc | 134 + latest/ug/automode/automode.adoc | 99 + latest/ug/automode/create-auto.adoc | 45 + latest/ug/automode/create-node-class.adoc | 105 + latest/ug/automode/create-node-pool.adoc | 179 + latest/ug/automode/create-storage-class.adoc | 240 + latest/ug/automode/critical-workload.adoc | 70 + latest/ug/automode/migrate-auto.adoc | 79 + latest/ug/automode/old/hpa_scaling.adoc | 242 + .../ug/automode/sample-storage-workload.adoc | 231 + .../ug/automode/set-builtin-node-pools.adoc | 59 + latest/ug/automode/settings-auto.adoc | 113 + latest/ug/automode/troubleshoot-lbc.adoc | 105 + latest/ug/automode/wip.adoc | 21 + .../ug/automode/wip/create-vpc-console.adoc | 148 + latest/ug/automode/wip/eksctl-docs.adoc | 119 + latest/ug/automode/wip/tag-subnets.adoc | 32 + latest/ug/book.adoc | 90 + latest/ug/clusters/authentication/images | 1 + latest/ug/clusters/autoscaling.adoc | 44 + latest/ug/clusters/cluster-endpoint.adoc | 253 + latest/ug/clusters/cluster-insights.adoc | 201 + latest/ug/clusters/clusters.adoc | 93 + latest/ug/clusters/create-cluster-auto.adoc | 336 ++ latest/ug/clusters/create-cluster.adoc | 318 ++ latest/ug/clusters/delete-cluster.adoc | 193 + .../ug/clusters/disable-extended-support.adoc | 38 + .../ug/clusters/disable-windows-support.adoc | 28 + .../ug/clusters/enable-extended-support.adoc | 42 + latest/ug/clusters/images | 1 + .../kubernetes-versions-extended.adoc | 161 + .../kubernetes-versions-standard.adoc | 88 + latest/ug/clusters/kubernetes-versions.adoc | 276 + .../management/cost-monitoring-aws.adoc | 29 + .../cost-monitoring-kubecost-bundles.adoc | 330 ++ .../management/cost-monitoring-kubecost.adoc | 115 + .../clusters/management/cost-monitoring.adoc | 30 + .../ug/clusters/management/eks-managing.adoc | 40 + .../clusters/management/eks-using-tags.adoc | 215 + latest/ug/clusters/management/helm.adoc | 77 + latest/ug/clusters/management/images | 1 + .../clusters/management/metrics-server.adoc | 80 + .../clusters/management/service-quotas.adoc | 95 + latest/ug/clusters/platform-versions.adoc | 859 +++ latest/ug/clusters/private-clusters.adoc | 106 + latest/ug/clusters/update-cluster.adoc | 256 + latest/ug/clusters/view-support-status.adoc | 20 + latest/ug/clusters/view-upgrade-policy.adoc | 51 + latest/ug/clusters/windows-support.adoc | 204 + latest/ug/clusters/zone-shift-enable.adoc | 69 + latest/ug/clusters/zone-shift.adoc | 278 + latest/ug/connector/connecting-cluster.adoc | 216 + .../ug/connector/connector-grant-access.adoc | 75 + .../deregister-connected-cluster.adoc | 93 + latest/ug/connector/eks-connector.adoc | 87 + latest/ug/connector/images | 1 + latest/ug/connector/security-connector.adoc | 44 + .../connector/troubleshooting-connector.adoc | 275 + latest/ug/connector/tsc-faq.adoc | 27 + latest/ug/contribute/contribute.adoc | 20 + latest/ug/diagrams/README.adoc | 5 + latest/ug/doc-history.adoc | 1882 +++++++ .../getting-started-automode.adoc | 31 + .../getting-started-console.adoc | 399 ++ .../getting-started-eksctl.adoc | 179 + .../ug/getting-started/getting-started.adoc | 45 + latest/ug/getting-started/install-awscli.adoc | 114 + .../ug/getting-started/install-kubectl.adoc | 816 +++ latest/ug/getting-started/learn-eks.adoc | 158 + latest/ug/getting-started/setting-up.adoc | 47 + .../AmazonEKS_CNI_IPv6_Policy.json | 25 + .../iam_policies/EKS_trust_relationship.json | 12 + .../Worker_node_trust_relationship.json | 12 + latest/ug/images/2048.png | Bin 0 -> 18465 bytes latest/ug/images/AWS_LOGO_RGB_200px.png | Bin 0 -> 4188 bytes latest/ug/images/EKS_CNI_metrics.png | Bin 0 -> 24047 bytes latest/ug/images/SNAT-disabled.jpg | Bin 0 -> 66787 bytes latest/ug/images/SNAT-enabled.jpg | Bin 0 -> 40917 bytes latest/ug/images/adot_comp_workflow.png | Bin 0 -> 95002 bytes latest/ug/images/aws_cover.jpg | Bin 0 -> 21685 bytes latest/ug/images/connector-model.png | Bin 0 -> 77450 bytes ...ole-cni-config-network-policy-logs-cwl.png | Bin 0 -> 144839 bytes ...console-cni-config-network-policy-logs.png | Bin 0 -> 140210 bytes .../console-cni-config-network-policy.png | Bin 0 -> 129881 bytes latest/ug/images/dashboard-token-auth.png | Bin 0 -> 36789 bytes latest/ug/images/eks-iam.png | Bin 0 -> 38644 bytes latest/ug/images/eksctl-create-cluster.gif | Bin 0 -> 430763 bytes latest/ug/images/hybrid-prereq-diagram.png | Bin 0 -> 275111 bytes latest/ug/images/k8sinaction.png | Bin 0 -> 110306 bytes latest/ug/images/kubecost-architecture.png | Bin 0 -> 23992 bytes latest/ug/images/kubecost.png | Bin 0 -> 82100 bytes latest/ug/images/kubernetes-dashboard.png | Bin 0 -> 106763 bytes latest/ug/images/lbc-overview.png | Bin 0 -> 108356 bytes latest/ug/images/lbc-overview.svg | 4 + latest/ug/images/lp-eks-deployment-models.png | Bin 0 -> 71807 bytes latest/ug/images/network-components.png | Bin 0 -> 90484 bytes latest/ug/images/networking-overview.png | Bin 0 -> 50739 bytes latest/ug/images/networking.png | Bin 0 -> 67589 bytes latest/ug/images/outpost_env.png | Bin 0 -> 84564 bytes .../ug/images/outposts-deployment-options.png | Bin 0 -> 73171 bytes latest/ug/images/outposts-local-cluster.png | Bin 0 -> 38883 bytes latest/ug/images/prometheus-metric.png | Bin 0 -> 29338 bytes latest/ug/images/prometheus.png | Bin 0 -> 27672 bytes latest/ug/images/quick2048.png | Bin 0 -> 81306 bytes latest/ug/images/stars-default.png | Bin 0 -> 58548 bytes latest/ug/images/stars-final.png | Bin 0 -> 38276 bytes latest/ug/images/stars-front-end-back-end.png | Bin 0 -> 40791 bytes latest/ug/images/stars-no-traffic.png | Bin 0 -> 26398 bytes latest/ug/images/what-is-eks.png | Bin 0 -> 65261 bytes latest/ug/images/zs-ha-after-failure.png | Bin 0 -> 170239 bytes latest/ug/images/zs-ha-before-failure.png | Bin 0 -> 154584 bytes latest/ug/images/zs-pod-affinity-rule.png | Bin 0 -> 222700 bytes latest/ug/images/zs-spread-constraints-2.png | Bin 0 -> 175788 bytes latest/ug/images/zs-spread-constraints.png | Bin 0 -> 164944 bytes latest/ug/images/zs-traffic-flow-after-1.png | Bin 0 -> 204576 bytes latest/ug/images/zs-traffic-flow-after-2.png | Bin 0 -> 153439 bytes latest/ug/images/zs-traffic-flow-before-1.png | Bin 0 -> 210017 bytes latest/ug/images/zs-traffic-flow-before-2.png | Bin 0 -> 142862 bytes latest/ug/images_BJS/kubecost.png | Bin 0 -> 91326 bytes latest/ug/images_BJS/outpost_env.png | Bin 0 -> 28060 bytes .../outposts-deployment-options.png | Bin 0 -> 48948 bytes .../ug/images_BJS/outposts-local-cluster.png | Bin 0 -> 19154 bytes ...reating-resources-with-cloudformation.adoc | 38 + latest/ug/integrations/eks-integrations.adoc | 40 + latest/ug/integrations/images | 1 + .../integrations/integration-detective.adoc | 39 + .../integrations/integration-guardduty.adoc | 36 + .../integration-resilience-hub.adoc | 10 + .../integration-securitylake.adoc | 54 + .../integrations/integration-vpc-lattice.adoc | 10 + latest/ug/integrations/local-zones.adoc | 17 + .../aws-access/service-accounts.adoc | 1937 +++++++ latest/ug/manage-access/cluster-auth.adoc | 83 + .../ug/manage-access/create-kubeconfig.adoc | 66 + .../k8s-access/access-entries.adoc | 319 ++ .../k8s-access/access-policies.adoc | 156 + .../k8s-access/access-policy-reference.adoc | 585 +++ .../k8s-access/auth-configmap.adoc | 372 ++ .../authenticate-oidc-identity-provider.adoc | 193 + .../disassociate-oidc-identity-provider.adoc | 13 + .../k8s-access/grant-k8s-access.adoc | 119 + .../k8s-access/migrating-access-entries.adoc | 59 + .../view-kubernetes-resources.adoc | 236 + latest/ug/ml/capacity-blocks-mng.adoc | 89 + latest/ug/ml/capacity-blocks.adoc | 103 + latest/ug/ml/inferentia-support.adoc | 251 + latest/ug/ml/machine-learning-on-eks.adoc | 68 + latest/ug/ml/ml-eks-optimized-ami.adoc | 85 + .../ug/ml/ml-eks-windows-optimized-ami.adoc | 223 + latest/ug/ml/ml-get-started.adoc | 51 + latest/ug/ml/ml-prepare-for-cluster.adoc | 48 + latest/ug/ml/ml-tutorials.adoc | 76 + latest/ug/ml/node-efa.adoc | 316 ++ .../ml/node-taints-managed-node-groups.adoc | 65 + latest/ug/networking/YAML | 1 + .../ug/networking/auto-mode-addon-note.adoc | 6 + latest/ug/networking/creating-a-vpc.adoc | 130 + .../ug/networking/eks-networking-add-ons.adoc | 4640 +++++++++++++++++ latest/ug/networking/eks-networking.adoc | 40 + latest/ug/networking/images | 1 + .../network-policies-troubleshooting.adoc | 261 + .../networking/network-policy-stars-demo.adoc | 189 + latest/ug/networking/network-reqs.adoc | 290 ++ latest/ug/networking/sec-group-reqs.adoc | 152 + latest/ug/nodes/al2023.adoc | 49 + latest/ug/nodes/auto-get-logs.adoc | 128 + .../bottlerocket-compliance-support.adoc | 18 + latest/ug/nodes/choosing-instance-type.adoc | 117 + .../ug/nodes/create-managed-node-group.adoc | 252 + latest/ug/nodes/delete-fargate-profile.adoc | 54 + .../ug/nodes/delete-managed-node-group.adoc | 74 + latest/ug/nodes/dockershim-deprecation.adoc | 100 + latest/ug/nodes/eks-ami-build-scripts.adoc | 25 + .../nodes/eks-ami-versions-bottlerocket.adoc | 15 + latest/ug/nodes/eks-ami-versions-windows.adoc | 3993 ++++++++++++++ latest/ug/nodes/eks-compute.adoc | 233 + latest/ug/nodes/eks-custom-ami-windows.adoc | 115 + latest/ug/nodes/eks-linux-ami-versions.adoc | 20 + .../nodes/eks-optimized-ami-bottlerocket.adoc | 62 + latest/ug/nodes/eks-optimized-ami.adoc | 84 + latest/ug/nodes/eks-optimized-amis.adoc | 35 + .../ug/nodes/eks-optimized-windows-ami.adoc | 150 + latest/ug/nodes/eks-partner-amis.adoc | 15 + latest/ug/nodes/fargate-getting-started.adoc | 179 + latest/ug/nodes/fargate-logging.adoc | 426 ++ .../ug/nodes/fargate-pod-configuration.adoc | 115 + latest/ug/nodes/fargate-pod-patching.adoc | 82 + latest/ug/nodes/fargate-profile.adoc | 150 + latest/ug/nodes/fargate.adoc | 199 + latest/ug/nodes/hybrid-nodes-add-ons.adoc | 174 + .../ug/nodes/hybrid-nodes-cluster-create.adoc | 343 ++ .../ug/nodes/hybrid-nodes-cluster-prep.adoc | 111 + latest/ug/nodes/hybrid-nodes-cni.adoc | 563 ++ latest/ug/nodes/hybrid-nodes-creds.adoc | 528 ++ latest/ug/nodes/hybrid-nodes-join.adoc | 149 + latest/ug/nodes/hybrid-nodes-networking.adoc | 411 ++ latest/ug/nodes/hybrid-nodes-nodeadm.adoc | 591 +++ latest/ug/nodes/hybrid-nodes-os.adoc | 367 ++ latest/ug/nodes/hybrid-nodes-prereqs.adoc | 148 + latest/ug/nodes/hybrid-nodes-proxy.adoc | 119 + latest/ug/nodes/hybrid-nodes-remove.adoc | 62 + .../nodes/hybrid-nodes-troubleshooting.adoc | 673 +++ latest/ug/nodes/hybrid-nodes-tutorial.adoc | 30 + latest/ug/nodes/hybrid-nodes-upgrade.adoc | 150 + latest/ug/nodes/hybrid-nodes.adoc | 100 + latest/ug/nodes/images | 1 + latest/ug/nodes/launch-node-bottlerocket.adoc | 129 + latest/ug/nodes/launch-node-ubuntu.adoc | 103 + latest/ug/nodes/launch-templates.adoc | 464 ++ latest/ug/nodes/launch-windows-workers.adoc | 249 + latest/ug/nodes/launch-workers.adoc | 245 + latest/ug/nodes/learn-status-conditions.adoc | 127 + latest/ug/nodes/managed-node-groups.adoc | 130 + .../nodes/managed-node-update-behavior.adoc | 106 + latest/ug/nodes/migrate-stack.adoc | 304 ++ latest/ug/nodes/monitoring-fargate-usage.adoc | 89 + latest/ug/nodes/node-health.adoc | 394 ++ .../nodes/retrieve-ami-id-bottlerocket.adoc | 50 + latest/ug/nodes/retrieve-ami-id.adoc | 49 + latest/ug/nodes/retrieve-windows-ami-id.adoc | 48 + .../self-managed-windows-server-2022.adoc | 50 + .../ug/nodes/update-managed-node-group.adoc | 128 + latest/ug/nodes/update-stack.adoc | 109 + latest/ug/nodes/update-workers.adoc | 33 + latest/ug/nodes/worker.adoc | 39 + latest/ug/observability/cloudwatch.adoc | 151 + .../ug/observability/control-plane-logs.adoc | 163 + .../ug/observability/deploy-prometheus.adoc | 77 + latest/ug/observability/eks-observe.adoc | 168 + .../ug/observability/enable-asg-metrics.adoc | 17 + latest/ug/observability/images | 1 + .../logging-using-cloudtrail.adoc | 32 + .../observability-dashboard.adoc | 141 + latest/ug/observability/opentelemetry.adoc | 22 + latest/ug/observability/prometheus.adoc | 93 + .../service-name-info-in-cloudtrail.adoc | 26 + .../understanding-service-name-entries.adoc | 121 + latest/ug/observability/view-raw-metrics.adoc | 353 ++ .../eks-outposts-capacity-considerations.adoc | 67 + .../eks-outposts-local-cluster-create.adoc | 269 + .../eks-outposts-local-cluster-overview.adoc | 40 + .../eks-outposts-network-disconnects.adoc | 181 + .../eks-outposts-platform-versions.adoc | 302 ++ .../eks-outposts-self-managed-nodes.adoc | 228 + .../eks-outposts-troubleshooting.adoc | 275 + .../eks-outposts-vpc-subnet-requirements.adoc | 112 + latest/ug/outposts/eks-outposts.adoc | 160 + latest/ug/outposts/images | 1 + latest/ug/quickstart.adoc | 286 + latest/ug/related-projects.adoc | 204 + latest/ug/roadmap.adoc | 24 + latest/ug/samples/attributions-md.zip | Bin 0 -> 41134 bytes latest/ug/security/auto-security.adoc | 104 + latest/ug/security/compliance.adoc | 37 + .../configuration-vulnerability-analysis.adoc | 67 + .../iam-reference/auto-cluster-iam-role.adoc | 153 + .../iam-reference/auto-create-node-role.adoc | 117 + .../iam-reference/cluster-iam-role.adoc | 148 + .../iam-reference/create-node-role.adoc | 198 + .../iam-reference/security-iam-awsmanpol.adoc | 500 ++ .../security-iam-troubleshoot.adoc | 78 + .../security/iam-reference/security-iam.adoc | 1312 +++++ latest/ug/security/images | 1 + latest/ug/security/security-eks.adoc | 142 + latest/ug/security/security-k8s.adoc | 857 +++ latest/ug/security/security.adoc | 83 + latest/ug/storage/YAML/gp2-storage-class.yaml | 10 + latest/ug/storage/YAML/sc1-storage-class.yaml | 10 + .../ug/storage/csi-snapshot-controller.adoc | 32 + latest/ug/storage/ebs-csi-migration-faq.adoc | 147 + latest/ug/storage/ebs-csi.adoc | 366 ++ latest/ug/storage/efs-csi.adoc | 201 + latest/ug/storage/file-cache-csi.adoc | 22 + latest/ug/storage/fsx-csi.adoc | 307 ++ latest/ug/storage/fsx-ontap.adoc | 22 + latest/ug/storage/fsx-openzfs-csi.adoc | 22 + latest/ug/storage/s3-csi.adoc | 421 ++ latest/ug/storage/storage.adoc | 53 + latest/ug/troubleshooting/images | 1 + .../ug/troubleshooting/troubleshooting.adoc | 720 +++ latest/ug/what-is/common-use-cases.adoc | 51 + latest/ug/what-is/eks-architecture.adoc | 68 + latest/ug/what-is/eks-deployment-options.adoc | 116 + latest/ug/what-is/images | 1 + latest/ug/what-is/kubernetes-concepts.adoc | 264 + latest/ug/what-is/what-is-eks.adoc | 97 + latest/ug/workloads/add-ons-iam.adoc | 37 + latest/ug/workloads/add-ons-images.adoc | 115 + latest/ug/workloads/addon-compat.adoc | 75 + .../ug/workloads/addon-id-troubleshoot.adoc | 42 + latest/ug/workloads/addons-removed.xml.bak | 206 + latest/ug/workloads/alb-ingress.adoc | 251 + latest/ug/workloads/community-addons.adoc | 76 + .../workloads/copy-image-to-repository.adoc | 89 + latest/ug/workloads/creating-an-add-on.adoc | 330 ++ latest/ug/workloads/eks-add-ons.adoc | 190 + latest/ug/workloads/eks-workloads.adoc | 60 + .../workloads/horizontal-pod-autoscaler.adoc | 127 + latest/ug/workloads/image-verification.adoc | 30 + latest/ug/workloads/images | 1 + .../kubernetes-field-management.adoc | 150 + .../ug/workloads/network-load-balancing.adoc | 282 + latest/ug/workloads/remove-addon-role.adoc | 27 + latest/ug/workloads/removing-an-addon.adoc | 155 + .../restrict-service-external-ip.adoc | 89 + latest/ug/workloads/retreive-iam-info.adoc | 140 + .../workloads/sample-deployment-windows.adoc | 279 + latest/ug/workloads/sample-deployment.adoc | 277 + latest/ug/workloads/update-addon-role.adoc | 64 + latest/ug/workloads/updating-an-add-on.adoc | 216 + .../ug/workloads/vertical-pod-autoscaler.adoc | 253 + .../workloads-add-ons-available-eks.adoc | 515 ++ .../workloads-add-ons-available-vendors.adoc | 890 ++++ latest/ug/zonbook.redirects.xml | 154 + preview-config.yaml | 2 + vale/styles/EksDocs/AwsBrand.yml | 6 + vale/styles/EksDocs/ExternalDomains.yml | 118 + .../vocabularies/EksDocsVocab/accept.txt | 10 + 375 files changed, 56579 insertions(+) create mode 100644 .crux_dry_run_build create mode 100644 .gitconfig create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/vale.yml create mode 100755 .gitignore create mode 100644 .vale.ini create mode 100644 .vscode/asciidoc.code-snippets create mode 100644 .vscode/tasks.json create mode 100644 CODEOWNERS create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100755 Config create mode 100644 LICENSE create mode 100644 LICENSE-SAMPLECODE create mode 100644 LICENSE-SUMMARY create mode 100644 README.md create mode 100755 build-info.xml create mode 100755 build.xml create mode 100644 eks-docs.code-workspace create mode 100644 latest/ug/YAML/aws-auth-hybrid.yml create mode 100644 latest/ug/YAML/network-policy-stars-demo/allow-ui-client.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/allow-ui.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/backend-policy.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/backend.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/client.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/default-deny.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/default-deny.yaml.1 create mode 100644 latest/ug/YAML/network-policy-stars-demo/frontend-policy.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/frontend.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/management-ui.yaml create mode 100644 latest/ug/YAML/network-policy-stars-demo/namespace.yaml create mode 100644 latest/ug/YAML/vpc-cni-nodeaffinity-hybrid.yml create mode 100644 latest/ug/attributes.txt create mode 100644 latest/ug/automode/adoc-windows.adoc create mode 100644 latest/ug/automode/api-reference.adoc create mode 100644 latest/ug/automode/associate-workload.adoc create mode 100644 latest/ug/automode/auto-configure-alb.adoc create mode 100644 latest/ug/automode/auto-configure-nlb.adoc create mode 100644 latest/ug/automode/auto-disable.adoc create mode 100644 latest/ug/automode/auto-elb-example.adoc create mode 100644 latest/ug/automode/auto-enable-existing.adoc create mode 100644 latest/ug/automode/auto-glossary.adoc create mode 100644 latest/ug/automode/auto-learn-iam.adoc create mode 100644 latest/ug/automode/auto-migrate-karpenter.adoc create mode 100644 latest/ug/automode/auto-migrate-mng.adoc create mode 100644 latest/ug/automode/auto-mng.adoc create mode 100644 latest/ug/automode/auto-net-pol.adoc create mode 100644 latest/ug/automode/auto-networking.adoc create mode 100644 latest/ug/automode/auto-reference.adoc create mode 100644 latest/ug/automode/auto-troubleshoot.adoc create mode 100644 latest/ug/automode/auto-upgrade.adoc create mode 100644 latest/ug/automode/auto-workloads.adoc create mode 100644 latest/ug/automode/automode-attributes.txt create mode 100644 latest/ug/automode/automode-get-started-cli.adoc create mode 100644 latest/ug/automode/automode-get-started-console.adoc create mode 100644 latest/ug/automode/automode-get-started-eksctl.adoc create mode 100644 latest/ug/automode/automode-learn-instances.adoc create mode 100644 latest/ug/automode/automode-workload.adoc create mode 100644 latest/ug/automode/automode.adoc create mode 100644 latest/ug/automode/create-auto.adoc create mode 100644 latest/ug/automode/create-node-class.adoc create mode 100644 latest/ug/automode/create-node-pool.adoc create mode 100644 latest/ug/automode/create-storage-class.adoc create mode 100644 latest/ug/automode/critical-workload.adoc create mode 100644 latest/ug/automode/migrate-auto.adoc create mode 100644 latest/ug/automode/old/hpa_scaling.adoc create mode 100644 latest/ug/automode/sample-storage-workload.adoc create mode 100644 latest/ug/automode/set-builtin-node-pools.adoc create mode 100644 latest/ug/automode/settings-auto.adoc create mode 100644 latest/ug/automode/troubleshoot-lbc.adoc create mode 100644 latest/ug/automode/wip.adoc create mode 100644 latest/ug/automode/wip/create-vpc-console.adoc create mode 100644 latest/ug/automode/wip/eksctl-docs.adoc create mode 100644 latest/ug/automode/wip/tag-subnets.adoc create mode 100644 latest/ug/book.adoc create mode 120000 latest/ug/clusters/authentication/images create mode 100644 latest/ug/clusters/autoscaling.adoc create mode 100644 latest/ug/clusters/cluster-endpoint.adoc create mode 100644 latest/ug/clusters/cluster-insights.adoc create mode 100644 latest/ug/clusters/clusters.adoc create mode 100644 latest/ug/clusters/create-cluster-auto.adoc create mode 100644 latest/ug/clusters/create-cluster.adoc create mode 100644 latest/ug/clusters/delete-cluster.adoc create mode 100644 latest/ug/clusters/disable-extended-support.adoc create mode 100644 latest/ug/clusters/disable-windows-support.adoc create mode 100644 latest/ug/clusters/enable-extended-support.adoc create mode 120000 latest/ug/clusters/images create mode 100644 latest/ug/clusters/kubernetes-versions-extended.adoc create mode 100644 latest/ug/clusters/kubernetes-versions-standard.adoc create mode 100644 latest/ug/clusters/kubernetes-versions.adoc create mode 100644 latest/ug/clusters/management/cost-monitoring-aws.adoc create mode 100644 latest/ug/clusters/management/cost-monitoring-kubecost-bundles.adoc create mode 100644 latest/ug/clusters/management/cost-monitoring-kubecost.adoc create mode 100644 latest/ug/clusters/management/cost-monitoring.adoc create mode 100644 latest/ug/clusters/management/eks-managing.adoc create mode 100644 latest/ug/clusters/management/eks-using-tags.adoc create mode 100644 latest/ug/clusters/management/helm.adoc create mode 120000 latest/ug/clusters/management/images create mode 100644 latest/ug/clusters/management/metrics-server.adoc create mode 100644 latest/ug/clusters/management/service-quotas.adoc create mode 100644 latest/ug/clusters/platform-versions.adoc create mode 100644 latest/ug/clusters/private-clusters.adoc create mode 100644 latest/ug/clusters/update-cluster.adoc create mode 100644 latest/ug/clusters/view-support-status.adoc create mode 100644 latest/ug/clusters/view-upgrade-policy.adoc create mode 100644 latest/ug/clusters/windows-support.adoc create mode 100644 latest/ug/clusters/zone-shift-enable.adoc create mode 100644 latest/ug/clusters/zone-shift.adoc create mode 100644 latest/ug/connector/connecting-cluster.adoc create mode 100644 latest/ug/connector/connector-grant-access.adoc create mode 100644 latest/ug/connector/deregister-connected-cluster.adoc create mode 100644 latest/ug/connector/eks-connector.adoc create mode 120000 latest/ug/connector/images create mode 100644 latest/ug/connector/security-connector.adoc create mode 100644 latest/ug/connector/troubleshooting-connector.adoc create mode 100644 latest/ug/connector/tsc-faq.adoc create mode 100644 latest/ug/contribute/contribute.adoc create mode 100644 latest/ug/diagrams/README.adoc create mode 100644 latest/ug/doc-history.adoc create mode 100644 latest/ug/getting-started/getting-started-automode.adoc create mode 100644 latest/ug/getting-started/getting-started-console.adoc create mode 100644 latest/ug/getting-started/getting-started-eksctl.adoc create mode 100644 latest/ug/getting-started/getting-started.adoc create mode 100644 latest/ug/getting-started/install-awscli.adoc create mode 100644 latest/ug/getting-started/install-kubectl.adoc create mode 100644 latest/ug/getting-started/learn-eks.adoc create mode 100644 latest/ug/getting-started/setting-up.adoc create mode 100644 latest/ug/iam_policies/AmazonEKS_CNI_IPv6_Policy.json create mode 100644 latest/ug/iam_policies/EKS_trust_relationship.json create mode 100644 latest/ug/iam_policies/Worker_node_trust_relationship.json create mode 100644 latest/ug/images/2048.png create mode 100644 latest/ug/images/AWS_LOGO_RGB_200px.png create mode 100644 latest/ug/images/EKS_CNI_metrics.png create mode 100644 latest/ug/images/SNAT-disabled.jpg create mode 100644 latest/ug/images/SNAT-enabled.jpg create mode 100644 latest/ug/images/adot_comp_workflow.png create mode 100644 latest/ug/images/aws_cover.jpg create mode 100644 latest/ug/images/connector-model.png create mode 100644 latest/ug/images/console-cni-config-network-policy-logs-cwl.png create mode 100644 latest/ug/images/console-cni-config-network-policy-logs.png create mode 100644 latest/ug/images/console-cni-config-network-policy.png create mode 100644 latest/ug/images/dashboard-token-auth.png create mode 100644 latest/ug/images/eks-iam.png create mode 100644 latest/ug/images/eksctl-create-cluster.gif create mode 100644 latest/ug/images/hybrid-prereq-diagram.png create mode 100644 latest/ug/images/k8sinaction.png create mode 100644 latest/ug/images/kubecost-architecture.png create mode 100644 latest/ug/images/kubecost.png create mode 100644 latest/ug/images/kubernetes-dashboard.png create mode 100644 latest/ug/images/lbc-overview.png create mode 100644 latest/ug/images/lbc-overview.svg create mode 100644 latest/ug/images/lp-eks-deployment-models.png create mode 100644 latest/ug/images/network-components.png create mode 100644 latest/ug/images/networking-overview.png create mode 100644 latest/ug/images/networking.png create mode 100644 latest/ug/images/outpost_env.png create mode 100644 latest/ug/images/outposts-deployment-options.png create mode 100644 latest/ug/images/outposts-local-cluster.png create mode 100644 latest/ug/images/prometheus-metric.png create mode 100644 latest/ug/images/prometheus.png create mode 100644 latest/ug/images/quick2048.png create mode 100644 latest/ug/images/stars-default.png create mode 100644 latest/ug/images/stars-final.png create mode 100644 latest/ug/images/stars-front-end-back-end.png create mode 100644 latest/ug/images/stars-no-traffic.png create mode 100644 latest/ug/images/what-is-eks.png create mode 100644 latest/ug/images/zs-ha-after-failure.png create mode 100644 latest/ug/images/zs-ha-before-failure.png create mode 100644 latest/ug/images/zs-pod-affinity-rule.png create mode 100644 latest/ug/images/zs-spread-constraints-2.png create mode 100644 latest/ug/images/zs-spread-constraints.png create mode 100644 latest/ug/images/zs-traffic-flow-after-1.png create mode 100644 latest/ug/images/zs-traffic-flow-after-2.png create mode 100644 latest/ug/images/zs-traffic-flow-before-1.png create mode 100644 latest/ug/images/zs-traffic-flow-before-2.png create mode 100644 latest/ug/images_BJS/kubecost.png create mode 100644 latest/ug/images_BJS/outpost_env.png create mode 100644 latest/ug/images_BJS/outposts-deployment-options.png create mode 100644 latest/ug/images_BJS/outposts-local-cluster.png create mode 100644 latest/ug/integrations/creating-resources-with-cloudformation.adoc create mode 100644 latest/ug/integrations/eks-integrations.adoc create mode 120000 latest/ug/integrations/images create mode 100644 latest/ug/integrations/integration-detective.adoc create mode 100644 latest/ug/integrations/integration-guardduty.adoc create mode 100644 latest/ug/integrations/integration-resilience-hub.adoc create mode 100644 latest/ug/integrations/integration-securitylake.adoc create mode 100644 latest/ug/integrations/integration-vpc-lattice.adoc create mode 100644 latest/ug/integrations/local-zones.adoc create mode 100644 latest/ug/manage-access/aws-access/service-accounts.adoc create mode 100644 latest/ug/manage-access/cluster-auth.adoc create mode 100644 latest/ug/manage-access/create-kubeconfig.adoc create mode 100644 latest/ug/manage-access/k8s-access/access-entries.adoc create mode 100644 latest/ug/manage-access/k8s-access/access-policies.adoc create mode 100644 latest/ug/manage-access/k8s-access/access-policy-reference.adoc create mode 100644 latest/ug/manage-access/k8s-access/auth-configmap.adoc create mode 100644 latest/ug/manage-access/k8s-access/authenticate-oidc-identity-provider.adoc create mode 100644 latest/ug/manage-access/k8s-access/disassociate-oidc-identity-provider.adoc create mode 100644 latest/ug/manage-access/k8s-access/grant-k8s-access.adoc create mode 100644 latest/ug/manage-access/k8s-access/migrating-access-entries.adoc create mode 100644 latest/ug/manage-access/view-kubernetes-resources.adoc create mode 100644 latest/ug/ml/capacity-blocks-mng.adoc create mode 100644 latest/ug/ml/capacity-blocks.adoc create mode 100644 latest/ug/ml/inferentia-support.adoc create mode 100644 latest/ug/ml/machine-learning-on-eks.adoc create mode 100644 latest/ug/ml/ml-eks-optimized-ami.adoc create mode 100644 latest/ug/ml/ml-eks-windows-optimized-ami.adoc create mode 100644 latest/ug/ml/ml-get-started.adoc create mode 100644 latest/ug/ml/ml-prepare-for-cluster.adoc create mode 100644 latest/ug/ml/ml-tutorials.adoc create mode 100644 latest/ug/ml/node-efa.adoc create mode 100644 latest/ug/ml/node-taints-managed-node-groups.adoc create mode 120000 latest/ug/networking/YAML create mode 100644 latest/ug/networking/auto-mode-addon-note.adoc create mode 100644 latest/ug/networking/creating-a-vpc.adoc create mode 100644 latest/ug/networking/eks-networking-add-ons.adoc create mode 100644 latest/ug/networking/eks-networking.adoc create mode 120000 latest/ug/networking/images create mode 100644 latest/ug/networking/network-policies-troubleshooting.adoc create mode 100644 latest/ug/networking/network-policy-stars-demo.adoc create mode 100644 latest/ug/networking/network-reqs.adoc create mode 100644 latest/ug/networking/sec-group-reqs.adoc create mode 100644 latest/ug/nodes/al2023.adoc create mode 100644 latest/ug/nodes/auto-get-logs.adoc create mode 100644 latest/ug/nodes/bottlerocket-compliance-support.adoc create mode 100644 latest/ug/nodes/choosing-instance-type.adoc create mode 100644 latest/ug/nodes/create-managed-node-group.adoc create mode 100644 latest/ug/nodes/delete-fargate-profile.adoc create mode 100644 latest/ug/nodes/delete-managed-node-group.adoc create mode 100644 latest/ug/nodes/dockershim-deprecation.adoc create mode 100644 latest/ug/nodes/eks-ami-build-scripts.adoc create mode 100644 latest/ug/nodes/eks-ami-versions-bottlerocket.adoc create mode 100644 latest/ug/nodes/eks-ami-versions-windows.adoc create mode 100644 latest/ug/nodes/eks-compute.adoc create mode 100644 latest/ug/nodes/eks-custom-ami-windows.adoc create mode 100644 latest/ug/nodes/eks-linux-ami-versions.adoc create mode 100644 latest/ug/nodes/eks-optimized-ami-bottlerocket.adoc create mode 100644 latest/ug/nodes/eks-optimized-ami.adoc create mode 100644 latest/ug/nodes/eks-optimized-amis.adoc create mode 100644 latest/ug/nodes/eks-optimized-windows-ami.adoc create mode 100644 latest/ug/nodes/eks-partner-amis.adoc create mode 100644 latest/ug/nodes/fargate-getting-started.adoc create mode 100644 latest/ug/nodes/fargate-logging.adoc create mode 100644 latest/ug/nodes/fargate-pod-configuration.adoc create mode 100644 latest/ug/nodes/fargate-pod-patching.adoc create mode 100644 latest/ug/nodes/fargate-profile.adoc create mode 100644 latest/ug/nodes/fargate.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-add-ons.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-cluster-create.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-cluster-prep.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-cni.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-creds.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-join.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-networking.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-nodeadm.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-os.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-prereqs.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-proxy.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-remove.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-troubleshooting.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-tutorial.adoc create mode 100644 latest/ug/nodes/hybrid-nodes-upgrade.adoc create mode 100644 latest/ug/nodes/hybrid-nodes.adoc create mode 120000 latest/ug/nodes/images create mode 100644 latest/ug/nodes/launch-node-bottlerocket.adoc create mode 100644 latest/ug/nodes/launch-node-ubuntu.adoc create mode 100644 latest/ug/nodes/launch-templates.adoc create mode 100644 latest/ug/nodes/launch-windows-workers.adoc create mode 100644 latest/ug/nodes/launch-workers.adoc create mode 100644 latest/ug/nodes/learn-status-conditions.adoc create mode 100644 latest/ug/nodes/managed-node-groups.adoc create mode 100644 latest/ug/nodes/managed-node-update-behavior.adoc create mode 100644 latest/ug/nodes/migrate-stack.adoc create mode 100644 latest/ug/nodes/monitoring-fargate-usage.adoc create mode 100644 latest/ug/nodes/node-health.adoc create mode 100644 latest/ug/nodes/retrieve-ami-id-bottlerocket.adoc create mode 100644 latest/ug/nodes/retrieve-ami-id.adoc create mode 100644 latest/ug/nodes/retrieve-windows-ami-id.adoc create mode 100644 latest/ug/nodes/self-managed-windows-server-2022.adoc create mode 100644 latest/ug/nodes/update-managed-node-group.adoc create mode 100644 latest/ug/nodes/update-stack.adoc create mode 100644 latest/ug/nodes/update-workers.adoc create mode 100644 latest/ug/nodes/worker.adoc create mode 100644 latest/ug/observability/cloudwatch.adoc create mode 100644 latest/ug/observability/control-plane-logs.adoc create mode 100644 latest/ug/observability/deploy-prometheus.adoc create mode 100644 latest/ug/observability/eks-observe.adoc create mode 100644 latest/ug/observability/enable-asg-metrics.adoc create mode 120000 latest/ug/observability/images create mode 100644 latest/ug/observability/logging-using-cloudtrail.adoc create mode 100644 latest/ug/observability/observability-dashboard.adoc create mode 100644 latest/ug/observability/opentelemetry.adoc create mode 100644 latest/ug/observability/prometheus.adoc create mode 100644 latest/ug/observability/service-name-info-in-cloudtrail.adoc create mode 100644 latest/ug/observability/understanding-service-name-entries.adoc create mode 100644 latest/ug/observability/view-raw-metrics.adoc create mode 100644 latest/ug/outposts/eks-outposts-capacity-considerations.adoc create mode 100644 latest/ug/outposts/eks-outposts-local-cluster-create.adoc create mode 100644 latest/ug/outposts/eks-outposts-local-cluster-overview.adoc create mode 100644 latest/ug/outposts/eks-outposts-network-disconnects.adoc create mode 100644 latest/ug/outposts/eks-outposts-platform-versions.adoc create mode 100644 latest/ug/outposts/eks-outposts-self-managed-nodes.adoc create mode 100644 latest/ug/outposts/eks-outposts-troubleshooting.adoc create mode 100644 latest/ug/outposts/eks-outposts-vpc-subnet-requirements.adoc create mode 100644 latest/ug/outposts/eks-outposts.adoc create mode 120000 latest/ug/outposts/images create mode 100644 latest/ug/quickstart.adoc create mode 100644 latest/ug/related-projects.adoc create mode 100644 latest/ug/roadmap.adoc create mode 100644 latest/ug/samples/attributions-md.zip create mode 100644 latest/ug/security/auto-security.adoc create mode 100644 latest/ug/security/compliance.adoc create mode 100644 latest/ug/security/configuration-vulnerability-analysis.adoc create mode 100644 latest/ug/security/iam-reference/auto-cluster-iam-role.adoc create mode 100644 latest/ug/security/iam-reference/auto-create-node-role.adoc create mode 100644 latest/ug/security/iam-reference/cluster-iam-role.adoc create mode 100644 latest/ug/security/iam-reference/create-node-role.adoc create mode 100644 latest/ug/security/iam-reference/security-iam-awsmanpol.adoc create mode 100644 latest/ug/security/iam-reference/security-iam-troubleshoot.adoc create mode 100644 latest/ug/security/iam-reference/security-iam.adoc create mode 120000 latest/ug/security/images create mode 100644 latest/ug/security/security-eks.adoc create mode 100644 latest/ug/security/security-k8s.adoc create mode 100644 latest/ug/security/security.adoc create mode 100644 latest/ug/storage/YAML/gp2-storage-class.yaml create mode 100644 latest/ug/storage/YAML/sc1-storage-class.yaml create mode 100644 latest/ug/storage/csi-snapshot-controller.adoc create mode 100644 latest/ug/storage/ebs-csi-migration-faq.adoc create mode 100644 latest/ug/storage/ebs-csi.adoc create mode 100644 latest/ug/storage/efs-csi.adoc create mode 100644 latest/ug/storage/file-cache-csi.adoc create mode 100644 latest/ug/storage/fsx-csi.adoc create mode 100644 latest/ug/storage/fsx-ontap.adoc create mode 100644 latest/ug/storage/fsx-openzfs-csi.adoc create mode 100644 latest/ug/storage/s3-csi.adoc create mode 100644 latest/ug/storage/storage.adoc create mode 120000 latest/ug/troubleshooting/images create mode 100644 latest/ug/troubleshooting/troubleshooting.adoc create mode 100644 latest/ug/what-is/common-use-cases.adoc create mode 100644 latest/ug/what-is/eks-architecture.adoc create mode 100644 latest/ug/what-is/eks-deployment-options.adoc create mode 120000 latest/ug/what-is/images create mode 100644 latest/ug/what-is/kubernetes-concepts.adoc create mode 100644 latest/ug/what-is/what-is-eks.adoc create mode 100644 latest/ug/workloads/add-ons-iam.adoc create mode 100644 latest/ug/workloads/add-ons-images.adoc create mode 100644 latest/ug/workloads/addon-compat.adoc create mode 100644 latest/ug/workloads/addon-id-troubleshoot.adoc create mode 100644 latest/ug/workloads/addons-removed.xml.bak create mode 100644 latest/ug/workloads/alb-ingress.adoc create mode 100644 latest/ug/workloads/community-addons.adoc create mode 100644 latest/ug/workloads/copy-image-to-repository.adoc create mode 100644 latest/ug/workloads/creating-an-add-on.adoc create mode 100644 latest/ug/workloads/eks-add-ons.adoc create mode 100644 latest/ug/workloads/eks-workloads.adoc create mode 100644 latest/ug/workloads/horizontal-pod-autoscaler.adoc create mode 100644 latest/ug/workloads/image-verification.adoc create mode 120000 latest/ug/workloads/images create mode 100644 latest/ug/workloads/kubernetes-field-management.adoc create mode 100644 latest/ug/workloads/network-load-balancing.adoc create mode 100644 latest/ug/workloads/remove-addon-role.adoc create mode 100644 latest/ug/workloads/removing-an-addon.adoc create mode 100644 latest/ug/workloads/restrict-service-external-ip.adoc create mode 100644 latest/ug/workloads/retreive-iam-info.adoc create mode 100644 latest/ug/workloads/sample-deployment-windows.adoc create mode 100644 latest/ug/workloads/sample-deployment.adoc create mode 100644 latest/ug/workloads/update-addon-role.adoc create mode 100644 latest/ug/workloads/updating-an-add-on.adoc create mode 100644 latest/ug/workloads/vertical-pod-autoscaler.adoc create mode 100644 latest/ug/workloads/workloads-add-ons-available-eks.adoc create mode 100644 latest/ug/workloads/workloads-add-ons-available-vendors.adoc create mode 100644 latest/ug/zonbook.redirects.xml create mode 100644 preview-config.yaml create mode 100644 vale/styles/EksDocs/AwsBrand.yml create mode 100644 vale/styles/EksDocs/ExternalDomains.yml create mode 100644 vale/styles/config/vocabularies/EksDocsVocab/accept.txt diff --git a/.crux_dry_run_build b/.crux_dry_run_build new file mode 100644 index 00000000..17a84de1 --- /dev/null +++ b/.crux_dry_run_build @@ -0,0 +1,3 @@ +# list of versionsets to run Dry-run Builds in. Used when you make or update a CR. +AWSDevDocs/public +AWSDevDocsBJS/public diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 00000000..fb0fcb94 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,8 @@ +[difftool "vscode"] + cmd = code --wait --diff $LOCAL $REMOTE +[diff] + tool = vscode +[mergetool "vscode"] + cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED +[merge] + tool = vscode diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..6bdaa999 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,6 @@ +*Issue #, if available:* + +*Description of changes:* + + +By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. diff --git a/.github/workflows/vale.yml b/.github/workflows/vale.yml new file mode 100644 index 00000000..bad1eb18 --- /dev/null +++ b/.github/workflows/vale.yml @@ -0,0 +1,27 @@ +name: Style check + +on: + pull_request: + workflow_dispatch: + +jobs: + style-job: + runs-on: ubuntu-latest + steps: + - name: Check out + uses: actions/checkout@v3 + + # For AsciiDoc users: + - name: Install Asciidoctor + run: sudo apt-get install -y asciidoctor + + - name: Run Vale + uses: errata-ai/vale-action@reviewdog + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + with: + fail_on_error: true + reporter: github-pr-check + filter_mode: added + files: latest/ug + continue-on-error: false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100755 index 00000000..7bc09874 --- /dev/null +++ b/.gitignore @@ -0,0 +1,80 @@ +*.running.properties.txt +*\~ +*.mobi +build +*.DS_Store +.attach_pid* +*.7z +*.action +*.apk +*.app +*.avi +*.bat +*.bin +*.cab +*.cmd +*.com +*.command +*.cpl +*.csh +*.dmg +*.doc +*.docx +*.ex_ +*.exe +*.gadget +*.html +*.inf +*.ins +*.inx +*.ipa +*.iso +*.isu +*.job +*.jse +*.ksh +*.lnk +*.mov +*.mp3 +*.mp4 +*.msc +*.msi +*.msp +*.mst +*.osx +*.out +*.paf +*.pdf +*.pif +*.potm +*.potx +*.ppam +*.pptm +*.pptx +*.prg +*.ps1 +*.rar +*.reg +*.rgs +*.rtf +*.run +*.scr +*.sct +*.shar +*.shb +*.shs +*.tar +*.u3p +*.vb +*.vbe +*.vbs +*.vbscript +*.workflow +*.ws +*.wsf +*.wsh +*.xls +*.xlsx +*.xpr +vale/styles/AsciiDoc/ +vale/styles/RedHat/ diff --git a/.vale.ini b/.vale.ini new file mode 100644 index 00000000..5f93659a --- /dev/null +++ b/.vale.ini @@ -0,0 +1,16 @@ +StylesPath = vale/styles + +MinAlertLevel = suggestion + +Packages = RedHat, AsciiDoc + +Vocab = EksDocsVocab + +# Ignore files in dirs starting with `.` to avoid raising errors for `.vale/fixtures/*/testinvalid.adoc` files +[[!.]*.adoc] +BasedOnStyles = RedHat, AsciiDoc, EksDocs +RedHat.GitLinks = OFF +AsciiDoc.UnsetAttributes = OFF +RedHat.CaseSensitiveTerms = suggestion +RedHat.TermsErrors = warning +RedHat.Spacing = warning diff --git a/.vscode/asciidoc.code-snippets b/.vscode/asciidoc.code-snippets new file mode 100644 index 00000000..cdceb00e --- /dev/null +++ b/.vscode/asciidoc.code-snippets @@ -0,0 +1,185 @@ +{ + // Place your snippets for AsciiDoc here. Each snippet is defined under a snippet name and has a prefix, body and + // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the + // same ids are connected. + // Example: + // "Print to console": { + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + // https://code.visualstudio.com/docs/editor/userdefinedsnippets + // https://www.freecodecamp.org/news/definitive-guide-to-snippets-visual-studio-code/ + "adoc tablist": { + "prefix": "tablist", + "body": [ + "====", + "[role=\"tablist\"]", + "${1:Fargate - [.noloc]`Linux`}::", + "+", + "[source,bash,subs=\"verbatim,attributes\"]", + "----", + "eksctl create cluster --name my-cluster --region region-code --fargate", + "----\n", + "${2:Managed nodes - [.noloc]`Linux`}::", + "+", + "[source,bash,subs=\"verbatim,attributes\"]", + "----", + "eksctl create cluster --name my-cluster --region region-code", + "----", + "eksctl create cluster --name my-cluster --region region-code", + "----\n", + "====" + ], + "description": "adoc tablist" + }, + "adoc step tablist": { + "prefix": "tab-step", + "body": [ + "====", + "[role=\"tablist\"]", + "${1:{aws-management-console}`}::", + "+", + "[source,bash,subs=\"verbatim,attributes\"]", + "----", + "eksctl create cluster --name my-cluster --region region-code --fargate", + "----\n", + "${2:[.noloc]`eksctl`}::", + "+", + "[source,bash,subs=\"verbatim,attributes\"]", + "----", + "eksctl create cluster --name my-cluster --region region-code", + "----\n", + "${3:{aws} CLI}::", + "+", + "[source,bash,subs=\"verbatim,attributes\"]", + "----", + "eksctl create cluster --name my-cluster --region region-code", + "----\n", + "${3:{aws} CloudFormation}::", + "+", + "[source,bash,subs=\"verbatim,attributes\"]", + "----", + "eksctl create cluster --name my-cluster --region region-code", + "----\n", + "====" + ], + "description": "adoc step tablist" + }, + "adoc region tablist": { + "prefix": "tab-region", + "body": [ + "====", + "[role=\"tablist\"]", + "${1:{aws}`}::", + "`eks-cluster.[.replaceable]``region``.api.aws`", + "\n", + "${2:{aws} GovCloud (US)}::", + "`eks-cluster.[.replaceable]``region``.api.aws`", + "\n", + "${3:{amazon-web-services} in China::", + "`eks-cluster.[.replaceable]``region``.api.amazonwebservices.com.cn`", + "\n", + "====" + ], + "description": "adoc region tablist" + }, + "Code Block": { + "prefix": "adoc-code", + "body": [ + "[source,${1|yaml,cli,json,java,python,javascript,ruby,go,bash|}]", + "----", + "${2:// Your code here}", + "----", + "$0" + ], + "description": "Code block with language selection" + }, + "AWS AsciiDoc Link": { + "prefix": "adoc-link", + "body": [ + "link:${1:path}[\"${2:link text}\",type=\"${3|documentation,marketing,console,blog,api|}\"]" + ], + "description": "Create an AWS documentation link in AsciiDoc format" + }, + "Admonition Block": { + "prefix": "adoc-admonition", + "body": [ + "[${1|NOTE,TIP,IMPORTANT,CAUTION,WARNING|}]", + "====", + "${2:Admonition content}", + "====", + "$0" + ], + "description": "Admonition block with type selection" + }, + "Table": { + "prefix": "adoc-table", + "body": [ + "[%header,cols=\"${1:1,1}\"]", + "|===", + "| ${2:Header 1} | ${3:Header 2}", + "", + "| ${4:Cell 1} | ${5:Cell 2}", + "|===", + "$0" + ], + "description": "Basic table with headers" + }, + "Cross Reference": { + "prefix": "adoc-xref", + "body": [ + "<<${1:anchor-id},${2:display text}>>$0" + ], + "description": "Cross-reference link" + }, + "Definition List": { + "prefix": "adoc-deflist", + "body": [ + "${1:Term 1}::", + "${2:Definition 1}", + "", + "${3:Term 2}::", + "${4:Definition 2}", + "$0" + ], + "description": "Definition list" + }, + "NODE_ROOT Section": { + "prefix": "adoc-topic", + "body": [ + "//!!NODE_ROOT
", + "[.topic]", + "[[${1:page-id},${1:page-id}.title]]", + "= ${2:page title goes here}", + ":info_doctype: section", + "", + "include::../attributes.txt[]", + "", + ], + "description": "Creates a NODE_ROOT section template with topic class and ID" + }, + "Include with Leveloffset": { + "prefix": "adoc-inc", + "body": [ + "include::${1:filename}.adoc[leveloffset=+1]$0" + ], + "description": "Creates an include statement with leveloffset=+1, automatically adding .adoc extension" + }, + "AsciiDoc Collapsible Section": { + "prefix": "adoc-collapse", + "body": [ + "[[${1:collapsible-section-id},${1:collapsible-section-id}.title]]", + ".${2:Section Title}", + "[%collapsible, expand-section=\"_collapse_all_\"]", + "====", + "${3:This is where the text to collapse goes.}", + "====" + ], + "description": "Creates a collapsible section in AsciiDoc" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..269fa424 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,35 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Convert and Open AsciiDoc", + "type": "shell", + "command": "bash", + "args": [ + "-c", + "asciidoctor ${file} && open ${fileDirname}/${fileBasenameNoExtension}.html" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "reveal": "always", + "panel": "shared", + "showReuseMessage": false, + "clear": true + }, + "problemMatcher": [], + "options": { + "cwd": "${workspaceFolder}" + } + } + ], + "inputs": [ + { + "id": "currentFile", + "type": "command", + "command": "extension.commandvariable.file.filePath" + } + ] +} \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..f0fc6442 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,32 @@ +# default rule, unless a more specific rule applies +* @eks-admins + +# lower approval for specific non-content folders +/.vscode/ fincd@amazon.com + +# default rule for user guide +/latest/ug/ @eks-contributors + +# guide section assignments +/latest/ug/clusters/ gcline@amazon.com +/latest/ug/manage-access/ gcline@amazon.com +/latest/ug/workloads/ gcline@amazon.com +/latest/ug/networking/ fincd@amazon.com +/latest/ug/storage/ pgasca@amazon.com +/latest/ug/nodes/ pgasca@amazon.com +/latest/ug/connector/ fincd@amazon.com +/latest/ug/contribute/ gcline@amazon.com +/latest/ug/getting-started/ mcngs@amazon.com +/latest/ug/integrations/ gcline@amazon.com +/latest/ug/observability/ pgasca@amazon.com +/latest/ug/outposts/ fincd@amazon.com +/latest/ug/security/ fincd@amazon.com +/latest/ug/what-is/ mcngs@amazon.com + +# use default rule +# /latest/ug/troubleshooting/ +# /latest/ug/images/ +# /latest/ug/images_BJS/ +# /latest/ug/YAML +# /latest/ug/iam_policies/ +# /latest/ug/diagrams/ \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..3b644668 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,4 @@ +## Code of Conduct +This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). +For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact +opensource-codeofconduct@amazon.com with any additional questions or comments. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..a0d95567 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,56 @@ +# Guidelines for contributing + +Thank you for your interest in contributing to AWS documentation! We greatly value feedback and contributions from our community. + +Please read through this document before you submit any pull requests or issues. It will help us work together more effectively. + +## What to expect when you contribute + +When you submit a pull request, our team is notified and will respond as quickly as we can. We'll do our best to work with you to ensure that your pull request adheres to our style and standards. If we merge your pull request, we might make additional edits later for style or clarity. + +The AWS documentation source files on GitHub aren't published directly to the official documentation website. If we merge your pull request, we'll publish your changes to the documentation website as soon as we can, but they won't appear immediately or automatically. + +We look forward to receiving your pull requests for: + +* New content you'd like to contribute (such as new code samples or tutorials) +* Inaccuracies in the content +* Information gaps in the content that need more detail to be complete +* Typos or grammatical errors +* Suggested rewrites that improve clarity and reduce confusion + +**Note:** We all write differently, and you might not like how we've written or organized something currently. We want that feedback. But please be sure that your request for a rewrite is supported by the previous criteria. If it isn't, we might decline to merge it. + +## How to contribute + +To contribute, send us a pull request. For small changes, such as fixing a typo or adding a link, you can use the [GitHub Edit Button](https://blog.github.com/2011-04-26-forking-with-the-edit-button/). For larger changes: + +1. [Fork the repository](https://help.github.com/articles/fork-a-repo/). +2. In your fork, make your change in a branch that's based on this repo's **main** branch. +3. Commit the change to your fork, using a clear and descriptive commit message. +4. [Create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/), answering any questions in the pull request form. + +Before you send us a pull request, please be sure that: + +1. You're working from the latest source on the **main** branch. +2. You check [existing open](https://github.com/awsdocs/amazon-eks-user-guide/pulls), and [recently closed](https://github.com/awsdocs/amazon-eks-user-guide/pulls?q=is%3Apr+is%3Aclosed), pull requests to be sure that someone else hasn't already addressed the problem. +3. You [create an issue](https://github.com/awsdocs/amazon-eks-user-guide/issues/new) before working on a contribution that will take a significant amount of your time. + +For contributions that will take a significant amount of time, [open a new issue](https://github.com/awsdocs/amazon-eks-user-guide/issues/new) to pitch your idea before you get started. Explain the problem and describe the content you want to see added to the documentation. Let us know if you'll write it yourself or if you'd like us to help. We'll discuss your proposal with you and let you know whether we're likely to accept it. We don't want you to spend a lot of time on a contribution that might be outside the scope of the documentation or that's already in the works. + +## Finding contributions to work on + +If you'd like to contribute, but don't have a project in mind, look at the [open issues](https://github.com/awsdocs/amazon-eks-user-guide/issues) in this repository for some ideas. Any issues with the [help wanted](https://github.com/awsdocs/amazon-eks-user-guide/labels/help%20wanted) or [enhancement](https://github.com/awsdocs/amazon-eks-user-guide/labels/enhancement) labels are a great place to start. + +In addition to written content, we really appreciate new examples and code samples for our documentation, such as examples for different platforms or environments, and code samples in additional languages. + +## Code of conduct + +This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). For more information, see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact [opensource-codeofconduct@amazon.com](mailto:opensource-codeofconduct@amazon.com) with any additional questions or comments. + +## Security issue notifications + +If you discover a potential security issue, please notify AWS Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public issue on GitHub. + +## Licensing + +See the [LICENSE](https://github.com/awsdocs/amazon-eks-user-guide/blob/main/LICENSE) file for this project's licensing. We will ask you to confirm the licensing of your contribution. We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes. diff --git a/Config b/Config new file mode 100755 index 00000000..6a1d1ce1 --- /dev/null +++ b/Config @@ -0,0 +1,31 @@ +# -*-perl-*- + +package.AmazonEKSDocs = { + flavors = { + map = single; + generation = 1; + }; + + interfaces = (3.0); + deploy = { + generic = true; + }; + scope = webservices; + + build-system = happytrails; + build-environment = { + chroot = basic; + network-access = blocked; + }; + + build-tools = { + 3.0 = { + HappyTrails = 3.2; + AWSEC2ContainerChecklist = 1.0; + AWSDevDocsQuotasShare = 1.0; + JavaBuildAndTestMin = jdk8; + ZonBook = 4.0; + AWSDevDocsChecklistBJS = 2.0; + }; + }; +}; diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..7785b904 --- /dev/null +++ b/LICENSE @@ -0,0 +1,152 @@ +Creative Commons Attribution-ShareAlike 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. + + C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. + + 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. diff --git a/LICENSE-SAMPLECODE b/LICENSE-SAMPLECODE new file mode 100644 index 00000000..14aabc34 --- /dev/null +++ b/LICENSE-SAMPLECODE @@ -0,0 +1,14 @@ +Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSE-SUMMARY b/LICENSE-SUMMARY new file mode 100644 index 00000000..56888df1 --- /dev/null +++ b/LICENSE-SUMMARY @@ -0,0 +1,5 @@ +Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +The documentation is made available under the Creative Commons Attribution-ShareAlike 4.0 International License. See the LICENSE file. + +The sample code within this documentation is made available under a modified MIT license. See the LICENSE-SAMPLECODE file. diff --git a/README.md b/README.md new file mode 100644 index 00000000..180508b6 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +## Amazon EKS User Guide + +Welcome to the Amazon EKS User Guide repository. This repository contains the open source version of the [Amazon EKS User Guide](https://docs.aws.amazon.com/eks/latest/userguide/). + +## Important Update + +This repository will be temporarily taken down to prepare for a new contributor experience. The repository will return at the same url by mid-November. + +## New Contribution Experience Coming Soon + +We are temporarily taking down the current GitHub repository to prepare for an enhanced contribution experience. The new version will be available in mid-November with the following improvements: + +- **AsciiDoc-Powered Documentation**: The guide will use AsciiDoc, an intuitive yet powerful authoring language similar to Markdown that offers: + - Advanced formatting capabilities + - Robust cross-referencing + - Enhanced security controls + - Enterprise-grade documentation features + +- **Streamlined Contribution Process**: + - Direct editing of documentation source files + - Faster pull request processing + - Increased automation + - Reduced manual steps + +## Stay Tuned + +For more information about the new experience, see [Contribute](https://docs.aws.amazon.com/eks/latest/userguide/contribute.html) in the Amazon EKS User Guide. + +We look forward to your contributions when we launch the new GitHub experience. The improved platform will make it easier than ever to help us enhance the Amazon EKS documentation. + + + +## License Summary + +The documentation is made available under the Creative Commons Attribution-ShareAlike 4.0 International License. See the LICENSE file. + +The sample code within this documentation is made available under a modified MIT license. See the LICENSE-SAMPLECODE file. diff --git a/build-info.xml b/build-info.xml new file mode 100755 index 00000000..a0d5e5d5 --- /dev/null +++ b/build-info.xml @@ -0,0 +1,49 @@ + + + + + eks + Amazon EKS + 303 + Amazon EKS + + + + + enabled + 0 + + + + userguide + eks-ug + User Guide + eks + latest + latest + latest/ug + en_us + + mesh-gs-eks + + + awsdocs + amazon-eks-user-guide + mainline + latest/ug + + + + Amazon EKS Document History + doc-history + + + + 1 + + + + + + + diff --git a/build.xml b/build.xml new file mode 100755 index 00000000..d8c709f3 --- /dev/null +++ b/build.xml @@ -0,0 +1,6 @@ + + + This is the entry point for happy trails builds (package builder and eclipse). + + + \ No newline at end of file diff --git a/eks-docs.code-workspace b/eks-docs.code-workspace new file mode 100644 index 00000000..9f126cbf --- /dev/null +++ b/eks-docs.code-workspace @@ -0,0 +1,32 @@ +{ + "folders": [ + { + "name": "📦 AmazonEKSDocs", + "path": "." + } + ], + "settings": { + "files.associations": { + "*.adoc": "asciidoc" + }, + "editor.wordWrap": "wordWrapColumn", + "editor.wordWrapColumn": 80, + "[asciidoc]": { + "editor.wordWrap": "wordWrapColumn", + "editor.wordWrapColumn": 80, + "editor.formatOnSave": true, + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.rulers": [80] + }, + "asciidoc.preview.scrollPreviewWithEditor": true, + "asciidoc.preview.scrollEditorWithPreview": true, + "asciidoc.antora.showEnableAntoraPrompt": false + }, + "extensions": { + "recommendations": [ + "asciidoctor.asciidoctor-vscode" + ] + } +} + diff --git a/latest/ug/YAML/aws-auth-hybrid.yml b/latest/ug/YAML/aws-auth-hybrid.yml new file mode 100644 index 00000000..cae044ad --- /dev/null +++ b/latest/ug/YAML/aws-auth-hybrid.yml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: aws-auth + namespace: kube-system +data: + mapRoles: | + - groups: + - system:bootstrappers + - system:nodes + rolearn: + username: system:node:{{SessionName}} \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/allow-ui-client.yaml b/latest/ug/YAML/network-policy-stars-demo/allow-ui-client.yaml new file mode 100644 index 00000000..9cf5f086 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/allow-ui-client.yaml @@ -0,0 +1,13 @@ +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + namespace: client + name: allow-ui +spec: + podSelector: + matchLabels: {} + ingress: + - from: + - namespaceSelector: + matchLabels: + role: management-ui \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/allow-ui.yaml b/latest/ug/YAML/network-policy-stars-demo/allow-ui.yaml new file mode 100644 index 00000000..a14d9128 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/allow-ui.yaml @@ -0,0 +1,13 @@ +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + namespace: stars + name: allow-ui +spec: + podSelector: + matchLabels: {} + ingress: + - from: + - namespaceSelector: + matchLabels: + role: management-ui \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/backend-policy.yaml b/latest/ug/YAML/network-policy-stars-demo/backend-policy.yaml new file mode 100644 index 00000000..2f9a9991 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/backend-policy.yaml @@ -0,0 +1,17 @@ +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + namespace: stars + name: backend-policy +spec: + podSelector: + matchLabels: + role: backend + ingress: + - from: + - podSelector: + matchLabels: + role: frontend + ports: + - protocol: TCP + port: 6379 diff --git a/latest/ug/YAML/network-policy-stars-demo/backend.yaml b/latest/ug/YAML/network-policy-stars-demo/backend.yaml new file mode 100644 index 00000000..81ca7d52 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/backend.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Service +metadata: + name: backend + namespace: stars +spec: + ports: + - port: 6379 + targetPort: 6379 + selector: + role: backend +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend + namespace: stars +spec: + replicas: 1 + selector: + matchLabels: + role: backend + template: + metadata: + labels: + role: backend + spec: + containers: + - name: backend + image: calico/star-probe:v0.1.0 + imagePullPolicy: Always + command: + - probe + - --http-port=6379 + - --urls=http://frontend.stars:80/status,http://backend.stars:6379/status,http://client.client:9000/status + ports: + - containerPort: 6379 \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/client.yaml b/latest/ug/YAML/network-policy-stars-demo/client.yaml new file mode 100644 index 00000000..556fb87e --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/client.yaml @@ -0,0 +1,43 @@ +kind: Namespace +apiVersion: v1 +metadata: + name: client + labels: + role: client +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: client + namespace: client +spec: + replicas: 1 + selector: + matchLabels: + role: client + template: + metadata: + labels: + role: client + spec: + containers: + - name: client + image: calico/star-probe:v0.1.0 + imagePullPolicy: Always + command: + - probe + - --urls=http://frontend.stars:80/status,http://backend.stars:6379/status + ports: + - containerPort: 9000 +--- +apiVersion: v1 +kind: Service +metadata: + name: client + namespace: client +spec: + ports: + - port: 9000 + targetPort: 9000 + selector: + role: client \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/default-deny.yaml b/latest/ug/YAML/network-policy-stars-demo/default-deny.yaml new file mode 100644 index 00000000..ead282c1 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/default-deny.yaml @@ -0,0 +1,7 @@ +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: default-deny +spec: + podSelector: + matchLabels: {} \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/default-deny.yaml.1 b/latest/ug/YAML/network-policy-stars-demo/default-deny.yaml.1 new file mode 100644 index 00000000..ead282c1 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/default-deny.yaml.1 @@ -0,0 +1,7 @@ +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: default-deny +spec: + podSelector: + matchLabels: {} \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/frontend-policy.yaml b/latest/ug/YAML/network-policy-stars-demo/frontend-policy.yaml new file mode 100644 index 00000000..34f8b0f6 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/frontend-policy.yaml @@ -0,0 +1,17 @@ +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + namespace: stars + name: frontend-policy +spec: + podSelector: + matchLabels: + role: frontend + ingress: + - from: + - namespaceSelector: + matchLabels: + role: client + ports: + - protocol: TCP + port: 80 diff --git a/latest/ug/YAML/network-policy-stars-demo/frontend.yaml b/latest/ug/YAML/network-policy-stars-demo/frontend.yaml new file mode 100644 index 00000000..8d805718 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/frontend.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Service +metadata: + name: frontend + namespace: stars +spec: + ports: + - port: 80 + targetPort: 80 + selector: + role: frontend +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend + namespace: stars +spec: + replicas: 1 + selector: + matchLabels: + role: frontend + template: + metadata: + labels: + role: frontend + spec: + containers: + - name: frontend + image: calico/star-probe:v0.1.0 + imagePullPolicy: Always + command: + - probe + - --http-port=80 + - --urls=http://frontend.stars:80/status,http://backend.stars:6379/status,http://client.client:9000/status + ports: + - containerPort: 80 \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/management-ui.yaml b/latest/ug/YAML/network-policy-stars-demo/management-ui.yaml new file mode 100644 index 00000000..82401f8c --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/management-ui.yaml @@ -0,0 +1,41 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: management-ui + labels: + role: management-ui +--- +apiVersion: v1 +kind: Service +metadata: + name: management-ui + namespace: management-ui +spec: + type: LoadBalancer + ports: + - port: 80 + targetPort: 9001 + selector: + role: management-ui +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: management-ui + namespace: management-ui +spec: + replicas: 1 + selector: + matchLabels: + role: management-ui + template: + metadata: + labels: + role: management-ui + spec: + containers: + - name: management-ui + image: calico/star-collect:v0.1.0 + imagePullPolicy: Always + ports: + - containerPort: 9001 \ No newline at end of file diff --git a/latest/ug/YAML/network-policy-stars-demo/namespace.yaml b/latest/ug/YAML/network-policy-stars-demo/namespace.yaml new file mode 100644 index 00000000..2920a0c8 --- /dev/null +++ b/latest/ug/YAML/network-policy-stars-demo/namespace.yaml @@ -0,0 +1,4 @@ +kind: Namespace +apiVersion: v1 +metadata: + name: stars \ No newline at end of file diff --git a/latest/ug/YAML/vpc-cni-nodeaffinity-hybrid.yml b/latest/ug/YAML/vpc-cni-nodeaffinity-hybrid.yml new file mode 100644 index 00000000..14bca5dd --- /dev/null +++ b/latest/ug/YAML/vpc-cni-nodeaffinity-hybrid.yml @@ -0,0 +1,22 @@ +spec: + template: + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/os + operator: In + values: + - linux + - key: kubernetes.io/arch + operator: In + values: + - amd64 + - arm64 + - key: eks.amazonaws.com/compute-type + operator: NotIn + values: + - fargate + - hybrid \ No newline at end of file diff --git a/latest/ug/attributes.txt b/latest/ug/attributes.txt new file mode 100644 index 00000000..784e706d --- /dev/null +++ b/latest/ug/attributes.txt @@ -0,0 +1,230 @@ +// EKS-specific attributes + +:eksctl-min-version: 0.199.0 + +// EKS Auto Mode +:auto-cli-v2-version: 2.12.3 +:auto-cli-v1-version: 1.27.160 + +// Words Geoffrey often spells wrong or doesn't like to type + +:ret: retrieve +:resp: responsibility +:det: determine +:cap: capability +:caps: capabilites +:recd: recommended +:config: configuration +:ind: indicate +:ena: enable +:dis: disable + +// AWS shared content + +// Region specific +// Entities that differ depending on the Region build such as China +:arn-aws: pass:q[[.shared]``region.arn``] + +// Service names +:amazon-cloudwatch: pass:q[[.shared]``CWlong``] +:amazon-rds: pass:q[[.shared]``RDS``] +:amazon-route-53: pass:q[[.shared]``R53long``] +:amazon-route-53-resolver: pass:q[[.shared]``R53Rlong``] +:amazon-s3: pass:q[[.shared]``S3``] +:amazon-virtual-private-cloud: pass:q[[.shared]``VPClong``] +:amazon-vpc: pass:q[[.shared]``VPC``] +:amazon-elastic-block-store: pass:q[[.shared]``EBSlong``] +:amazon-elastic-file-system: pass:q[[.shared]``EFSlong``] +:amazon-efs: pass:q[[.shared]``EFS``] +:amazon-web-services: pass:q[[.shared]``AWSlong``] +:aws: pass:q[[.shared]``AWS``] +:application-load-balancer: pass:q[[.shared]``ALB``] +:application-load-balancers: pass:q[[.shared]``ALBs``] +:aws-account: pass:q[[.shared]``AWS-account``] +:aws-accounts: pass:q[[.shared]``AWS-accounts``] +:aws-always: pass:q[[.shared]``AWS-always``] +:aws-artifact: pass:q[[.shared]``ART``] +:aws-billing: pass:q[[.shared]``Billinglong``] +:aws-billing-cost-management: pass:q[[.shared]``ABlong``] +:aws-cloud: pass:q[[.shared]``AWS-Cloud``] +:aws-cloudtrail: pass:q[[.shared]``CTlong``] +:aws-command-line-interface: pass:q[[.shared]``CLIlong``] +:aws-config: pass:q[[.shared]``CC``] +:aws-cost-explorer: pass:q[[.shared]``AWSCostExplorerServicelong``] +:aws-direct-connect: pass:q[[.shared]``AWS-DC``] +:aws-identity-and-access-management: pass:q[[.shared]``IAMlong``] +:aws-kms: pass:q[[.shared]``KMS``] +:aws-key-management-service: pass:q[[.shared]``KMSlong``] +:aws-kms-key: pass:q[[.shared]``kms-key-long``] +:aws-kms-keys: pass:q[[.shared]``kms-keys-long``] +:aws-license-manager: pass:q[[.shared]``LIClong``] +:aws-management-console: pass:q[[.shared]``consolelong``] +:aws-organizations: pass:q[[.shared]``AOlong``] +:aws-marketplace: pass:q[[.shared]``MKT``] +:aws-region: pass:q[[.shared]``AWS-Region``] +:aws-regions: pass:q[[.shared]``AWS-Regions``] +:aws-security-token-service: pass:q[[.shared]``STSlong``] +:aws-service: pass:q[[.shared]``AWS-service``] +:aws-services: pass:q[[.shared]``AWS-services``] +:aws-service-quotas: pass:q[[.shared]``SQ``] +:aws-support: pass:q[[.shared]``SUP``] +:aws-sts: pass:q[[.shared]``STS``] +:aws-transit-gateway: pass:q[[.shared]``AWSTGlong``] +:aws-vpn: pass:q[[.shared]``VPN``] +:classic-load-balancer: pass:q[[.shared]``CLB``] +:classic-load-balancers: pass:q[[.shared]``CLBs``] +:cli: pass:q[[.shared]``CLI``] +:cloudtrail: pass:q[[.shared]``CT``] +:cloudwatch: pass:q[[.shared]``CW``] +:cluster: pass:q[[.shared]``cluster``] +:cluster-cap: pass:q[[.shared]``Cluster``] +:ebs: pass:q[[.shared]``EBS``] +:ec2: pass:q[[.shared]``EC2``] +:ec2-auto-scaling: pass:q[[.shared]``ASlong``] +:elastic-load-balancing: pass:q[[.shared]``ELB``] +:iam: pass:q[[.shared]``IAM``] +:kms-key: pass:q[[.shared]``kms-key``] +:kms-keys: pass:q[[.shared]``kms-keys``] +:license-manager: pass:q[[.shared]``LIC``] +:organizations: pass:q[[.shared]``AO``] +:privatelink: pass:q[[.shared]``privatelink``] +:rosa-service-name-long: pass:q[[.shared]``ROSAlong``] +:rosa-service-name-short: pass:q[[.shared]``ROSA``] +:route-53: pass:q[[.shared]``R53``] +:route-53-resolver: pass:q[[.shared]``R53R``] +:sts: pass:q[[.shared]``STSshort``] +:transit-gateway: pass:q[[.shared]``AWSSTG``] +:cloudformation: pass:q[[.shared]``CFN``] +:outposts: pass:q[[.shared]``OUTlong``] +:eks-a: pass:q[[.shared]``EKS-A``] + +//AWS Regions + +:us-east-1-name: US East (N. Virginia) Region +:us-east-1-region: US East (N. Virginia) +:us-east-1-code: us-east-1 + +:us-east-2-name: US East (Ohio) Region +:us-east-2-region: US East (Ohio) +:us-east-2-code: us-east-2 + +:us-west-1-name: US West (N. California) Region +:us-west-1-region: US West (N. California) +:us-west-1-code: us-west-1 + +:us-west-2-name: US West (Oregon) Region +:us-west-2-region: US West (Oregon) +:us-west-2-code: us-west-2 + +:af-capetown-name: Africa (Cape Town) Region +:af-capetown-region: Africa (Cape Town) +:af-capetown-code: af-south-1 + +:ap-hongkong-name: Asia Pacific (Hong Kong) Region +:ap-hongkong-region: Asia Pacific (Hong Kong) +:ap-hongkong-code: ap-east-1 + +:ap-hyderabad-name: Asia Pacific (Hyderabad) Region +:ap-hyderabad-region: Asia Pacific (Hyderabad) +:ap-hyderabad-code: ap-south-2 + +:ap-jakarta-name: Asia Pacific (Jakarta) Region +:ap-jakarta-region: Asia Pacific (Jakarta) +:ap-jakarta-code: ap-southeast-3 + +:ap-melbourne-name: Asia Pacific (Melbourne) Region +:ap-melbourne-region: Asia Pacific (Melbourne) +:ap-melbourne-code: ap-southeast-4 + +:ap-mumbai-name: Asia Pacific (Mumbai) Region +:ap-mumbai-region: Asia Pacific (Mumbai) +:ap-mumbai-code: ap-south-1 + +:ap-osaka-name: Asia Pacific (Osaka) Region +:ap-osaka-region: Asia Pacific (Osaka) +:ap-osaka-code: ap-northeast-3 + +:ap-seoul-name: Asia Pacific (Seoul) Region +:ap-seoul-region: Asia Pacific (Seoul) +:ap-seoul-code: ap-northeast-2 + +:ap-singapore-name: Asia Pacific (Singapore) Region +:ap-singapore-region: Asia Pacific (Singapore) +:ap-singapore-code: ap-southeast-1 + +:ap-sydney-name: Asia Pacific (Sydney) Region +:ap-sydney-region: Asia Pacific (Sydney) +:ap-sydney-code: ap-southeast-2 + +:ap-tokyo-name: Asia Pacific (Tokyo) Region +:ap-tokyo-region: Asia Pacific (Tokyo) +:ap-tokyo-code: ap-northeast-1 + +:ca-central-name: Canada (Central) Region +:ca-central-region: Canada (Central) +:ca-central-code: ca-central-1 + +:eu-frankfort-name: Europe (Frankfort) Region +:eu-frankfort-region: Europe (Frankfort) +:eu-frankfort-code: eu-central-1 + +:eu-ireland-name: Europe (Ireland) Region +:eu-ireland-region: Europe (Ireland) +:eu-ireland-code: eu-west-1 + +:eu-london-name: Europe (London) Region +:eu-london-region: Europe (London) +:eu-london-code: eu-west-2 + +:eu-milan-name: Europe (Milan) Region +:eu-milan-region: Europe (Milan) +:eu-milan-code: eu-south-1 + +:eu-paris-name: Europe (Paris) Region +:eu-paris-region: Europe (Paris) +:eu-paris-code: eu-west-3 + +:eu-spain-name: Europe (Spain) Region +:eu-spain-region: Europe (Spain) +:eu-spain-code: eu-south-2 + +:eu-stockholm-name: Europe (Stockholm) Region +:eu-stockholm-region: Europe (Stockholm) +:eu-stockholm-code: eu-north-1 + +:eu-zurich-name: Europe (Zurich) Region +:eu-zurich-region: Europe (Zurich) +:eu-zurich-code: eu-central-2 + +:me-bahrain-name: Middle East (Bahrain) Region +:me-bahrain-region: Middle East (Bahrain) +:me-bahrain-code: me-south-1 + +:me-uae-name: Middle East (UAE) Region +:me-uae-region: Middle East (UAE) +:me-uae-code: me-central-1 + +:sa-saopaulo-name: South America (São Paulo) Region +:sa-saopaulo-region: South America (São Paulo) +:sa-saopaulo-code: sa-east-1 + +:govcloud-us: {aws} GovCloud (US) + +:us-gov-east-1-name: {aws} GovCloud (US-East) Region +:us-gov-east-1-region: {aws} GovCloud (US-East) +:us-gov-east-1-code: us-gov-east-1 + +:us-gov-west-1-name: {aws} GovCloud (US-West) Region +:us-gov-east-1-region: {aws} GovCloud (US-West) +:us-gov-east-1-code: us-gov-west-1 + +// EKS Auto Mode attributes + +:yec: your EKS Auto Mode cluster +:yaa: your {aws} account +:emi: EC2 managed instance +:eam: EKS Auto Mode +:mng: managed node group +:e2i: EC2 Instance +:k8s: Kubernetes +:k8s-n: 1.31 \ No newline at end of file diff --git a/latest/ug/automode/adoc-windows.adoc b/latest/ug/automode/adoc-windows.adoc new file mode 100644 index 00000000..96228a29 --- /dev/null +++ b/latest/ug/automode/adoc-windows.adoc @@ -0,0 +1,98 @@ += Configure an AsciiDoc Authoring Environment on Windows using Visual Studio Code + +== Prereqs + +* Visual Studio Code installed from Microsoft Website +* Connected to Amazon VPN +* Know your Cloud Dev Desktop Hostname, such as `http://dev-dsk-mcngs-2a-f991a827.us-west-2.amazon.com/` +* Amazon Windows Image + +== Step 1: Clear SSH Keys + +[IMPORTANT] +==== +Do not complete this step if you use SSH to access remote devices not managed by Amazon Corporate. +==== + +. Open PowerShell: +** Press Windows key + X +** Select "Windows PowerShell (Admin)" or "Windows Terminal (Admin)" +** If prompted by User Account Control, click "Yes" + +. Backup existing SSH keys: +** Navigate to your SSH directory by typing: `cd ~\.ssh` +** Create a backup folder: `mkdir ~\ssh_backup` +** Copy all files to the backup location: `Copy-Item -Path ~\.ssh\* -Destination ~\ssh_backup -Recurse` +** Verify the backup by checking the contents: `dir ~\ssh_backup` + +. Remove existing SSH keys: +** Make sure you're in the SSH directory: `cd ~\.ssh` +** Delete all files in the .ssh folder: `Remove-Item -Path ~\.ssh\* -Recurse -Force` +** Verify the directory is empty: `dir` +** If the .ssh directory itself is causing issues, you can remove it entirely: `Remove-Item ~\.ssh -Recurse -Force` + +[NOTE] +==== +If you need to restore your keys later, you can copy them back from the backup folder using: +`Copy-Item -Path ~\ssh_backup\* -Destination ~\.ssh -Recurse` +==== + +== Step 2: Create new ECDSA SSH Key + +. `ssh-keygen -t ecdsa` + +== Step 3: Use Midway to Sign SSH Key + +. `mwinit` -- WITHOUT options +. You will need to run this step periodically from windows powershell. +** You need to run mwinit from each device, including your laptop and CDD. + +== Step 4: Test SSH + +. Run `ssh @git.amazon.com -v ` +. Review output +. If you don't see a success message, sent the output to Geoffrey + +== Step 5: Configure VS Code + +. Open VS Code +. Open the extension panel in the left sidebar (tetris style icon) +. Search for "SSH" remote extension and install +. Open the remote panel in the left sidebar (computer monitor icon with circular icon in bottom right) +. Mouse over `SSH` and then press the plus icon +. Insert the following value: `ssh @` +. Press enter and follow the prompts +. If the VS Code Window shows your CDD hostname in blue in the botton left of the window, that VS Code Window is connected to your CDD +. Once it is connect, use `ctrl-`` to open a terminal window. + +== Step 6: Clone Package on Cloud Dev Desktop + +[source,bash] +---- +brazil ws create --name eks +cd eks +brazil ws use -vs AWSDevDocsAlpha/alpha +brazil ws use AmazonEKSDocs +cd src/AmazonEKSDocs +pwd +---- + +In the AmazonEKSDocs package root is a file called `eks-docs.code-workspace`, use the output of `pwd` and this file name to determine the full path to the code workspace. + +== Step 7: Open Code Workspace + +From a SSH connected VS Code Window, go to "file" and then "open workspace from file". Use the path to the code workspace file. + +Using this file, VS code will automatically configure itself for authoring asciidoc. + +== To reconnect + +. Connect to VPN +. Use powershell to run mwinit +. Open VS Code +. Select the `eks-docs` workspace from recently opened workspaces, verify the hostname of your CDD is shown by the workspace name on the home screen +. Alternatively, open the Remote Explorer panel in the left sidebar +. Find your CDD and the eks-docs workspace under it, mouse over it +. Use the right arrow icon to open the workspace in the curent window, or the plus icon to open in a new window + + diff --git a/latest/ug/automode/api-reference.adoc b/latest/ug/automode/api-reference.adoc new file mode 100644 index 00000000..e0e73f46 --- /dev/null +++ b/latest/ug/automode/api-reference.adoc @@ -0,0 +1,191 @@ + +[.topic] += EKA Auto Mode API Reference WIP +:info_doctype: section + +:ind: indicate +:Ind: Indicate +:ena: enable +:dis: disable +:cap: capability +:caps: capabilities +:yec: your EKS Auto Mode cluster +:yaa: your {aws} account +:emi: EC2 Managed Instance +:eam: EKS Auto Mode +:lbi: load balancing +:bs: block storage + +:fmis: For more information, see +:in-guide: in the EKS User Guide + +:generic-update-request: For example, enable the capability. +:generic-status-request: For example, if the {cap} is {ena}d or {dis}d. +:generic-describe-cap: {Ind}s the current configuration of the {cap} on {yec}. {generic-status-request} +:generic-config-request: Request to update the configuration of the + +:comp-cap-desc: If the compute {cap} is enabled, {eam} will create and delete {emi}s in {yaa}. +:comp-cap-link: {fmis} {eam} compute {cap} {in-guide}. + +:lb-cap-desc: If the load balancing {cap} is enabled, {eam} will create and delete {emi}s in {yaa}. +:lb-cap-link: {fmis} {eam} load balancing {cap} {in-guide}. + +:ebs-cap-desc: If the {bs} {cap} is enabled, {eam} will create and delete EBS volumes in {yaa}. +:ebs-cap-link: {fmis} {eam} {bs} {cap} {in-guide}. + +:iam-link: {fmis} the IAM Reference {in-guide}. + +:launch-limitation: Currently, you cannot selectively enable or disable {eam} {caps}. The compute {cap}, {bs} {cap}, and {lbi} {cap} must all be enabled or disabled. You must enable or disable all three capabilities in the same API request. + +== Capabilities + + +// Load Balancing +* ElasticLoadBalancing +** {generic-describe-cap} {lb-cap-link} + + + +// Storage +* BlockStorage +** {generic-describe-cap} {ebs-cap-link} + +// Storage +* BlockStorage$controllerRole +** The IAM role used by {eam} to manage EBS volumes. {iam-link} + + +// missing compute cap? + + +== $enabled + + +// Load Balancing +* ElasticLoadBalancing$enabled +** {ind}s if the {lbi} {cap} is enabled on {yec}. {lb-cap-desc} + + +// Storage +* BlockStorage$enabled +** {ind}s if the {bs} {cap} is enabled on {yec}. {ebs-cap-desc} + + +//missing compute cap? + +== CreateClusterRequest + + +// Compute +* CreateClusterRequest$computeConfig +** Enable or disable the compute {cap} of {eam} when creating {yec}. {comp-cap-desc} + + +// Storage +* CreateClusterRequest$storageConfig +** Enable or disable the {bs} {cap} of {eam} when creating {yec}. {ebs-cap-desc} + + +== Cluster$ Config + + +// Compute +* Cluster$computeConfig +** {generic-describe-cap} {comp-cap-desc} {comp-cap-link} + + +// Storage +* Cluster$storageConfig +** {generic-describe-cap} {ebs-cap-desc} {ebs-cap-link} + + +== ConfigRequest + +* ComputeConfigRequest +** {generic-config-request} the compute {cap} of your {eam}. {generic-update-request} {comp-cap-link} + +* StorageConfigRequest +** {generic-config-request} the storage {cap} of your {eam}. {generic-update-request} {ebs-cap-link} + + +=== Load Balancing + + +* KubernetesNetworkConfigRequest$elasticLoadBalancing +** Request to {ena} or {dis} the {lbi} {cap} on {yec}. {lb-cap-link} + +=== Compute + + +* ComputeConfigRequest$enabled +** Request to {ena} or {dis} the compute {cap} on {yec}. {comp-cap-desc} + + +* ComputeConfigRequest$nodePools +** Configuration for node pools that defines the compute resources for {yec}. {fmis} {eam} Node Pools {in-guide}. + +* ComputeConfigRequest$nodeRoleArn +** The ARN of the IAM Role EKS will assign to {emi}s in {yec}. This value cannot be changed after the compute {cap} of {eam} is enabled. {iam-link} + +=== Storage + + +* StorageConfigRequest$blockStorage +** Request to configure EBS Block Storage settings for {yec}. + + +== ConfigResponse +:status-of-request: the status of the request to update + +// Compute +* ComputeConfigResponse +** {ind}s {status-of-request} the compute {cap} of {yec}. + + +// Storage +* StorageConfigResponse +** {ind}s {status-of-request} the {bs} {cap} of {yec}. + +=== Response pointers to objects + + +// Storage +* StorageConfigResponse$blockStorage +** {ind}s the current configuration of the {bs} {cap} on {yec}. {generic-status-request} + +// Load Balancing +* $elasticLoadBalancing +** {ind}s the current configuration of the {lbi} {cap} on {yec}. {generic-status-request} + + +=== Compute Details + + +// Compute +* ComputeConfigResponse$enabled +** {ind}s if the compute {cap} is enabled on {yec}. {comp-cap-desc} + + +// Compute +* ComputeConfigResponse$nodePools +** {ind}s the current configuration of node pools in {yec}. {fmis} {eam} Node Pools {in-guide}. + +// Compute +* ComputeConfigResponse$nodeRoleArn +** The ARN of the IAM Role EKS will assign to {emi}s in {yec}. + + +== UpdateClusterConfigRequest +:update-config: Update the configuration of + +// Storage +* UpdateClusterConfigRequest$storageConfig +** {update-config} the {bs} {cap} of {yec}. {generic-update-request} + +// Compute +* UpdateClusterConfigRequest$computeConfig +** {update-config} the compute {cap} of {yec}. {generic-update-request} + +//where is LB? + + diff --git a/latest/ug/automode/associate-workload.adoc b/latest/ug/automode/associate-workload.adoc new file mode 100644 index 00000000..232512ed --- /dev/null +++ b/latest/ug/automode/associate-workload.adoc @@ -0,0 +1,52 @@ +//!!NODE_ROOT
+ +include::../attributes.txt[] + +[.topic] +[[associate-workload,associate-workload.title]] += Control if a workload is deployed on EKS Auto Mode nodes +:info_doctype: section +:info_title: Control if a workload is deployed on EKS Auto Mode nodes +:info_titleabbrev: Control workload deployment +:info_abstract: Control if a workload is deployed on EKS Auto Mode nodes + +When running workloads in an EKS cluster with {eam}, you might need to control whether specific workloads run on {eam} nodes or other compute types. This topic describes how to use node selectors and affinity rules to ensure your workloads are scheduled on the intended compute infrastructure. + +The examples in this topic demonstrate how to use the `eks.amazonaws.com/compute-type` label to either require or prevent workload deployment on {eam} nodes. This is particularly useful in mixed-mode clusters where you're running both {eam} and other compute types, such as self-managed Karpenter provisioners or EKS Managed Node Groups. + +{eam} nodes have set the value of the label `eks.amazonaws.com/compute-type` to `auto`. You can use this label to control if a workload is deployed to nodes managed by {eam}. + +== Require a workload is deployed to {eam} nodes + +[NOTE] +==== +This `nodeSelector` value is not required for {eam}. This `nodeSelector` value is only relevant if you are running a cluster in a mixed mode, node types not managed by {eam}. For example, you may have static compute capacity deployed to your cluster with EKS Managed Node Groups, and have dynamic compute capacity managed by {eam}. +==== + +You can add this `nodeSelector` to Deployments or other workloads to require Kubernetes schedule them onto {eam} nodes. + +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +spec: + nodeSelector: + eks.amazonaws.com/compute-type: auto +---- + +== Require a workload is not deployed to {eam} nodes + +You can add this `nodeAffinity` to Deployments or other workloads to require Kubernetes *not* schedule them onto {eam} nodes. + +[source,yaml] +---- + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: eks.amazonaws.com/compute-type + operator: NotIn + values: + - auto +---- diff --git a/latest/ug/automode/auto-configure-alb.adoc b/latest/ug/automode/auto-configure-alb.adoc new file mode 100644 index 00000000..c5fbc1fe --- /dev/null +++ b/latest/ug/automode/auto-configure-alb.adoc @@ -0,0 +1,209 @@ +//!!NODE_ROOT
+[.topic] +[[auto-configure-alb,auto-configure-alb.title]] += Create an IngressClass to configure an Application Load Balancer +:info_doctype: section +:info_titleabbrev: Create ingress class + +include::../attributes.txt[] + +EKS Auto Mode automates routine tasks for load balancing, including exposing cluster apps to the internet. + +{aws} suggests using Application Load Balancers (ALB) to serve HTTP and HTTPS traffic. Application Load Balancers can route requests based on the content of the request. For more information on Application Load Balancers, see link:elasticloadbalancing/latest/userguide/what-is-load-balancing.html["What is Elastic Load Balancing?",type="documentation"] + +EKS Auto Mode creates and configures Application Load Balancers (ALBs). For example, EKS Auto Mode creates a load balancer when you create an `Ingress` Kubernetes objects and configures it to route traffic to your cluster workload. + +**Overview** + +. Create an `IngressClassParams` resource, specifying {aws} specific configuration values such as the certificate to use for SSL/TLS and VPC Subnets. +. Create an `IngressClass` resource, specifying that EKS Auto Mode will be the controller for the resource. +. Create an `Ingress` resource that associates a HTTP path and port with a cluster workload. +. EKS Auto Mode will create an Application Load Balancer that points to the workload specified in the `Ingress` resource, using the load balancer configuration specified in the `IngressClassParams` resource. + +## Prerequisites + +* EKS Auto Mode Enabled on an Amazon EKS Cluster +* Kubectl configured to connect to your cluster +** You can use `kubectl apply -f ` to apply the sample configuration YAML files below to your cluster. + +## Step 1: Create IngressClassParams + +Create an `IngressClassParams` object to specify {aws} specific configuration options for the Application Load Balancer. Use the reference below to update the sample YAML file. + +Note the name you set for the `IngressClassParams` resource, you will need it in the next step. + +```yaml +apiVersion: eks.amazonaws.com/v1 +kind: IngressClassParams +metadata: + name: alb +spec: + scheme: internet-facing +``` + + + +## Step 2: Create IngressClass + +Create an `IngressClass` that references the {aws} specific configuration values set in the `IngressClassParams` resource. Note the name of the `IngressClass` . In this example, both the `IngressClass` and `IngressClassParams` are named `alb`. + +Use the `is-default-class` annotation to control if `Ingress` resources should use this class by default. + +```yaml +apiVersion: networking.k8s.io/v1 +kind: IngressClass +metadata: + name: alb + annotations: + # Use this annotation to set an IngressClass as Default + # If an Ingress doesn't specify a class, it will use the Default + ingressclass.kubernetes.io/is-default-class: "true" +spec: + # Configures the IngressClass to use EKS Auto Mode + controller: eks.amazonaws.com/alb + parameters: + apiGroup: eks.amazonaws.com + kind: IngressClassParams + # Use the name of the IngressClassParams set in the previous step + name: alb +``` + +For more information on configuration options, see <>. + +## Step 3: Create Ingress + +Create an `Ingress` resource. The purpose of this resource is to associate paths and ports on the Application Load Balancer with workloads in your cluster. + +For more information about configuring this resource, see https://kubernetes.io/docs/concepts/services-networking/ingress/[Ingress] in the Kubernetes Documentation. + +```yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: 2048-ingress +spec: + # this matches the name of IngressClass. + # this can be omitted if you have a default ingressClass in cluster: the one with ingressclass.kubernetes.io/is-default-class: "true" annotation + ingressClassName: alb + rules: + - http: + paths: + - path: /* + pathType: ImplementationSpecific + backend: + service: + name: + port: + number: 80 +``` + + + +## Step 4: Check Status + +Use `kubectl` to find the status of the `Ingress`. It can take a few minutes for the load balancer to become available. + +Use the name of the `Ingress` resource you set in the previous step. + +``` +kubectl get ingress +``` + +Once the resource is ready, retrieve the domain name of the load balancer. + +``` +kubectl get ingress api-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}' +``` + +To view the service in a web browser, review the port and path specified in the `Ingress` rescue. + +## Step 5: Cleanup + +To clean up the load balancer, use the following command: + +``` +kubectl delete ingress +``` + +EKS Auto Mode will automatically delete the associated load balancer in your {aws} account. + +[[ingress-reference,ingress-reference.title]] +== IngressClassParams Reference + +The table below is a quick reference for commonly used configuration options. + +[cols="3*", options="header"] +|=== +|Field |Description |Example Value +|`scheme` +|Defines whether the ALB is internal or internet-facing +|`internet-facing` +|`namespaceSelector` +|Restricts which namespaces can use this IngressClass +|`environment: prod` +|`group.name` +|Groups multiple Ingresses to share a single ALB +|`retail-apps` +|`ipAddressType` +|Sets IP address type for the ALB +|`dualstack` +|`subnets.ids` +|List of subnet IDs for ALB deployment +|`subnet-xxxx, subnet-yyyy` +|`subnets.tags` +|Tag filters to select subnets for ALB +|`Environment: prod` +|`certificateARNs` +|ARNs of SSL certificates to use +|`arn:aws:acm:region:account:certificate/id` +|`tags` +|Custom tags for {aws} resources +|`Environment: prod, Team: platform` +|`loadBalancerAttributes` +|Load balancer specific attributes +|`idle_timeout.timeout_seconds: 60` +|=== + + +== Considerations + +* You cannot use Annotations on an IngressClass to configure load balancers with EKS Auto Mode. +* You must update the Cluster IAM Role to enable tag propagation from Kubernetes to {aws} Load Balancer resources. For more information, see <>. +* For information about associating resources with either EKS Auto Mode or the self-managed {aws} Load Balancer Controller, see <>. +* For information about fixing issues with load balancers, see <>. +* For more considerations about using the load balancing capability of EKS Auto Mode, see <>. + +The following tables provide a detailed comparison of changes in IngressClassParams, Ingress annotations, and TargetGroupBinding configurations for EKS Auto Mode. These tables highlight the key differences between the load balancing capability of EKS Auto Mode and the open source load balancer controller, including API version changes, deprecated features, and updated parameter names. + +=== IngressClassParams + +[options="header"] +|=== +| Previous | New | Description +| `elbv2.k8s.aws/v1beta1` | `eks.amazonaws.com/v1` | API version change +| `spec.certificateArn` | `spec.certificateARNs` | Support for multiple certificate ARNs +| `spec.subnets.tags` | `spec.subnets.matchTags` | Changed subnet matching schema +| `spec.listeners.listenerAttributes` | `spec.listeners.attributes` | Simplified attribute naming +|=== + +=== Ingress annotations + +[options="header"] +|=== +| Previous | New | Description +| `kubernetes.io/ingress.class` | Not supported | Use `spec.ingressClassName` on Ingress objects +| `alb.ingress.kubernetes.io/group.name` | Not supported | Specify groups in IngressClass only +| `alb.ingress.kubernetes.io/waf-acl-id` | Not supported | Use WAF v2 instead +| `alb.ingress.kubernetes.io/web-acl-id` | Not supported | Use WAF v2 instead +| `alb.ingress.kubernetes.io/shield-advanced-protection` | Not supported | Shield integration disabled +|=== + +=== TargetGroupBinding + +[options="header"] +|=== +| Previous | New | Description +| `elbv2.k8s.aws/v1beta1` | `eks.amazonaws.com/v1` | API version change +| `spec.targetType` optional | `spec.targetType` required | Explicit target type specification +| `spec.networking.ingress.from` | Not supported | No longer supports NLB without security groups +|=== diff --git a/latest/ug/automode/auto-configure-nlb.adoc b/latest/ug/automode/auto-configure-nlb.adoc new file mode 100644 index 00000000..916fc693 --- /dev/null +++ b/latest/ug/automode/auto-configure-nlb.adoc @@ -0,0 +1,156 @@ +//!!NODE_ROOT
+[.topic] +[[auto-configure-nlb,auto-configure-nlb.title]] += Use Service Annotations to configure Network Load Balancers +:info_doctype: section +:info_titleabbrev: Create service + +include::../attributes.txt[] + +Learn how to configure Network Load Balancers (NLB) in Amazon EKS using Kubernetes service annotations. This topic explains the annotations supported by EKS Auto Mode for customizing NLB behavior, including internet accessibility, health checks, SSL/TLS termination, and IP targeting modes. + +When you create a Kubernetes service of type `LoadBalancer` in EKS Auto Mode, EKS automatically provisions and configures an {aws} Network Load Balancer based on the annotations you specify. This declarative approach allows you to manage load balancer configurations directly through your Kubernetes manifests, maintaining infrastructure as code practices. + +EKS Auto Mode handles Network Load Balancer provisioning by default for all services of type LoadBalancer - no additional controller installation or configuration is required. The `loadBalancerClass: eks.amazonaws.com/nlb `specification is automatically set as the cluster default, streamlining the deployment process while maintaining compatibility with existing Kubernetes workloads. + + +== Sample Service + +For more information about the Kubernetes `Service` resource, see https://kubernetes.io/docs/concepts/services-networking/service/[the Kubernetes Documentation]. + +Review the sample `Service` resource below: + +[source,yaml] +---- +apiVersion: v1 +kind: Service +metadata: + name: echoserver + annotations: + # Specify the load balancer scheme as internet-facing to create a public-facing Network Load Balancer (NLB) + service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing +spec: + selector: + app: echoserver + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + type: LoadBalancer + # Specify the new load balancer class for NLB as part of EKS Auto Mode feature + # For clusters with Auto Mode enabled, this field can be omitted as it's the default + loadBalancerClass: eks.amazonaws.com/nlb +---- + +== Commonly used annotations + +The following table lists commonly used annotations supported by EKS Auto Mode. Note that EKS Auto Mode may not support all annotations. + +[TIP] +==== +All of the following annotations need to be prefixed with `service.beta.kubernetes.io/` +==== + + +[role="no-scroll"] +[cols="1,1,1", options="header"] +|=== +|Field |Description |Example + +|`aws-load-balancer-type` +|Specifies the load balancer type. Use `external` for new deployments. +|`external` + +|`aws-load-balancer-nlb-target-type` +|Specifies whether to route traffic to node instances or directly to pod IPs. Use `instance` for standard deployments or `ip` for direct pod routing. +|`instance` + +|`aws-load-balancer-scheme` +|Controls whether the load balancer is internal or internet-facing. +|`internet-facing` + +|`aws-load-balancer-healthcheck-protocol` +|Health check protocol for target group. Common options are `TCP` (default) or `HTTP`. +|`HTTP` + +|`aws-load-balancer-healthcheck-path` +|The HTTP path for health checks when using HTTP/HTTPS protocol. +|`/healthz` + +|`aws-load-balancer-healthcheck-port` +|Port used for health checks. Can be a specific port number or `traffic-port`. +|`traffic-port` + +|`aws-load-balancer-subnets` +|Specifies which subnets to create the load balancer in. Can use subnet IDs or names. +|`subnet-xxxx, subnet-yyyy` + +|`aws-load-balancer-ssl-cert` +|ARN of the SSL certificate from {aws} Certificate Manager for HTTPS/TLS. +|`arn:aws:acm:region:account:certificate/cert-id` + +|`aws-load-balancer-ssl-ports` +|Specifies which ports should use SSL/TLS. +|`443, 8443` + +|`load-balancer-source-ranges` +|CIDR ranges allowed to access the load balancer. +|`10.0.0.0/24, 192.168.1.0/24` + +|`aws-load-balancer-additional-resource-tags` +|Additional {aws} tags to apply to the load balancer and related resources. +|`Environment=prod,Team=platform` + +|`aws-load-balancer-ip-address-type` +|Specifies whether the load balancer uses IPv4 or dual-stack (IPv4 + IPv6). +|`ipv4` or `dualstack` +|=== + +== Considerations + +* You must update the Cluster IAM Role to enable tag propagation from Kubernetes to {aws} Load Balancer resources. For more information, see <>. +* For information about associating resources with either EKS Auto Mode or the self-managed {aws} Load Balancer Controller, see <>. +* For information about fixing issues with load balancers, see <>. +* For more considerations about using the load balancing capability of EKS Auto Mode, see <>. + +When migrating to EKS Auto Mode for load balancing, several changes in service annotations and resource configurations are necessary. The following tables outline key differences between previous and new implementations, including unsupported options and recommended alternatives. + +=== Service annotations + +[options="header"] +|=== +| Previous | New | Description +| `service.beta.kubernetes.io/load-balancer-source-ranges` | Not supported | Use `spec.loadBalancerSourceRanges` on Service +| `service.beta.kubernetes.io/aws-load-balancer-type` | Not supported | Use `spec.loadBalancerClass` on Service +| `service.beta.kubernetes.io/aws-load-balancer-internal` | Not supported | Use `service.beta.kubernetes.io/aws-load-balancer-scheme` +| Various load balancer attributes | Not supported | Use `service.beta.kubernetes.io/aws-load-balancer-attributes` +| `service.beta.kubernetes.io/aws-load-balancer-proxy-protocol` | Not supported | Use `service.beta.kubernetes.io/aws-load-balancer-attributes` instead +| `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled` | Not supported | Use `service.beta.kubernetes.io/aws-load-balancer-attributes` instead +| `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name` | Not supported | Use `service.beta.kubernetes.io/aws-load-balancer-attributes` instead +| `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix` | Not supported | Use `service.beta.kubernetes.io/aws-load-balancer-attributes` instead +| `service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled` | Not supported | Use `service.beta.kubernetes.io/aws-load-balancer-attributes` instead +|=== + +To migrate from deprecated load balancer attribute annotations, consolidate these settings into the `service.beta.kubernetes.io/aws-load-balancer-attributes` annotation. This annotation accepts a comma-separated list of key-value pairs for various load balancer attributes. For example, to specify proxy protocol, access logging, and cross-zone load balancing, use the following format: + +```yaml +service.beta.kubernetes.io/aws-load-balancer-attributes: | + proxy_protocol.v2.enabled=true + access_logs.s3.enabled=true + access_logs.s3.bucket=my-bucket + access_logs.s3.prefix=my-prefix + load_balancing.cross_zone.enabled=true + +``` + +This consolidated format provides a more consistent and flexible way to configure load balancer attributes while reducing the number of individual annotations needed. Review your existing Service configurations and update them to use this consolidated format. + +=== TargetGroupBinding + +[options="header"] +|=== +| Previous | New | Description +| `elbv2.k8s.aws/v1beta1` | `eks.amazonaws.com/v1` | API version change +| `spec.targetType` optional | `spec.targetType` required | Explicit target type specification +| `spec.networking.ingress.from` | Not supported | No longer supports NLB without security groups +|=== diff --git a/latest/ug/automode/auto-disable.adoc b/latest/ug/automode/auto-disable.adoc new file mode 100644 index 00000000..ce6df411 --- /dev/null +++ b/latest/ug/automode/auto-disable.adoc @@ -0,0 +1,63 @@ +//!!NODE_ROOT
+[.topic] +[[auto-disable,auto-disable.title]] += Disable EKS Auto Mode +:info_doctype: section + +include::../attributes.txt[] + +You can disable EKS Auto Mode on an existing EKS Cluster. This is a destructive operation. + +* EKS will terminate all EC2 instances operated by EKS Auto Mode. +* EKS will delete all Load Balancers operated by EKS Auto Mode. +* EKS will *not* delete EBS volumes provisioned by EKS Auto Mode. + +EKS Auto Mode is designed to fully manage the resources that it creates. +Manual interventions could result in EKS Auto Mode failing to completely clean up those resources when it is disabled. +For example, if you referred to a managed Security Group from external Security Group rules, +and forget to remove that reference before you disable EKS Auto Mode for a cluster, the +managed Security Group will leak (not be deleted). +Steps below describe how to remove a leaked Security Group if that should happen. + +== Disable EKS Auto Mode ({aws} Console) + +. Open your cluster overview page in the {aws} Management Console. +. Under *EKS Auto Mode* select *Manage* +. Toggle *EKS Auto Mode* to `off`. + +If any managed Security Group is not deleted at the end of this process, you can delete it manually using descriptions from link:vpc/latest/userguide/deleting-security-groups.html[Delete a security group,type="documentation"]. + +== Disable EKS Auto Mode ({aws} CLI) + +Use the following command to disable {eam} on an existing cluster. + +You need to have the `aws` CLI installed, and be logged in with sufficent permissions to manage EKS clusters. For more information, see <>. + +[NOTE] +==== +The compute, block storage, and load balancing capabilities must all be enabled or disabled in the same request. +==== + +[source,cli] +---- +aws eks update-cluster-config \ + --name $CLUSTER_NAME \ + --compute-config enabled=false \ + --kubernetes-network-config '{"elasticLoadBalancing":{"enabled": false}}' \ + --storage-config '{"blockStorage":{"enabled": false}}' +---- + +You can check if a leaked EKS Auto Mode Security Group failed to be deleted after disabling EKS Auto Mode as follows: + +[source,cli] +---- +aws ec2 describe-security-groups \ + --filters Name=tag:eks:eks-cluster-name,Values= Name=tag-key,Values=ingress.eks.amazonaws.com/resource,service.eks.amazonaws.com/resource --query "SecurityGroups[*].[GroupName]" +---- + +To then delete the Security Group: + +[source,cli] +---- +aws ec2 delete-security-group --group-name= +---- diff --git a/latest/ug/automode/auto-elb-example.adoc b/latest/ug/automode/auto-elb-example.adoc new file mode 100644 index 00000000..10edb9ed --- /dev/null +++ b/latest/ug/automode/auto-elb-example.adoc @@ -0,0 +1,241 @@ +//!!NODE_ROOT
+ +[.topic] +[[auto-elb-example,auto-elb-example.title]] += Deploy a Sample Load Balancer Workload to EKS Auto Mode +:info_doctype: section +:info_title: Deploy a sample load balancer workload to EKS Auto Mode +:info_titleabbrev: Deploy load balancer workload +:info_abstract: Deploy a sample load balancer workload to EKS Auto Mode + + +include::../attributes.txt[] + + +This guide walks you through deploying a containerized version of the 2048 game on Amazon EKS, complete with load balancing and internet accessibility. + +== Prerequisites + +* An EKS Auto Mode cluster +* `kubectl` configured to interact with your cluster +* Appropriate IAM permissions for creating ALB resources + +== Step 1: Create the Namespace + +First, create a dedicated namespace for the 2048 game application. + +Create a file named `01-namespace.yaml`: + +[source,yaml] +---- +apiVersion: v1 +kind: Namespace +metadata: + name: game-2048 +---- + +Apply the namespace configuration: + +[source,bash] +---- +kubectl apply -f 01-namespace.yaml +---- + +== Step 2: Deploy the Application + +The application runs multiple replicas of the 2048 game container. + +Create a file named `02-deployment.yaml`: + +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: game-2048 + name: deployment-2048 +spec: + selector: + matchLabels: + app.kubernetes.io/name: app-2048 + replicas: 5 + template: + metadata: + labels: + app.kubernetes.io/name: app-2048 + spec: + containers: + - image: public.ecr.aws/l6m2t8p7/docker-2048:latest + imagePullPolicy: Always + name: app-2048 + ports: + - containerPort: 80 + resources: + requests: + cpu: "0.5" +---- + +**Key components:** + +- Deploys 5 replicas of the application +- Uses a public ECR image +- Requests 0.5 CPU cores per pod +- Exposes port 80 for HTTP traffic + +Apply the deployment: + +[source,bash] +---- +kubectl apply -f 02-deployment.yaml +---- + +== Step 3: Create the Service + +The service exposes the deployment to the cluster network. + +Create a file named `03-service.yaml`: + +[source,yaml] +---- +apiVersion: v1 +kind: Service +metadata: + namespace: game-2048 + name: service-2048 +spec: + ports: + - port: 80 + targetPort: 80 + protocol: TCP + type: NodePort + selector: + app.kubernetes.io/name: app-2048 +---- + +**Key components:** + +- Creates a NodePort service +- Maps port 80 to the container's port 80 +- Uses label selector to find pods + +Apply the service: + +[source,bash] +---- +kubectl apply -f 03-service.yaml +---- + +== Step 4: Configure Load Balancing + +You will set up an ingress to expose the application to the internet. + +First, create the `IngressClass`. Create a file named `04-ingressclass.yaml`: + +[source,yaml] +---- +apiVersion: networking.k8s.io/v1 +kind: IngressClass +metadata: + namespace: game-2048 + labels: + app.kubernetes.io/name: LoadBalancerController + name: alb +spec: + controller: eks.amazonaws.com/alb +---- + +Then create the Ingress resource. Create a file named `05-ingress.yaml`: + +[source,yaml] +---- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + namespace: game-2048 + name: ingress-2048 + annotations: + alb.ingress.kubernetes.io/scheme: internet-facing + alb.ingress.kubernetes.io/target-type: ip +spec: + ingressClassName: alb + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: service-2048 + port: + number: 80 +---- + +**Key components:** + +- Creates an internet-facing ALB +- Uses IP target type for direct pod routing +- Routes all traffic (/) to the game service + +Apply the ingress configurations: + +[source,bash] +---- +kubectl apply -f 04-ingressclass.yaml +kubectl apply -f 05-ingress.yaml +---- + +== Step 5: Verify the Deployment + +. Check that all pods are running: ++ +[source,bash] +---- +kubectl get pods -n game-2048 +---- +. Verify the service is created: ++ +[source,bash] +---- +kubectl get svc -n game-2048 +---- +. Get the ALB endpoint: ++ +[source,bash] +---- +kubectl get ingress -n game-2048 +---- + +The ADDRESS field in the ingress output will show your ALB endpoint. Wait 2-3 minutes for the ALB to provision and register all targets. + +== Step 6: Access the Game + +Open your web browser and browse to the ALB endpoint URL from the earlier step. You should see the 2048 game interface. + +== Step 7: Cleanup + +To remove all resources created in this tutorial: + +[source,bash] +---- +kubectl delete namespace game-2048 +---- + +This will delete all resources in the namespace, including the deployment, service, and ingress resources. + +== What's Happening Behind the Scenes + +. The deployment creates 5 pods running the 2048 game +. The service provides stable network access to these pods +. EKS Auto Mode: +** Creates an Application Load Balancer in {aws} +** Configures target groups for the pods +** Sets up routing rules to direct traffic to the service + +[[auto-elb-troubleshooting,auto-elb-troubleshooting.title]] +== Troubleshooting + +If the game doesn't load: + +- Ensure all pods are running: `kubectl get pods -n game-2048` +- Check ingress status: `kubectl describe ingress -n game-2048` +- Verify ALB health checks: Check the target group health in {aws} Console diff --git a/latest/ug/automode/auto-enable-existing.adoc b/latest/ug/automode/auto-enable-existing.adoc new file mode 100644 index 00000000..1e0dab07 --- /dev/null +++ b/latest/ug/automode/auto-enable-existing.adoc @@ -0,0 +1,150 @@ +//!!NODE_ROOT
+ +[.topic] +[[auto-enable-existing,auto-enable-existing.title]] += Enable EKS Auto Mode on an existing cluster +:info_doctype: section +:info_title: Enable EKS Auto Mode on an existing cluster +:info_titleabbrev: Enable on cluster +:info_abstract: Enable EKS Auto Mode on an existing cluster + +include::../attributes.txt[] + +This topic describes how to enable Amazon EKS Auto Mode on your existing Amazon EKS clusters. Enabling Auto Mode on an existing cluster requires updating IAM permissions and configuring core EKS Auto Mode settings. Once enabled, you can begin migrating your existing compute workloads to take advantage of Auto Mode's simplified operations and automated infrastructure management. + +[IMPORTANT] +==== +Verify you have the minimum required version of certain Amazon EKS Add-ons installed before enabling EKS Auto Mode. For more information, see <>. +==== + + +Before you begin, ensure you have administrator access to your Amazon EKS cluster and permissions to modify IAM roles. The steps in this topic guide you through enabling Auto Mode using either the {aws} Management Console or {aws} CLI. + +== {aws} Management Console + +You must be logged into the {aws} console with permission to manage IAM, EKS, and EC2 resources. + +[NOTE] +==== +The Cluster IAM role of an EKS Cluster cannot be changed after the cluster is created. {eam} requires additional permissions on this role. You must attach additional policies to the current role. +==== + +=== Update Cluster IAM Role + +. Open your cluster overview page in the {aws} Management Console. +. Under *Cluster IAM role ARN*, select *View in IAM*. +. From the *Add Permissions* dropdown, select *Attach Policies*. +. Use the *Search* box to find and select the following policies: +** `AmazonEKSComputePolicy` +** `AmazonEKSBlockStoragePolicy` +** `AmazonEKSLoadBalancingPolicy` +** `AmazonEKSNetworkingPolicy` +** `AmazonEKSClusterPolicy` +. Select *Add permissions* +. From the *Trust relationships* tab, select *Edit trust policy* +. Insert the following Cluster IAM Role trust policy, and select *Update policy* + +[source,json] +---- +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "eks.amazonaws.com" + }, + "Action": [ + "sts:AssumeRole", + "sts:TagSession" + ] + } + ] +} +---- + + +=== Enable {eam} + +. Open your cluster overview page in the {aws} Management Console. +. Under *EKS Auto Mode* select *Manage* +. Toggle *EKS Auto Mode* to on. +. From the *EKS Node Pool* dropdown, select the default node pools you want to create. +** Learn more about Node Pools in {eam}. For more information, see <>. +. If you have previously created an {eam} Node IAM role this {aws} account, select it in the *Node IAM Role* dropdown. If you have not created this role before, select *Create {recd} Role* and follow the steps. + + +== {aws} CLI + +=== Prerequisites +* The Cluster IAM Role of the existing EKS Cluster must include sufficent permissiosn for {eam}, such as the following policies: +** `AmazonEKSComputePolicy` +** `AmazonEKSBlockStoragePolicy` +** `AmazonEKSLoadBalancingPolicy` +** `AmazonEKSNetworkingPolicy` +** `AmazonEKSClusterPolicy` +* The Cluster IAM Role must have an updated trust policy including the `sts:TagSession` action. For more information on creating a Cluster IAM Role, see <>. +* `aws` CLI installed, logged in, and a sufficent version. You must have permission to manage IAM, EKS, and EC2 resources. For more information, see <>. + +=== Procedure + +Use the following commands to enable {eam} on an existing cluster. + +[NOTE] +==== +The compute, block storage, and load balancing capabilities must all be enabled or disabled in the same request. +==== + +[source,cli] +---- +aws eks update-cluster-config \ + --name $CLUSTER_NAME \ + --compute-config enabled=true \ + --kubernetes-network-config '{"elasticLoadBalancing":{"enabled": true}}' \ + --storage-config '{"blockStorage":{"enabled": true}}' +---- + +[[auto-addons-required,auto-addons-required.title]] +== Required Add-on Versions + +If you're planning to enable EKS Auto Mode on an existing cluster, you may need to update certain add-ons. Please note: + +- This applies only to existing clusters transitioning to EKS Auto Mode. +- New clusters created with EKS Auto Mode enabled don't require these updates. + +If you have any of the following add-ons installed, ensure they are at least at the specified minimum version: + +[cols="1,1"] +|=== +| Add-on Name | Minimum Required Version + +| Amazon VPC CNI plugin for Kubernetes +| v1.19.0-eksbuild.1 + +| Kube-proxy +a| +* v1.25.16-eksbuild.22 +* v1.26.15-eksbuild.19 +* v1.27.16-eksbuild.14 +* v1.28.15-eksbuild.4 +* v1.29.10-eksbuild.3 +* v1.30.6-eksbuild.3 +* v1.31.2-eksbuild.3 + +| Amazon EBS CSI driver +| v1.37.0-eksbuild.1 + +| CSI snapshot controller +| v8.1.0-eksbuild.2 + +| EKS Pod Identity Agent +| v1.3.4-eksbuild.1 + +|=== + +For more information, see <>. + +== Next Steps + +* To migrate Manage Node Group workloads, see <>. +* To migrate from Self-Managed Karpenter, see <>. diff --git a/latest/ug/automode/auto-glossary.adoc b/latest/ug/automode/auto-glossary.adoc new file mode 100644 index 00000000..d2bfcb7f --- /dev/null +++ b/latest/ug/automode/auto-glossary.adoc @@ -0,0 +1,77 @@ +//!!NODE_ROOT
+[.topic] +[[auto-glossary,auto-glossary.title]] += Glossary +:info_doctype: section +:info_title: Glossary of terms for EKS Auto Mode +:info_titleabbrev: Glossary +:info_abstract: Glossary of terms for EKS Auto Mode + + +include::../attributes.txt[] + +IAM Role:: +An IAM identity that you can create in your {aws} account that has specific permissions. You can use IAM roles to delegate access to users, applications, or services that don't normally have access to your {aws} resources. + +* You can attach {aws} IAM Policies to the role. +* You can also use EKS access entries to attach Kubernetes RBAC permissions to the role. + +Kubernetes Role:: +A Kubernetes resource that defines a set of permission rules within a namespace. Roles specify which operations (verbs) are allowed on which resources in the Kubernetes API. + +{aws} Managed IAM Policy:: +A standalone policy that is created and administered by {aws}. {aws} managed policies are designed to provide permissions for many common use cases and are maintained by {aws}. + +EKS Access Policy:: +A set of Kubernetes permissions that are managed by Amazon EKS. You can associate an EKS access policy with an IAM role to control access to your Amazon EKS cluster. + +EKS Access Entry:: +The connection between an EKS access policy and an IAM role. An access entry gives an IAM role specific permissions on your Amazon EKS cluster. + +EKS Managed Node Group:: +//Find something from Alex? + +Fargate Pod:: +A pod that runs on {aws} Fargate. Each pod runs in its own isolated compute environment, and components such as the kernel, CPU resources, and memory resources are not shared with other pods. + +Self managed nodes:: +Amazon EC2 instances that you manage as part of your Amazon EKS cluster. You are responsible for security patches, system updates, and all maintenance tasks. + +Node Group:: +A collection of Amazon EC2 instances that are configured to work with Amazon EKS. Node groups contain instances with the same configuration. + +Node Class:: +A template that defines the compute infrastructure for your nodes. Node classes specify settings such as instance types, storage configuration, and networking options. + +Node Pool:: +A Kubernetes custom resource that connects your workloads to a node class. Node pools determine which pods run on which types of nodes. + +EKS Node Class for EKS Auto Mode:: +A node class that is optimized for Amazon EKS. This class uses Amazon EKS-optimized AMIs and integrates with {aws} services for security, monitoring, and maintenance. + +EC2 Node Class for Karpenter:: +A node class that works with Karpenter, an open-source node provisioning project. This class provides direct control over Amazon EC2 instance configuration without using managed node groups. + +Amazon EKS Auto Mode Managed Node:: +An Amazon EC2 instance that is configured and managed by Amazon EKS Auto Mode. These nodes receive automatic updates and are optimized for running Kubernetes workloads. + +EKS Auto Mode Managed Node Pools:: +The default node pools that are included with every Amazon EKS Auto Mode cluster. These pools are preconfigured for different workload types. + +EKS Auto Mode Managed Node Pool -- General Purpose:: +A default node pool that is suitable for most workloads. This pool provides balanced compute and memory resources. + +EKS Auto Mode Managed Node Pool -- System:: +A default node pool that is optimized for running system workloads and cluster components. + +EKS Auto Mode Managed EC2 Instance:: +An Amazon EC2 instance that is managed as part of Amazon EKS Auto Mode. {aws} maintains these instances and automatically applies security patches and updates. + +EKS Auto Mode -- Compute Capability:: +A feature that automatically manages compute resources in Amazon EKS Auto Mode clusters. This capability handles tasks such as scaling nodes and selecting instance types based on workload requirements. + +EKS Auto Mode -- Block Storage Capability:: +A feature that manages Amazon EBS volumes in Amazon EKS Auto Mode clusters. This capability automatically handles volume provisioning and lifecycle management for pods that need persistent storage. + +EKS Auto Mode -- Load Balancing Capability:: +A feature that manages Application Load Balancers and Network Load Balancers in Amazon EKS Auto Mode clusters. This capability automatically configures load balancers based on your service requirements. diff --git a/latest/ug/automode/auto-learn-iam.adoc b/latest/ug/automode/auto-learn-iam.adoc new file mode 100644 index 00000000..020547d0 --- /dev/null +++ b/latest/ug/automode/auto-learn-iam.adoc @@ -0,0 +1,196 @@ +//!!NODE_ROOT
+ +[.topic] +[[auto-learn-iam,auto-learn-iam.title]] += Learn about identity and access in EKS Auto Mode +:info_titleabbrev: Identity & access +:info_doctype: section + +include::../attributes.txt[] + + +This topic describes the Identity and Access Management (IAM) roles and permissions required to use EKS Auto Mode. EKS Auto Mode uses two primary IAM roles: a Cluster IAM Role and a Node IAM Role. These roles work in conjunction with EKS Pod Identity and EKS access entries to provide comprehensive access management for your EKS clusters. + +When you configure EKS Auto Mode, you will need to set up these IAM roles with specific permissions that allow {aws} services to interact with your cluster resources. This includes permissions for managing compute resources, storage volumes, load balancers, and networking components. Understanding these role configurations is essential for proper cluster operation and security. + +In EKS Auto Mode, {aws} IAM roles are automatically mapped to Kubernetes permissions through EKS access entries, removing the need for manual configuration of `aws-auth` ConfigMaps or custom bindings. When you create a new auto mode cluster, EKS automatically creates the corresponding Kubernetes permissions using Access entries, ensuring that {aws} services and cluster components have the appropriate access levels within both the {aws} and Kubernetes authorization systems. This automated integration reduces configuration complexity and helps prevent permission-related issues that commonly occur when managing EKS clusters. + +[[auto-learn-cluster-iam-role,auto-learn-cluster-iam-role.title]] +== Cluster IAM role + +The Cluster IAM role is an {aws} Identity and Access Management (IAM) role used by Amazon EKS to manage permissions for Kubernetes clusters. This role grants Amazon EKS the necessary permissions to interact with other {aws} services on behalf of your cluster, and is automatically configured with Kubernetes permissions using EKS access entries. + +* You must attach {aws} IAM policies to this role. +* {eam} attaches Kubernetes permissions to this role automatically using EKS access entries. +* With {eam}, {aws} suggests creating a single Cluster IAM Role per {aws} account. +* {aws} suggests naming this role `AmazonEKSAutoClusterRole`. +* This role requires permissions for multiple {aws} services to manage resources including EBS volumes, Elastic Load Balancers, and EC2 instances. +* The suggested configuration for this role includes multiple {aws} managed IAM policies, related to the different {caps} of {eam}. +** `AmazonEKSComputePolicy` +** `AmazonEKSBlockStoragePolicy` +** `AmazonEKSLoadBalancingPolicy` +** `AmazonEKSNetworkingPolicy` +** `AmazonEKSClusterPolicy` + +For more information about the Cluster IAM Role and {aws} managed IAM policies, see: + +* <> +* <> + +For more information about Kubernetes access, see: + +* <> + +[[auto-learn-node-iam-role,auto-learn-node-iam-role.title]] +== Node IAM role + +The Node IAM role is an {aws} Identity and Access Management (IAM) role used by Amazon EKS to manage permissions for worker nodes in Kubernetes clusters. This role grants EC2 instances running as Kubernetes nodes the necessary permissions to interact with {aws} services and resources, and is automatically configured with Kubernetes RBAC permissions using EKS access entries. + +* You must attach {aws} IAM policies to this role. +* {eam} attaches Kubernetes RBAC permissions to this role automatically using EKS access entries. +* {aws} suggests naming this role `AmazonEKSAutoNodeRole`. +* With {eam}, {aws} suggests creating a single Node IAM Role per {aws} account. +* This role has limited permissions. The key permissions include assuming a Pod Identity Role, and pulling images from ECR. +* {aws} suggests the following {aws} managed IAM policies: +** `AmazonEKSWorkerNodeMinimalPolicy` +** `AmazonEC2ContainerRegistryPullOnly` + +For more information about the Cluster IAM Role and {aws} managed IAM policies, see: + +* <> +* <> + +For more information about Kubernetes access, see: + +* <> + +== Service-linked role + +Amazon EKS uses a service-linked role (SLR) for certain operations. A service-linked role is a unique type of IAM role that is linked directly to Amazon EKS. Service-linked roles are predefined by Amazon EKS and include all the permissions that the service requires to call other {aws} services on your behalf. + +{aws} automatically creates and configures the SLR. You can delete an SLR only after first deleting their related resources. This protects your Amazon EKS resources because you can't inadvertently remove permission to access the resources. + +The SLR policy grants Amazon EKS permissions to observe and delete core infrastructure components: EC2 resources (instances, network interfaces, security groups), ELB resources (load balancers, target groups), CloudWatch capabilities (logging and metrics), and IAM roles with "eks" prefix. It also enables private endpoint networking through VPC/hosted zone association and includes permissions for EventBridge monitoring and cleanup of EKS-tagged resources. + +For more information, see: + +* <> +* <> + + +[[tag-prop,tag-prop.title]] +== Custom {aws} tags for EKS Auto resources + +By default, the managed policies related to EKS Auto Mode do not permit applying user defined tags to Auto Mode provisioned {aws} resources. If you want to apply user defined tags to {aws} resources, you must attach additional permissions to the Cluster IAM Role with sufficient permissions to create and modify tags on {aws} resources. Below is an example of a policy that will allow unrestricted tagging access: + +[[auto-tag-policy,auto-tag-policy.title]] +.View custom tag policy example +[%collapsible, expand-section="_collapse_all_"] +==== +[source,json] +---- +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "Compute", + "Effect": "Allow", + "Action": [ + "ec2:CreateFleet", + "ec2:RunInstances", + "ec2:CreateLaunchTemplate" + ], + "Resource": "*", + "Condition": { + "StringEquals": { + "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" + }, + "StringLike": { + "aws:RequestTag/eks:kubernetes-node-class-name": "*", + "aws:RequestTag/eks:kubernetes-node-pool-name": "*" + } + } + }, + { + "Sid": "Storage", + "Effect": "Allow", + "Action": [ + "ec2:CreateVolume", + "ec2:CreateSnapshot" + ], + "Resource": [ + "arn:aws:ec2:*:*:volume/*", + "arn:aws:ec2:*:*:snapshot/*" + ], + "Condition": { + "StringEquals": { + "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" + } + } + }, + { + "Sid": "Networking", + "Effect": "Allow", + "Action": "ec2:CreateNetworkInterface", + "Resource": "*", + "Condition": { + "StringEquals": { + "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" + }, + "StringLike": { + "aws:RequestTag/eks:kubernetes-cni-node-name": "*" + } + } + }, + { + "Sid": "LoadBalancer", + "Effect": "Allow", + "Action": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateRule", + "ec2:CreateSecurityGroup" + ], + "Resource": "*", + "Condition": { + "StringEquals": { + "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" + } + } + }, + { + "Sid": "ShieldProtection", + "Effect": "Allow", + "Action": [ + "shield:CreateProtection" + ], + "Resource": "*", + "Condition": { + "StringEquals": { + "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" + } + } + }, + { + "Sid": "ShieldTagResource", + "Effect": "Allow", + "Action": [ + "shield:TagResource" + ], + "Resource": "arn:aws:shield::*:protection/*", + "Condition": { + "StringEquals": { + "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" + } + } + } + ] +} +---- +==== + + +== Access Policy Reference + +For more information about the Kubernetes permissions used by EKS Auto Mode, see <>. diff --git a/latest/ug/automode/auto-migrate-karpenter.adoc b/latest/ug/automode/auto-migrate-karpenter.adoc new file mode 100644 index 00000000..081d5253 --- /dev/null +++ b/latest/ug/automode/auto-migrate-karpenter.adoc @@ -0,0 +1,137 @@ +//!!NODE_ROOT
+[.topic] +[[auto-migrate-karpenter,auto-migrate-karpenter.title]] += Migrate from Karpenter to EKS Auto Mode using kubectl +:info_doctype: section +:info_title: Migrate from Karpenter to EKS Auto Mode using kubectl +:info_titleabbrev: Migrate from Karpenter +:info_abstract: Migrate from Karpenter to EKS Auto Mode using kubectl + +include::../attributes.txt[] + +This topic walks you through the process of migrating workloads from Karpenter to Amazon EKS Auto Mode using kubectl. The migration can be performed gradually, allowing you to move workloads at your own pace while maintaining cluster stability and application availability throughout the transition. + +The step-by-step approach outlined below enables you to run Karpenter and EKS Auto Mode side by side during the migration period. This dual-operation strategy helps ensure a smooth transition by allowing you to validate workload behavior on EKS Auto Mode before completely decommissioning Karpenter. You can migrate applications individually or in groups, providing flexibility to accommodate your specific operational requirements and risk tolerance. + +## Prerequisites + +Before beginning the migration, ensure you have: + +* Karpenter v1.1 or later installed on your cluster. For more information, see https://karpenter.sh/docs/upgrading/upgrade-guide/#upgrading-to-110[Upgrading to 1.1.0+] in the Karpenter docs. +* `kubectl` installed and connected to your cluster. For more information, see <>. + +This topic assumes you are familiar with Karpenter and NodePools. For more information, see the https://karpenter.sh/[Karpenter Documentation.] + +## Step 1: Enable EKS Auto Mode on the cluster + +Enable EKS Auto Mode on your existing cluster using the {aws} CLI or Management Console. For more information, see <>. + +[NOTE] +==== +While enabling EKS Auto Mode, don't enable the `general purpose` nodepool at this stage during transition. This node pool is not selective. + +For more information, see <>. +==== + + +## Step 2: Create a tainted EKS Auto Mode NodePool + +Create a new NodePool for EKS Auto Mode with a taint. This ensures that existing pods won't automatically schedule on the new EKS Auto Mode nodes. This node pool uses the `default` `NodeClass` built into EKS Auto Mode. For more information, see <>. + +Example node pool with taint: + +```yaml +apiVersion: karpenter.sh/v1 +kind: NodePool +metadata: + name: eks-auto-mode +spec: + template: + spec: + requirements: + - key: "eks.amazonaws.com/instance-category" + operator: In + values: ["c", "m", "r"] + nodeClassRef: + group: eks.amazonaws.com + kind: NodeClass + name: default + taints: + - key: "eks-auto-mode" + effect: "NoSchedule" +``` + +Update the requirements for the node pool to match the Karpenter configuration you are migrating form. You need at least one requirement. + +## Step 3: Update workloads for migration + +Identify and update the workloads you want to migrate to EKS Auto Mode. Add both tolerations and node selectors to these workloads: + +```yaml +apiVersion: apps/v1 +kind: Deployment +spec: + template: + spec: + tolerations: + - key: "eks-auto-mode" + effect: "NoSchedule" + nodeSelector: + eks.amazonaws.com/compute-type: auto +``` + +This change allows the workload to be scheduled on the new EKS Auto Mode nodes. + +EKS Auto Mode uses different labels than Karpenter. Labels related to EC2 managed instances start with `eks.amazonaws.com`. For more information, see <>. + +## Step 4: Gradually migrate workloads + +Repeat Step 3 for each workload you want to migrate. This allows you to move workloads individually or in groups, based on your requirements and risk tolerance. + +## Step 5: Remove the original Karpenter NodePool + +Once all workloads have been migrated, you can remove the original Karpenter NodePool: + +``` +kubectl delete nodepool +``` + +## Step 6: Remove taint from EKS Auto Mode NodePool (Optional) + +If you want EKS Auto Mode to become the default for new workloads, you can remove the taint from the EKS Auto Mode NodePool: + +```yaml +apiVersion: karpenter.sh/v1 +kind: NodePool +metadata: + name: eks-auto-mode +spec: + template: + spec: + nodeClassRef: + group: eks.amazonaws.com + kind: NodeClass + name: default + # Remove the taints section +``` + +## Step 7: Remove node selectors from workloads (Optional) + +If you've removed the taint from the EKS Auto Mode NodePool, you can optionally remove the node selectors from your workloads, as EKS Auto Mode is now the default: + +```yaml +apiVersion: apps/v1 +kind: Deployment +spec: + template: + spec: + # Remove the nodeSelector section + tolerations: + - key: "eks-auto-mode" + effect: "NoSchedule" +``` + +## Step 8: Uninstall Karpenter from your cluster + +The steps to remove Karpenter depend on how you installed it. For more information, see the https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/#create-a-cluster-and-add-karpenter[Karpenter install instructions] and the https://helm.sh/docs/helm/helm_uninstall/[Helm Uninstall command]. + diff --git a/latest/ug/automode/auto-migrate-mng.adoc b/latest/ug/automode/auto-migrate-mng.adoc new file mode 100644 index 00000000..10fe6d8b --- /dev/null +++ b/latest/ug/automode/auto-migrate-mng.adoc @@ -0,0 +1,30 @@ +//!!NODE_ROOT
+ +[.topic] +[[auto-migrate-mng,auto-migrate-mng.title]] += Migrate from EKS Managed Node Groups to EKS Auto Mode +:info_doctype: section +:info_title: Migrate from EKS Managed Node Groups to EKS Auto Mode +:info_titleabbrev: Migrate from Managed Node Groups +:info_abstract: Migrate from EKS Managed Node Groups + +include::../attributes.txt[] + +When transitioning your Amazon EKS cluster to use EKS auto mode, you can smoothly migrate your existing workloads from managed node groups using the eksctl CLI tool. This process ensures continuous application availability while EKS auto mode optimizes your compute resources. The migration can be performed with minimal disruption to your running applications. + +This topic walks you through the steps to safely drain pods from your existing managed node groups and allow EKS auto mode to reschedule them on newly provisioned instances. By following this procedure, you can take advantage of EKS auto mode's intelligent workload consolidation while maintaining your application's availability throughout the migration. + +== Prerequisites + +* Cluster with {eam} enabled +* `eksctl` CLI installed and connected to your cluster. For more information, see <>. +* Karpenter is not installed on the cluster. + +== Procedure + +Use the following `eksctl` CLI command to initiate draining pods from the existing {mng} instances. {eam} will create new nodes to back the displaced pods. + +[source,cli] +---- +eksctl update auto-mode-config --drain-all-nodegroups +---- diff --git a/latest/ug/automode/auto-mng.adoc b/latest/ug/automode/auto-mng.adoc new file mode 100644 index 00000000..34af935c --- /dev/null +++ b/latest/ug/automode/auto-mng.adoc @@ -0,0 +1,153 @@ + +//!!NODE_ROOT
+[.topic] +[[auto-mng,auto-mng.title]] += Compare EKS Auto Mode with EKS managed node groups +:info_doctype: section +:info_title: Compare EKS Auto Mode with EKS managed node groups +:info_titleabbrev: Compare with Managed Node Groups +:info_abstract: Compare EKS Auto Mode with EKS managed node groups + + +include::../attributes.txt[] + +[IMPORTANT] +==== +*{aws} Internal:* The table below will be used to update the larger table at <> +==== + + + +[cols="3*", options="header"] +|=== +|Criteria |EKS managed node groups |EKS Auto Mode + +|Can be deployed to {aws} Outposts +|No +|No + +|Can be deployed to an {aws} Local Zone +|Yes +|No + +|Can run containers that require Windows +|Yes +|No + +|Can run containers that require Linux +|Yes +|Yes + +|Can run workloads that require the Inferentia chip +|Yes – Amazon Linux nodes only +|Yes + +|Can run workloads that require a GPU +|Yes – Amazon Linux nodes only +|Yes + +|Can run workloads that require Arm processors +|Yes +|Yes + +|Can run {aws} Bottlerocket +|Yes +|Yes - Required + +|Pods share a kernel runtime environment with other Pods +|Yes – All of your Pods on each of your nodes +|Yes + +|Pods share CPU, memory, storage, and network resources with other Pods. +|Yes – Can result in unused resources on each node +|Yes + +|Pods can use more hardware and memory than requested in Pod specs +|Yes – If the Pod requires more resources than requested, and resources are available on the node, the Pod can use additional resources. +|Yes + +|Must deploy and manage Amazon EC2 instances +|Yes +|No + +|Supports Custom Machine Images (AMIs) +|Yes +|No + +|Must secure, maintain, and patch the operating system of Amazon EC2 instances +|Yes +|No + +|Can provide bootstrap arguments at deployment of a node, such as extra kubelet arguments. +|Yes – Using eksctl or a launch template with a custom AMI +|No - Use a `NodeClass` to configure nodes + +|Can assign IP addresses to Pods from a different CIDR block than the IP address assigned to the node. +|Yes – Using a launch template with a custom AMI. For more information, see Customize managed nodes with launch templates. +|No + +|Can SSH into node +|Yes +|No + +|Can deploy your own custom AMI to nodes +|Yes – Using a launch template +|No + +|Can deploy your own custom CNI to nodes +|Yes – Using a launch template with a custom AMI +|No + +|Must update node AMI on your own +|Yes – If you deployed an Amazon EKS optimized AMI, you're notified in the Amazon EKS console when updates are available. You can perform the update with one-click in the console. If you deployed a custom AMI, you're not notified in the Amazon EKS console when updates are available. You must perform the update on your own. +|No + +|Must update node Kubernetes version on your own +|Yes – If you deployed an Amazon EKS optimized AMI, you're notified in the Amazon EKS console when updates are available. You can perform the update with one-click in the console. If you deployed a custom AMI, you're not notified in the Amazon EKS console when updates are available. You must perform the update on your own. +|No + +|Can use Amazon EBS storage with Pods +|Yes +|Yes + +|Can use Amazon EFS storage with Pods +|Yes +|Yes + +|Can use Amazon FSx for Lustre storage with Pods +|Yes +|Yes + +|Can use Network Load Balancer for services +|Yes +|Yes + +|Pods can run in a public subnet +|Yes +|Yes + +|Can assign different VPC security groups to individual Pods +|Yes – Linux nodes only +|No + +|Can run Kubernetes DaemonSets +|Yes +|Yes + +|Support HostPort and HostNetwork in the Pod manifest +|Yes +|Yes + +|{aws} Region availability +|All Amazon EKS supported regions +|All Amazon EKS supported regions + +|Can run containers on Amazon EC2 dedicated hosts +|Yes +|No + +|Pricing +|Cost of Amazon EC2 instance that runs multiple Pods. For more information, see Amazon EC2 pricing. +| When EKS Auto Mode is enabled in your cluster, you pay a separate fee, in addition to the standard EC2 instance charges, for the instances launched using Auto Mode's compute capability. The amount varies with the instance type launched and the {aws} region where your cluster is located. For more information, see link:eks/pricing/["Amazon EKS pricing",type="marketing"]. + +|=== diff --git a/latest/ug/automode/auto-net-pol.adoc b/latest/ug/automode/auto-net-pol.adoc new file mode 100644 index 00000000..4194fc26 --- /dev/null +++ b/latest/ug/automode/auto-net-pol.adoc @@ -0,0 +1,74 @@ +//!!NODE_ROOT
+[.topic] +[[auto-net-pol,auto-net-pol.title]] += Use Network Policies with EKS Auto Mode +:info_doctype: section +:info_titleabbrev: Use network policies + +include::../attributes.txt[] + +//add to ToC + +Network policies allow you to control traffic flow at the IP address or port level within your Amazon EKS cluster. This topic explains how to enable and use network policies with EKS Auto Mode. + +## Prerequisites + +* An Amazon EKS cluster with EKS Auto Mode enabled +* kubectl configured to connect to your cluster + +## Step 1: Enable Network Policy Controller + +To use network policies with EKS Auto Mode, you first need to enable the Network Policy Controller by applying a ConfigMap to your cluster. + +. Create a file named `enable-network-policy.yaml` with the following content: ++ +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: amazon-vpc-cni + namespace: kube-system +data: + enable-network-policy-controller: "true" +``` +. Apply the ConfigMap to your cluster: ++ +``` +kubectl apply -f enable-network-policy.yaml +``` + +## Step 2: Enable Network Policies in Node Class + +Before you can use network policies, you need to ensure that your Node Class is configured to support them. Follow these steps: + +. Create or edit a Node Class YAML file (e.g., `nodeclass-network-policy.yaml`) with the following content: ++ +```yaml +apiVersion: eks.amazonaws.com/v1 +kind: NodeClass +metadata: + name: network-policy-enabled +spec: + # Enables network policy support + networkPolicy: DefaultAllow + # Optional: Enables logging for network policy events + networkPolicyEventLogs: Enabled + # Include other Node Class configurations as needed +``` +. Apply the Node Class configuration to your cluster: ++ +``` +kubectl apply -f nodeclass-network-policy.yaml +``` +. Verify that the Node Class has been created: ++ +``` +kubectl get nodeclass network-policy-enabled +``` +. Update your Node Pool to use this Node Class. For more information, see <>. + +Once your nodes are using this Node Class, they will be able to enforce network policies. You can now proceed to create and apply network policies to control traffic within your cluster. For all the node class configuration options, see <>. + +## Step 3: Create and test network policies + +Your EKS Auto Mode cluster is now configured to support Kubernetes network policies. You can test this with the <>. diff --git a/latest/ug/automode/auto-networking.adoc b/latest/ug/automode/auto-networking.adoc new file mode 100644 index 00000000..711f7bd3 --- /dev/null +++ b/latest/ug/automode/auto-networking.adoc @@ -0,0 +1,70 @@ +//!!NODE_ROOT
+[.topic] +[[auto-networking,auto-networking.title]] += Learn about VPC Networking and Load Balancing in EKS Auto Mode +:info_doctype: section +:info_title: Learn about VPC networking and load balancing in EKS Auto Mode +:info_titleabbrev: Networking +:info_abstract: Learn about VPC networking and load balancing in EKS Auto Mode. + + +include::../attributes.txt[] + + +This topic explains how to configure Virtual Private Cloud (VPC) networking and load balancing features in EKS Auto Mode. While EKS Auto Mode manages most networking components automatically, you can still customize certain aspects of your cluster's networking configuration through NodeClass resources and load balancer annotations. + +When you use EKS Auto Mode, {aws} manages the VPC Container Network Interface (CNI) configuration and load balancer provisioning for your cluster. You can influence networking behaviors by defining NodeClass objects and applying specific annotations to your Service and Ingress resources, while maintaining the automated operational model that EKS Auto Mode provides. + +== VPC CNI networking + +With {eam}, you do not directly configure the {aws} VPC CNI. {aws} manages node and pod networking. Instead, you create a `NodeClass` Kubernetes object. + +=== Configure VPC CNI with NodeClass + +The NodeClass resource in EKS Auto Mode allows you to customize certain aspects of the VPC Container Network Interface (CNI) configuration without directly managing the CNI plugin. Through NodeClass, you can specify security group selections, control node placement across VPC subnets, set SNAT policies, configure network policies, and enable network event logging. This approach maintains the automated operational model of EKS Auto Mode while providing flexibility for network customization. + +You can use a NodeClass to: + +* Select a Security Group for Nodes +* Control how nodes are placed on VPC Subnets +* Set the Node SNAT Policy to `random` or `disabled` +* Set the Network Policy to Default Deny or Default Allow +* Enable Network Event Logging to a file. + +Learn how to xref:create-node-class[Create an Amazon EKS NodeClass]. + +=== Considerations + +{eam} supports: + +* EKS Network Policies. +* The `HostPort` and `HostNetwork` options for Kubernetes Pods. +* Pods in public or private subnets. + +{eam} does *not* support: + +* Security Groups per Pod (SGPP). +* Custom Networking. The IP Addresses of Pods and Nodes must be from the same CIDR Block. +* Warm IP, warm prefix, and warm ENI configurations. +* Minimum IP targets configuration. +* Enabling or disabling prefix delegation. +* Other configurations supported by the open-source {aws} CNI. +* Network Policy configurations such as conntrack timer customization (default is 300s). +* Exporting network event logs to CloudWatch. + + +[[auto-lb-consider,auto-lb-consider.title]] +== Load balancing + +You configure {aws} Elastic Load Balancers provisioned by {eam} using annotations on Service and Ingress resources. + +For more information, see <> or <>. + +=== Considerations for load balancing with {eam} + +* The default targeting mode is IP Mode, not Instance Mode. +* {eam} only supports Security Group Mode for Network Load Balancers. +* {aws} does not support migrating load balancers from the self managed {aws} load balancer controller to management by {eam}. +* The `networking.ingress.ipBlock` field in `TargetGroupBinding` spec is not supported. +* If your worker nodes use custom security groups (not `+eks-cluster-sg-*+` naming pattern), your cluster role needs additional IAM permissions. The default EKS-managed policy only allows EKS to modify security groups named `+eks-cluster-sg-*+`. Without permission to modify your custom security groups, EKS cannot add the required ingress rules that allow ALB/NLB traffic to reach your pods. +* You cannot bring your own target groups. diff --git a/latest/ug/automode/auto-reference.adoc b/latest/ug/automode/auto-reference.adoc new file mode 100644 index 00000000..25be1606 --- /dev/null +++ b/latest/ug/automode/auto-reference.adoc @@ -0,0 +1,38 @@ +//!!NODE_ROOT +[.topic] +include::../attributes.txt[] +[[auto-reference,auto-reference.title]] += Learn how EKS Auto Mode works +:info_doctype: section +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_title: Learn how EKS Auto Mode works +:info_titleabbrev: How it works +:info_abstract: Learn how EKS Auto Mode works + +[abstract] +-- +Reference information for EKS Auto Mode +-- + +Use this chapter to learn how the components of Amazon EKS Auto Mode clusters work. + +[.topiclist] +[[Topic List]] + +include::automode-learn-instances.adoc[leveloffset=+1] + +include::auto-learn-iam.adoc[leveloffset=+1] + +include::auto-networking.adoc[leveloffset=+1] + +//include::auto-mng.adoc[leveloffset=+1] + +//include::auto-security.adoc[leveloffset=+1] + +//include::term-reference.adoc[leveloffset=+1] + +//include::auto-glossary.adoc[leveloffset=+1] diff --git a/latest/ug/automode/auto-troubleshoot.adoc b/latest/ug/automode/auto-troubleshoot.adoc new file mode 100644 index 00000000..ee9897bf --- /dev/null +++ b/latest/ug/automode/auto-troubleshoot.adoc @@ -0,0 +1,88 @@ +//!!NODE_ROOT
+ +[.topic] +[[auto-troubleshoot,auto-troubleshoot.title]] += Troubleshoot EKS Auto Mode +:info_doctype: section +:info_title: Troubleshoot EKS Auto Mode +:info_titleabbrev: Troubleshoot +:info_abstract: Troubleshoot EKS Auto Mode + +include::../attributes.txt[] + + +With {eam}, {aws} assumes more {resp} for {e2i}s in {yaa}. EKS assumes {resp} for the container runtime on nodes, the operating system on the nodes, and certain controllers. This includes a block storage controller, a load balancing controller, and a compute controller. + +You must use {aws} and {k8s} APIs to troubleshoot nodes. You can: + +* Use a Kubernetes `NodeDiagnostic` resource to {ret} node logs. +* Use the {aws} EC2 CLI command `get-console-output` to {ret} console output from nodes. + +[NOTE] +==== +{eam} uses {emi}s. You cannot directly access {emi}s, including by SSH. +==== + +If you have a problem with a controller, you should research: + +* If the resources associated with that controller are properly formatted and valid. +* If the {aws} IAM and Kubernetes RBAC resources are properly configured for your cluster. For more information, see <>. + +[[auto-node-monitoring-agent,auto-node-monitoring-agent.title]] +== Node monitoring agent + +{eam} includes the Amazon EKS node monitoring agent. You can use this agent to view troubleshooting and debugging information about nodes. The node monitoring agent publishes Kubernetes `events` and node `conditions`. For more information, see <>. + +== Get console output from an {emi} by using the {aws} EC2 CLI + +This procedure helps with troubleshooting boot-time or kernel-level issues. + +First, you need to {det} the EC2 Instance ID of the instance associated with your workload. Second, use the {aws} CLI to {ret} the console output. + +. Confirm you have `kubectl` installed and connected to your cluster +. (Optional) Use the name of a Kubernetes Deployment to list the associated pods. ++ +[source,cli] +---- +kubectl get pods -l app= +---- +. Use the name of the Kubernetes Pod to determine the EC2 instance ID of the associated node. ++ +[source,cli] +---- +kubectl get pod -o wide +---- +. Use the EC2 instance ID to {ret} the console output. ++ +[source,cli] +---- +aws ec2 get-console-output --instance-id --latest --output text +---- + +== Get node logs by using the kubectl CLI + +For information about getting node logs, see <>. + +== View resources associated with {eam} in the {aws} Console + +You can use the {aws} console to view the status of resources associated with {yec}. + +* link:ec2/home#Volumes["EBS Volumes",type="console"] +** View EKS Auto Mode volumes by searching for the tag key `eks:eks-cluster-name` +* link:ec2/home#LoadBalancers["Load Balancers",type="console"] +** View EKS Auto Mode load balancers by searching for the tag key `eks:eks-cluster-name` +* link:ec2/home#Instances["EC2 Instances",type="console"] +** View EKS Auto Mode instances by searching for the tag key `eks:eks-cluster-name` + +== View IAM Errors in {yaa} + +. Navigate to CloudTrail console +. Select "Event History" from the left navigation pane +. Apply error code filters: +** AccessDenied +** UnauthorizedOperation +** InvalidClientTokenId + +Look for errors related to your EKS cluster. Use the error messages to update your EKS access entries, Cluster IAM Role, or Node IAM Role. You may need to attach a new policy these roles with permissions for {eam}. + +//Ensure you are running the latest version of the {aws} CLI, eksctl, etc. diff --git a/latest/ug/automode/auto-upgrade.adoc b/latest/ug/automode/auto-upgrade.adoc new file mode 100644 index 00000000..8e3d503e --- /dev/null +++ b/latest/ug/automode/auto-upgrade.adoc @@ -0,0 +1,39 @@ +//!!NODE_ROOT
+[.topic] +[[auto-upgrade,auto-upgrade.title]] += Update the Kubernetes Version of an EKS Auto Mode cluster +:info_doctype: section +:info_titleabbrev: Update Kubernetes Version + +include::../attributes.txt[] + +This topic explains how to update the Kubernetes version of your Auto Mode cluster. Auto Mode simplifies the version update process by handling the coordination of control plane updates with node replacements, while maintaining workload availability through pod disruption budgets. + +When upgrading an Auto Mode cluster, many components that traditionally required manual updates are now managed as part of the service. Understanding the automated aspects of the upgrade process and your responsibilities helps ensure a smooth version transition for your cluster. + +== Learn about updates with EKS Auto Mode + +After you initiate a control plane upgrade, {eam} begins replacing nodes in your cluster. The new nodes have the corresponding new Kubernetes version. {eam} observes pod disruption budgets when upgrading nodes. + +Additionally, you no longer need to update components like: + +* CoreDNS +* KubeProxy +* {aws} Load Balancer Controller +* Karpenter +* {aws} EBS CSI Driver + +{eam} replaces these components with service functionality. + +You are still responsible for updating: + +* Apps and workloads deployed to your cluster +* Self-managed add-ons and controllers +* Amazon EKS Add-ons +** Learn how to <> + +Learn link:eks/latest/best-practices/cluster-upgrades.html["Best Practices for Cluster Upgrades",type="documentation"] + +== Start Cluster Update + +To start a cluster update, see <>. diff --git a/latest/ug/automode/auto-workloads.adoc b/latest/ug/automode/auto-workloads.adoc new file mode 100644 index 00000000..7a99b60c --- /dev/null +++ b/latest/ug/automode/auto-workloads.adoc @@ -0,0 +1,32 @@ +//!!NODE_ROOT +[.topic] +include::../attributes.txt[] +[[auto-workloads,auto-workloads.title]] += Run sample workloads in EKS Auto Mode clusters +:info_doctype: section +:info_title: Run workloads in EKS Auto Mode clusters +:info_titleabbrev: Run workloads +:info_abstract: Run workloads in EKS Auto Mode clusters + +[abstract] +-- +Run workloads in EKS Auto Mode clusters +-- + +This chapter provides examples of how to deploy different types of workloads to Amazon EKS clusters running in Auto Mode. The examples demonstrate key workload patterns including sample applications, load-balanced web applications, stateful workloads using persistent storage, and workloads with specific node placement requirements. Each example includes complete manifests and step-by-step deployment instructions that you can use as templates for your own applications. + +Before proceeding with the examples, ensure that you have an EKS cluster running in Auto Mode and that you have installed the {aws} CLI and kubectl. For more information, see <>. The examples assume basic familiarity with Kubernetes concepts and kubectl commands. + +You can use these use case-based samples to run workloads in EKS Auto Mode clusters. + +<>:: Shows how to deploy a sample workload to an EKS Auto Mode cluster using `kubectl` commands. +<>:: Shows how to deploy a containerized version of the 2048 game on Amazon EKS. +<>:: Shows how to deploy a sample stateful application to an EKS Auto Mode cluster. +<>:: Shows how to use an annotation to control if a workload is deployed to nodes managed by EKS Auto Mode. + + +include::automode-workload.adoc[leveloffset=+1] + +include::auto-elb-example.adoc[leveloffset=+1] + +include::sample-storage-workload.adoc[leveloffset=+1] diff --git a/latest/ug/automode/automode-attributes.txt b/latest/ug/automode/automode-attributes.txt new file mode 100644 index 00000000..e69de29b diff --git a/latest/ug/automode/automode-get-started-cli.adoc b/latest/ug/automode/automode-get-started-cli.adoc new file mode 100644 index 00000000..99eec8c1 --- /dev/null +++ b/latest/ug/automode/automode-get-started-cli.adoc @@ -0,0 +1,330 @@ +//!!NODE_ROOT
+ +include::../attributes.txt[] + +[.topic] +[[automode-get-started-cli,automode-get-started-cli.title]] += Create an EKS Auto Mode Cluster with the {aws} CLI +:info_doctype: section +:config: configuration +:info_title: Create an EKS Auto Mode Cluster with the {aws} CLI +:info_titleabbrev: {aws} CLI +:info_abstract: Create an EKS Auto Mode cluster with the {aws} CLI + +EKS Auto Mode Clusters automate routine cluster management tasks for compute, storage, and networking. For example, EKS Auto Mode Clusters automatically detect when additional nodes are required and provision new EC2 instances to meet workload demands. + +This topic guides you through creating a new EKS Auto Mode Cluster using the {aws} CLI and optionally deploying a sample workload. + +## Prerequisites + +* The latest version of the {aws} Command Line Interface ({aws} CLI) installed and configured on your device. To check your current version, use `aws --version`. To install the latest version, see link:cli/latest/userguide/getting-started-install.html["Installing",type="documentation"] and link:cli/latest/userguide/cli-chap-configure.html#cli-configure-quickstart-config["Quick configuration",type="documentation"] with aws configure in the {aws} Command Line Interface User Guide. +** Login to the CLI with sufficent IAM permissions to create {aws} resources including IAM Policies, IAM Roles, and EKS Clusters. +* The kubectl command line tool installed on your device. {aws} suggests you use the same kubectl version as the Kubernetes version of your EKS Cluster. To install or upgrade kubectl, see <>. + +## Specify VPC subnets + +Amazon EKS Auto Mode deploy nodes to VPC subnets. When creating an EKS cluster, you must specify the VPC subnets where the nodes will be deployed. You can use the default VPC subnets in your {aws} account or create a dedicated VPC for critical workloads. + +* {aws} suggests creating a dedicated VPC for your cluster. Learn how to <>. +* The EKS Console assists with creating a new VPC. Learn how to <>. +* Alternatively, you can use the default VPC of your {aws} account. Use the following instructions to find the Subnet IDs. + +[[auto-find-subnet,auto-find-subnet.title]] +.To find the Subnet IDs of your default VPC +[%collapsible, expand-section="_collapse_all_"] +==== + +*Using the {aws} CLI:* + +. Run the following command to list the default VPC and its subnets: ++ +``` +aws ec2 describe-subnets --filters "Name=vpc-id,Values=$(aws ec2 describe-vpcs --query 'Vpcs[?IsDefault==`true`].VpcId' --output text)" --query 'Subnets[*].{ID:SubnetId,AZ:AvailabilityZone}' --output table +``` ++ +. Save the output and note the **Subnet IDs**. ++ +Sample output: ++ +``` +---------------------------------------- +| DescribeSubnets | +---------------------------------------- +| SubnetId | AvailabilityZone | +|--------------------|---------------------| +| subnet-012345678 | us-west-2a | +| subnet-234567890 | us-west-2b | +| subnet-345678901 | us-west-2c | +---------------------------------------- +``` + +==== + +[[auto-mode-create-roles,auto-mode-create-roles.title]] +== IAM Roles for EKS Auto Mode Clusters + +[[auto-roles-cluster-iam-role,auto-roles-cluster-iam-role.title]] +=== Cluster IAM Role + +EKS Auto Mode requires a Cluster IAM Role to perform actions in your {aws} account, such as provisioning new EC2 instances. You must create this role to grant EKS the necessary permissions. {aws} recommends attaching the following {aws} managed policies to the Cluster IAM Role: + +* xref:security-iam-awsmanpol-AmazonEKSComputePolicy[AmazonEKSComputePolicy] +* xref:security-iam-awsmanpol-AmazonEKSBlockStoragePolicy[AmazonEKSBlockStoragePolicy] +* xref:security-iam-awsmanpol-AmazonEKSLoadBalancingPolicy[AmazonEKSLoadBalancingPolicy] +* xref:security-iam-awsmanpol-AmazonEKSNetworkingPolicy[AmazonEKSNetworkingPolicy] +* xref:security-iam-awsmanpol-amazoneksclusterpolicy[AmazonEKSClusterPolicy] + +[[auto-roles-node-iam-role,auto-roles-node-iam-role.title]] +=== Node IAM Role + +When you create an EKS Auto Mode cluster, you specify a Node IAM Role. When EKS Auto Mode creates nodes to process pending workloads, each new EC2 instance node is assigned the Node IAM Role. This role allows the node to communicate with EKS but is generally not accessed by workloads running on the node. + +If you want to grant permissions to workloads running on a node, use EKS Pod Identity. For more information, see <>. + +You must create this role and attach the following {aws} managed policy: + +* xref:security-iam-awsmanpol-AmazonEKSWorkerNodeMinimalPolicy[AmazonEKSWorkerNodeMinimalPolicy] +* link:AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryPullOnly["AmazonEC2ContainerRegistryPullOnly",type="documentation"] + +[discrete] +#### **Service-Linked Role** + +EKS Auto Mode also requires a Service-Linked Role, which is automatically created and configured by {aws}. For more information, see xref:using-service-linked-roles-eks[AWSServiceRoleForAmazonEKS]. + +## **Create an EKS Auto Mode Cluster IAM Role** + +### Step 1: Create the Trust Policy + +Create a trust policy that allows the Amazon EKS service to assume the role. Save the policy as `trust-policy.json`: + +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "eks.amazonaws.com" + }, + "Action": [ + "sts:AssumeRole", + "sts:TagSession" + ] + } + ] +} +``` + +### Step 2: Create the IAM Role + +Use the trust policy to create the Cluster IAM Role: + +``` +aws iam create-role \ + --role-name AmazonEKSAutoClusterRole \ + --assume-role-policy-document file://trust-policy.json +``` + +### Step 3: Note the Role ARN + +Retrieve and save the ARN of the new role for use in subsequent steps: + +``` +aws iam get-role --role-name AmazonEKSAutoClusterRole --query "Role.Arn" --output text +``` + +### Step 4: Attach Required Policies + +Attach the following {aws} managed policies to the Cluster IAM Role to grant the necessary permissions: + +**AmazonEKSClusterPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy +``` + +**AmazonEKSComputePolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSComputePolicy +``` + +**AmazonEKSBlockStoragePolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy +``` + +**AmazonEKSLoadBalancingPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy +``` + +**AmazonEKSNetworkingPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy +``` + +## **Create an EKS Auto Mode Node IAM Role** + +### Step 1: Create the Trust Policy + +Create a trust policy that allows the Amazon EKS service to assume the role. Save the policy as `node-trust-policy.json`: + +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ec2.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] +} +``` + +#### Step 2: Create the Node IAM Role + +Use the **node-trust-policy.json** file from the previous step to define which entities can assume the role. Run the following command to create the Node IAM Role: + +``` +aws iam create-role \ + --role-name AmazonEKSAutoNodeRole \ + --assume-role-policy-document file://node-trust-policy.json +``` + +#### Step 3: Note the Role ARN + +After creating the role, retrieve and save the ARN of the Node IAM Role. You will need this ARN in subsequent steps. Use the following command to get the ARN: + +``` +aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text +``` + +#### Step 4: Attach Required Policies + +Attach the following {aws} managed policies to the Node IAM Role to provide the necessary permissions: + +**AmazonEKSWorkerNodeMinimalPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoNodeRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy +``` + +**AmazonEC2ContainerRegistryPullOnly**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoNodeRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly +``` + +## **Create an EKS Auto Mode Cluster** + +### Overview + +To create an EKS Auto Mode Cluster using the {aws} CLI, you will need the following parameters: + +* `cluster-name`: The name of the cluster. +* `k8s-version`: The Kubernetes version (e.g., 1.31). +* `subnet-ids`: Subnet IDs identified in the previous steps. +* `cluster-role-arn`: ARN of the Cluster IAM Role. +* `node-role-arn`: ARN of the Node IAM Role. + +#### Default Cluster Configurations + +Review these default values and features before creating the cluster: + +* `nodePools`: EKS Auto Mode includes general-purpose and system default Node Pools. Learn more about xref:create-node-pool[Node Pools]. + +**Note:** Node Pools in EKS Auto Mode differ from Amazon EKS Managed Node Groups but can coexist in the same cluster. + +* `computeConfig.enabled`: Automates routine compute tasks, such as creating and deleting EC2 instances. +* `kubernetesNetworkConfig.elasticLoadBalancing.enabled`: Automates load balancing tasks, including creating and deleting Elastic Load Balancers. +* `storageConfig.blockStorage.enabled`: Automates storage tasks, such as creating and deleting Amazon EBS volumes. +* `accessConfig.authenticationMode`: Requires EKS access entries. Learn more about xref:grant-k8s-access[EKS authentication modes]. + +#### Run the Command + +Use the following command to create the cluster: + +``` +aws eks create-cluster \ + --region ${AWS_REGION} \ + --cli-input-json \ + "{ + \"name\": \"${CLUSTER_NAME}\", + \"version\": \"${K8S_VERSION}\", + \"roleArn\": \"${CLUSTER_ROLE_ARN}\", + \"resourcesVpcConfig\": { + \"subnetIds\": ${SUBNETS_JSON}, + \"endpointPublicAccess\": true, + \"endpointPrivateAccess\": true + }, + \"computeConfig\": { + \"enabled\": true, + \"nodeRoleArn\":\"${NODE_ROLE_ARN}\", + \"nodePools\": [\"general-purpose\", \"system\"] + }, + \"kubernetesNetworkConfig\": { + \"elasticLoadBalancing\": { + \"enabled\": true + } + }, + \"storageConfig\": { + \"blockStorage\": { + \"enabled\": true + } + }, + \"accessConfig\": { + \"authenticationMode\": \"API\" + } + } +``` + +### **Check Cluster Status** + +#### Step 1: Verify Cluster Creation + +Run the following command to check the status of your cluster. Cluster creation typically takes about 15 minutes: + +``` +aws eks describe-cluster --name "${CLUSTER_NAME}" --output json +``` + +#### Step 2: Update kubeconfig + +Once the cluster is ready, update your local kubeconfig file to enable `kubectl` to communicate with the cluster. This configuration uses the {aws} CLI for authentication. + +``` +aws eks update-kubeconfig --name "${CLUSTER_NAME}" +``` + +#### Step 3: Verify Node Pools + +List the Node Pools in your cluster using the following command: + +``` +kubectl get nodepools +``` + +== Next Steps + +* Learn how to xref:automode-workload[deploy a sample workload] to your new EKS Auto Mode cluster. diff --git a/latest/ug/automode/automode-get-started-console.adoc b/latest/ug/automode/automode-get-started-console.adoc new file mode 100644 index 00000000..714f2b2a --- /dev/null +++ b/latest/ug/automode/automode-get-started-console.adoc @@ -0,0 +1,54 @@ +//!!NODE_ROOT
+ +include::../attributes.txt[] + +[.topic] +[[automode-get-started-console,automode-get-started-console.title]] += Create an EKS Auto Mode Cluster with the {aws} Management Console +:info_doctype: section +:info_title: Create an EKS Auto Mode Cluster with the {aws} Management Console +:info_titleabbrev: Management console +:info_abstract: Create an EKS Auto Mode cluster with the {aws} Management Console + +Creating an {eam} cluster in the {aws} Management Console requires less {config} than other options. EKS integrates with {aws} IAM and VPC Networking to help you create the resources associated with an EKS cluster. + +You have two options to create a cluster in the console: + +* Quick {config} (with EKS Auto Mode) +* Custom {config} + +In this topic, you will learn how to create an {eam} cluster using the Quick {config} option. + +== Create an EKS Auto Mode using the quick {config} option + +You must be logged into the {aws} management console with sufficent permissions to manage {aws} resources including: EC2 instances, EC2 networking, EKS clusters, and IAM roles. + +. Navigate to the EKS Console +. Click *Create cluster* +. Confirm the *Quick {config}* option is selected +. Determine the following values, or use the defaults for a test cluster. +** Cluster *Name* +** Kubernetes Version +. Select the Cluster IAM Role. If this is your first time creating an {eam} cluster, use the *Create {recd} role* option. +** Optionally, you can reuse a single Cluster IAM Role in {yaa} for all {eam} clusters. +** The Cluster IAM Role includes required permissions for {eam} to manage resources including EC2 instances, EBS volumes, and EC2 load balancers. +** The *Create {recd} role* option pre-fills all fields with {recd} values. Select *Next* and then *Create*. The role will use the suggested `AmazonEKSAutoClusterRole` name. +** If you recently created a new role, use the *Refresh* icon to reload the role selection dropdown. +. Select the Node IAM Role. If this is your first time creating an {eam} cluster, use the *Create {recd} role* option. +** Optionally, you can reuse a single Node IAM Role in {yaa} for all {eam} clusters. +** The Node IAM Role includes required permissions for Auto Mode nodes to connect to the cluster. The Node IAM Role must include permissions to {ret} ECR images for your containers. +** The *Create {recd} role* option pre-fills all fields with {recd} values. Select *Next* and then *Create*. The role will use the suggested `AmazonEKSAutoNodeRole` name. +** If you recently created a new role, use the *Refresh* icon to reload the role selection dropdown. +. Select the VPC for {yec}. Choose the *Create VPC* to create a new VPC for EKS, or choose a VPC you previously created for EKS. +** If you use the VPC Console to create a new VPC, {aws} suggests you create at least one NAT Gateway per Availability Zone. Otherwise, you can use all other defaults. +** For more information and details of IPv6 cluster requirements, see <>. +. (optional) {eam} automatically populates the private subnets for your selected VPC. You can remove unwanted subnets. +** EKS automatically selects private subnets from the VPC following best practices. You can optionally select additional subnets from the VPC, such as public subnets. +. (optional) Select *View quick configuration defaults* to review all {config} values for the new cluster. The table indicates some values are not editable after the cluster is created. +. Select *Create cluster* . Note it may take fifteen minutes for cluster creation to complete. + +== Next Steps + +* Learn how to xref:sample-storage-workload[Deploy a Sample Workload to {yec}] + +//call out refactored IAM diff --git a/latest/ug/automode/automode-get-started-eksctl.adoc b/latest/ug/automode/automode-get-started-eksctl.adoc new file mode 100644 index 00000000..8677b35b --- /dev/null +++ b/latest/ug/automode/automode-get-started-eksctl.adoc @@ -0,0 +1,83 @@ +//!!NODE_ROOT
+ +[.topic] +[[automode-get-started-eksctl,automode-get-started-eksctl.title]] += Create an EKS Auto Mode Cluster with the eksctl CLI +:info_doctype: section +:config: configuration +:info_title: Create an EKS Auto Mode Cluster with the eksctl CLI +:info_titleabbrev: eksctl CLI +:info_abstract: Create an EKS Auto Mode cluster with the eksctl CLI + + +include::../attributes.txt[] + +This topic shows you how to create an Amazon EKS Auto Mode cluster using the eksctl command line interface (CLI). You can create an Auto Mode cluster either by running a single CLI command or by applying a YAML configuration file. Both methods provide the same functionality, with the YAML approach offering more granular control over cluster settings. + +The eksctl CLI simplifies the process of creating and managing EKS Auto Mode clusters by handling the underlying {aws} resource creation and configuration. Before proceeding, ensure you have the necessary {aws} credentials and permissions configured on your local machine. This guide assumes you're familiar with basic Amazon EKS concepts and have already installed the required CLI tools. + +[NOTE] +==== +You must install version `0.195.0` or greater of eksctl. For more information, see https://github.com/eksctl-io/eksctl/releases[eksctl releases] on GitHub. +==== + + +== Create an {eam} cluster with a CLI command + +You must have the `aws` and `eksctl` tools installed. You must be logged into the {aws} CLI with sufficent permissions to manage {aws} resources including: EC2 instances, EC2 networking, EKS clusters, and IAM roles. For more information, see <>. + +Run the following command to create a new {eam} cluster with + +[source,cli] +---- +eksctl create cluster --name= --enable-auto-mode +---- + +//Cluster IAM Role? +//Update kubeconfig? + +== Create an {eam} cluster with a YAML file +:enai: enabling + +You must have the `aws` and `eksctl` tools installed. You must be logged into the {aws} CLI with sufficent permissions to manage {aws} resources including: EC2 instances, EC2 networking, EKS clusters, and IAM roles. For more information, see <>. + +Review the {eam} configuration options in the sample ClusterConfig resource below. For the full ClusterConfig specification, see the https://eksctl.io/usage/creating-and-managing-clusters/[eksctl documentation]. + +{aws} suggests {enai} {eam}. If this is your first time creating an {eam} cluster, leave the `nodeRoleARN` unspecified to create a Node IAM Role for {eam}. If you already have a Node IAM Role in {yaa}, {aws} suggests reusing it. + +{aws} suggests not specifying any value for `nodePools`. {eam} will create default node pools. You can use the Kubernetes API to create additional node pools. + +[source,yaml] +---- +# cluster.yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: + region: + +iam: + # ARN of the Cluster IAM Role + # optional, eksctl creates a new role if not supplied + # suggested to use one Cluster IAM Role per account + serviceRoleARN: + +autoModeConfig: + # defaults to false + enabled: boolean + # optional, defaults to [general-purpose, system]. + # suggested to leave unspecified + # To disable creation of nodePools, set it to the empty array ([]). + nodePools: []string + # optional, eksctl creates a new role if this is not supplied + # and nodePools are present. + nodeRoleARN: string +---- + +Save the `ClusterConfig` file as `cluster.yaml`, and use the following command to create the cluster: + +[source,cli] +---- +eksctl create cluster -f cluster.yaml +---- diff --git a/latest/ug/automode/automode-learn-instances.adoc b/latest/ug/automode/automode-learn-instances.adoc new file mode 100644 index 00000000..57220f30 --- /dev/null +++ b/latest/ug/automode/automode-learn-instances.adoc @@ -0,0 +1,112 @@ +//!!NODE_ROOT
+ +[.topic] +[[automode-learn-instances,automode-learn-instances.title]] += Learn about Amazon EKS Auto Mode Managed instances +:info_doctype: section +:am: EKS Auto Mode +:aam: Amazon {am} +:ec2i: EC2 Instance +:mi: managed instance +:emi: EC2 managed instance +:emi: EC2 {mi} +:emng: EKS Managed Node Group +:info_title: Learn about Amazon EKS Auto Mode managed instances +:info_titleabbrev: Managed instances +:info_abstract: Learn about Amazon EKS Auto Mode managed instances + +include::../attributes.txt[] + + +This topic explains how {aam} manages Amazon EC2 instances in your EKS cluster. When you enable {am}, your cluster's compute resources are automatically provisioned and managed by EKS, changing how you interact with the EC2 instances that serve as nodes in your cluster. + +Understanding how {aam} manages instances is essential for planning your workload deployment strategy and operational procedures. Unlike traditional EC2 instances or managed node groups, these instances follow a different lifecycle model where EKS assumes responsibility for many operational aspects, while restricting certain types of access and customization. + +{aam} automates routine tasks for creating new {ec2i}s, and attaches them as nodes to your EKS cluster. {am} detects when a workload can't fit onto existing nodes, and creates a new {ec2i}. + +{aam} is responsible for creating, deleting, and patching {ec2i}s. You are responsible for the containers and pods deployed on the instance. + +{ec2i}s created by {am} are different from other {ec2i}s, they are {mi}s. These {mi}s are owned by EKS and are more restricted. You can't directly access or install software on instances managed by {am}. + +{aws} suggests running either {eam} or self-managed Karpenter. You can install both during a migration or in an advanced configuration. If you have both installed, configure your node pools so that workloads are associated with either Karpenter or {eam}. + +For more information, see link:AWSEC2/latest/UserGuide/amazon-ec2-managed-instances.html["Amazon EC2 managed instances",type="documentation"] in the Amazon EC2 user guide. + +== Comparison table + +[cols="1,1", options="header"] +|=== + +| Standard {ec2i} +| {am} {mi} + +| You are responsible for patching and updating the instance. +| {aws} automatically patches and updates the instance. + +| EKS is not responsible for the software on the instance. +| EKS is responsible for certain software on the instance, such as `kubelet`, the container runtime, and the operating system. + +| You can delete the {ec2i} using the EC2 API. +| EKS determines the number of instances deployed in your account. If you delete a workload, EKS will reduce the number of instances in your account. + +| You can use SSH to access the {ec2i}. +| You can deploy pods and containers to the {mi}. + +| You determine the operating system and image (AMI). +| {aws} determines the operating system and image. + +| You can deploy workloads that rely on Windows or Ubuntu functionality. +| You can deploy containers based on Linux, but without specific OS dependencies. + +| You determine what instance type and family to launch. +| {aws} determines what instance type and family to launch. You can use a Node Pool to limit the instance types {eam} selects from. + +|=== + + +The following functionality works for both Managed instances and Standard EC2 instances: + +* You can view the instance in the {aws} console. +* You can use instance storage as ephemeral storage for workloads. + +== Supported instance reference + +// Source: https://code.amazon.com/packages/EKSKarpenterController/blobs/a56aeb0ddc3e8a54406421e8f3a091e8e13abea1/--/pkg/providers/instancetype/instancetype.go#L43-L49 + +EKS Auto Mode supports the following instance types: + +[cols="1,4",options="header"] +|=== +|Family |Instance Types + +|Compute Optimized (C ) +|c8g, c7a, c7g, c7gn, c7gd, c7i, c7i-flex, c6a, c6g, c6i, c6gn, c6id, c6in, c6gd, c5, c5a, c5d, c5ad, c5n, c4 + +|General Purpose (M) +|m8g, m7i, m7a, m7g, m7gd, m7i-flex, m6a, m6i, m6in, m6g, m6idn, m6id, m6gd, m5, m5a, m5ad, m5n, m5dn, m5d, m5zn, m4 + +|Memory Optimized (R ) +|r8g, r7a, r7iz, r7gd, r7i, r7g, r6a, r6i, r6id, r6in, r6idn, r6g, r6gd, r5, r5n, r5a, r5dn, r5b, r5ad, r5d, r4 + +|Burstable (T) +|t4g, t3, t3a, t2 + +|High Memory (Z/X) +|z1d, x8g, x2gd + +|Storage Optimized (I/D) +|i4g, i4i, i3, i3en, is4gen, d3, d3en, im4gn + +|Accelerated Computing (P/G/Inf/Trn) +|p5, p4d, p3, p3dn, gr6, g6, g6e, g5g, g5, g4dn, inf2, inf1, trn1, trn1n + +|High Performance Computing (X2) +|x2iezn, x2iedn, x2idn +|=== + +== Considerations + +* EKS Auto Mode automatically formats and configures NVMe local storage on supported instance types. For nodes with multiple NVMe drives, EKS sets up a RAID 0 array. This automation eliminates the need for manual formatting and RAID configuration of local NVMe storage in EKS clusters. +* Amazon EKS Auto Mode does not support {aws} Fault Injection Service. For more information, see link:resilience-hub/latest/userguide/testing.html["Managing Fault Injection Service experiments",type="documentation"] in the {aws} Resilience Hub User Guide. +* You do not need to install the `Neuron Device Plugin` on EKS Auto Mode nodes. +** If you have other types of nodes in your cluster, you need to configure the Neuron Device plugin to not run on auto mode nodes. For more information, see <>. diff --git a/latest/ug/automode/automode-workload.adoc b/latest/ug/automode/automode-workload.adoc new file mode 100644 index 00000000..015a1856 --- /dev/null +++ b/latest/ug/automode/automode-workload.adoc @@ -0,0 +1,134 @@ +//!!NODE_ROOT
+ +[.topic] +[[automode-workload,automode-workload.title]] += Deploy a sample inflate workload to an Amazon EKS Auto Mode cluster +:info_doctype: section +:info_title: Deploy a sample inflate workload to an Amazon EKS Auto Mode cluster +:info_titleabbrev: Deploy inflate workload +:info_abstract: Deploy a sample inflate workload to an Amazon EKS Auto Mode cluster + +include::../attributes.txt[] + +In this tutorial, you'll learn how to deploy a sample workload to an EKS Auto Mode cluster and observe how it automatically provisions the required compute resources. You'll use `kubectl` commands to watch the cluster's behavior and see firsthand how Auto Mode simplifies Kubernetes operations on {aws}. By the end of this tutorial, you'll understand how EKS Auto Mode responds to workload deployments by automatically managing the underlying compute resources, without requiring manual node group configuration. + +== Prerequisites + +* An Amazon EKS Auto Mode cluster with the compute capability enabled. Note the name and {aws} region of the cluster. +* An IAM principal, such as a user or role, with sufficent permissions to manage networking, compute, and EKS resources. +** For more information, see link:IAM/latest/UserGuide/access_policies_job-functions_create-policies.html["Creating roles and attaching policies in the IAM User Guide",type="documentation"] in the IAM User Guide. +* `aws` CLI installed and configured with an IAM identity. +* `kubectl` CLI installed and connected to cluster. +** For more information, see <>. + + +== Step 1: Review existing compute resources (optional) + +First, use `kubectl` to list the node pools on your cluster. + +[source,cli] +---- +kubectl get nodepools +---- + +Sample Output: +[source,shell] +---- +general-purpose +---- + +In this tutorial, we will deploy a workload configured to use the `general-purpose` node pool. This node pool is built into EKS Auto Mode, and includes reasonable defaults for general workloads, such as microservices and web apps. You can create your own node pool. For more information, see <>. + +Second, use `kubectl` to list the nodes connected to your cluster. + +[source,cli] +---- +kubectl get nodes +---- + +If you just created an EKS Auto Mode cluster, you will have no nodes. + +In this tutorial you will deploy a sample workload. If you have no nodes, or the workload cannot fit on existing nodes, EKS Auto Mode will provision a new node. + +== Step 2: Deploy a sample application to the cluster + +Review the following Kubernetes Deployment and save it as `inflate.yaml` + +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: inflate +spec: + replicas: 1 + selector: + matchLabels: + app: inflate + template: + metadata: + labels: + app: inflate + spec: + terminationGracePeriodSeconds: 0 + nodeSelector: + eks.amazonaws.com/compute-type: auto + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + containers: + - name: inflate + image: public.ecr.aws/eks-distro/kubernetes/pause:3.7 + resources: + requests: + cpu: 1 + securityContext: + allowPrivilegeEscalation: false +---- + +Note the `eks.amazonaws.com/compute-type: auto` selector requires the workload be deployed on an Amazon EKS Auto Mode node. + +Apply the Deployment to your cluster. + +[source,cli] +---- +kubectl apply -f inflate.yaml +---- + +== Step 3: Watch Kubernetes Events + +Use the following command to watch Kubernetes events, including creating a new node. Use `ctrl+c` to stop watching events. + +[source,cli] +---- +kubectl get events -w --sort-by '.lastTimestamp' +---- + +Use `kubectl` to list the nodes connected to your cluster again. Note the newly created node. + +[source,cli] +---- +kubectl get nodes +---- + +== Step 4: View nodes and instances in the {aws} console + +You can view EKS Auto Mode Nodes in the EKS console, and the associated EC2 instances in the EC2 console. + +EC2 Instances deployed by EKS Auto Mode are restricted. You cannot run arbitrary commands on EKS Auto Mode nodes. + +== Step 5: Delete the deployment + +Use `kubectl` to delete the sample deployment + +[source,cli] +---- +kubectl delete -f inflate.yaml +---- + +If you have no other workloads deployed to your cluster, the node created by EKS Auto Mode will be empty. + +In the default configration, EKS Auto Mode detects nodes that have been empty for thirty seconds, and terminates them. + +Use `kubectl` or the EC2 console to confirm the associated instance has been deleted. diff --git a/latest/ug/automode/automode.adoc b/latest/ug/automode/automode.adoc new file mode 100644 index 00000000..a9a6353a --- /dev/null +++ b/latest/ug/automode/automode.adoc @@ -0,0 +1,99 @@ +//!!NODE_ROOT + +[[automode,automode.title]] += Automate cluster infrastructure with EKS Auto Mode +:info_doctype: chapter +:toclevels: 2 +:toc: +:info_title: Automate cluster infrastructure with EKS Auto Mode +:info_titleabbrev: EKS Auto Mode +:info_abstract: Automate cluster infrastructure with EKS Auto Mode + +[abstract] +-- +Automate cluster infrastructure with EKS Auto Mode +-- + +include::../attributes.txt[] + +EKS Auto Mode extends {aws} management of Kubernetes clusters beyond the cluster itself, to allow {aws} to also set up and manage the infrastructure that enables the smooth operation of your workloads. +You can delegate key infrastructure decisions and leverage the expertise of {aws} for day-to-day operations. +Cluster infrastructure managed by {aws} includes many Kubernetes capabilities as core components, as opposed to add-ons, such as compute autoscaling, pod and service networking, application load balancing, cluster DNS, block storage, and GPU support. + +To get started, you can deploy a new EKS Auto Mode cluster or enable EKS Auto Mode on an existing cluster. +You can deploy, upgrade, or modify your EKS Auto Mode clusters using eksctl, the {aws} CLI, the {aws} Management Console, EKS APIs, or your preferred infrastructure-as-code tools. + +With EKS Auto Mode, you can continue using your preferred Kubernetes-compatible tools. EKS Auto Mode integrates with {aws} services like Amazon EC2, Amazon EBS, and ELB, leveraging {aws} cloud resources that follow best practices. These resources are automatically scaled, cost-optimized, and regularly updated to help minimize operational costs and overhead. + +## Features + +EKS Auto Mode provides the following high-level features: + +**Streamline Kubernetes Cluster Management**: EKS Auto Mode streamlines EKS management by providing production-ready clusters with minimal operational overhead. With EKS Auto Mode, you can run demanding, dynamic workloads confidently, without requiring deep EKS expertise. + +**Application Availability**: EKS Auto Mode dynamically adds or removes nodes in your EKS cluster based on the demands of your Kubernetes applications. This minimizes the need for manual capacity planning and ensures application availability. + +//what? +**Efficiency**: EKS Auto Mode is designed to compute costs while adhering to the flexibility defined by your NodePool and workload requirements. It also terminates unused instances and consolidates workloads onto other nodes to improve cost efficiency. + +**Security**: EKS Auto Mode uses AMIs that are treated as immutable for your nodes. These AMIs enforce locked-down software, enable SELinux mandatory access controls, and provide read-only root file systems. Additionally, nodes launched by EKS Auto Mode have a maximum lifetime of 21 days (which you can reduce), after which they are automatically replaced with new nodes. This approach enhances your security posture by regularly cycling nodes, aligning with best practices already adopted by many customers. + +**Automated Upgrades**: EKS Auto Mode keeps your Kubernetes cluster, nodes, and related components up to date with the latest patches, while respecting your configured Pod Disruption Budgets (PDBs) and NodePool Disruption Budgets (NDBs). Up to the 21-day maximum lifetime, intervention might be required if blocking PDBs or other configurations prevent updates. + +**Managed Components**: EKS Auto Mode includes Kubernetes and {aws} cloud features as core components that would otherwise have to be managed as add-ons. This includes built-in support for Pod IP address assignments, Pod network policies, local DNS services, GPU plug-ins, health checkers, and EBS CSI storage. + +**Customizable NodePools and NodeClasses**: If your workload requires changes to storage, compute, or networking configurations, you can create custom NodePools and NodeClasses using EKS Auto Mode. While default NodePools and NodeClasses can't be edited, you can add new custom NodePools or NodeClasses alongside the default configurations to meet your specific requirements. + + +## Automated Components + +EKS Auto Mode streamlines the operation of your Amazon EKS clusters by automating key infrastructure components. Enabling EKS Auto Mode further reduces the tasks to manage your EKS clusters. + +The following is a list of data plane components that are automated: + +* *Compute*: For many workloads, with EKS Auto Mode you can forget about many aspects of compute for your EKS clusters. These include: +** *Nodes*: EKS Auto Mode nodes are designed to be treated like appliances. EKS Auto Mode does the following: +*** Chooses an appropriate AMI that's configured with many services needed to run your workloads without intervention. +*** Locks down those features using SELinux enforcing mode and a read-only root file system. +*** Prevents direct access to the nodes by disallowing SSH or SSM access. +*** Includes GPU support, with separate kernel drivers and plugins for NVIDIA and Neuron GPUs, enabling high-performance workloads. +** *Auto scaling*: Relying on https://karpenter.sh/docs/[Karpenter] auto scaling, EKS Auto Mode monitors for unschedulable Pods and makes it possible for new nodes to be deployed to run those pods. As workloads are terminated, EKS Auto Mode dynamically disrupts and terminates nodes when they are no longer needed, optimizing resource usage. +** *Upgrades*: Taking control of your nodes streamlines EKS Auto Mode's ability to provide security patches and operating system and component upgrades as needed. Those upgrades are designed to provide minimal disruption of your workloads. EKS Auto Mode enforces a 21-day maximum node lifetime to ensure up-to-date software and APIs. +* *Load balancing*: EKS Auto Mode streamlines load balancing by integrating with Amazon's Elastic Load Balancing service, automating the provisioning and configuration of load balancers for Kubernetes Services and Ingress resources. It supports advanced features for both Application and Network Load Balancers, manages their lifecycle, and scales them to match cluster demands. This integration provides a production-ready load balancing solution adhering to {aws} best practices, allowing you to focus on applications rather than infrastructure management. +* *Storage*: EKS Auto Mode configures ephemeral storage for you by setting up volume types, volume sizes, encryption policies, and deletion policies upon node termination. +* *Networking*: EKS Auto Mode automates critical networking tasks for Pod and service connectivity. This includes IPv4/IPv6 support and the use of secondary CIDR blocks for extending IP address spaces. +* *Identity and Access Management*: You do not have to install the EKS Pod Identity Agent on EKS Auto Mode clusters. + +For more information about these components, see <>. + +## Configuration + +While EKS Auto Mode will effectively manage most of your data plane services without your intervention, there might be times when you want to change the behavior of some of those services. You can modify the configuration of your EKS Auto Mode clusters in the following ways: + +* *Kubernetes DaemonSets*: Rather than modify services installed on your nodes, you can instead use Kubernetes daemonsets. Daemonsets are designed to be managed by Kubernetes, but run on every node in the cluster. In this way, you can add special services for monitoring or otherwise watching over your nodes. + +* *Custom NodePools and NodeClasses*: Default NodePools and NodeClasses are configured by EKS Auto Mode and can't be edited. To customize node behavior, you can create additional NodePools or NodeClasses for use cases such as: +** Selecting specific instance types (for example, accelerated processors or EC2 Spot instances). + +** Isolating workloads for security or cost-tracking purposes. +** Configuring ephemeral storage settings like IOPS, size, and throughput. + +* *Load Balancing*: Some services, such as load balancing, that EKS Auto Mode runs as Kubernetes objects, can be configured directly on your EKS Auto Mode clusters. + +For more information about options for configuring EKS Auto Mode, see <>. + + + +include::create-auto.adoc[leveloffset=+1] + +include::migrate-auto.adoc[leveloffset=+1] + +include::auto-workloads.adoc[leveloffset=+1] + +include::settings-auto.adoc[leveloffset=+1] + +include::auto-reference.adoc[leveloffset=+1] + +include::auto-troubleshoot.adoc[leveloffset=+1] + +//include::wip.adoc[leveloffset=+1] diff --git a/latest/ug/automode/create-auto.adoc b/latest/ug/automode/create-auto.adoc new file mode 100644 index 00000000..10221587 --- /dev/null +++ b/latest/ug/automode/create-auto.adoc @@ -0,0 +1,45 @@ +//!!NODE_ROOT +[.topic] +include::../attributes.txt[] +[[create-auto,create-auto.title]] += Create a cluster with Amazon EKS Auto Mode +:info_doctype: section +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_title: Create cluster with EKS Auto Mode +:info_titleabbrev: Create cluster +:info_abstract: Learn about the tools needed for creating and working with an Amazon EKS cluster in EKS Auto Mode. +:keywords: getting, started, tutorials, quick, start + +[abstract] +-- +Learn about the tools needed for creating and working with an Amazon EKS cluster in EKS Auto Mode. +-- + + + +This chapter explains how to create an Amazon EKS cluster with Auto Mode enabled using various tools and interfaces. Auto Mode simplifies cluster creation by automatically configuring and managing the cluster's compute, networking, and storage infrastructure. You'll learn how to create an Auto Mode cluster using the {aws} CLI, {aws} Management Console, or the eksctl command line tool. + +[NOTE] +==== +EKS Auto Mode requires Kubernetes version 1.29 or greater. +==== + + +Choose your preferred tool based on your needs: The {aws} Management Console provides a visual interface ideal for learning about EKS Auto Mode features and creating individual clusters. The {aws} CLI is best suited for scripting and automation tasks, particularly when integrating cluster creation into existing workflows or CI/CD pipelines. The eksctl CLI offers a Kubernetes-native experience and is recommended for users familiar with Kubernetes tooling who want simplified command line operations with sensible defaults. + +Before you begin, ensure you have the necessary prerequisites installed and configured, including appropriate IAM permissions to create EKS clusters. To learn how to install CLI tools such as `kubectl`, `aws`, and `eksctl`, see <>. + +You can use the {aws} CLI, {aws} Management Console, or eksctl CLI to create a cluster with Amazon EKS Auto Mode. + +[.topiclist] +[[Topic List]] + +include::automode-get-started-eksctl.adoc[leveloffset=+1] + +include::automode-get-started-cli.adoc[leveloffset=+1] + +include::automode-get-started-console.adoc[leveloffset=+1] diff --git a/latest/ug/automode/create-node-class.adoc b/latest/ug/automode/create-node-class.adoc new file mode 100644 index 00000000..cf1bb913 --- /dev/null +++ b/latest/ug/automode/create-node-class.adoc @@ -0,0 +1,105 @@ +//!!NODE_ROOT
+ +[.topic] +[[create-node-class,create-node-class.title]] += Create a Node Class for Amazon EKS +:info_doctype: section +:info_titleabbrev: Create node class + +include::../attributes.txt[] + +Amazon EKS Node Classes provide granular control over the configuration of your {eam} managed nodes. A Node Class defines infrastructure-level settings that apply to groups of nodes in your EKS cluster, including network configuration, storage settings, and resource tagging. This topic explains how to create and configure a Node Class to meet your specific operational requirements. + +When you need to customize how {eam} provisions and configures EC2 instances beyond the default settings, creating a Node Class gives you precise control over critical infrastructure parameters. For example, you can specify private subnet placement for enhanced security, configure instance ephemeral storage for performance-sensitive workloads, or apply custom tagging for cost allocation. + +## Create a Node Class + +To create a Node Class, follow these steps: + +. Create a YAML file (for example, `nodeclass.yaml`) with your Node Class configuration +. Apply the configuration to your cluster using `kubectl` +. Reference the Node Class in your Node Pool configuration. For more information, see <>. + +You need `kubectl` installed and configured. For more information, see <>. + +### Basic Node Class Example + +Here's an example Node Class: + +//GDC: need to update this with IAM role and subnet selector + +```yaml +apiVersion: eks.amazonaws.com/v1 +kind: NodeClass +metadata: + name: private-compute +spec: + ephemeralStorage: + size: "160Gi" +``` + +This NodeClass increases the amount of ephemeral storage on the node. + +Apply this configuration using: + +```bash +kubectl apply -f nodeclass.yaml +``` + +Next, reference the Node Class in your Node Pool configuration. For more information, see <>. + +== Node Class Specification + +[source,yaml] +---- +apiVersion: eks.amazonaws.com/v1 +kind: NodeClass +metadata: + name: default +spec: + + # Required: Name of IAM Role for Nodes + role: "MyNodeRole" + + # Required: Subnet selection for node placement + subnetSelectorTerms: + - tags: + Name: "" + kubernetes.io/role/internal-elb: "1" + # Alternative using direct subnet ID + # - id: "subnet-0123456789abcdef0" + + # Required: Security group selection for nodes + securityGroupSelectorTerms: + - tags: + Name: "eks-cluster-node-sg" + # Alternative approaches: + # - id: "sg-0123456789abcdef0" + # - name: "eks-cluster-node-security-group" + + # Optional: Configure SNAT policy (defaults to Random) + snatPolicy: Random # or Disabled + + # Optional: Network policy configuration (defaults to DefaultAllow) + networkPolicy: DefaultAllow # or DefaultDeny + + # Optional: Network policy event logging (defaults to Disabled) + networkPolicyEventLogs: Disabled # or Enabled + + # Optional: Configure ephemeral storage (shown with default values) + ephemeralStorage: + size: "80Gi" # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T + iops: 3000 # Range: 3000-16000 + throughput: 125 # Range: 125-1000 + + # Optional: Additional EC2 tags + tags: + Environment: "production" + Team: "platform" +---- + +*Considerations:* + +* If you change the Node IAM Role associated with a NodeClass, you will need to create a new Access Entry. EKS automatically creates an Access Entry for the Node IAM Role during cluster creation. The Node IAM Role requires the `AmazonEKSAutoNodePolicy` EKS Access Policy. For more information, see <>. +* EKS limits the maximum number of pods on a node to 110. This limit is applied after the existing max pods calculation. For more information, see <>. +* If you want to propagate tags from Kubernetes to EC2, you need to configure additional IAM permissions. For more information, see <>. diff --git a/latest/ug/automode/create-node-pool.adoc b/latest/ug/automode/create-node-pool.adoc new file mode 100644 index 00000000..74ec9097 --- /dev/null +++ b/latest/ug/automode/create-node-pool.adoc @@ -0,0 +1,179 @@ +//!!NODE_ROOT
+[.topic] +[[create-node-pool,create-node-pool.title]] += Create a Node Pool for EKS Auto Mode +:info_doctype: section +:info_titleabbrev: Create node pool + +include::../attributes.txt[] + +Amazon EKS node pools provide a flexible way to manage compute resources in your Kubernetes cluster. This topic demonstrates how to create and configure node pools using Karpenter, a node provisioning tool that helps optimize cluster scaling and resource utilization. With Karpenter's NodePool resource, you can define specific requirements for your compute resources, including instance types, availability zones, architectures, and capacity types. + +The NodePool specification allows for fine-grained control over your EKS cluster's compute resources through various supported labels and requirements. These include options for specifying EC2 instance categories, CPU configurations, availability zones, architectures (ARM64/AMD64), and capacity types (spot/on-demand). You can also set resource limits for CPU and memory usage, ensuring your cluster stays within desired operational boundaries. + +EKS Auto Mode leverages well-known Kubernetes labels to provide consistent and standardized ways of identifying node characteristics. These labels, such as `topology.kubernetes.io/zone` for availability zones and `kubernetes.io/arch` for CPU architecture, follow established Kubernetes conventions. Additionally, EKS-specific labels (prefixed with `eks.amazonaws.com/`) extend this functionality with {aws}-specific attributes like instance types, CPU manufacturers, GPU capabilities, and networking specifications. This standardized labeling system enables seamless integration with existing Kubernetes tooling while providing deep {aws} infrastructure integration. + +## Create a NodePool + +Follow these steps to create a NodePool for your Amazon EKS cluster: + +. Create a YAML file named `nodepool.yaml` with your desired NodePool configuration. You can use the sample configuration below. +. Apply the NodePool to your cluster: ++ +```bash +kubectl apply -f nodepool.yaml +``` +. Verify that the NodePool was created successfully: ++ +```bash +kubectl get nodepools +``` +. (Optional) Monitor the NodePool status: ++ +```bash +kubectl describe nodepool default +``` + +Ensure that your NodePool references a valid NodeClass that exists in your cluster. The NodeClass defines {aws}-specific configurations for your compute resources. For more information, see <>. + +== Sample NodePool + +[source,yaml] +---- +apiVersion: karpenter.sh/v1 +kind: NodePool +metadata: + name: default +spec: + template: + metadata: + labels: + billing-team: my-team + spec: + nodeClassRef: + group: eks.amazonaws.com + kind: NodeClass + name: default + + requirements: + - key: "eks.amazonaws.com/instance-category" + operator: In + values: ["c", "m", "r"] + - key: "eks.amazonaws.com/instance-cpu" + operator: In + values: ["4", "8", "16", "32"] + - key: "topology.kubernetes.io/zone" + operator: In + values: ["us-west-2a", "us-west-2b"] + - key: "kubernetes.io/arch" + operator: In + values: ["arm64", "amd64"] + + limits: + cpu: "1000" + memory: 1000Gi +---- + + +== {eam} Supported + +{eam} supports the following well known labels. + +[role="no-scroll"] +[cols="3,1,4",options="header"] +|=== +|Label |Example |Description + +|topology.kubernetes.io/zone +|us-east-2a +|{aws} region + +|node.kubernetes.io/instance-type +|g4dn.8xlarge +|{aws} instance type + + +|kubernetes.io/arch +|amd64 +|Architectures are defined by link:https://github.com/golang/go/blob/master/src/go/build/syslist.go#L50[GOARCH values] on the instance + +|karpenter.sh/capacity-type +|spot +|Capacity types include `spot`, `on-demand` + +|eks.amazonaws.com/instance-hypervisor +|nitro +|Instance types that use a specific hypervisor + +|eks.amazonaws.com/compute-type +|auto +|Identifies EKS Auto Mode managed nodes + +|eks.amazonaws.com/instance-encryption-in-transit-supported +|true +|Instance types that support (or not) in-transit encryption + +|eks.amazonaws.com/instance-category +|g +|Instance types of the same category, usually the string before the generation number + +|eks.amazonaws.com/instance-generation +|4 +|Instance type generation number within an instance category + +|eks.amazonaws.com/instance-family +|g4dn +|Instance types of similar properties but different resource quantities + +|eks.amazonaws.com/instance-size +|8xlarge +|Instance types of similar resource quantities but different properties + +|eks.amazonaws.com/instance-cpu +|32 +|Number of CPUs on the instance + +|eks.amazonaws.com/instance-cpu-manufacturer +|aws +|Name of the CPU manufacturer + +|eks.amazonaws.com/instance-memory +|131072 +|Number of mebibytes of memory on the instance + +|eks.amazonaws.com/instance-ebs-bandwidth +|9500 +|Number of link:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html#ebs-optimization-performance[maximum megabits] of EBS available on the instance + +|eks.amazonaws.com/instance-network-bandwidth +|131072 +|Number of link:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html[baseline megabits] available on the instance + +|eks.amazonaws.com/instance-gpu-name +|t4 +|Name of the GPU on the instance, if available + +|eks.amazonaws.com/instance-gpu-manufacturer +|nvidia +|Name of the GPU manufacturer + +|eks.amazonaws.com/instance-gpu-count +|1 +|Number of GPUs on the instance + +|eks.amazonaws.com/instance-gpu-memory +|16384 +|Number of mebibytes of memory on the GPU + +|eks.amazonaws.com/instance-local-nvme +|900 +|Number of gibibytes of local nvme storage on the instance +|=== + +== {eam} Not Supported + +{eam} does not support the following labels. + +* {eam} only supports Linux +** `node.kubernetes.io/windows-build` +** `kubernetes.io/os` diff --git a/latest/ug/automode/create-storage-class.adoc b/latest/ug/automode/create-storage-class.adoc new file mode 100644 index 00000000..8e28c3a8 --- /dev/null +++ b/latest/ug/automode/create-storage-class.adoc @@ -0,0 +1,240 @@ +//!!NODE_ROOT
+[.topic] +[[create-storage-class,create-storage-class.title]] += Create a Storage Class +:info_doctype: section +:info_titleabbrev: Create storage class + + +include::../attributes.txt[] + +A StorageClass in Amazon EKS Auto Mode defines how Amazon EBS volumes are automatically provisioned when applications request persistent storage. This page explains how to create and configure a StorageClass that works with the Amazon EKS Auto Mode to provision EBS volumes. + +By configuring a StorageClass, you can specify default settings for your EBS volumes including volume type, encryption, IOPS, and other storage parameters. You can also configure the StorageClass to use {aws} KMS keys for encryption management. + +{eam} does not create a StorageClass for you. You must create a StorageClass referencing `ebs.csi.eks.amazonaws.com` to use the storage capability of {eam}. + +First, create a file named `storage-class.yaml`: + +[source,yaml] +---- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: auto-ebs-sc + annotations: + storageclass.kubernetes.io/is-default-class: "true" +provisioner: ebs.csi.eks.amazonaws.com +volumeBindingMode: WaitForFirstConsumer +parameters: + type: gp3 + encrypted: "true" +---- + +Second, apply the storage class to your cluster. + +[source,bash] +---- +kubectl apply -f storage-class.yaml +---- + +*Key components:* + +- `provisioner: ebs.csi.eks.amazonaws.com` - Uses {eam} +- `volumeBindingMode: WaitForFirstConsumer` - Delays volume creation until a pod needs it +- `type: gp3` - Specifies the EBS volume type +- `encrypted: "true"` - EBS will encrypt any volumes created using the StorageClass. EBS will use the default `aws/ebs` key alias. For more information, see link:ebs/latest/userguide/how-ebs-encryption-works.html["How Amazon EBS encryption works",type="documentation"] in the Amazon EBS User Guide. This value is optional but suggested. +- `storageclass.kubernetes.io/is-default-class: "true"` - Kubernetes will use this storage class by default, unless you specify a different volume class on a persistent volume claim. This value is optional. Use caution when setting this value if you are migrating from a different storage controller. + +== Use self-managed KMS key to encrypt EBS volumes + +To use a self-managed KMS key to encrypt EBS volumes automated by EKS Auto Mode, you need to: + +. Create a self-managed KMS key. +** For more information, see link:kms/latest/developerguide/create-symmetric-cmk.html["Create a symmetric encryption KMS key",type="documentation"] or link:kms/latest/developerguide/services-ebs.html["How Amazon Elastic Block Store (Amazon EBS) uses KMS",type="documentation"] in the KMS User Guide. +. Create a new policy that permits access to the KMS key. +** Use the sample IAM policy below to create the policy. Insert the ARN of the new self-managed KMS key. For more information, see +link:IAM/latest/UserGuide/access_policies_job-functions_create-policies.html["Creating roles and attaching policies (console)",type="documentation"] in the {aws} IAM User Guide. +. Attach the policy to the EKS Cluster Role. +** Use the {aws} console to find the ARN of the EKS Cluster Role. The role information is visible in the *Overview* section. For more information, see <>. +. Update the `StorageClass` to reference the KMS Key ID at the `parameters.kmsKeyId` field. + +=== Sample self-managed KMS IAM Policy + +Update the following values in the policy below: + +* `` -- Your {aws} account ID, such as `111122223333` +* `` -- The {aws} region of your cluster, such as `us-west-2` + +[source,json] +---- +{ + "Version": "2012-10-17", + "Id": "key-auto-policy-3", + "Statement": [ + { + "Sid": "Enable IAM User Permissions", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam:::root" + }, + "Action": "kms:*", + "Resource": "*" + }, + { + "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", + "Effect": "Allow", + "Principal": { + "AWS": "*" + }, + "Action": [ + "kms:Encrypt", + "kms:Decrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "Resource": "*", + "Condition": { + "StringEquals": { + "kms:CallerAccount": "", + "kms:ViaService": "ec2..amazonaws.com" + } + } + } + ] +} +---- + +=== Sample self-managed KMS StorageClass + +[source,yaml] +---- +parameters: + type: gp3 + encrypted: "true" + kmsKeyId: +---- + + +== StorageClass Parameters Reference + +For general information on the Kubernetes `StorageClass` resources, see https://kubernetes.io/docs/concepts/storage/storage-classes/[Storage Classes] in the Kubernetes Documentation. + +THe `parameters` section of the `StorageClass` resource is specific to {aws}. Use the following table to review available options. + +[role="no-scroll"] +[cols="4*", options="header"] +|=== +|Parameters |Values |Default |Description +|"csi.storage.k8s.io/fstype" +|xfs, ext2, ext3, ext4 +|ext4 +|File system type that will be formatted during volume creation. This parameter is case sensitive! +|"type" +|io1, io2, gp2, gp3, sc1, st1, standard, sbp1, sbg1 +|gp3 +|EBS volume type. +|"iopsPerGB" +| +| +|I/O operations per second per GiB. Can be specified for IO1, IO2, and GP3 volumes. +|"allowAutoIOPSPerGBIncrease" +|true, false +|false +|When `"true"`, the CSI driver increases IOPS for a volume when `iopsPerGB * ` is too low to fit into IOPS range supported by {aws}. This allows dynamic provisioning to always succeed, even when user specifies too small PVC capacity or `iopsPerGB` value. On the other hand, it may introduce additional costs, as such volumes have higher IOPS than requested in `iopsPerGB`. +|"iops" +| +| +|I/O operations per second. Can be specified for IO1, IO2, and GP3 volumes. +|"throughput" +| +|125 +|Throughput in MiB/s. Only effective when gp3 volume type is specified. +|"encrypted" +|true, false +|false +|Whether the volume should be encrypted or not. Valid values are "true" or "false". +|"blockExpress" +|true, false +|false +|Enables the creation of io2 Block Express volumes. +|"kmsKeyId" +| +| +|The full ARN of the key to use when encrypting the volume. If not specified, {aws} will use the default KMS key for the region the volume is in. This will be an auto-generated key called `/aws/ebs` if not changed. +|"blockSize" +| +| +|The block size to use when formatting the underlying filesystem. Only supported on linux nodes and with fstype `ext2`, `ext3`, `ext4`, or `xfs`. +|"inodeSize" +| +| +|The inode size to use when formatting the underlying filesystem. Only supported on linux nodes and with fstype `ext2`, `ext3`, `ext4`, or `xfs`. +|"bytesPerInode" +| +| +|The `bytes-per-inode` to use when formatting the underlying filesystem. Only supported on linux nodes and with fstype `ext2`, `ext3`, `ext4`. +|"numberOfInodes" +| +| +|The `number-of-inodes` to use when formatting the underlying filesystem. Only supported on linux nodes and with fstype `ext2`, `ext3`, `ext4`. +|"ext4BigAlloc" +|true, false +|false +|Changes the `ext4` filesystem to use clustered block allocation by enabling the `bigalloc` formatting option. Warning: `bigalloc` may not be fully supported with your node's Linux kernel. +|"ext4ClusterSize" +| +| +|The cluster size to use when formatting an `ext4` filesystem when the `bigalloc` feature is enabled. Note: The `ext4BigAlloc` parameter must be set to true. +|=== + +For more information, see the https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/parameters.md[{aws} EBS CSI Driver] on GitHub. + +== Considerations + +The block storage capability of EKS Auto Mode is different from the EBS CSI Driver. + +* Static Provisioning +** If you want to use externally-created EBS volumes with EKS Auto Mode, you need to manually add an {aws} tag with the key `eks:eks-cluster-name` and the value of the cluster name. +* Node Startup Taint +** You cannot use the node startup taint feature to prevent pod scheduling before storage capability readiness +* Custom Tags on Dynamically Provisioned Volumes +** You cannot use the extra-tag CLI flag to configure custom tags on dynamically provisioned EBS volumes +** You can use StorageClass Tagging to add custom tags. EKS Auto Mode will add tags to the associated {aws} resources. You will need to update the Cluster IAM Role for custom tags. For more information, see <>. +* EBS Detailed Performance Metrics +** You cannot access Prometheus metrics for EBS detailed performance + +== Install CSI Snapshot Controller add-on + +EKS Auto Mode is compatible with the CSI Snapshot Controller Amazon EKS add-on. + +{aws} suggests you configure this add-on to run on the built-in `system` node pool. + +For more information, see: + +* <> +* <> +* <> + + +[[auto-install-snapshot-controller,auto-install-snapshot-controller.title]] +=== To install snapshot controller in system node pool + +. Open your EKS cluster in the {aws} console +. From the *Add-ons* tab, select *Get more add-ons* +. Select the *CSI Snapshot Controller* and then *Next* +. On the *Configure selected add-ons settings* page, select *Optional configuration settings* to view the *Add-on configuration schema* +.. Insert the following yaml to associate the snapshot controller with the `system` node pool. The snapshot controller includes a toleration for the `CriticalAddonsOnly` taint. ++ +[source,yaml] +---- +{ + "nodeSelector": { + "karpenter.sh/nodepool": "system" + } +} +---- +.. Select *Next* +. Review the add-on configuration and then select *Create* diff --git a/latest/ug/automode/critical-workload.adoc b/latest/ug/automode/critical-workload.adoc new file mode 100644 index 00000000..75c3668e --- /dev/null +++ b/latest/ug/automode/critical-workload.adoc @@ -0,0 +1,70 @@ +//!!NODE_ROOT
+[.topic] +[[critical-workload,critical-workload.title]] += Run critical add-ons on dedicated instances +:info_doctype: section +:info_titleabbrev: Run critical add-ons + +include::../attributes.txt[] + +In this topic, you will learn how to deploy a workload with a `CriticalAddonsOnly` toleration so EKS Auto Mode will schedule it onto the `system` node pool. + +EKS Auto Mode's built-in `system` node pool is designed for running critical add-ons on dedicated instances. This segregation ensures essential components have dedicated resources and are isolated from general workloads, enhancing overall cluster stability and performance. + +This guide demonstrates how to deploy add-ons to the `system` node pool by utilizing the `CriticalAddonsOnly` toleration and appropriate node selectors. By following these steps, you can ensure that your critical applications are scheduled onto the dedicated `system` nodes, leveraging the isolation and resource allocation benefits provided by EKS Auto Mode's specialized node pool structure. + +EKS Auto Mode has two built-in node pools: `general-purpose` and `system`. For more information, see <>. + +The purpose of the `system` node pool is to segregate critical add-ons onto different nodes. Nodes provisioned by the `system` node pool have a `CriticalAddonsOnly` Kubernetes taint. Kubernetes will only schedule pods onto these nodes if they have a corresponding toleration. For more information, see https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/[Taints and Tolerations] in the Kubernetes documentation. + + +== Prerequisites + +* EKS Auto Mode Cluster with the built-in `system` node pool enabled. For more information, see <> +* `kubectl` installed and configured. For more information, see <>. + +== Procedure + +Review the example yaml below. Note the following configurations: + +* `nodeSelector` -- This associates the workload with the built-in `system` node pool. This node pool must be enabled with the {aws} API. For more information, see <>. +* `tolerations` -- This toleration overcomes the `CriticalAddonsOnly` taint on nodes in the `system` node pool. + +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sample-app +spec: + replicas: 3 + selector: + matchLabels: + app: sample-app + template: + metadata: + labels: + app: sample-app + spec: + nodeSelector: + karpenter.sh/nodepool: system + tolerations: + - key: "CriticalAddonsOnly" + operator: "Exists" + containers: + - name: app + image: nginx:latest + resources: + requests: + cpu: "500m" + memory: "512Mi" +---- + +To update a workload to run on the `system` node pool, you need to: + +. Update the existing workload to add the following configurations described above: +** `nodeSelector` +** `tolerations` +. Deploy the updated workload to your cluster with `kubectl apply` + +After updating the workload, it will run on dedicated nodes. diff --git a/latest/ug/automode/migrate-auto.adoc b/latest/ug/automode/migrate-auto.adoc new file mode 100644 index 00000000..fe53704b --- /dev/null +++ b/latest/ug/automode/migrate-auto.adoc @@ -0,0 +1,79 @@ +//!!NODE_ROOT
+[.topic] +include::../attributes.txt[] +[[migrate-auto,migrate-auto.title]] += Enable EKS Auto Mode on existing EKS clusters +:info_doctype: section +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_title: Enable EKS Auto Mode on existing EKS clusters +:info_titleabbrev: Enable existing clusters +:info_abstract: Learn about the tools needed to migrate an Amazon EKS cluster to EKS Auto Mode. + +[abstract] +-- +Learn about the tools needed for creating and working with an Amazon EKS cluster in EKS Auto Mode. +-- + +You can enable EKS Auto Mode on existing EKS Clusters. + +[NOTE] +==== +EKS Auto Mode requires Kubernetes version 1.29 or greater. +==== + +*{aws} supports the following migrations:* + +* Migrating from Karpenter to EKS Auto Mode Nodes +** Learn how to <> +* Migrating from EKS Managed Node Groups to EKS Auto Mode Nodes +** Learn how to <> +* Migrating from EKS Fargate to EKS Auto Mode Nodes + +*{aws} does not support the following migrations:* + +* Migrating volumes from the EBS CSI Controller to EKS Auto Mode Block Storage +** You can install the EBS CSI controller on an Amazon EKS Auto Mode cluster. Use a `StorageClass` to associate volumes with either the EBS CSI Controller or EKS Auto Mode. +* Migrating load balancers from the {aws} Load Balancer Controller to EKS Auto Mode +** You can install the {aws} Load Balancer Controller on an Amazon EKS Auto Mode cluster. Use the `IngressClass` or `loadBalancerClass` options to associate Service and Ingress resources with either the Load Balancer Controller or EKS Auto Mode. +* Migrating EKS Clusters with alternative CNIs or other unsupported networking configurations + +== Migration Reference + +Use the following migration reference to configure Kubernetes Resources to be owned by either self-managed controllers or EKS Auto Mode. + +[%header,cols="1,1,1,1,1"] +|=== + +| Capability | Resource | Field | Self Managed | EKS Auto Mode + +| Block Storage | StorageClass | provisioner | kubernetes.io/aws-ebs | ebs.csi.eks.amazonaws.com + +| Load Balancing | Service | loadBalancerClass | service.k8s.aws/nlb | eks.amazonaws.com/nlb + +| Load Balancing | IngressClass | controller | ingress.k8s.aws/alb | eks.amazonaws.com/alb + + + +|Load Balancing | IngressClassParams |apiversion |elbv2.k8s.aws/v1beta1 |eks.amazonaws.com/v1 + +|Load Balancing | TargetGroupBinding |apiversion |elbv2.k8s.aws/v1beta1 |eks.amazonaws.com/v1 + +| Compute | NodeClass | apiVersion | karpenter.sh/v1alpha5 | eks.amazonaws.com/v1 + +|=== + +== Load Balancer Migration + +You cannot directly transfer existing load balancers from the self-managed {aws} load balancer controller to EKS Auto Mode. Instead, you must implement a blue-green deployment strategy. This involves maintaining your existing load balancer configuration while creating new load balancers under the managed controller. + +To minimize service disruption, we recommend a DNS-based traffic shifting approach. First, create new load balancers using EKS Auto Mode while keeping your existing configuration operational. Then, use DNS routing (such as Route 53) to gradually shift traffic from the old load balancers to the new ones. Once traffic has been successfully migrated and you've verified the new configuration, you can decommission the old load balancers and self-managed controller. + +include::auto-enable-existing.adoc[leveloffset=+1] + +include::auto-migrate-karpenter.adoc[leveloffset=+1] + +include::auto-migrate-mng.adoc[leveloffset=+1] diff --git a/latest/ug/automode/old/hpa_scaling.adoc b/latest/ug/automode/old/hpa_scaling.adoc new file mode 100644 index 00000000..5e0fe70c --- /dev/null +++ b/latest/ug/automode/old/hpa_scaling.adoc @@ -0,0 +1,242 @@ +//!!NODE_ROOT
+ +[.topic] +[[auto-hpa-scaling,auto-hpa-scaling.title]] += End-to-end Compute Autoscaling with HPA +:info_doctype: section + +include::../attributes.txt[] + + +This guide shows you how Karpenter autoscales nodes in conjunction with HPA scaling your applications. + +== What we'll do? + +* Install the Metrics Server +* Deploy an application with 1 replica to start with +* Deploy an HPA autoscaling rule with a target CPU average utilization of 70% +* Simulate sending some real traffic to the UI service to stress the application for 5 mins +* See autoscaling in action, both for the workload with HPA and the nodes with Karpenter + +== Prerequisites + +* watch (https://formulae.brew.sh/formula/watch[Mac], https://www.powershellgallery.com/packages/Watch-Command/0.1.3[Windows]) +* https://kubernetes.io/docs/tasks/tools/#kubectl[kubectl] +* https://helm.sh/docs/intro/install/[Helm] + +== 1. Deploy Metrics Server + +In order for HPA to collect metrics from your application, you need to deploy the metrics server: + +---- +helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/ +helm repo update +helm install metrics-server metrics-server/metrics-server \ +--set 'tolerations[0].key=CriticalAddonsOnly,tolerations[0].operator=Exists,tolerations[0].effect=NoSchedule' \ +--set 'nodeSelector.karpenter\.sh/nodepool=system' \ + -n kube-system +---- + +Your EKS cluster has no nodes at the moment. Therefore, Karpenter will launch a node to run the metrics server pod on it. Notice that we've added a toleration to launch a node using the `system` NodePool as this is a critical addon, as well as a `nodeSelector`. + +Wait around one minute for the node to be ready. Then, run this command to confirm the metrics server pod is `Running`: + +---- +kubectl get pods -n kube-system | grep metrics-server +---- + +== 2. Deploy an application + +To see autoscaling in action, let's deploy the following application: + +---- +cat < + +[.topic] +[[sample-storage-workload,sample-storage-workload.title]] += Deploy a sample stateful workload to EKS Auto Mode +:info_doctype: section +:info_title: Deploy a sample stateful workload to EKS Auto Mode +:info_titleabbrev: Deploy stateful workload +:info_abstract: Deploy a sample stateful workload to EKS Auto Mode + +include::../attributes.txt[] + +This tutorial will guide you through deploying a sample stateful application to your EKS Auto Mode cluster. The application writes timestamps to a persistent volume, demonstrating EKS Auto Mode's automatic EBS volume provisioning and persistence capabilities. + +## Prerequisites + +* An EKS Auto Mode cluster +* The {aws} CLI configured with appropriate permissions +* `kubectl` installed and configured +** For more information, see <>. + +## Step 1: Configure your environment + +. Set your environment variables: ++ +[source,bash] +---- +export CLUSTER_NAME=my-auto-cluster +export AWS_REGION="us-west-2" +---- +. Update your kubeconfig: ++ +[source,bash] +---- +aws eks update-kubeconfig --name "${CLUSTER_NAME}" +---- + +## Step 2: Create the storage class + +The StorageClass defines how EKS Auto Mode will provision EBS volumes. + +{eam} does not create a StorageClass for you. You must create a StorageClass referencing `ebs.csi.eks.amazonaws.com` to use the storage capability of {eam}. + +. Create a file named `storage-class.yaml`: ++ +[source,yaml] +---- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: auto-ebs-sc + annotations: + storageclass.kubernetes.io/is-default-class: "true" +provisioner: ebs.csi.eks.amazonaws.com +volumeBindingMode: WaitForFirstConsumer +parameters: + type: gp3 + encrypted: "true" +---- +. Apply the StorageClass: ++ +[source,bash] +---- +kubectl apply -f storage-class.yaml +---- + +*Key components:* + +- `provisioner: ebs.csi.eks.amazonaws.com` - Uses {eam} +- `volumeBindingMode: WaitForFirstConsumer` - Delays volume creation until a pod needs it +- `type: gp3` - Specifies the EBS volume type +- `encrypted: "true"` - EBS will use the default `aws/ebs` key to encrypt volumes created with this class. This is optional, but reccomended. +- `storageclass.kubernetes.io/is-default-class: "true"` - Kubernetes will use this storage class by default, unless you specify a different volume class on a persistent volume claim. Use caution when setting this value if you are migrating from another storage controller. (optional) + +## Step 3: Create the persistent volume claim + +The PVC requests storage from the StorageClass. + +. Create a file named `pvc.yaml`: ++ +[source,yaml] +---- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: auto-ebs-claim +spec: + accessModes: + - ReadWriteOnce + storageClassName: auto-ebs-sc + resources: + requests: + storage: 8Gi +---- +. Apply the PVC: ++ +[source,bash] +---- +kubectl apply -f pvc.yaml +---- + +*Key components:* + +- `accessModes: ReadWriteOnce` - Volume can be mounted by one node at a time +- `storage: 8Gi` - Requests an 8 GiB volume +- `storageClassName: auto-ebs-sc` - References the StorageClass we created + +## Step 4: Deploy the Application + +The Deployment runs a container that writes timestamps to the persistent volume. + +. Create a file named `deployment.yaml`: ++ +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: inflate-stateful +spec: + replicas: 1 + selector: + matchLabels: + app: inflate-stateful + template: + metadata: + labels: + app: inflate-stateful + spec: + terminationGracePeriodSeconds: 0 + nodeSelector: + eks.amazonaws.com/compute-type: auto + containers: + - name: bash + image: public.ecr.aws/docker/library/bash:4.4 + command: ["/usr/local/bin/bash"] + args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 60; done"] + resources: + requests: + cpu: "1" + volumeMounts: + - name: persistent-storage + mountPath: /data + volumes: + - name: persistent-storage + persistentVolumeClaim: + claimName: auto-ebs-claim +---- +. Apply the Deployment: ++ +[source,bash] +---- +kubectl apply -f deployment.yaml +---- + +*Key components:* + +- Simple bash container that writes timestamps to a file +- Mounts the PVC at `/data` +- Requests 1 CPU core +- Uses node selector for EKS managed nodes + +## Step 5: Verify the Setup + +. Check that the pod is running: ++ +[source,bash] +---- +kubectl get pods -l app=inflate-stateful +---- +. Verify the PVC is bound: ++ +[source,bash] +---- +kubectl get pvc auto-ebs-claim +---- +. Check the EBS volume: ++ +[source,bash] +---- +# Get the PV name +PV_NAME=$(kubectl get pvc auto-ebs-claim -o jsonpath='{.spec.volumeName}') +# Describe the EBS volume +aws ec2 describe-volumes \ + --filters Name=tag:CSIVolumeName,Values=${PV_NAME} +---- +. Verify data is being written: ++ +[source,bash] +---- +kubectl exec "$(kubectl get pods -l app=inflate-stateful \ + -o=jsonpath='{.items[0].metadata.name}')" -- \ + cat /data/out.txt +---- + +## Step 6: Cleanup + +Run the following command to remove all resources created in this tutorial: + +[source,bash] +---- +# Delete all resources in one command +kubectl delete deployment/inflate-stateful pvc/auto-ebs-claim storageclass/auto-ebs-sc +---- + +## What's Happening Behind the Scenes + +. The PVC requests storage from the StorageClass +. When the Pod is scheduled: +.. EKS Auto Mode provisions an EBS volume +.. Creates a PersistentVolume +.. Attaches the volume to the node +. The Pod mounts the volume and begins writing timestamps + +== Snapshot Controller + +{eam} is compatible with the Kubernetes CSI Snapshotter, also known as the snapshot controller. However, {eam} does not include the snapshot controller. You are responsible for installing and configuring the snapshot controller. For more information, see <>. + +Review the following `VolumeSnapshotClass` that references the storage capability of {eam}. + +[source,yaml] +---- +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshotClass +metadata: + name: auto-ebs-vsclass +driver: ebs.csi.eks.amazonaws.com +deletionPolicy: Delete +---- + +https://github.com/kubernetes-csi/external-snapshotter/blob/master/README.md#usage[Learn more about the Kubernetes CSI Snapshotter.] diff --git a/latest/ug/automode/set-builtin-node-pools.adoc b/latest/ug/automode/set-builtin-node-pools.adoc new file mode 100644 index 00000000..0082f30a --- /dev/null +++ b/latest/ug/automode/set-builtin-node-pools.adoc @@ -0,0 +1,59 @@ +//!!NODE_ROOT
+[.topic] +[[set-builtin-node-pools,set-builtin-node-pools.title]] += Enable or Disable Built-in NodePools +:info_doctype: section +:info_titleabbrev: Review built-in node pools + +include::../attributes.txt[] + +{eam} has two built-in NodePools. You can enable or disable these NodePools using the {aws} console, CLI, or API. + +== Built-in NodePool Reference + +* `system` +** This NodePool has a `CriticalAddonsOnly` taint. Many EKS addons, such as CoreDNS, tolerate this taint. Use this system node pool to segregate cluster-critical applications. +** Supports both `amd64` and `arm64` architectures. +* `general-purpose` +** This NodePool provides support for launching nodes for general purpose workloads in your cluster. +** Uses only `amd64` architecture. + +Both built-in NodePools: + +* Use the default EKS NodeClass +* Use only on-demand EC2 capacity +* Use the C, M, and R EC2 instance families +* Require generation 5 or newer EC2 instances + +## Prerequisites + +* The latest version of the {aws} Command Line Interface ({aws} CLI) installed and configured on your device. To check your current version, use `aws --version`. To install the latest version, see link:cli/latest/userguide/getting-started-install.html["Installing",type="documentation"] and link:cli/latest/userguide/cli-chap-configure.html#cli-configure-quickstart-config["Quick configuration",type="documentation"] with aws configure in the {aws} Command Line Interface User Guide. +** Login to the CLI with sufficent IAM permissions to create {aws} resources including IAM Policies, IAM Roles, and EKS Clusters. + +== Enable with {aws} CLI + +Use the following command to enable both built-in NodePools: + +[source,cli] +---- +aws eks update-cluster-config \ + --name \ + --compute-config '{ + "nodeRoleArn": "", + "nodePools": ["general-purpose", "system"] + }' + +---- + +You can modify the command to selectively enable the NodePools. + +== Disable with {aws} CLI + +Use the following command to disable both built-in NodePools: + +[source,cli] +---- +aws eks update-cluster-config \ + --name \ + --compute-config '{"nodePools": []}' +---- diff --git a/latest/ug/automode/settings-auto.adoc b/latest/ug/automode/settings-auto.adoc new file mode 100644 index 00000000..23f7f2bf --- /dev/null +++ b/latest/ug/automode/settings-auto.adoc @@ -0,0 +1,113 @@ +//!!NODE_ROOT +[.topic] +include::../attributes.txt[] +[[settings-auto,settings-auto.title]] += Configure EKS Auto Mode settings +:info_doctype: section +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_title: Change EKS Auto cluster settings +:info_titleabbrev: Configure +:info_abstract: Change EKS Auto cluster settings + +[abstract] +-- +Change EKS Auto cluster settings +-- + +This chapter describes how to configure specific aspects of your Amazon Elastic Kubernetes Service (EKS) Auto Mode clusters. While EKS Auto Mode manages most infrastructure components automatically, you can customize certain features to meet your workload requirements. + +Using the configuration options described in this topic, you can modify networking settings, compute resources, and load balancing behaviors while maintaining the benefits of automated infrastructure management. Before making any configuration changes, review the available options in the following sections to determine which approach best suits your needs. + +[role="no-scroll"] +[cols="1,1"] +|=== +|What features do you want to configure? |Configuration option + +a| +*Node networking and storage* + +- Configure node placement across public and private subnets +- Define custom security groups for node access control +- Customize network address translation (SNAT) policies +- Enable detailed network policy logging and monitoring +- Set ephemeral storage parameters (size, IOPS, throughput) +- Configure encrypted ephemeral storage with custom KMS keys +|<> + +a| +*Node compute resources* + +- Select specific EC2 instance types and families +- Define CPU architectures (x86_64, ARM64) +- Configure capacity types (On-Demand, Spot) +- Specify Availability Zones +- Configure node taints and labels +- Set minimum and maximum node counts +|<> + +a| +*Application Load Balancer settings* + +- Deploy internal or internet-facing load balancers +- Configure cross-zone load balancing +- Set idle timeout periods +- Enable HTTP/2 and WebSocket support +- Configure health check parameters +- Specify TLS certificate settings +- Define target group attributes +- Set IP address type (IPv4, dual-stack) +|<> + +a| +*Network Load Balancer settings* + +- Configure direct pod IP routing +- Enable cross-zone load balancing +- Set connection idle timeout +- Configure health check parameters +- Specify subnet placement +- Set IP address type (IPv4, dual-stack) +- Configure preserve client source IP +- Define target group attributes +|<> + + +a| +*Storage Class settings* + +- Define EBS volume types (gp3, io1, io2, etc.) +- Configure volume encryption and KMS key usage +- Set IOPS and throughput parameters +- Set as default storage class +- Define custom tags for provisioned volumes +|<> + +|=== + + + +include::create-node-class.adoc[leveloffset=+1] + +include::create-node-pool.adoc[leveloffset=+1] + +include::auto-configure-alb.adoc[leveloffset=+1] + +include::auto-configure-nlb.adoc[leveloffset=+1] + +include::create-storage-class.adoc[leveloffset=+1] + +include::auto-disable.adoc[leveloffset=+1] + +include::auto-upgrade.adoc[leveloffset=+1] + +include::set-builtin-node-pools.adoc[leveloffset=+1] + +include::associate-workload.adoc[leveloffset=+1] + +include::critical-workload.adoc[leveloffset=+1] + +include::auto-net-pol.adoc[leveloffset=+1] diff --git a/latest/ug/automode/troubleshoot-lbc.adoc b/latest/ug/automode/troubleshoot-lbc.adoc new file mode 100644 index 00000000..c9918fde --- /dev/null +++ b/latest/ug/automode/troubleshoot-lbc.adoc @@ -0,0 +1,105 @@ +//!!NODE_ROOT
+[.topic] +[[troubleshoot-lbc,troubleshoot-lbc.title]] +# Troubleshooting Amazon EKS Auto Mode Load Balancer Controller +:info_doctype: section + +[NOTE] +==== +This resource is not ready for publication. +==== + + +include::../attributes.txt[] + +This guide helps you troubleshoot issues with the {aws} Load Balancer Controller when using Amazon EKS Auto Mode. + +## Verify Ingress Resources + +Check the status of your Ingress resources: + +```bash +kubectl get ingress --all-namespaces +kubectl describe ingress -n +``` + +Look for: + +- Proper annotations +- ALB DNS name in the Address field +- Events indicating any issues + +## Check {aws} Resources + +Verify these resources in the {aws} Management Console or using {aws} CLI: + +- Application Load Balancers +- Target Groups +- Security Groups + +## Common Issues + +### Ingress Not Creating ALB + +1. Verify Ingress annotations +2. Check security group configuration +3. Validate subnet configuration +4. Review target group settings + +### Target Group Health Check Failures + +1. Ensure security group allows health check traffic +2. Verify application endpoints are responding +3. Check health check path and settings + +### Networking Issues + +1. Verify subnet tagging: + - Public subnets: `kubernetes.io/role/elb: 1` + - Private subnets: `kubernetes.io/role/internal-elb: 1` +2. Check VPC internet connectivity for public ALBs +3. Review route tables and NAT gateway configuration + +### Security Group Problems + +1. Verify inbound rules allow traffic on required ports +2. Ensure outbound rules allow health check traffic +3. Check security group associations + +## Advanced Troubleshooting + +### Version Compatibility + +Ensure compatibility between: +- Kubernetes version +- EKS version +- {aws} SDK version + +### Resource Cleanup + +For stuck resources: + +1. Remove finalizers: + ```bash + kubectl patch ingress -p '{"metadata":{"finalizers":[]}}' --type=merge + ``` +2. Check for orphaned {aws} resources (ALBs, target groups, listener rules) + +## Best Practices + +1. Regularly review Ingress events and {aws} resource synchronization +2. Document custom annotations and maintain troubleshooting runbooks +3. Test changes in non-production environments first + +## Considerations for EKS Auto Mode + +- Limited customization options +- {aws} manages controller updates +- IAM permissions are handled automatically +- Focus on monitoring {aws} resources and Ingress events + +## Additional Resources + +- link:https://docs.aws.amazon.com/eks/latest/userguide/troubleshooting.html[{aws} EKS Troubleshooting] +- link:https://console.aws.amazon.com/support/home[{aws} Support Center] +- link:https://status.aws.amazon.com/[{aws} Service Health Dashboard] diff --git a/latest/ug/automode/wip.adoc b/latest/ug/automode/wip.adoc new file mode 100644 index 00000000..3ae07b14 --- /dev/null +++ b/latest/ug/automode/wip.adoc @@ -0,0 +1,21 @@ +//!!NODE_ROOT +[.topic] +[[auto-wip,auto-wip.title]] += EKS Auto Mode: Revisions to existing pages WIP +:info_doctype: section +:toc: left + + +include::../attributes.txt[] + +This section contains in-progress revisions for existing pages in other chapters. + +//include::wip/quickstart-v2.adoc[leveloffset=+1] + +//include::wip/create-cluster-v2.adoc[leveloffset=+1] + +//include::wip/auto-migrate-karpenter-v2.adoc[leveloffset=+1] + +//include::wip/auto-cluster-iam-role.adoc[leveloffset=+1] + +//include::wip/auto-create-node-role.adoc[leveloffset=+1] diff --git a/latest/ug/automode/wip/create-vpc-console.adoc b/latest/ug/automode/wip/create-vpc-console.adoc new file mode 100644 index 00000000..f96c7cff --- /dev/null +++ b/latest/ug/automode/wip/create-vpc-console.adoc @@ -0,0 +1,148 @@ +//!!NODE_ROOT
+[.topic] +[[create-vpc-console,create-vpc-console.title]] += Create a VPC for Amazon EKS with the web console +:info_doctype: section + +include::../../attributes.txt[] + +This guide walks you through creating a Virtual Private Cloud (VPC) that's optimized for Amazon Elastic Kubernetes Service (EKS) clusters using the {aws} Management Console. + +== Overview + +When creating a VPC for EKS, you'll need to configure specific networking requirements to ensure proper cluster functionality, including: +- Public and private subnets across multiple Availability Zones +- NAT gateways for outbound internet access from private subnets +- Appropriate CIDR ranges to accommodate pod and service IP addresses +- Required VPC endpoints for EKS functionality + +== Prerequisites + +- An {aws} account +- Access to the {aws} Management Console +- IAM permissions for VPC and EKS resource creation +- Planned CIDR ranges for your VPC, pods, and services + +== Creation Steps + +=== Step 1: Access the VPC Creation Page +1. Sign in to the {aws} Management Console +2. Navigate to the VPC Dashboard +3. Click "Create VPC" + +=== Step 2: Configure Basic VPC Settings +1. Under "VPC settings", select "VPC and more" +2. Enter a name tag in the "Name tag auto-generation" field + - Example: "eks-cluster-vpc" + - This will auto-generate names for all resources with the prefix + +=== Step 3: Configure Network Settings +1. IPv4 CIDR block: + - Enter your VPC CIDR (recommended: 10.0.0.0/16) + - Ensure the CIDR is large enough to accommodate: + - EKS nodes + - Pods (default CNI: up to 250 pods per node) + - Services (default: 10.100.0.0/16) + +2. Set Availability Zones: + - Select at least two AZs (recommended: 3 for production) + - EKS requires a minimum of two AZs for high availability + +3. Configure Subnets: + - Public subnets: Set to 2 or 3 (matching your AZ count) + - Required for public-facing load balancers + - Used for NAT gateways + - Private subnets: Set to 2 or 3 (matching your AZ count) + - Will host your EKS nodes + - Must have outbound internet access via NAT + +=== Step 4: Configure NAT Gateways +1. Choose "1 per AZ" for production environments + - While more expensive, this provides high availability for node outbound traffic + - For dev/test, you can use "In 1 AZ" to reduce costs + +=== Step 5: Configure VPC Endpoints +1. Select "S3 Gateway" + - Required for pulling container images from Amazon ECR +2. Consider adding these endpoints later for enhanced security: + - com.amazonaws.[region].ecr.api + - com.amazonaws.[region].ecr.dkr + - com.amazonaws.[region].eks + - com.amazonaws.[region].elasticloadbalancing + - com.amazonaws.[region].logs + +=== Step 6: Configure DNS Options +1. Enable both options: + - DNS hostnames (required for EKS) + - DNS resolution (required for EKS) + +=== Step 7: Review and Create +1. Review the preview panel to ensure: + - All subnets are properly distributed across AZs + - CIDR ranges don't overlap +2. Click "Create VPC" + +== Post-Creation Configuration + +=== Step 1: Tag Subnets for EKS +After VPC creation, add these required tags to your subnets: + +For public subnets: +``` +kubernetes.io/cluster/ = shared +kubernetes.io/role/elb = 1 +``` + +For private subnets: +``` +kubernetes.io/cluster/ = shared +kubernetes.io/role/internal-elb = 1 +``` + +=== Step 2: Security Group Configuration +1. Create a cluster security group that allows: + - All inbound traffic from within the VPC + - Required outbound traffic for node communication + +== Best Practices + +1. Networking: + - Use private subnets for worker nodes + - Use public subnets only for load balancers + - Ensure sufficient IP addresses for pods and services + +2. High Availability: + - Use 3 AZs for production environments + - Deploy NAT Gateways in each AZ + - Size subnets appropriately for expected growth + +3. Security: + - Implement VPC endpoints for {aws} services + - Use security groups to control traffic + - Follow the principle of least privilege + +== Next Steps + +1. Create your EKS cluster using this VPC +2. Configure additional VPC endpoints as needed +3. Set up monitoring for NAT gateway bandwidth +4. Plan IP address management for pods and services + +== Troubleshooting Tips + +1. Common Issues: + - Insufficient IP addresses for pods + - Missing required subnet tags + - NAT gateway connectivity issues + +2. Validation Steps: + - Verify subnet tags + - Check route tables + - Confirm security group rules + +== Additional Resources + +- EKS VPC Requirements Documentation +- EKS Best Practices Guide +- VPC Pricing Calculator +- EKS Networking Documentation diff --git a/latest/ug/automode/wip/eksctl-docs.adoc b/latest/ug/automode/wip/eksctl-docs.adoc new file mode 100644 index 00000000..f7f7c478 --- /dev/null +++ b/latest/ug/automode/wip/eksctl-docs.adoc @@ -0,0 +1,119 @@ +//!!NODE_ROOT
+[.topic] +[[eksctl-docs,eksctl-docs.title]] += EKS Auto Mode +:info_doctype: section + +include::../../attributes.txt[] + +== Introduction + +eksctl supports xref:automode[EKS Auto Mode], a feature that extends {aws} management of Kubernetes clusters beyond the cluster itself, +to allow {aws} to also set up and manage the infrastructure that enables the smooth operation of your workloads. +This allows you to delegate key infrastructure decisions and leverage the expertise of {aws} for day-to-day operations. +Cluster infrastructure managed by {aws} includes many Kubernetes capabilities as core components, as opposed to add-ons, +such as compute autoscaling, pod and service networking, application load balancing, cluster DNS, block storage, and GPU support. + +== Creating an EKS cluster with Auto Mode enabled + +`eksctl` has added a new `autoModeConfig` field to enable and configure Auto Mode. The shape of the `autoModeConfig` field is + +```yaml +autoModeConfig: + # defaults to false + enabled: boolean + # optional, defaults to [general-purpose, system]. + # To disable creation of nodePools, set it to the empty array ([]). + nodePools: []string + # optional, eksctl creates a new role if this is not supplied + # and nodePools are present. + nodeRoleARN: string +``` + +If `autoModeConfig.enabled` is true, eksctl creates an EKS cluster by passing `computeConfig.enabled: true`, +`kubernetesNetworkConfig.elasticLoadBalancing.enabled: true`, and `storageConfig.blockStorage.enabled` to the EKS API, +enabling management of data plane components like compute, storage and networking. + +To create an EKS cluster with Auto Mode enabled, set `autoModeConfig.enabled: true`, as in + +```yaml +# auto-mode-cluster.yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: auto-mode-cluster + region: us-west-2 + +autoModeConfig: + enabled: true +``` + +```shell +$ eksctl create cluster -f auto-mode-cluster.yaml +``` + +eksctl creates the `general-purpose` and `system` node pools by default. To disable creation of the default node pools, +e.g., to configure your own node pools that use a different set of subnets, set `nodePools: []`, as in + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: auto-mode-cluster + region: us-west-2 + +autoModeConfig: + enabled: true + nodePools: [] # disables creation of default node pools. +``` + +== Updating an EKS cluster to use Auto Mode +To update an existing EKS cluster to use Auto Mode, run + +```yaml +# cluster.yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: cluster + region: us-west-2 + +autoModeConfig: + enabled: true +``` + +```shell +$ eksctl update auto-mode-config -f cluster.yaml +``` + +[NOTE] +==== +If the cluster was created by eksctl, and it uses public subnets as cluster subnets, you will either have to +(https://eksctl.io/usage/cluster-subnets-security-groups/[update the cluster to use private subnets], or disable default node pools +by setting `autoModeConfig.nodePools: []`, before running `eksctl update auto-mode-config`. +eksctl disallows this to avoid having Auto Mode launch worker nodes in public subnets. +==== + + +== Disabling Auto Mode +To disable Auto Mode, set `autoModeConfig.enabled: false` and run + +```yaml +# cluster.yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: auto-mode-cluster + region: us-west-2 + +autoModeConfig: + enabled: false +``` + +```shell +$ eksctl update auto-mode-config -f cluster.yaml +``` + +== Further information + +- xref:automode[EKS Auto Mode] diff --git a/latest/ug/automode/wip/tag-subnets.adoc b/latest/ug/automode/wip/tag-subnets.adoc new file mode 100644 index 00000000..07365195 --- /dev/null +++ b/latest/ug/automode/wip/tag-subnets.adoc @@ -0,0 +1,32 @@ +//!!NODE_ROOT
+[.topic] +[[tag-subnets,tag-subnets.title]] += Tag VPC Subnets for Load Balancer Deployment +:info_doctype: section + +include::../../attributes.txt[] + +This topic explains how to tag your VPC subnets to enable load balancer deployment using the {aws} Management Console. + +== Required Tags + +Your subnets require specific tags based on their intended use: + +[options="header",cols="1,2,1"] +|=== +|Subnet Type |Tag Key |Tag Value +|Private Subnet |`kubernetes.io/role/internal-elb` |`1` +|Public Subnet |`kubernetes.io/role/elb` |`1` +|=== + +== Adding Tags in the Console + +1. Sign in to the {aws} Management Console +2. Navigate to **VPC** +>+ **Subnets** +3. Select the subnet you want to tag +4. Select the **Tags** tab in the lower panel +5. Choose **Add/Edit Tags** +6. Click **Add Tag** and enter: + - For private subnets: Key = `kubernetes.io/role/internal-elb`, Value = `1` + - For public subnets: Key = `kubernetes.io/role/elb`, Value = `1` +7. Click **Save** diff --git a/latest/ug/book.adoc b/latest/ug/book.adoc new file mode 100644 index 00000000..8d87ae74 --- /dev/null +++ b/latest/ug/book.adoc @@ -0,0 +1,90 @@ +//!!NODE_ROOT +include::attributes.txt[] +[[top]] += Amazon EKS +:doctype: book +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:info_doctype: book +:info_title: Amazon EKS +:info_subtitle: User Guide +:info_abstract: This is official Amazon Web Services ({aws}) documentation for Amazon Elastic Kubernetes Service (Amazon EKS). Amazon EKS is a managed \ + service that makes it easy for you to run Kubernetes on {aws} without needing to install and operate \ + your own Kubernetes clusters. Kubernetes is an open-source system for automating the deployment, scaling, \ + and management of containerized applications. +:info_corpauthor: Amazon Web Services +:info_publisher: Amazon Web Services +:info_copyright: 2024 \ +Amazon Web Services, Inc. and/or its affiliates. All rights reserved. +:info_legalnotice: Amazon's trademarks and trade dress may not be used in \ +connection with any product or service that is not Amazon's, \ +in any manner that is likely to cause confusion among customers, \ +or in any manner that disparages or discredits Amazon. All other \ +trademarks not owned by Amazon are the property of their respective \ +owners, who may or may not be affiliated with, connected to, or \ +sponsored by Amazon. +:keywords: EKS, Amazon EKS, Kubernetes, K8s, Cluster, Pod + +[abstract] +-- +This is official Amazon Web Services ({aws}) documentation for Amazon Elastic Kubernetes Service (Amazon EKS). Amazon EKS is a managed service that makes it easy for you to run [.noloc]`Kubernetes` on {aws} without needing to install and operate your own [.noloc]`Kubernetes` clusters. [.noloc]`Kubernetes` is an open-source system for automating the deployment, scaling, and management of containerized applications. +-- +:sectnums: + +[.banner.info] +*Help improve this page* + +[.banner.info] +Want to contribute to this user guide? Choose the *Edit this page on GitHub* link that is located in the right pane of every page. Your contributions will help make our user guide better for everyone. + +include::what-is/what-is-eks.adoc[leveloffset=+1] + +include::getting-started/setting-up.adoc[leveloffset=+1] + +include::quickstart.adoc[leveloffset=+1] + +include::getting-started/learn-eks.adoc[leveloffset=+1] + +include::getting-started/getting-started.adoc[leveloffset=+1] + +include::automode/automode.adoc[leveloffset=+1] + +include::clusters/clusters.adoc[leveloffset=+1] + +include::manage-access/cluster-auth.adoc[leveloffset=+1] + +include::nodes/eks-compute.adoc[leveloffset=+1] + +include::storage/storage.adoc[leveloffset=+1] + +include::networking/eks-networking.adoc[leveloffset=+1] + +include::workloads/eks-workloads.adoc[leveloffset=+1] + +include::clusters/management/eks-managing.adoc[leveloffset=+1] + +include::security/security.adoc[leveloffset=+1] + +include::observability/eks-observe.adoc[leveloffset=+1] + +include::integrations/eks-integrations.adoc[leveloffset=+1] + +include::troubleshooting/troubleshooting.adoc[leveloffset=+1] + +include::connector/eks-connector.adoc[leveloffset=+1] + +include::outposts/eks-outposts.adoc[leveloffset=+1] + +include::ml/machine-learning-on-eks.adoc[leveloffset=+1] + +include::related-projects.adoc[leveloffset=+1] + +include::roadmap.adoc[leveloffset=+1] + +include::doc-history.adoc[leveloffset=+1] + +include::contribute/contribute.adoc[leveloffset=+1] + diff --git a/latest/ug/clusters/authentication/images b/latest/ug/clusters/authentication/images new file mode 120000 index 00000000..5fa69870 --- /dev/null +++ b/latest/ug/clusters/authentication/images @@ -0,0 +1 @@ +../../images \ No newline at end of file diff --git a/latest/ug/clusters/autoscaling.adoc b/latest/ug/clusters/autoscaling.adoc new file mode 100644 index 00000000..38abb8a6 --- /dev/null +++ b/latest/ug/clusters/autoscaling.adoc @@ -0,0 +1,44 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[autoscaling,autoscaling.title]] += Scale cluster compute with [.noloc]`Karpenter` and [.noloc]`Cluster Autoscaler` +:info_doctype: section +:info_title: Scale cluster compute with Karpenter and Cluster Autoscaler +:info_titleabbrev: Autoscaling +:info_abstract: Discover how Amazon EKS integrates Kubernetes autoscaling with {aws}, empowering rapid and efficient scaling of compute resources to meet application demands using Karpenter and Cluster Autoscaler. + +[abstract] +-- +Discover how Amazon EKS integrates Kubernetes autoscaling with {aws}, empowering rapid and efficient scaling of compute resources to meet application demands using Karpenter and Cluster Autoscaler. +-- + +Autoscaling is a function that automatically scales your resources out and in to meet changing demands. This is a major [.noloc]`Kubernetes` function that would otherwise require extensive human resources to perform manually. + +== EKS Auto Mode + +Amazon EKS Auto Mode automatically scales cluster compute resources. If a pod can't fit onto existing nodes, EKS Auto Mode creates a new one. EKS Auto Mode also consolidates workloads and deletes nodes. EKS Auto Mode builds upon Karpenter. + +For more information, see: + +* <> +* <> +* <> + +== Additional Solutions + +Amazon EKS supports two additional autoscaling products: + + + +*[.noloc]`Karpenter`*:: +[.noloc]`Karpenter` is a flexible, high-performance [.noloc]`Kubernetes` cluster autoscaler that helps improve application availability and cluster efficiency. [.noloc]`Karpenter` launches right-sized compute resources (for example, Amazon EC2 instances) in response to changing application load in under a minute. Through integrating [.noloc]`Kubernetes` with {aws}, [.noloc]`Karpenter` can provision just-in-time compute resources that precisely meet the requirements of your workload. [.noloc]`Karpenter` automatically provisions new compute resources based on the specific requirements of cluster workloads. These include compute, storage, acceleration, and scheduling requirements. Amazon EKS supports clusters using [.noloc]`Karpenter`, although [.noloc]`Karpenter` works with any conformant [.noloc]`Kubernetes` cluster. For more information, see the https://karpenter.sh/docs/[Karpenter] documentation. ++ +[IMPORTANT] +==== +Karpenter is open-source software which {aws} customers are responsible for installing, configuring, and managing in their Kubernetes clusters. {aws} provides technical support when Karpenter is run unmodified using a compatible version in Amazon EKS clusters. It is essential that customers maintain the availability and security of the Karpenter controller as well as appropriate testing procedures when upgrading it or the Kubernetes cluster in which it's running, just like any other customer-managed software. There is no {aws} Service Level Agreement (SLA) for Karpenter and customers are responsible for ensuring that the EC2 instances launched by Karpenter meet their business requirements. +==== + +*Cluster Autoscaler*:: +The [.noloc]`Kubernetes` Cluster Autoscaler automatically adjusts the number of nodes in your cluster when pods fail or are rescheduled onto other nodes. The Cluster Autoscaler uses Auto Scaling groups. For more information, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md[Cluster Autoscaler on {aws}]. diff --git a/latest/ug/clusters/cluster-endpoint.adoc b/latest/ug/clusters/cluster-endpoint.adoc new file mode 100644 index 00000000..dc1096ac --- /dev/null +++ b/latest/ug/clusters/cluster-endpoint.adoc @@ -0,0 +1,253 @@ +//!!NODE_ROOT
+[.topic] +[[cluster-endpoint,cluster-endpoint.title]] += Control network access to cluster API server endpoint +:info_doctype: section +:info_title: Control network access to cluster API server endpoint +:info_titleabbrev: Configure endpoint access +:info_abstract: Learn how to enable private access and limit public access to the Amazon EKS cluster Kubernetes API server endpoint for enhanced security with your Amazon EKS cluster. + +include::../attributes.txt[] + +[abstract] +-- +Learn how to enable private access and limit public access to the Amazon EKS cluster Kubernetes API server endpoint for enhanced security with your Amazon EKS cluster. +-- + +This topic helps you to enable private access for your Amazon EKS cluster's [.noloc]`Kubernetes` API server endpoint and limit, or completely disable, public access from the internet. + +When you create a new cluster, Amazon EKS creates an endpoint for the managed [.noloc]`Kubernetes` API server that you use to communicate with your cluster (using [.noloc]`Kubernetes` management tools such as `kubectl`). By default, this API server endpoint is public to the internet, and access to the API server is secured using a combination of {aws} Identity and Access Management (IAM) and native [.noloc]`Kubernetes` https://kubernetes.io/docs/reference/access-authn-authz/rbac/[Role Based Access Control] (RBAC). This endpoint is known as the _cluster public endpoint_. Also there is a _cluster private endpoint_. For more information about the cluster private endpoint, see the following section <>. + +[[cluster-endpoint-ipv6,cluster-endpoint-ipv6.title]] +== `IPv6` cluster endpoint format + +EKS creates a unique dual-stack endpoint in the following format for new `IPv6` clusters that are made after October 2024. An _IPv6 cluster_ is a cluster that you select `IPv6` in the IP family (`ipFamily`) setting of the cluster. + +==== +[role="tablist"] +{aws}:: +EKS cluster public/private endpoint: +`eks-cluster.[.replaceable]``region``.api.aws` + +{aws} GovCloud (US):: +EKS cluster public/private endpoint: +`eks-cluster.[.replaceable]``region``.api.aws` + +{amazon-web-services} in China:: +EKS cluster public/private endpoint: +`eks-cluster.[.replaceable]``region``.api.amazonwebservices.com.cn` + +==== + +[NOTE] +==== +The dual-stack cluster endpoint was introduced in October 2024. For more information about `IPv6` clusters, see <>. Clusters made before October 2024, use following endpoint format instead. +==== + +[[cluster-endpoint-ipv4,cluster-endpoint-ipv4.title]] +== `IPv4` cluster endpoint format + +EKS creates a unique endpoint in the following format for each cluster that select `IPv4` in the IP family (ipFamily) setting of the cluster: + +==== +[role="tablist"] +{aws}:: +EKS cluster public/private endpoint +`eks-cluster.[.replaceable]``region``.eks.amazonaws.com` + +{aws} GovCloud (US):: +EKS cluster public/private endpoint +`eks-cluster.[.replaceable]``region``.eks.amazonaws.com` + +{amazon-web-services} in China:: +EKS cluster public/private endpoint +`eks-cluster.[.replaceable]``region``.api.amazonwebservices.com.cn` + +==== + +[NOTE] +==== +Before October 2024, `IPv6` clusters used this endpoint format also. For those clusters, both the public endpoint and the private endpoint have only `IPv4` addresses resolve from this endpoint. +==== + +[[cluster-endpoint-private,cluster-endpoint-private.title]] +== Cluster private endpoint + +You can enable private access to the [.noloc]`Kubernetes` API server so that all communication between your nodes and the API server stays within your VPC. You can limit the IP addresses that can access your API server from the internet, or completely disable internet access to the API server. + +[NOTE] +==== + +Because this endpoint is for the [.noloc]`Kubernetes` API server and not a traditional {aws} PrivateLink endpoint for communicating with an {aws} API, it doesn't appear as an endpoint in the Amazon VPC console. + +==== + +When you enable endpoint private access for your cluster, Amazon EKS creates a Route 53 private hosted zone on your behalf and associates it with your cluster's VPC. This private hosted zone is managed by Amazon EKS, and it doesn't appear in your account's Route 53 resources. In order for the private hosted zone to properly route traffic to your API server, your VPC must have `enableDnsHostnames` and `enableDnsSupport` set to `true`, and the DHCP options set for your VPC must include `AmazonProvidedDNS` in its domain name servers list. For more information, see link:vpc/latest/userguide/vpc-dns.html#vpc-dns-updating[Updating DNS support for your VPC,type="documentation"] in the _Amazon VPC User Guide_. + +You can define your API server endpoint access requirements when you create a new cluster, and you can update the API server endpoint access for a cluster at any time. + +[[modify-endpoint-access,modify-endpoint-access.title]] +== Modifying cluster endpoint access + +Use the procedures in this section to modify the endpoint access for an existing cluster. The following table shows the supported API server endpoint access combinations and their associated behavior. + +[cols="1,1,1", options="header"] +|=== +|Endpoint public access +|Endpoint private access +|Behavior + + +|Enabled +|Disabled +a| + +* This is the default behavior for new Amazon EKS clusters. +* [.noloc]`Kubernetes` API requests that originate from within your cluster's VPC (such as node to control plane communication) leave the VPC but not Amazon's network. +* Your cluster API server is accessible from the internet. You can, optionally, limit the CIDR blocks that can access the public endpoint. If you limit access to specific CIDR blocks, then it is recommended that you also enable the private endpoint, or ensure that the CIDR blocks that you specify include the addresses that nodes and Fargate [.noloc]`Pods` (if you use them) access the public endpoint from. + + +|Enabled +|Enabled +a| + +* [.noloc]`Kubernetes` API requests within your cluster's VPC (such as node to control plane communication) use the private VPC endpoint. +* Your cluster API server is accessible from the internet. You can, optionally, limit the CIDR blocks that can access the public endpoint. +* If you are using hybrid nodes with your Amazon EKS cluster, it is not recommended to have both Public and Private cluster endpoint access enabled. Because your hybrid nodes are running outside of your VPC, they will resolve the cluster endpoint to the public IP addresses. It is recommended to use either Public or Private cluster endpoint access for clusters with hybrid nodes. + + +|Disabled +|Enabled +a| + +* All traffic to your cluster API server must come from within your cluster's VPC or a link:whitepapers/latest/aws-vpc-connectivity-options/introduction.html[connected network,type="documentation"]. +* There is no public access to your API server from the internet. Any `kubectl` commands must come from within the VPC or a connected network. For connectivity options, see <>. +* The cluster's API server endpoint is resolved by public DNS servers to a private IP address from the VPC. In the past, the endpoint could only be resolved from within the VPC. ++ +If your endpoint does not resolve to a private IP address within the VPC for an existing cluster, you can: ++ +** Enable public access and then disable it again. You only need to do so once for a cluster and the endpoint will resolve to a private IP address from that point forward. +** <> your cluster. + +|=== + + +You can modify your cluster API server endpoint access using the {aws-management-console} or {aws} CLI. + + +== Configure endpoint access - {aws} console + +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. Choose the name of the cluster to display your cluster information. +. Choose the *Networking* tab and choose *Update*. +. For *Private access*, choose whether to enable or disable private access for your cluster's [.noloc]`Kubernetes` API server endpoint. If you enable private access, [.noloc]`Kubernetes` API requests that originate from within your cluster's VPC use the private VPC endpoint. You must enable private access to disable public access. +. For *Public access*, choose whether to enable or disable public access for your cluster's [.noloc]`Kubernetes` API server endpoint. If you disable public access, your cluster's [.noloc]`Kubernetes` API server can only receive requests from within the cluster VPC. +. (Optional) If you've enabled *Public access*, you can specify which addresses from the internet can communicate to the public endpoint. Select *Advanced Settings*. Enter a CIDR block, such as [.replaceable]`203.0.113.5/32`. The block cannot include https://en.wikipedia.org/wiki/Reserved_IP_addresses[reserved addresses]. You can enter additional blocks by selecting *Add Source*. There is a maximum number of CIDR blocks that you can specify. For more information, see <>. If you specify no blocks, then the public API server endpoint receives requests from all (`0.0.0.0/0`) IP addresses. If you restrict access to your public endpoint using CIDR blocks, it is recommended that you also enable private endpoint access so that nodes and Fargate [.noloc]`Pods` (if you use them) can communicate with the cluster. Without the private endpoint enabled, your public access endpoint CIDR sources must include the egress sources from your VPC. For example, if you have a node in a private subnet that communicates to the internet through a NAT Gateway, you will need to add the outbound IP address of the NAT gateway as part of an allowed CIDR block on your public endpoint. +. Choose *Update* to finish. + + +== Configure endpoint access - {aws} CLI + +Complete the following steps using the {aws} CLI version `1.27.160` or later. You can check your current version with `aws --version`. To install or upgrade the {aws} CLI, see link:cli/latest/userguide/cli-chap-install.html[Installing the {aws} CLI,type="documentation"]. + +. Update your cluster API server endpoint access with the following {aws} CLI command. Substitute your cluster name and desired endpoint access values. If you set `endpointPublicAccess=true`, then you can (optionally) enter single CIDR block, or a comma-separated list of CIDR blocks for `publicAccessCidrs`. The blocks cannot include https://en.wikipedia.org/wiki/Reserved_IP_addresses[reserved addresses]. If you specify CIDR blocks, then the public API server endpoint will only receive requests from the listed blocks. There is a maximum number of CIDR blocks that you can specify. For more information, see <>. If you restrict access to your public endpoint using CIDR blocks, it is recommended that you also enable private endpoint access so that nodes and Fargate [.noloc]`Pods` (if you use them) can communicate with the cluster. Without the private endpoint enabled, your public access endpoint CIDR sources must include the egress sources from your VPC. For example, if you have a node in a private subnet that communicates to the internet through a NAT Gateway, you will need to add the outbound IP address of the NAT gateway as part of an allowed CIDR block on your public endpoint. If you specify no CIDR blocks, then the public API server endpoint receives requests from all (0.0.0.0/0) IP addresses. ++ +NOTE: The following command enables private access and public access from a single IP address for the API server endpoint. Replace [.replaceable]`203.0.113.5/32` with a single CIDR block, or a comma-separated list of CIDR blocks that you want to restrict network access to. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks update-cluster-config \ + --region region-code \ + --name my-cluster \ + --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true +---- ++ +An example output is as follows. ++ +[source,json,subs="verbatim,attributes"] +---- +{ + "update": { + "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", + "status": "InProgress", + "type": "EndpointAccessUpdate", + "params": [ + { + "type": "EndpointPublicAccess", + "value": "true" + }, + { + "type": "EndpointPrivateAccess", + "value": "true" + }, + { + "type": "publicAccessCidrs", + "value": "[\203.0.113.5/32\"]" + } + ], + "createdAt": 1576874258.137, + "errors": [] + } +} +---- +. Monitor the status of your endpoint access update with the following command, using the cluster name and update ID that was returned by the previous command. Your update is complete when the status is shown as `Successful`. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-update \ + --region region-code \ + --name my-cluster \ + --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000 +---- ++ +An example output is as follows. ++ +[source,json,subs="verbatim,attributes"] +---- +{ + "update": { + "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", + "status": "Successful", + "type": "EndpointAccessUpdate", + "params": [ + { + "type": "EndpointPublicAccess", + "value": "true" + }, + { + "type": "EndpointPrivateAccess", + "value": "true" + }, + { + "type": "publicAccessCidrs", + "value": "[\203.0.113.5/32\"]" + } + ], + "createdAt": 1576874258.137, + "errors": [] + } +} +---- + + +[[private-access,private-access.title]] +== Accessing a private only API server + +If you have disabled public access for your cluster's [.noloc]`Kubernetes` API server endpoint, you can only access the API server from within your VPC or a link:whitepapers/latest/aws-vpc-connectivity-options/introduction.html[connected network,type="documentation"]. Here are a few possible ways to access the [.noloc]`Kubernetes` API server endpoint: + + + +*Connected network*:: +Connect your network to the VPC with an link:vpc/latest/tgw/what-is-transit-gateway.html[{aws} transit gateway,type="documentation"] or other link:aws-technical-content/latest/aws-vpc-connectivity-options/introduction.html[connectivity,type="documentation"] option and then use a computer in the connected network. You must ensure that your Amazon EKS control plane security group contains rules to allow ingress traffic on port 443 from your connected network. + + +*Amazon EC2 bastion host*:: +You can launch an Amazon EC2 instance into a public subnet in your cluster's VPC and then log in via SSH into that instance to run `kubectl` commands. For more information, see link:quickstart/architecture/linux-bastion/[Linux bastion hosts on {aws},type="marketing"]. You must ensure that your Amazon EKS control plane security group contains rules to allow ingress traffic on port 443 from your bastion host. For more information, see <>. ++ +When you configure `kubectl` for your bastion host, be sure to use {aws} credentials that are already mapped to your cluster's RBAC configuration, or add the link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] that your bastion will use to the RBAC configuration before you remove endpoint public access. For more information, see <> and <>. + + +*{aws} Cloud9 IDE*:: +{aws} Cloud9 is a cloud-based integrated development environment (IDE) that lets you write, run, and debug your code with just a browser. You can create an {aws} Cloud9 IDE in your cluster's VPC and use the IDE to communicate with your cluster. For more information, see link:cloud9/latest/user-guide/create-environment.html[Creating an environment in {aws} Cloud9,type="documentation"]. You must ensure that your Amazon EKS control plane security group contains rules to allow ingress traffic on port 443 from your IDE security group. For more information, see <>. ++ +When you configure `kubectl` for your {aws} Cloud9 IDE, be sure to use {aws} credentials that are already mapped to your cluster's RBAC configuration, or add the IAM principal that your IDE will use to the RBAC configuration before you remove endpoint public access. For more information, see <> and <>. diff --git a/latest/ug/clusters/cluster-insights.adoc b/latest/ug/clusters/cluster-insights.adoc new file mode 100644 index 00000000..fa079624 --- /dev/null +++ b/latest/ug/clusters/cluster-insights.adoc @@ -0,0 +1,201 @@ +//!!NODE_ROOT
+[.topic] +[[cluster-insights,cluster-insights.title]] += Prepare for [.noloc]`Kubernetes` version upgrades with cluster insights +:info_titleabbrev: Cluster insights +:keywords: cluster, upgrade, insights + +include::../attributes.txt[] + +[abstract] +-- +Discover how Amazon EKS cluster insights help monitor and resolve potential [.noloc]`Kubernetes` version upgrade issues for enhanced reliability and faster adoption of new capabilities. +-- + +Amazon EKS cluster insights provide recommendations to help you follow Amazon EKS and [.noloc]`Kubernetes` best practices. Every Amazon EKS cluster undergoes automatic, recurring checks against an Amazon EKS curated list of insights. These insight checks are fully managed by Amazon EKS and offer recommendations on how to address any findings. + +* Before updating your cluster [.noloc]`Kubernetes` version, check the *Cluster insights* tab of the observability dashboard in the link:eks/home#/clusters[Amazon EKS console.,type="console"] +* If your cluster has identified issues, review them and make appropriate fixes. The issues include links to Amazon EKS and [.noloc]`Kubernetes`. +* After fixing issues, wait for the cluster insights to refresh. If all issues have been resolved, <> + +Amazon EKS returns insights related to [.noloc]`Kubernetes` version upgrade readiness. Upgrade insights identify possible issues that could impact [.noloc]`Kubernetes` cluster upgrades. This minimizes the effort that administrators spend preparing for upgrades and increases the reliability of applications on newer [.noloc]`Kubernetes` versions. Clusters are automatically scanned by Amazon EKS against a list of possible [.noloc]`Kubernetes` version upgrade impacting issues. Amazon EKS frequently updates the list of insight checks based on reviews of changes made in each [.noloc]`Kubernetes` version release. + +Amazon EKS upgrade insights speed up the testing and verification process for new versions. They also allow cluster administrators and application developers to leverage the newest [.noloc]`Kubernetes` capabilities by highlighting concerns and offering remediation advice. To see the list of insight checks performed and any relevant issues that Amazon EKS has identified, you can call the Amazon EKS `ListInsights` API operation or look in the Amazon EKS console. + +Cluster insights update periodically. You cannot manually refresh cluster insights. If you fix a cluster issue, it will take some time for cluster insights to update. To determine if a fix was successful, compare the time the change deployed to the "last refresh time" of the cluster insight. + +[[cluster-insights-console,cluster-insights-console.title]] +== View cluster insights (Console) +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. From the cluster list, choose the name of the Amazon EKS cluster for which you want to see the insights. +. Choose *View dashboard*. +. Choose the *Cluster Insights* tab. +. In the *Upgrade Insights* table, you will see the following columns: ++ +** *Name* – The check that was performed by Amazon EKS against the cluster. +** *Insight status* – An insight with a status of "Error" typically means the impacted [.noloc]`Kubernetes` version is N+1 of the current cluster version, while a status of "Warning" means the insight applies to a future [.noloc]`Kubernetes` version N+2 or more. An insight with status of "Passing" means Amazon EKS has not found any issues associated with this insight check in your cluster. An insight status of "Unknown" means Amazon EKS is unable to determine if your cluster is impacted by this insight check. +** *Version* – The [.noloc]`Kubernetes` version that the insight checked for possible issues. +** *Last refresh time* – The time the status of the insight was last refreshed for this cluster. +** *Last transition time* – The time the status of this insight last changed. +** *Description* – Information from the insight check, which includes the alert and recommended actions for remediation. + + +[[cluster-insights-cli,cluster-insights-cli.title]] +== View cluster insights ({aws} CLI) +. Determine which cluster you would like to check for insights. The following command lists the insights for a specified cluster. Make the following modifications to the command as needed and then run the modified command: ++ +** Replace [.replaceable]`region-code` with the code for your {aws} Region. +** Replace [.replaceable]`my-cluster` with the name of your cluster. ++ +[source,bash,subs="verbatim,attributes,quotes"] +---- +aws eks list-insights --region [.replaceable]`region-code` --cluster-name [.replaceable]`my-cluster` +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +{ +"insights": + [ + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", + "name": "Deprecated APIs removed in Kubernetes vX.XX", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "X.XX", + "lastRefreshTime": 1734557315.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks for usage of deprecated APIs that are scheduled for removal in Kubernetes vX.XX. Upgrading your cluster before migrating to the updated APIs supported by vX.XX could cause application impact.", + "insightStatus": + { + "status": "PASSING", + "reason": "No deprecated API usage detected within the last 30 days.", + }, + }, + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", + "name": "Kubelet version skew", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "X.XX", + "lastRefreshTime": 1734557309.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks for kubelet versions of worker nodes in the cluster to see if upgrade would cause non compliance with supported Kubernetes kubelet version skew policy.", + "insightStatus": + { + "status": "UNKNOWN", + "reason": "Unable to determine status of node kubelet versions.", + }, + }, + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333", + "name": "Deprecated APIs removed in Kubernetes vX.XX", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "X.XX", + "lastRefreshTime": 1734557315.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks for usage of deprecated APIs that are scheduled for removal in Kubernetes vX.XX. Upgrading your cluster before migrating to the updated APIs supported by vX.XX could cause application impact.", + "insightStatus": + { + "status": "PASSING", + "reason": "No deprecated API usage detected within the last 30 days.", + }, + }, + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", + "name": "Cluster health issues", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "X.XX", + "lastRefreshTime": 1734557314.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks for any cluster health issues that prevent successful upgrade to the next Kubernetes version on EKS.", + "insightStatus": + { + "status": "PASSING", + "reason": "No cluster health issues detected.", + }, + }, + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", + "name": "EKS add-on version compatibility", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "X.XX", + "lastRefreshTime": 1734557314.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks version of installed EKS add-ons to ensure they are compatible with the next version of Kubernetes. ", + "insightStatus": { "status": "PASSING", "reason": "All installed EKS add-on versions are compatible with next Kubernetes version."}, + }, + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLEccccc", + "name": "kube-proxy version skew", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "X.XX", + "lastRefreshTime": 1734557314.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks version of kube-proxy in cluster to see if upgrade would cause non compliance with supported Kubernetes kube-proxy version skew policy.", + "insightStatus": + { + "status": "PASSING", + "reason": "kube-proxy versions match the cluster control plane version.", + }, + }, + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLEddddd", + "name": "Deprecated APIs removed in Kubernetes vX.XX", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "X.XX", + "lastRefreshTime": 1734557315.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks for usage of deprecated APIs that are scheduled for removal in Kubernetes vX.XX. Upgrading your cluster before migrating to the updated APIs supported by vX.XX could cause application impact.", + "insightStatus": + { + "status": "PASSING", + "reason": "No deprecated API usage detected within the last 30 days.", + }, + }, + ], +"nextToken": null, +} +---- +. For descriptive information about the insight, run the following command. Make the following modifications to the command as needed and then run the modified command: ++ +** Replace [.replaceable]`region-code` with the code for your {aws} Region. +** Replace [.replaceable]`a1b2c3d4-5678-90ab-cdef-EXAMPLE22222` with an insight ID retrieved from listing the cluster insights. +** Replace [.replaceable]`my-cluster` with the name of your cluster. ++ +[source,bash,subs="verbatim,attributes,quotes"] +---- +aws eks describe-insight --region region-code --id [.replaceable]`a1b2c3d4-5678-90ab-cdef-EXAMPLE22222` --cluster-name my-cluster +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +{ + "insight": + { + "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", + "name": "Kubelet version skew", + "category": "UPGRADE_READINESS", + "kubernetesVersion": "1.27", + "lastRefreshTime": 1734557309.000, + "lastTransitionTime": 1734557309.000, + "description": "Checks for kubelet versions of worker nodes in the cluster to see if upgrade would cause non compliance with supported Kubernetes kubelet version skew policy.", + "insightStatus": + { + "status": "UNKNOWN", + "reason": "Unable to determine status of node kubelet versions.", + }, + "recommendation": "Upgrade your worker nodes to match the Kubernetes version of your cluster control plane.", + "additionalInfo": + { + "Kubelet version skew policy": "https://kubernetes.io/releases/version-skew-policy/#kubelet", + "Updating a managed node group": "https://docs.aws.amazon.com/eks/latest/userguide/update-managed-node-group.html", + }, + "resources": [], + "categorySpecificSummary": + { "deprecationDetails": [], "addonCompatibilityDetails": [] }, + }, +} +---- diff --git a/latest/ug/clusters/clusters.adoc b/latest/ug/clusters/clusters.adoc new file mode 100644 index 00000000..0235a566 --- /dev/null +++ b/latest/ug/clusters/clusters.adoc @@ -0,0 +1,93 @@ +//!!NODE_ROOT +include::../attributes.txt[] +[[clusters,clusters.title]] += Organize workloads with Amazon EKS clusters +:doctype: book +:sectnums: +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_doctype: chapter +:info_title: Organize workloads with Amazon EKS clusters +:info_titleabbrev: Clusters + +An Amazon EKS cluster consists of two primary components: + +* The Amazon EKS control plane +* Amazon EKS nodes that are registered with the control plane + +The Amazon EKS control plane consists of control plane nodes that run the [.noloc]`Kubernetes` software, such as `etcd` and the [.noloc]`Kubernetes` API server. The control plane runs in an account managed by {aws}, and the [.noloc]`Kubernetes` API is exposed via the Amazon EKS endpoint associated with your cluster. Each Amazon EKS cluster control plane is single-tenant and unique, and runs on its own set of Amazon EC2 instances. + +All of the data stored by the `etcd` nodes and associated Amazon EBS volumes is encrypted using {aws} KMS. The cluster control plane is provisioned across multiple Availability Zones and fronted by an Elastic Load Balancing Network Load Balancer. Amazon EKS also provisions elastic network interfaces in your VPC subnets to provide connectivity from the control plane instances to the nodes (for example, to support `kubectl exec` `logs` `proxy` data flows). + +[IMPORTANT] +==== + +In the Amazon EKS environment, `etcd` storage is limited to 8 GiB as per https://etcd.io/docs/v3.5/dev-guide/limit/#storage-size-limit[upstream] guidance. You can monitor a metric for the current database size by running the following command. If your cluster has a [.noloc]`Kubernetes` version below `1.28`, replace [.replaceable]`apiserver_storage_size_bytes` with the following: + + + +* [.noloc]`Kubernetes` version `1.27` and `1.26` – `apiserver_storage_db_total_size_in_bytes` +* [.noloc]`Kubernetes` version `1.25` and below – `etcd_db_total_size_in_bytes` + +[source,bash,subs="verbatim,attributes"] +---- +kubectl get --raw=/metrics | grep "apiserver_storage_size_bytes" +---- + +==== + +Amazon EKS nodes run in your {aws} account and connect to your cluster's control plane via the API server endpoint and a certificate file that is created for your cluster. + +[NOTE] +==== + + +* You can find out how the different components of Amazon EKS work in <>. +* For connected clusters, see <>. + +==== + +[.topiclist] +[[Topic List]] + +include::create-cluster-auto.adoc[leveloffset=+1] + +include::create-cluster.adoc[leveloffset=+1] + + +include::cluster-insights.adoc[leveloffset=+1] + + +include::update-cluster.adoc[leveloffset=+1] + + +include::delete-cluster.adoc[leveloffset=+1] + + +include::cluster-endpoint.adoc[leveloffset=+1] + + +include::windows-support.adoc[leveloffset=+1] + + +include::disable-windows-support.adoc[leveloffset=+1] + + +include::private-clusters.adoc[leveloffset=+1] + + +include::kubernetes-versions.adoc[leveloffset=+1] + + +include::platform-versions.adoc[leveloffset=+1] + + +include::autoscaling.adoc[leveloffset=+1] + +include::zone-shift.adoc[leveloffset=+1] + +include::zone-shift-enable.adoc[leveloffset=+1] diff --git a/latest/ug/clusters/create-cluster-auto.adoc b/latest/ug/clusters/create-cluster-auto.adoc new file mode 100644 index 00000000..32a496cf --- /dev/null +++ b/latest/ug/clusters/create-cluster-auto.adoc @@ -0,0 +1,336 @@ +//!!NODE_ROOT
+ +[.topic] +[[create-cluster-auto,create-cluster-auto.title]] += Create an Amazon EKS Auto Mode cluster +:info_doctype: section +:info_title: Create an Amazon EKS Auto Mode cluster +:info_titleabbrev: Create auto cluster +:info_abstract: Learn how to create an Amazon EKS Auto Mode cluster to run Kubernetes applications, including prerequisites, networking options, and add-on configurations. +:idprefix: id_ + +include::../attributes.txt[] + + +[abstract] +-- +Learn how to create an Amazon EKS Auto Mode cluster to run Kubernetes applications, including prerequisites, networking options, and add-on configurations. +-- + +This topic provides detailed instructions for creating an Amazon EKS Auto Mode cluster using advanced configuration options. It covers prerequisites, networking options, and add-on configurations. The process includes setting up IAM roles, configuring cluster settings, specifying networking parameters, and selecting add-ons. Users can create clusters using either the {aws} Management Console or the {aws} CLI, with step-by-step guidance provided for both methods. + +For users seeking a less complex setup process, refer to the following for simplified cluster creation steps: + +* <> +* <> +* <> + +This advanced configuration guide is intended for users who require more granular control over their EKS Auto Mode cluster setup and are familiar with Amazon EKS concepts and requirements. Before proceeding with the advanced configuration, ensure you have met all prerequisites and have a thorough understanding of the networking and IAM requirements for EKS Auto Mode clusters. + +EKS Auto Mode requires additional IAM permissions. For more information, see: + +* <> +* <> + +[NOTE] +==== +If you want to create a cluster without EKS Auto Mode, see <>. + +This topic covers advanced configuration. If you are looking to get started with EKS Auto Mode, see <>. +==== + + +== Prerequisites + +* An existing VPC and subnets that meet <>. Before you deploy a cluster for production use, we recommend that you have a thorough understanding of the VPC and subnet requirements. If you don't have a VPC and subnets, you can create them using an <>. +* The `kubectl` command line tool is installed on your device or {aws} CloudShell. The version can be the same as or up to one minor version earlier or later than the [.noloc]`Kubernetes` version of your cluster. For example, if your cluster version is `1.29`, you can use `kubectl` version `1.28`, `1.29`, or `1.30` with it. To install or upgrade `kubectl`, see <>. +* Version `2.12.3` or later or version `1.27.160` or later of the {aws} Command Line Interface ({aws} CLI) installed and configured on your device or {aws} CloudShell. To check your current version, use `aws --version`. To install the latest version, see link:cli/latest/userguide/cli-chap-install.html[Installing, updating, and uninstalling the {aws} CLI,type="documentation"] and link:cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config[Quick configuration with aws configure,type="documentation"] in the _{aws} Command Line Interface User Guide_. +* An link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] with permissions to create and modify EKS and IAM resources. + +== Create cluster - {aws} console + + +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. Choose *Add cluster* and then choose *Create*. +. Under _Configuration options_, select *Custom configuration*. +** This topic covers custom configuration. For information about Quick configuration, see <>. +. Confirm *Use EKS Auto Mode* is enabled. +** This topic covers creating clusters with EKS Auto Mode. For more information about creating clusters without EKS Auto Mode, see <>. +. On the *Configure cluster* page, enter the following fields: ++ +** *Name* – A name for your cluster. The name can contain only alphanumeric characters (case-sensitive), hyphens, and underscores. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the {aws} Region and {aws} account that you're creating the cluster in. +** *Cluster IAM role* – Choose the Amazon EKS cluster IAM role that you created to allow the [.noloc]`Kubernetes` control plane to manage {aws} resources on your behalf. If you haven't previously created a Cluster IAM role for EKS Auto Mode, select the *Create recommended role* button to create the role with the required permissions in the IAM console. +** *[.noloc]`Kubernetes` version* – The version of [.noloc]`Kubernetes` to use for your cluster. We recommend selecting the latest version, unless you need an earlier version. +** *Upgrade policy* -- The [.noloc]`Kubernetes` version policy you would like to set for your cluster. If you want your cluster to only run on a standard support version, you can choose *Standard*. If you want your cluster to enter extended support at the end of standard support for a version, you can choose *Extended*. If you select a [.noloc]`Kubernetes` version that is currently in extended support, you can not select standard support as an option. +. In the *Auto Mode Compute* section of the configure cluster page, enter the following fields: +** *Node pools* -- Determine if you want to use the build in node pools. For more information, see <>. +** *Node IAM role* -- If you enable any of the built-in node pools, you need to select a Node IAM Role. EKS Auto Mode will assign this role to new nodes. You cannot change this value after the cluster is created. If you haven't previously created a Node IAM role for EKS Auto Mode, select the Create recommended role button to create the role with the required permissions. For more information about this role, see <>. +. In the *Cluster access* section of the configure cluster page, enter the following fields: +** *Bootstrap cluster administrator access* -- The cluster creator is automatically a Kubernetes administrator. If you want to disable this, select *Disallow cluster administrator access*. +** *Cluster authentication mode* -- EKS Auto Mode requires EKS access entries, the EKS API authentication mode. You can optionally enable the `ConfigMap` authentication mode by selecting *EKS API and ConfigMap*. +. Enter the remaining fields on the configure cluster page: +** *Secrets encryption* – (Optional) Choose to enable secrets encryption of [.noloc]`Kubernetes` secrets using a KMS key. You can also enable this after you create your cluster. Before you enable this capability, make sure that you're familiar with the information in xref:enable-kms[Encrypt Kubernetes secrets with {aws} KMS on existing clusters,linkend=enable-kms]. +** *ARC Zonal shift* -- EKS Auto Mode does not support Arc Zonal shift. +** *Tags* – (Optional) Add any tags to your cluster. For more information, see <>. ++ +When you're done with this page, choose *Next*. +. On the *Specify networking* page, select values for the following fields: ++ +** *VPC* – Choose an existing VPC that meets xref:network-requirements-vpc[Amazon EKS VPC requirements,linkend=network-requirements-vpc] to create your cluster in. Before choosing a VPC, we recommend that you're familiar with all of the requirements and considerations in xref:network-reqs[View Amazon EKS networking requirements for VPC and subnets,linkend=network-reqs]. You can't change which VPC you want to use after cluster creation. If no VPCs are listed, then you need to create one first. For more information, see <>. +** *Subnets* – By default, all available subnets in the VPC specified in the previous field are preselected. You must select at least two. ++ +The subnets that you choose must meet the <>. Before selecting subnets, we recommend that you're familiar with all of the <>. ++ +*Security groups* – (Optional) Specify one or more security groups that you want Amazon EKS to associate to the network interfaces that it creates. ++ +Whether you choose any security groups or not, Amazon EKS creates a security group that enables communication between your cluster and your VPC. Amazon EKS associates this security group, and any that you choose, to the network interfaces that it creates. For more information about the cluster security group that Amazon EKS creates, see <>. You can modify the rules in the cluster security group that Amazon EKS creates. +** *Choose cluster IP address family* – You can choose either *IPv4* and *IPv6*. ++ +[.noloc]`Kubernetes` assigns `IPv4` addresses to [.noloc]`Pods` and services, by default. Before deciding to use the `IPv6` family, make sure that you're familiar with all of the considerations and requirements in the <>, <>, <>, and <> topics. If you choose the `IPv6` family, you can't specify an address range for [.noloc]`Kubernetes` to assign `IPv6` service addresses from like you can for the `IPv4` family. [.noloc]`Kubernetes` assigns service addresses from the unique local address range (`fc00::/7`). ++ +** (Optional) Choose *Configure [.noloc]`Kubernetes` Service IP address range* and specify a *Service `IPv4` range*. ++ +Specifying your own range can help prevent conflicts between [.noloc]`Kubernetes` services and other networks peered or connected to your VPC. Enter a range in CIDR notation. For example: `10.2.0.0/16`. ++ +The CIDR block must meet the following requirements: ++ +*** Be within one of the following ranges: `10.0.0.0/8`, `172.16.0.0/12`, or `192.168.0.0/16`. +*** Have a minimum size of `/24` and a maximum size of `/12`. +*** Not overlap with the range of the VPC for your Amazon EKS resources. + ++ +You can only specify this option when using the `IPv4` address family and only at cluster creation. If you don't specify this, then [.noloc]`Kubernetes` assigns service IP addresses from either the `10.100.0.0/16` or `172.20.0.0/16` CIDR blocks. +** For *Cluster endpoint access*, select an option. After your cluster is created, you can change this option. Before selecting a non-default option, make sure to familiarize yourself with the options and their implications. For more information, see <>. ++ +When you're done with this page, choose *Next*. +. (Optional) On the *Configure observability* page, choose which *Metrics* and *Control plane logging* options to turn on. By default, each log type is turned off. ++ +** For more information about the [.noloc]`Prometheus` metrics option, see <>. +** For more information about the *Control plane logging* options, see <>. +** When you're done with this page, choose *Next*. +. On the *Select add-ons* page, choose the add-ons that you want to add to your cluster. You can choose as many *Amazon EKS add-ons* and *{aws} Marketplace add-ons* as you require. If the *{aws} Marketplace add-ons* that you want to install isn't listed, you can click the page numbering to view additional page results or search for available *{aws} Marketplace add-ons* by entering text in the search box. You can also filter by *category*, *vendor*, or *pricing model* and then choose the add-ons from the search results. When creating a cluster, you can view, select, and install any add-on that supports EKS Pod Identities as detailed in <>. +** EKS Auto Mode automates the functionality of certain add-ons. If you plan to deploy EKS Managed Node Groups to your EKS Auto Mode Cluster, select *Additional Amazon EKS Add-ons* and review the options. You may need to install add-ons such as CoreDNS and kube-proxy. EKS will only install the add-ons in this section on self-managed nodes and node groups. +** When you're done with this page, choose *Next*. +. On the *Configure selected add-ons settings* page, select the version that you want to install. You can always update to a later version after cluster creation. ++ +For add-ons that support EKS Pod Identities, you can use the console to automatically generate the role with the name, {aws} managed policy, and trust policy prepopulated specifically for the add-on. You can re-use existing roles or create new roles for supported add-ons. For the steps to use the console to create roles for add-ons that support EKS Pod Identities, see <<_create_add_on_console>>. If an add-on does not support EKS Pod Identity, a message displays with instructions to use the wizard to create the IAM roles for service accounts (IRSA) after the cluster is created. ++ +You can update the configuration of each add-on after cluster creation. For more information about configuring add-ons, see <>. When you're done with this page, choose *Next*. +. On the *Review and create* page, review the information that you entered or selected on the previous pages. If you need to make changes, choose *Edit*. When you're satisfied, choose *Create*. The *Status* field shows *CREATING* while the cluster is provisioned. ++ +NOTE: You might receive an error that one of the Availability Zones in your request doesn't have sufficient capacity to create an Amazon EKS cluster. If this happens, the error output contains the Availability Zones that can support a new cluster. Retry creating your cluster with at least two subnets that are located in the supported Availability Zones for your account. For more information, see <>. ++ +Cluster provisioning takes several minutes. + + +== Create cluster - {aws} CLI + +The following CLI instructions cover creating IAM resources and creating the cluster. + +=== Create an EKS Auto Mode Cluster IAM Role + +#### Step 1: Create the Trust Policy + +Create a trust policy that allows the Amazon EKS service to assume the role. Save the policy as `trust-policy.json`: + +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "eks.amazonaws.com" + }, + "Action": [ + "sts:AssumeRole", + "sts:TagSession" + ] + } + ] +} +``` + +#### Step 2: Create the IAM Role + +Use the trust policy to create the Cluster IAM Role: + +``` +aws iam create-role \ + --role-name AmazonEKSAutoClusterRole \ + --assume-role-policy-document file://trust-policy.json +``` + +#### Step 3: Note the Role ARN + +Retrieve and save the ARN of the new role for use in subsequent steps: + +``` +aws iam get-role --role-name AmazonEKSAutoClusterRole --query "Role.Arn" --output text +``` + +#### Step 4: Attach Required Policies + +Attach the following {aws} managed policies to the Cluster IAM Role to grant the necessary permissions: + +**AmazonEKSClusterPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy +``` + +**AmazonEKSComputePolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSComputePolicy +``` + +**AmazonEKSBlockStoragePolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy +``` + +**AmazonEKSLoadBalancingPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy +``` + +**AmazonEKSNetworkingPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoClusterRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy +``` + +### Create an EKS Auto Mode Node IAM Role + +#### Step 1: Create the Trust Policy + +Create a trust policy that allows the Amazon EKS service to assume the role. Save the policy as `node-trust-policy.json`: + +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ec2.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] +} +``` + +#### Step 2: Create the Node IAM Role + +Use the **node-trust-policy.json** file from the previous step to define which entities can assume the role. Run the following command to create the Node IAM Role: + +``` +aws iam create-role \ + --role-name AmazonEKSAutoNodeRole \ + --assume-role-policy-document file://node-trust-policy.json +``` + +#### Step 3: Note the Role ARN + +After creating the role, retrieve and save the ARN of the Node IAM Role. You will need this ARN in subsequent steps. Use the following command to get the ARN: + +``` +aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text +``` + +#### Step 4: Attach Required Policies + +Attach the following {aws} managed policies to the Node IAM Role to provide the necessary permissions: + +**AmazonEKSWorkerNodeMinimalPolicy**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoNodeRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy +``` + +**AmazonEC2ContainerRegistryPullOnly**: + +``` +aws iam attach-role-policy \ + --role-name AmazonEKSAutoNodeRole \ + --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly +``` + +=== Create cluster + +. Create your cluster with the command that follows. Before running the command, make the following replacements: ++ +** Replace [.replaceable]`region-code` with the {aws} Region that you want to create your cluster in. +** Replace [.replaceable]`my-cluster` with a name for your cluster. The name can contain only alphanumeric characters (case-sensitive), hyphens, and underscores. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the {aws} Region and {aws} account that you're creating the cluster in. +** Replace [.replaceable]`1.30` with any xref:kubernetes-versions[Amazon EKS supported version,linkend=kubernetes-versions]. +** Replace [.replaceable]`111122223333` with your account ID +** If you have created differently named IAM Roles for the Cluster and Node roles, replace the ARNs. +** Replace the values for `subnetIds` with your own. You can also add additional IDs. You must specify at least two subnet IDs. ++ +The subnets that you choose must meet the xref:network-requirements-subnets[Amazon EKS subnet requirements,linkend=network-requirements-subnets]. Before selecting subnets, we recommend that you're familiar with all of the xref:network-reqs[Amazon EKS VPC and subnet requirements and considerations,linkend=network-reqs]. +** If you don't want to specify a security group ID, remove `,securityGroupIds=sg-` from the command. If you want to specify one or more security group IDs, replace the values for `securityGroupIds` with your own. You can also add additional IDs. ++ +Whether you choose any security groups or not, Amazon EKS creates a security group that enables communication between your cluster and your VPC. Amazon EKS associates this security group, and any that you choose, to the network interfaces that it creates. For more information about the cluster security group that Amazon EKS creates, see <>. You can modify the rules in the cluster security group that Amazon EKS creates. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks create-cluster \ + --region region-code \ + --name my-cluster \ + --kubernetes-version 1.30 \ + --role-arn arn:aws:iam::111122223333:role/AmazonEKSAutoClusterRole \ + --resources-vpc-config '{"subnetIds": ["subnet-ExampleID1","subnet-ExampleID2"], "securityGroupIds": ["sg-ExampleID1"], "endpointPublicAccess": true, "endpointPrivateAccess": true}' \ + --compute-config '{"enabled": true, "nodeRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSAutoNodeRole", "nodePools": ["general-purpose", "system"]}' \ + --kubernetes-network-config '{"elasticLoadBalancing": {"enabled": true}}' \ + --storage-config '{"blockStorage": {"enabled": true}}' \ + --access-config '{"authenticationMode": "API"}' +---- ++ +NOTE: You might receive an error that one of the Availability Zones in your request doesn't have sufficient capacity to create an Amazon EKS cluster. If this happens, the error output contains the Availability Zones that can support a new cluster. Retry creating your cluster with at least two subnets that are located in the supported Availability Zones for your account. For more information, see <>. ++ +The following are optional settings that, if required, must be added to the previous command. You can only enable these options when you create the cluster, not after. +** If you want to specify which `IPv4` Classless Inter-domain Routing (CIDR) block [.noloc]`Kubernetes` assigns service IP addresses from, you must specify it by adding the `--kubernetes-network-config serviceIpv4Cidr=` to the following command. ++ +Specifying your own range can help prevent conflicts between [.noloc]`Kubernetes` services and other networks peered or connected to your VPC. Enter a range in CIDR notation. For example: `10.2.0.0/16`. ++ +The CIDR block must meet the following requirements: ++ +*** Be within one of the following ranges: `10.0.0.0/8`, `172.16.0.0/12`, or `192.168.0.0/16`. +*** Have a minimum size of `/24` and a maximum size of `/12`. +*** Not overlap with the range of the VPC for your Amazon EKS resources. ++ +You can only specify this option when using the `IPv4` address family and only at cluster creation. If you don't specify this, then [.noloc]`Kubernetes` assigns service IP addresses from either the `10.100.0.0/16` or `172.20.0.0/16` CIDR blocks. +** If you're creating a cluster and want the cluster to assign `IPv6` addresses to [.noloc]`Pods` and services instead of `IPv4` addresses, add `--kubernetes-network-config ipFamily=ipv6` to the following command. ++ +[.noloc]`Kubernetes` assigns `IPv4` addresses to [.noloc]`Pods` and services, by default. Before deciding to use the `IPv6` family, make sure that you're familiar with all of the considerations and requirements in the <>, <>, <>, and <> topics. If you choose the `IPv6` family, you can't specify an address range for [.noloc]`Kubernetes` to assign `IPv6` service addresses from like you can for the `IPv4` family. [.noloc]`Kubernetes` assigns service addresses from the unique local address range (`fc00::/7`). ++ +. It takes several minutes to provision the cluster. You can query the status of your cluster with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster --region region-code --name my-cluster --query "cluster.status" +---- + +== Next steps + +* <> +* <> +* <>. +* <>. +* <>. diff --git a/latest/ug/clusters/create-cluster.adoc b/latest/ug/clusters/create-cluster.adoc new file mode 100644 index 00000000..db3350e7 --- /dev/null +++ b/latest/ug/clusters/create-cluster.adoc @@ -0,0 +1,318 @@ +//!!NODE_ROOT
+ +[.topic] +[[create-cluster,create-cluster.title]] += Create an Amazon EKS cluster +:info_doctype: section +:info_title: Create an Amazon EKS cluster +:info_titleabbrev: Create a cluster +:info_abstract: Learn how to create an Amazon EKS cluster to run Kubernetes applications, including prerequisites, networking options, and add-on configurations. + +include::../attributes.txt[] + + +[abstract] +-- +Learn how to create an Amazon EKS cluster to run Kubernetes applications, including prerequisites, networking options, and add-on configurations. +-- + +[NOTE] +==== +This topic covers creating EKS clusters without EKS Auto Mode. + +For detailed instructions on creating an EKS Auto Mode cluster, see <>. + +To get started with EKS Auto Mode, see <>. +==== + + +This topic provides an overview of the available options and describes what to consider when you create an Amazon EKS cluster. If you need to create a cluster with your on-premises infrastructure as the compute for nodes, see <>. If this is your first time creating an Amazon EKS cluster, we recommend that you follow one of our guides in <>. These guides help you to create a simple, default cluster without expanding into all of the available options. + +== Prerequisites + +* An existing VPC and subnets that meet <>. Before you deploy a cluster for production use, we recommend that you have a thorough understanding of the VPC and subnet requirements. If you don't have a VPC and subnets, you can create them using an <>. +* The `kubectl` command line tool is installed on your device or {aws} CloudShell. The version can be the same as or up to one minor version earlier or later than the [.noloc]`Kubernetes` version of your cluster. For example, if your cluster version is `1.29`, you can use `kubectl` version `1.28`, `1.29`, or `1.30` with it. To install or upgrade `kubectl`, see <>. +* Version `2.12.3` or later or version `1.27.160` or later of the {aws} Command Line Interface ({aws} CLI) installed and configured on your device or {aws} CloudShell. To check your current version, use `aws --version | cut -d / -f2 | cut -d ' ' -f1`. Package managers such `yum`, `apt-get`, or [.noloc]`Homebrew` for [.noloc]`macOS` are often several versions behind the latest version of the {aws} CLI. To install the latest version, see link:cli/latest/userguide/cli-chap-install.html[Installing, updating, and uninstalling the {aws} CLI,type="documentation"] and link:cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config[Quick configuration with aws configure,type="documentation"] in the _{aws} Command Line Interface User Guide_. The {aws} CLI version that is installed in {aws} CloudShell might also be several versions behind the latest version. To update it, see link:cloudshell/latest/userguide/vm-specs.html#install-cli-software[Installing {aws} CLI to your home directory,type="documentation"] in the _{aws} CloudShell User Guide_. +* An link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] with permissions to `create` and `describe` an Amazon EKS cluster. For more information, see <> and <>. + +== Step 1: Create cluster IAM role + +. If you already have a cluster IAM role, or you're going to create your cluster with `eksctl`, then you can skip this step. By default, `eksctl` creates a role for you. ++ +. Run the following command to create an IAM trust policy JSON file. ++ +[source,json,subs="verbatim,attributes"] +---- +cat >eks-cluster-role-trust-policy.json <>. ++ +Attach the Amazon EKS managed policy named link:aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html#AmazonEKSClusterPolicy-json[AmazonEKSClusterPolicy,type="documentation"] to the role. To attach an IAM policy to an link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"], the principal that is attaching the policy must be assigned one of the following IAM actions (permissions): `iam:AttachUserPolicy` or `iam:AttachRolePolicy`. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam attach-role-policy --policy-arn {arn-aws}iam::aws:policy/AmazonEKSClusterPolicy --role-name myAmazonEKSClusterRole +---- + +== Step 2: Create cluster + +You can create a cluster by using: + +* xref:step2-eksctl[`eksctl`] +* xref:step2-console[the {aws-management-console}] +* xref:step2-cli[the {aws} CLI] + +[[step2-eksctl,step2-eksctl.title]] +=== Create cluster - eksctl + +. You need version `{eksctl-min-version}` or later of the `eksctl` command line tool installed on your device or {aws} CloudShell. To install or update `eksctl`, see https://eksctl.io/installation[Installation] in the `eksctl` documentation. +. Create an Amazon EKS `IPv4` cluster with the Amazon EKS default [.noloc]`Kubernetes` version in your default {aws} Region. Before running command, make the following replacements: +. Replace [.replaceable]`region-code` with the {aws} Region that you want to create your cluster in. +. Replace [.replaceable]`my-cluster` with a name for your cluster. The name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the {aws} Region and {aws} account that you're creating the cluster in. +. Replace [.replaceable]`1.29` with any xref:kubernetes-versions[Amazon EKS supported version,linkend=kubernetes-versions]. +. Change the values for `vpc-private-subnets` to meet your requirements. You can also add additional IDs. You must specify at least two subnet IDs. If you'd rather specify public subnets, you can change `--vpc-private-subnets` to `--vpc-public-subnets`. Public subnets have an associated route table with a route to an internet gateway, but private subnets don't have an associated route table. We recommend using private subnets whenever possible. ++ +The subnets that you choose must meet the <>. Before selecting subnets, we recommend that you're familiar with all of the <>. ++ +[source,bash,subs="verbatim,attributes"] +. Run the following command: ++ +---- +eksctl create cluster --name my-cluster --region region-code --version 1.29 --vpc-private-subnets subnet-ExampleID1,subnet-ExampleID2 --without-nodegroup +---- ++ +Cluster provisioning takes several minutes. While the cluster is being created, several lines of output appear. The last line of output is similar to the following example line. ++ +[source,bash,subs="verbatim,attributes"] +---- +[✓] EKS cluster "my-cluster" in "region-code" region is ready +---- +. Continue with <> + +==== Optional Settings + +To see the most options that you can specify when creating a cluster with `eksctl`, use the `eksctl create cluster --help` command. To see all the available options, you can use a `config` file. For more information, see https://eksctl.io/usage/creating-and-managing-clusters/#using-config-files[Using config files] and the https://eksctl.io/usage/schema/[config file schema] in the `eksctl` documentation. You can find https://github.com/weaveworks/eksctl/tree/master/examples[config file examples] on [.noloc]`GitHub`. + +The following are optional settings that, if required, must be added to the previous command. You can only enable these options when you create the cluster, not after. If you need to specify these options, you must create the cluster with an https://eksctl.io/usage/creating-and-managing-clusters/#using-config-files[eksctl config file] and specify the settings, rather than using the previous command. + +* If you want to specify one or more security groups that Amazon EKS assigns to the network interfaces that it creates, specify the https://eksctl.io/usage/schema/#vpc-securityGroup[securityGroup] option. ++ +Whether you choose any security groups or not, Amazon EKS creates a security group that enables communication between your cluster and your VPC. Amazon EKS associates this security group, and any that you choose, to the network interfaces that it creates. For more information about the cluster security group that Amazon EKS creates, see <>. You can modify the rules in the cluster security group that Amazon EKS creates. +* If you want to specify which `IPv4` Classless Inter-domain Routing (CIDR) block [.noloc]`Kubernetes` assigns service IP addresses from, specify the https://eksctl.io/usage/schema/#kubernetesNetworkConfig-serviceIPv4CIDR[serviceIPv4CIDR] option. ++ +Specifying your own range can help prevent conflicts between [.noloc]`Kubernetes` services and other networks peered or connected to your VPC. Enter a range in CIDR notation. For example: `10.2.0.0/16`. ++ +The CIDR block must meet the following requirements: ++ +** Be within one of the following ranges: `10.0.0.0/8`, `172.16.0.0/12`, or `192.168.0.0/16`. +** Have a minimum size of `/24` and a maximum size of `/12`. +** Not overlap with the range of the VPC for your Amazon EKS resources. ++ +You can only specify this option when using the `IPv4` address family and only at cluster creation. If you don't specify this, then [.noloc]`Kubernetes` assigns service IP addresses from either the `10.100.0.0/16` or `172.20.0.0/16` CIDR blocks. +* If you're creating cluster and want the cluster to assign `IPv6` addresses to [.noloc]`Pods` and services instead of `IPv4` addresses, specify the https://eksctl.io/usage/schema/#kubernetesNetworkConfig-ipFamily[ipFamily] option. ++ +[.noloc]`Kubernetes` assigns `IPv4` addresses to [.noloc]`Pods` and services, by default. Before deciding to use the `IPv6` family, make sure that you're familiar with all of the considerations and requirements in the xref:network-requirements-vpc[VPC requirements and considerations,linkend=network-requirements-vpc], xref:network-requirements-subnets[Subnet requirements and considerations,linkend=network-requirements-subnets], xref:sec-group-reqs[View Amazon EKS security group requirements for clusters,linkend=sec-group-reqs], and <> topics. If you choose the `IPv6` family, you can't specify an address range for [.noloc]`Kubernetes` to assign `IPv6` service addresses from like you can for the `IPv4` family. [.noloc]`Kubernetes` assigns service addresses from the unique local address range (`fc00::/7`). + +[[step2-console,step2-console.title]] +=== Create cluster - {aws} console + +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. Choose *Add cluster* and then choose *Create*. +. Under *Configuration options* select *Custom configuration* +** For information about quickly creating a cluster wih EKS Auto Mode, see <>. +. Under *EKS Auto Mode*, toggle *Use EKS Auto Mode* off. +** For information about creating an EKS Auto Mode cluster with custom configuration, see <>. +. On the *Configure cluster* page, enter the following fields: ++ +** *Name* – A name for your cluster. The name can contain only alphanumeric characters (case-sensitive), hyphens, and underscores. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the {aws} Region and {aws} account that you're creating the cluster in. +** *Cluster IAM role* – Choose the Amazon EKS cluster IAM role that you created to allow the [.noloc]`Kubernetes` control plane to manage {aws} resources on your behalf. +** *[.noloc]`Kubernetes` version* – The version of [.noloc]`Kubernetes` to use for your cluster. We recommend selecting the latest version, unless you need an earlier version. +** *Support type* -- The [.noloc]`Kubernetes` version policy you would like to set for your cluster. If you want your cluster to only run on a standard support version, you can choose *Standard support*. If you want your cluster to enter extended support at the end of standard support for a version, you can choose *Extended support*. If you select a [.noloc]`Kubernetes` version that is currently in extended support, you can not select standard support as an option. +** *Secrets encryption* – (Optional) Choose to enable secrets encryption of [.noloc]`Kubernetes` secrets using a KMS key. You can also enable this after you create your cluster. Before you enable this capability, make sure that you're familiar with the information in xref:enable-kms[Encrypt Kubernetes secrets with {aws} KMS on existing clusters,linkend=enable-kms]. +** *Tags* – (Optional) Add any tags to your cluster. For more information, see <>. +** *ARC Zonal shift* - (Optional) You can use Route53 Application Recovery controller to mitigate impaired availability zones. For more information, see <>. +. In the *Cluster access* section of the configure cluster page, enter the following fields: +** *Bootstrap cluster administrator access* -- The cluster creator is automatically a Kubernetes administrator. If you want to disable this, select *Disallow cluster administrator access*. +** *Cluster authentication mode* -- Determine how you want to grant IAM users and roles access to Kubernetes APIs. For more information, see <>. ++ +When you're done with this page, choose *Next*. +. On the *Specify networking* page, select values for the following fields: ++ +** *VPC* – Choose an existing VPC that meets xref:network-requirements-vpc[Amazon EKS VPC requirements,linkend=network-requirements-vpc] to create your cluster in. Before choosing a VPC, we recommend that you're familiar with all of the requirements and considerations in xref:network-reqs[View Amazon EKS networking requirements for VPC and subnets,linkend=network-reqs]. You can't change which VPC you want to use after cluster creation. If no VPCs are listed, then you need to create one first. For more information, see <>. +** *Subnets* – By default, all available subnets in the VPC specified in the previous field are preselected. You must select at least two. ++ +The subnets that you choose must meet the <>. Before selecting subnets, we recommend that you're familiar with all of the <>. ++ +*Security groups* – (Optional) Specify one or more security groups that you want Amazon EKS to associate to the network interfaces that it creates. ++ +Whether you choose any security groups or not, Amazon EKS creates a security group that enables communication between your cluster and your VPC. Amazon EKS associates this security group, and any that you choose, to the network interfaces that it creates. For more information about the cluster security group that Amazon EKS creates, see <>. You can modify the rules in the cluster security group that Amazon EKS creates. +** *Choose cluster IP address family* – You can choose either *IPv4* and *IPv6*. ++ +[.noloc]`Kubernetes` assigns `IPv4` addresses to [.noloc]`Pods` and services, by default. Before deciding to use the `IPv6` family, make sure that you're familiar with all of the considerations and requirements in the <>, <>, <>, and <> topics. If you choose the `IPv6` family, you can't specify an address range for [.noloc]`Kubernetes` to assign `IPv6` service addresses from like you can for the `IPv4` family. [.noloc]`Kubernetes` assigns service addresses from the unique local address range (`fc00::/7`). ++ +** (Optional) Choose *Configure [.noloc]`Kubernetes` Service IP address range* and specify a *Service `IPv4` range*. ++ +Specifying your own range can help prevent conflicts between [.noloc]`Kubernetes` services and other networks peered or connected to your VPC. Enter a range in CIDR notation. For example: `10.2.0.0/16`. ++ +The CIDR block must meet the following requirements: ++ +*** Be within one of the following ranges: `10.0.0.0/8`, `172.16.0.0/12`, or `192.168.0.0/16`. +*** Have a minimum size of `/24` and a maximum size of `/12`. +*** Not overlap with the range of the VPC for your Amazon EKS resources. + ++ +You can only specify this option when using the `IPv4` address family and only at cluster creation. If you don't specify this, then [.noloc]`Kubernetes` assigns service IP addresses from either the `10.100.0.0/16` or `172.20.0.0/16` CIDR blocks. +** For *Cluster endpoint access*, select an option. After your cluster is created, you can change this option. Before selecting a non-default option, make sure to familiarize yourself with the options and their implications. For more information, see <>. ++ +When you're done with this page, choose *Next*. +. (Optional) On the *Configure observability* page, choose which *Metrics* and *Control plane logging* options to turn on. By default, each log type is turned off. ++ +** For more information about the [.noloc]`Prometheus` metrics option, see <>. +** For more information about the *Control plane logging* options, see <>. + ++ +When you're done with this page, choose *Next*. +. On the *Select add-ons* page, choose the add-ons that you want to add to your cluster. Certain add-ons are pre-selected. You can choose as many *Amazon EKS add-ons* and *{aws} Marketplace add-ons* as you require. If the *{aws} Marketplace add-ons* that you want to install isn't listed, you can click the page numbering to view additional page results or search for available *{aws} Marketplace add-ons* by entering text in the search box. You can also filter by *category*, *vendor*, or *pricing model* and then choose the add-ons from the search results. When creating a cluster, you can view, select, and install any add-on that supports EKS Pod Identities as detailed in <>. ++ +When you're done with this page, choose *Next*. ++ +Some add-ons, such as Amazon VPC CNI, CoreDNS, and kube-proxy, are installed by default. If you disable any of the default add-ons, this may affect your ability to run Kubernetes applications. +. On the *Configure selected add-ons settings* page, select the version that you want to install. You can always update to a later version after cluster creation. ++ +For add-ons that support EKS Pod Identities, you can use the console to automatically generate the role with the name, {aws} managed policy, and trust policy prepopulated specifically for the add-on. You can re-use existing roles or create new roles for supported add-ons. For the steps to use the console to create roles for add-ons that support EKS Pod Identities, see <<_create_add_on_console>>. If an add-on does not support EKS Pod Identity, a message displays with instructions to use the wizard to create the IAM roles for service accounts (IRSA) after the cluster is created. ++ +You can update the configuration of each add-on after cluster creation. For more information about configuring add-ons, see <>. When you're done with this page, choose *Next*. +. On the *Review and create* page, review the information that you entered or selected on the previous pages. If you need to make changes, choose *Edit*. When you're satisfied, choose *Create*. The *Status* field shows *CREATING* while the cluster is provisioned. ++ +NOTE: You might receive an error that one of the Availability Zones in your request doesn't have sufficient capacity to create an Amazon EKS cluster. If this happens, the error output contains the Availability Zones that can support a new cluster. Retry creating your cluster with at least two subnets that are located in the supported Availability Zones for your account. For more information, see <>. ++ +Cluster provisioning takes several minutes. +. Continue with <> + +[[step2-cli,step2-cli.title]] +=== Create cluster - {aws} CLI +. Create your cluster with the command that follows. Before running the command, make the following replacements: ++ +** Replace [.replaceable]`region-code` with the {aws} Region that you want to create your cluster in. +** Replace [.replaceable]`my-cluster` with a name for your cluster. The name can contain only alphanumeric characters (case-sensitive), hyphens, and underscores. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the {aws} Region and {aws} account that you're creating the cluster in. +** Replace [.replaceable]`1.30` with any xref:kubernetes-versions[Amazon EKS supported version,linkend=kubernetes-versions]. +** Replace [.replaceable]`111122223333` with your account ID and [.replaceable]`myAmazonEKSClusterRole` with the name of your cluster IAM role. +** Replace the values for `subnetIds` with your own. You can also add additional IDs. You must specify at least two subnet IDs. ++ +The subnets that you choose must meet the xref:network-requirements-subnets[Amazon EKS subnet requirements,linkend=network-requirements-subnets]. Before selecting subnets, we recommend that you're familiar with all of the xref:network-reqs[Amazon EKS VPC and subnet requirements and considerations,linkend=network-reqs]. +** If you don't want to specify a security group ID, remove `,securityGroupIds=sg-` from the command. If you want to specify one or more security group IDs, replace the values for `securityGroupIds` with your own. You can also add additional IDs. ++ +Whether you choose any security groups or not, Amazon EKS creates a security group that enables communication between your cluster and your VPC. Amazon EKS associates this security group, and any that you choose, to the network interfaces that it creates. For more information about the cluster security group that Amazon EKS creates, see <>. You can modify the rules in the cluster security group that Amazon EKS creates. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks create-cluster --region region-code --name my-cluster --kubernetes-version 1.30 \ + --role-arn {arn-aws}iam::111122223333:role/myAmazonEKSClusterRole \ + --resources-vpc-config subnetIds=subnet-ExampleID1,subnet-ExampleID2,securityGroupIds=sg-ExampleID1 +---- ++ +NOTE: You might receive an error that one of the Availability Zones in your request doesn't have sufficient capacity to create an Amazon EKS cluster. If this happens, the error output contains the Availability Zones that can support a new cluster. Retry creating your cluster with at least two subnets that are located in the supported Availability Zones for your account. For more information, see <>. ++ +The following are optional settings that, if required, must be added to the previous command. You can only enable these options when you create the cluster, not after. + +** By default, EKS installs multiple networking add-ons during cluster creation. This includes the Amazon VPC CNI, CoreDNS, and kube-proxy. ++ +If you'd like to disable the installation of these default networking add-ons, use the parameter below. This may be used for alternate CNIs, such as Cilium. Review the link:eks/latest/APIReference/API_CreateCluster.html[EKS API reference,type="documentation"] for more information. ++ +`aws eks create-cluster --bootstrapSelfManagedAddons false` +** If you want to specify which `IPv4` Classless Inter-domain Routing (CIDR) block [.noloc]`Kubernetes` assigns service IP addresses from, you must specify it by adding the `--kubernetes-network-config serviceIpv4Cidr=` to the following command. ++ +Specifying your own range can help prevent conflicts between [.noloc]`Kubernetes` services and other networks peered or connected to your VPC. Enter a range in CIDR notation. For example: `10.2.0.0/16`. ++ +The CIDR block must meet the following requirements: ++ +*** Be within one of the following ranges: `10.0.0.0/8`, `172.16.0.0/12`, or `192.168.0.0/16`. +*** Have a minimum size of `/24` and a maximum size of `/12`. +*** Not overlap with the range of the VPC for your Amazon EKS resources. + ++ +You can only specify this option when using the `IPv4` address family and only at cluster creation. If you don't specify this, then [.noloc]`Kubernetes` assigns service IP addresses from either the `10.100.0.0/16` or `172.20.0.0/16` CIDR blocks. +** If you're creating a cluster and want the cluster to assign `IPv6` addresses to [.noloc]`Pods` and services instead of `IPv4` addresses, add `--kubernetes-network-config ipFamily=ipv6` to the following command. ++ +[.noloc]`Kubernetes` assigns `IPv4` addresses to [.noloc]`Pods` and services, by default. Before deciding to use the `IPv6` family, make sure that you're familiar with all of the considerations and requirements in the <>, <>, <>, and <> topics. If you choose the `IPv6` family, you can't specify an address range for [.noloc]`Kubernetes` to assign `IPv6` service addresses from like you can for the `IPv4` family. [.noloc]`Kubernetes` assigns service addresses from the unique local address range (`fc00::/7`). ++ +. It takes several minutes to provision the cluster. You can query the status of your cluster with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster --region region-code --name my-cluster --query "cluster.status" +---- ++ +Don't proceed to the next step until the output returned is `ACTIVE`. +. Continue with <> + +[[step3,step3.title]] +== Step 3: Update kubeconfig +. If you created your cluster using `eksctl`, then you can skip this step. This is because `eksctl` already completed this step for you. Enable `kubectl` to communicate with your cluster by adding a new context to the `kubectl` `config` file. For more information about how to create and update the file, see <>. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks update-kubeconfig --region region-code --name my-cluster +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +Added new context {arn-aws}eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config +---- +. Confirm communication with your cluster by running the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get svc +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +kubernetes ClusterIP 10.100.0.1 443/TCP 28h +---- + +== Step 4: Cluster setup + +. (Recommended) To use some Amazon EKS add-ons, or to enable individual [.noloc]`Kubernetes` workloads to have specific {aws} Identity and Access Management (IAM) permissions, xref:enable-iam-roles-for-service-accounts[create an IAM OpenID Connect (OIDC) provider,linkend=enable-iam-roles-for-service-accounts] for your cluster. You only need to create an IAM [.noloc]`OIDC` provider for your cluster once. To learn more about Amazon EKS add-ons, see <>. To learn more about assigning specific IAM permissions to your workloads, see <>. +. (Recommended) Configure your cluster for the [.noloc]`Amazon VPC CNI plugin for Kubernetes` plugin before deploying Amazon EC2 nodes to your cluster. By default, the plugin was installed with your cluster. When you add Amazon EC2 nodes to your cluster, the plugin is automatically deployed to each Amazon EC2 node that you add. The plugin requires you to attach one of the following IAM policies to an IAM role. If your cluster uses the `IPv4` family, use the link:aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html[AmazonEKS_CNI_Policy,type="documentation"] managed IAM policy. If your cluster uses the `IPv6` family, use an xref:cni-iam-role-create-ipv6-policy[IAM policy that you create,linkend=cni-iam-role-create-ipv6-policy]. ++ +The IAM role that you attach the policy to can be the node IAM role, or a dedicated role used only for the plugin. We recommend attaching the policy to this role. For more information about creating the role, see <> or <>. +. If you deployed your cluster using the {aws-management-console}, you can skip this step. The {aws-management-console} deploys the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, [.noloc]`CoreDNS`, and `kube-proxy` Amazon EKS add-ons, by default. ++ +If you deploy your cluster using either `eksctl` or the {aws} CLI, then the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, [.noloc]`CoreDNS`, and `kube-proxy` self-managed add-ons are deployed. You can migrate the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, [.noloc]`CoreDNS`, and `kube-proxy` self-managed add-ons that are deployed with your cluster to Amazon EKS add-ons. For more information, see <>. +. (Optional) If you haven't already done so, you can enable [.noloc]`Prometheus` metrics for your cluster. For more information, see link:prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-create[Create a scraper,type="documentation"] in the _Amazon Managed Service for Prometheus User Guide_. +. If you plan to deploy workloads to your cluster that use Amazon EBS volumes , and you created a `1.23` or later cluster, then you must install the xref:ebs-csi[Amazon EBS CSI,linkend=ebs-csi] to your cluster before deploying the workloads. + +== Next steps + +* The link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] that created the cluster is the only principal that has access to the cluster. <> so they can access your cluster. +* If the IAM principal that created the cluster only has the minimum IAM permissions referenced in the prerequisites, then you might want to add additional Amazon EKS permissions for that principal. For more information about granting Amazon EKS permissions to IAM principals, see <>. +* If you want the IAM principal that created the cluster, or any other principals to view [.noloc]`Kubernetes` resources in the Amazon EKS console, grant the <> to the entities. +* If you want nodes and IAM principals to access your cluster from within your VPC, enable the private endpoint for your cluster. The public endpoint is enabled by default. You can disable the public endpoint once you've enabled the private endpoint, if desired. For more information, see <>. +* <>. +* <>. +* <>. diff --git a/latest/ug/clusters/delete-cluster.adoc b/latest/ug/clusters/delete-cluster.adoc new file mode 100644 index 00000000..d9da2815 --- /dev/null +++ b/latest/ug/clusters/delete-cluster.adoc @@ -0,0 +1,193 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[delete-cluster,delete-cluster.title]] += Delete a cluster +:info_doctype: section +:info_title: Delete a cluster +:info_titleabbrev: Delete a cluster +:info_abstract: Learn how to delete Amazon EKS clusters, including managed and self-managed node groups, Fargate profiles, related services, and {aws} CloudFormation stacks using eksctl, {aws-management-console}, or {aws} CLI for cost optimization and resource cleanup. + +[abstract] +-- +Learn how to delete Amazon EKS clusters, including managed and self-managed node groups, Fargate profiles, related services, and {aws} CloudFormation stacks using eksctl, {aws-management-console}, or {aws} CLI for cost optimization and resource cleanup. +-- + +When you're done using an Amazon EKS cluster, you should delete the resources associated with it so that you don't incur any unnecessary costs. + + + +You can delete a cluster with `eksctl`, the {aws-management-console}, or the {aws} CLI. + +== Considerations + +* If you have active services in your cluster that are associated with a load balancer, you must delete those services before deleting the cluster so that the load balancers are deleted properly. Otherwise, you can have orphaned resources in your VPC that prevent you from being able to delete the VPC. +* If you receive an error because the cluster creator has been removed, see link:premiumsupport/knowledge-center/eks-api-server-unauthorized-error[this article,type="marketing"] to resolve. +* Amazon Managed Service for Prometheus resources are outside of the cluster lifecycle and need to be maintained independent of the cluster. When you delete your cluster, make sure to also delete any applicable scrapers to stop applicable costs. For more information, see link:prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-list-delete[Find and delete scrapers,type="documentation"] in the _Amazon Managed Service for Prometheus User Guide_. +* To remove a connected cluster, see <> + +=== Considerations for EKS Auto Mode + +* Any EKS Auto Mode Nodes will be deleted, including the EC2 managed instances +* All load balancers will be deleted + +For more information, see <>. + +== Delete cluster (eksctl) + +This procedure requires `eksctl` version `{eksctl-min-version}` or later. You can check your version with the following command: + +[source,bash,subs="verbatim,attributes"] +---- +eksctl version +---- + +For instructions on how to install or upgrade `eksctl`, see https://eksctl.io/installation[Installation] in the `eksctl` documentation. + +. List all services running in your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get svc --all-namespaces +---- +.. Delete any services that have an associated `EXTERNAL-IP` value. These services are fronted by an Elastic Load Balancing load balancer, and you must delete them in [.noloc]`Kubernetes` to allow the load balancer and associated resources to be properly released. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl delete svc service-name +---- +. Delete the cluster and its associated nodes with the following command, replacing [.replaceable]`prod` with your cluster name. ++ +[source,bash,subs="verbatim,attributes"] +---- +eksctl delete cluster --name prod +---- ++ +Output: ++ +[source,bash,subs="verbatim,attributes"] +---- +[ℹ] using region region-code +[ℹ] deleting EKS cluster "prod" +[ℹ] will delete stack "eksctl-prod-nodegroup-standard-nodes" +[ℹ] waiting for stack "eksctl-prod-nodegroup-standard-nodes" to get deleted +[ℹ] will delete stack "eksctl-prod-cluster" +[✔] the following EKS cluster resource(s) for "prod" will be deleted: cluster. If in doubt, check CloudFormation console +---- + + +== Delete cluster ({aws} console) +. List all services running in your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get svc --all-namespaces +---- +. Delete any services that have an associated `EXTERNAL-IP` value. These services are fronted by an Elastic Load Balancing load balancer, and you must delete them in [.noloc]`Kubernetes` to allow the load balancer and associated resources to be properly released. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl delete svc service-name +---- +. Delete all node groups and Fargate profiles. ++ +.. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +.. In the left navigation pane, choose Amazon EKS *Clusters*, and then in the tabbed list of clusters, choose the name of the cluster that you want to delete. +.. Choose the *Compute* tab and choose a node group to delete. Choose *Delete*, enter the name of the node group, and then choose *Delete*. Delete all node groups in the cluster. ++ +NOTE: The node groups listed are xref:managed-node-groups[managed node groups,linkend=managed-node-groups] only. +.. Choose a *Fargate Profile* to delete, select *Delete*, enter the name of the profile, and then choose *Delete*. Delete all Fargate profiles in the cluster. +. Delete all self-managed node {aws} CloudFormation stacks. ++ +.. Open the link:cloudformation/[{aws} CloudFormation console,type="console"]. +.. Choose the node stack to delete, and then choose *Delete*. +.. In the *Delete stack* confirmation dialog box, choose *Delete stack*. Delete all self-managed node stacks in the cluster. +. Delete the cluster. ++ +.. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +.. choose the cluster to delete and choose *Delete*. +.. On the delete cluster confirmation screen, choose *Delete*. +. (Optional) Delete the VPC {aws} CloudFormation stack. ++ +.. Open the link:cloudformation/[{aws} CloudFormation console,type="console"]. +.. Select the VPC stack to delete, and then choose *Delete*. +.. In the *Delete stack* confirmation dialog box, choose *Delete stack*. + + +== Delete cluster ({aws} CLI) + +. List all services running in your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get svc --all-namespaces +---- +. Delete any services that have an associated `EXTERNAL-IP` value. These services are fronted by an Elastic Load Balancing load balancer, and you must delete them in [.noloc]`Kubernetes` to allow the load balancer and associated resources to be properly released. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl delete svc service-name +---- +. Delete all node groups and Fargate profiles. ++ +.. List the node groups in your cluster with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks list-nodegroups --cluster-name my-cluster +---- ++ +NOTE: The node groups listed are xref:managed-node-groups[managed node groups,linkend=managed-node-groups] only. +.. Delete each node group with the following command. Delete all node groups in the cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks delete-nodegroup --nodegroup-name my-nodegroup --cluster-name my-cluster +---- +.. List the Fargate profiles in your cluster with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks list-fargate-profiles --cluster-name my-cluster +---- +.. Delete each Fargate profile with the following command. Delete all Fargate profiles in the cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks delete-fargate-profile --fargate-profile-name my-fargate-profile --cluster-name my-cluster +---- +. Delete all self-managed node {aws} CloudFormation stacks. ++ +.. List your available {aws} CloudFormation stacks with the following command. Find the node template name in the resulting output. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws cloudformation list-stacks --query "StackSummaries[].StackName" +---- +.. Delete each node stack with the following command, replacing [.replaceable]`node-stack` with your node stack name. Delete all self-managed node stacks in the cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws cloudformation delete-stack --stack-name node-stack +---- +. Delete the cluster with the following command, replacing [.replaceable]`my-cluster` with your cluster name. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks delete-cluster --name my-cluster +---- +. (Optional) Delete the VPC {aws} CloudFormation stack. ++ +.. List your available {aws} CloudFormation stacks with the following command. Find the VPC template name in the resulting output. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws cloudformation list-stacks --query "StackSummaries[].StackName" +---- +.. Delete the VPC stack with the following command, replacing [.replaceable]`my-vpc-stack` with your VPC stack name. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws cloudformation delete-stack --stack-name my-vpc-stack +---- diff --git a/latest/ug/clusters/disable-extended-support.adoc b/latest/ug/clusters/disable-extended-support.adoc new file mode 100644 index 00000000..eb45b093 --- /dev/null +++ b/latest/ug/clusters/disable-extended-support.adoc @@ -0,0 +1,38 @@ +include::../attributes.txt[] +[.topic] +[[disable-extended-support,disable-extended-support.title]] += Prevent increased cluster costs by disabling EKS extended support +:info_titleabbrev: Disable extended support + +This topic describes how to set the _upgrade policy_ of an EKS cluster to disable extended support. The upgrade policy of an EKS cluster determines what happens when a cluster reaches the end of the standard _support period_. If a cluster upgrade policy has extended support disabled, it will be automatically upgraded to the next [.noloc]`Kubernetes` version. + +For more information about upgrade policies, see <>. + +[IMPORTANT] +==== + +You cannot disable extended support once your cluster has entered it. You can only disable extended support for clusters on standard support. + +{aws} recommends upgrading your cluster to a version in the standard support period. + +==== + +[[disable-support-policy-console,disable-support-policy-console.title]] +== Disable EKS extended support ({aws} Console) +. Navigate to your EKS cluster in the {aws} Console. Select the *Overview* tab on the *Cluster Info* page. +. In the *Kubernetes version setting* section, select *Manage*. +. Select *Standard support* and then *Save changes*. + + +[[disable-support-policy-cli,disable-support-policy-cli.title]] +== Disable EKS extended support ({aws} CLI) +. Verify the {aws} CLI is installed and you are logged in. link:cli/latest/userguide/getting-started-install.html[Learn how to update and install the {aws} CLI.,type="documentation"] +. Determine the name of your EKS cluster. +. Run the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks update-cluster-config \ +--name \ +--upgrade-policy supportType=STANDARD +---- diff --git a/latest/ug/clusters/disable-windows-support.adoc b/latest/ug/clusters/disable-windows-support.adoc new file mode 100644 index 00000000..e884af94 --- /dev/null +++ b/latest/ug/clusters/disable-windows-support.adoc @@ -0,0 +1,28 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[disable-windows-support,disable-windows-support.title]] += Disable [.noloc]`Windows` support +:info_doctype: section +:info_title: Disable Windows support + +. If your cluster contains Amazon Linux nodes and you use xref:security-groups-for-pods[security groups for Pods,linkend=security-groups-for-pods] with them, then skip this step. ++ +Remove the `AmazonVPCResourceController` managed IAM policy from your <>. Replace [.replaceable]`eksClusterRole` with the name of your cluster role and [.replaceable]`111122223333` with your account ID. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam detach-role-policy \ + --role-name eksClusterRole \ + --policy-arn {arn-aws}iam::aws:policy/AmazonEKSVPCResourceController +---- +. Disable [.noloc]`Windows` IPAM in the `amazon-vpc-cni` ConfigMap. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl patch configmap/amazon-vpc-cni \ + -n kube-system \ + --type merge \ + -p '{"data":{"enable-windows-ipam":"false"}}' +---- diff --git a/latest/ug/clusters/enable-extended-support.adoc b/latest/ug/clusters/enable-extended-support.adoc new file mode 100644 index 00000000..2e6dd4b7 --- /dev/null +++ b/latest/ug/clusters/enable-extended-support.adoc @@ -0,0 +1,42 @@ +include::../attributes.txt[] +[.topic] +[[enable-extended-support,enable-extended-support.title]] += Add flexibility to plan Kubernetes version upgrades by enabling EKS extended support +:info_titleabbrev: Enable extended support + +This topic describes how to set the _upgrade policy_ of an EKS cluster to enable extended support. The upgrade policy of an EKS cluster determines what happens when a cluster reaches the end of the standard _support period_. If a cluster upgrade policy has extended support enabled, it will enter the extended support period at the end of the standard support period. The cluster will not be automatically upgraded at the end of the standard support period. + +Clusters actually in the _extended support period_ incur higher costs. If a cluster merely has the upgrade policy set to enable extended support, and is otherwise in the _standard support period_, it incurs standard costs. + +EKS Clusters have the upgrade policy set to enable extended support by default. + +For more information about upgrade policies, see <>. + +[IMPORTANT] +==== + +If you want your cluster to stay on its current [.noloc]`Kubernetes` version to take advantage of the extended support period, you must enable the extended support upgrade policy before the end of standard support period. + +If you do not enable extended support, your cluster will be automatically upgraded. + +==== + +[[enable-support-policy-console,enable-support-policy-console.title]] +== Enable EKS extended support ({aws} Console) +. Navigate to your EKS cluster in the {aws} Console. Select the *Overview* tab on the *Cluster Info* page. +. In the *Kubernetes version settings* section, select *Manage*. +. Select *Extended support* and then *Save changes*. + + +[[enable-support-policy-cli,enable-support-policy-cli.title]] +== Enable EKS extended support ({aws} CLI) +. Verify the {aws} CLI is installed and you are logged in. link:cli/latest/userguide/getting-started-install.html[Learn how to update and install the {aws} CLI.,type="documentation"] +. Determine the name of your EKS cluster. +. Run the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks update-cluster-config \ +--name \ +--upgrade-policy supportType=EXTENDED +---- diff --git a/latest/ug/clusters/images b/latest/ug/clusters/images new file mode 120000 index 00000000..5e675731 --- /dev/null +++ b/latest/ug/clusters/images @@ -0,0 +1 @@ +../images \ No newline at end of file diff --git a/latest/ug/clusters/kubernetes-versions-extended.adoc b/latest/ug/clusters/kubernetes-versions-extended.adoc new file mode 100644 index 00000000..7974fd6a --- /dev/null +++ b/latest/ug/clusters/kubernetes-versions-extended.adoc @@ -0,0 +1,161 @@ +//!!NODE_ROOT
+include::../attributes.txt[] +[.topic] +[[kubernetes-versions-extended,kubernetes-versions-extended.title]] += Review release notes for [.noloc]`Kubernetes` versions on extended support +:info_titleabbrev: Extended support versions + +[abstract] +-- +This topic gives important changes to be aware of for each [.noloc]`Kubernetes` version in extended support. +-- + +This topic gives important changes to be aware of for each [.noloc]`Kubernetes` version in extended support. When upgrading, carefully review the changes that have occurred between the old and new versions for your cluster. + +[[kubernetes-1.28,kubernetes-1.28.title]] +== [.noloc]`Kubernetes` 1.28 + +[.noloc]`Kubernetes` `1.28` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.28`, see the https://kubernetes.io/blog/2023/08/15/kubernetes-v1-28-release/[official release announcement]. + + + +* [.noloc]`Kubernetes` `v1.28` expanded the supported skew between core node and control plane components by one minor version, from `n-2` to `n-3`, so that node components (``kubelet`` and `kube-proxy`) for the oldest supported minor version can work with control plane components (``kube-apiserver``, `kube-scheduler`, `kube-controller-manager`, `cloud-controller-manager`) for the newest supported minor version. +* Metrics `force_delete_pods_total` and `force_delete_pod_errors_total` in the `Pod GC Controller` are enhanced to account for all forceful pods deletion. A reason is added to the metric to indicate whether the pod is forcefully deleted because it's terminated, orphaned, terminating with the out-of-service taint, or terminating and unscheduled. +* The `PersistentVolume (PV)` controller has been modified to automatically assign a default `StorageClass` to any unbound `PersistentVolumeClaim` with the `storageClassName` not set. Additionally, the `PersistentVolumeClaim` admission validation mechanism within the API server has been adjusted to allow changing values from an unset state to an actual `StorageClass` name. + +For the complete [.noloc]`Kubernetes` `1.28` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1270. + +[[kubernetes-1.27,kubernetes-1.27.title]] +== [.noloc]`Kubernetes` 1.27 + +[.noloc]`Kubernetes` `1.27` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.27`, see the https://kubernetes.io/blog/2023/04/11/kubernetes-v1-27-release/[official release announcement]. + +[IMPORTANT] +==== + + +* The support for the alpha `seccomp` annotations `seccomp.security.alpha.kubernetes.io/pod` and `container.seccomp.security.alpha.kubernetes.io` annotations was removed. The alpha `seccomp` annotations was deprecated in `1.19`, and with their removal in `1.27`, `seccomp` fields will no longer auto-populate for `Pods` with `seccomp` annotations. Instead, use the `securityContext.seccompProfile` field for `Pods` or containers to configure `seccomp` profiles. To check whether you are using the deprecated alpha `seccomp` annotations in your cluster, run the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods --all-namespaces -o json | grep -E 'seccomp.security.alpha.kubernetes.io/pod|container.seccomp.security.alpha.kubernetes.io' +---- +* The `--container-runtime` command line argument for the `kubelet` was removed. The default container runtime for Amazon EKS has been `containerd` since `1.24`, which eliminates the need to specify the container runtime. From `1.27` onwards, Amazon EKS will ignore the `--container-runtime` argument passed to any bootstrap scripts. It is important that you don't pass this argument to `--kubelet-extra-args` in order to prevent errors during the node bootstrap process. You must remove the `--container-runtime` argument from all of your node creation workflows and build scripts. + +==== + +* The `kubelet` in [.noloc]`Kubernetes` `1.27` increased the default `kubeAPIQPS` to `50` and `kubeAPIBurst` to `100`. These enhancements allow the `kubelet` to handle a higher volume of API queries, improving response times and performance. When the demands for `Pods` increase, due to scaling requirements, the revised defaults ensure that the `kubelet` can efficiently manage the increased workload. As a result, `Pod` launches are quicker and cluster operations are more effective. +* You can use more fine grained `Pod` topology to spread policies such as `minDomain`. This parameter gives you the ability to specify the minimum number of domains your `Pods` should be spread across. `nodeAffinityPolicy` and `nodeTaintPolicy` allow for an extra level of granularity in governing `Pod` distribution. This is in accordance to node affinities, taints, and the `matchLabelKeys` field in the `topologySpreadConstraints` of your `Pod's` specification. This permits the selection of `Pods` for spreading calculations following a rolling upgrade. +* [.noloc]`Kubernetes` `1.27` promoted to beta a new policy mechanism for `StatefulSets` that controls the lifetime of their `PersistentVolumeClaims`(`PVCs`). The new `PVC` retention policy lets you specify if the `PVCs` generated from the `StatefulSet` spec template will be automatically deleted or retained when the `StatefulSet` is deleted or replicas in the `StatefulSet` are scaled down. +* The https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/[goaway-chance] option in the [.noloc]`Kubernetes` API server helps prevent `HTTP/2` client connections from being stuck on a single API server instance, by randomly closing a connection. When the connection is closed, the client will try to reconnect, and will likely land on a different API server as a result of load balancing. Amazon EKS version `1.27` has enabled `goaway-chance` flag. If your workload running on Amazon EKS cluster uses a client that is not compatible with https://www.rfc-editor.org/rfc/rfc7540#section-6.8[HTTP GOAWAY], we recommend that you update your client to handle `GOAWAY` by reconnecting on connection termination. + +For the complete [.noloc]`Kubernetes` `1.27` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1260. + +[[kubernetes-1.26,kubernetes-1.26.title]] +== [.noloc]`Kubernetes` 1.26 + +[.noloc]`Kubernetes` `1.26` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.26`, see the https://kubernetes.io/blog/2022/12/09/kubernetes-v1-26-release/[official release announcement]. + +[IMPORTANT] +==== + +[.noloc]`Kubernetes` `1.26` no longer supports [.noloc]`CRI` `v1alpha2`. This results in the `kubelet` no longer registering the node if the container runtime doesn't support [.noloc]`CRI` `v1`. This also means that [.noloc]`Kubernetes` `1.26` doesn't support containerd minor version `1.5` and earlier. If you're using containerd, you need to upgrade to containerd version `1.6.0` or later before you upgrade any nodes to [.noloc]`Kubernetes` `1.26`. You also need to upgrade any other container runtimes that only support the `v1alpha2`. For more information, defer to the container runtime vendor. By default, [.noloc]`Amazon Linux` and [.noloc]`Bottlerocket` AMIs include containerd version `1.6.6`. + +==== + +* Before you upgrade to [.noloc]`Kubernetes` `1.26`, upgrade your [.noloc]`Amazon VPC CNI plugin for Kubernetes` to version `1.12` or later. If you don't upgrade to [.noloc]`Amazon VPC CNI plugin for Kubernetes` version `1.12` or later, the [.noloc]`Amazon VPC CNI plugin for Kubernetes` will crash. For more information, see <>. +* The https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/[goaway-chance] option in the [.noloc]`Kubernetes` API server helps prevent `HTTP/2` client connections from being stuck on a single API server instance, by randomly closing a connection. When the connection is closed, the client will try to reconnect, and will likely land on a different API server as a result of load balancing. Amazon EKS version `1.26` has enabled `goaway-chance` flag. If your workload running on Amazon EKS cluster uses a client that is not compatible with https://www.rfc-editor.org/rfc/rfc7540#section-6.8[HTTP GOAWAY], we recommend that you update your client to handle `GOAWAY` by reconnecting on connection termination. + +For the complete [.noloc]`Kubernetes` `1.26` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1250. + +[[kubernetes-1.25,kubernetes-1.25.title]] +== [.noloc]`Kubernetes` 1.25 + +[.noloc]`Kubernetes` `1.25` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.25`, see the https://kubernetes.io/blog/2022/08/23/kubernetes-v1-25-release/[official release announcement]. + +[IMPORTANT] +==== + + +* Amazon EC2 `P2` instances aren't supported on Amazon EKS because they require `NVIDIA` driver version 470 or earlier. +* `PodSecurityPolicy` ([.noloc]`PSP`) is removed in [.noloc]`Kubernetes` `1.25`. [.noloc]`PSPs` are replaced with https://kubernetes.io/docs/concepts/security/pod-security-admission/[Pod Security Admission (PSA)] and Pod Security Standards [.noloc]`(PSS)`. [.noloc]`PSA` is a built-in admission controller that implements the security controls outlined in the https://kubernetes.io/docs/concepts/security/pod-security-standards/[PSS]. [.noloc]`PSA` and [.noloc]`PSS` are graduated to stable in [.noloc]`Kubernetes` `1.25` and are enabled in Amazon EKS by default. If you have [.noloc]`PSPs` in your cluster, make sure to migrate from [.noloc]`PSP` to the built-in [.noloc]`Kubernetes` [.noloc]`PSS` or to a policy-as-code solution before upgrading your cluster to version `1.25`. If you don't migrate from PSP, you might encounter interruptions to your workloads. For more information, see the xref:pod-security-policy-removal-faq[Migrate from legacy pod security policies (PSP),linkend=pod-security-policy-removal-faq]. +* [.noloc]`Kubernetes` version `1.25` contains changes that alter the behavior of an existing feature known as API Priority and Fairness (APF). APF serves to shield the API server from potential overload during periods of heightened request volumes. It does this by placing restrictions on the number of concurrent requests that can be processed at any given time. This is achieved through the application of distinct priority levels and limits to requests originating from various workloads or users. This approach ensures that critical applications or high-priority requests receive preferential treatment, while simultaneously preventing lower priority requests from overwhelming the API server. For more information, see https://kubernetes.io/docs/concepts/cluster-administration/flow-control/[API Priority and Fairness] in the [.noloc]`Kubernetes` documentation or https://aws.github.io/aws-eks-best-practices/scalability/docs/control-plane/#api-priority-and-fairness[API Priority and Fairness] in the EKS Best Practices Guide. ++ +These updates were introduced in https://github.com/kubernetes/kubernetes/pull/103521[PR #10352] and https://github.com/kubernetes/kubernetes/pull/118601[PR #118601]. Previously, APF treated all types of requests uniformly, with each request consuming a single unit of the concurrent request limit. The APF behavior change assigns higher units of concurrency to `LIST` requests due to the exceptionally heavy burden put on the API server by these requests. The API server estimates the number of objects that will be returned by a `LIST` request. It assigns a unit of concurrency that is proportional to the number of objects returned. ++ +Upon upgrading to Amazon EKS version `1.25` or higher, this updated behavior might cause workloads with heavy `LIST` requests (that previously functioned without issue) to encounter rate limiting. This would be indicated by an HTTP 429 response code. To avoid potential workload disruption due to `LIST` requests being rate limited, we strongly encourage you to restructure your workloads to reduce the rate of these requests. Alternatively, you can address this issue by adjusting the APF settings to allocate more capacity for essential requests while reducing the capacity allocated to non-essential ones. For more information about these mitigation techniques, see https://aws.github.io/aws-eks-best-practices/scalability/docs/control-plane/#preventing-dropped-requests[Preventing Dropped Requests] in the EKS Best Practices Guide. +* Amazon EKS `1.25` includes enhancements to cluster authentication that contain updated [.noloc]`YAML` libraries. If a [.noloc]`YAML` value in the `aws-auth` `ConfigMap` found in the `kube-system` namespace starts with a macro, where the first character is a curly brace, you should add quotation marks (`" "`) before and after the curly braces (`{ }`). This is required to ensure that `aws-iam-authenticator` version `v0.6.3` accurately parses the `aws-auth` `ConfigMap` in Amazon EKS `1.25`. +* The beta API version (`discovery.k8s.io/v1beta1`) of `EndpointSlice` was deprecated in [.noloc]`Kubernetes` `1.21` and is no longer served as of [.noloc]`Kubernetes` `1.25`. This API has been updated to `discovery.k8s.io/v1`. For more information, see https://kubernetes.io/docs/reference/using-api/deprecation-guide/#endpointslice-v125[EndpointSlice] in the [.noloc]`Kubernetes` documentation. The [.noloc]`{aws} Load Balancer Controller` `v2.4.6` and earlier used the `v1beta1` endpoint to communicate with `EndpointSlices`. If you're using the `EndpointSlices` configuration for the [.noloc]`{aws} Load Balancer Controller`, you must upgrade to [.noloc]`{aws} Load Balancer Controller` `v2.4.7` _before_ upgrading your Amazon EKS cluster to `1.25`. If you upgrade to `1.25` while using the `EndpointSlices` configuration for the [.noloc]`{aws} Load Balancer Controller`, the controller will crash and result in interruptions to your workloads. To upgrade the controller, see <>. +* The beta API version (`autoscaling/v2beta1`) of HorizontalPodAutoscaler is no longer served as of Kubernetes `1.25`. This API was deprecated in version `1.23`. Migrate manifests and API clients to use the `autoscaling/v2` HorizontalPodAutoscaler API version. For more information, see https://kubernetes.io/docs/reference/using-api/deprecation-guide/#horizontalpodautoscaler-v125[the Kubernetes documentation]. + +==== + +* `SeccompDefault` is promoted to beta in [.noloc]`Kubernetes` `1.25`. By setting the `--seccomp-default` flag when you configure `kubelet`, the container runtime uses its `RuntimeDefaultseccomp` profile, rather than the unconfined (`seccomp disabled`) mode. The default profiles provide a strong set of security defaults, while preserving the functionality of the workload. Although this flag is available, Amazon EKS doesn't enable this flag by default, so Amazon EKS behavior is effectively unchanged. If you want to, you can start enabling this on your nodes. For more details, see the tutorial https://kubernetes.io/docs/tutorials/security/seccomp/#enable-the-use-of-runtimedefault-as-the-default-seccomp-profile-for-all-workloads/[Restrict a Container's Syscalls with seccomp] in the [.noloc]`Kubernetes` documentation. +* Support for the Container Runtime Interface (CRI) for [.noloc]`Docker` (also known as [.noloc]`dockershim`) was removed from [.noloc]`Kubernetes` `1.24` and later. The only container runtime in Amazon EKS official [.noloc]`AMIs` for [.noloc]`Kubernetes` `1.24` and later clusters is [.noloc]`containerd`. Before upgrading to Amazon EKS `1.24` or later, remove any reference to bootstrap script flags that aren't supported anymore. For more information, see <>. +* The support for wildcard queries was deprecated in [.noloc]`CoreDNS` `1.8.7` and removed in [.noloc]`CoreDNS` `1.9`. This was done as a security measure. Wildcard queries no longer work and return [.noloc]`NXDOMAIN` instead of an IP address. +* The https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/[goaway-chance] option in the [.noloc]`Kubernetes` API server helps prevent `HTTP/2` client connections from being stuck on a single API server instance, by randomly closing a connection. When the connection is closed, the client will try to reconnect, and will likely land on a different API server as a result of load balancing. Amazon EKS version `1.25` has enabled `goaway-chance` flag. If your workload running on Amazon EKS cluster uses a client that is not compatible with https://www.rfc-editor.org/rfc/rfc7540#section-6.8[HTTP GOAWAY], we recommend that you update your client to handle `GOAWAY` by reconnecting on connection termination. + +For the complete [.noloc]`Kubernetes` `1.25` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1240. + +[[kubernetes-1.24,kubernetes-1.24.title]] +== [.noloc]`Kubernetes` 1.24 + +[.noloc]`Kubernetes` `1.24` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.24`, see the https://kubernetes.io/blog/2022/05/03/kubernetes-1-24-release-announcement/[official release announcement]. + +[IMPORTANT] +==== + + +* Starting with [.noloc]`Kubernetes` `1.24`, new beta APIs aren't enabled in clusters by default. By default, existing beta APIs and new versions of existing beta APIs continue to be enabled. Amazon EKS follows the same behavior as upstream [.noloc]`Kubernetes` `1.24`. The feature gates that control new features for both new and existing API operations are enabled by default. This is in alignment with upstream [.noloc]`Kubernetes`. For more information, see https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/3136-beta-apis-off-by-default/README.md[KEP-3136: Beta APIs Are Off by Default] on GitHub. +* Support for Container Runtime Interface (CRI) for [.noloc]`Docker` (also known as `dockershim`) is removed from [.noloc]`Kubernetes` `1.24`. Amazon EKS official AMIs have [.noloc]`containerd` as the only runtime. Before moving to Amazon EKS `1.24` or higher, you must remove any reference to bootstrap script flags that aren't supported anymore. You must also make sure that IP forwarding is enabled for your worker nodes. For more information, see <>. +* If you already have [.noloc]`Fluentd` configured for [.noloc]`Container Insights`, then you must migrate [.noloc]`Fluentd` to [.noloc]`Fluent Bit` before updating your cluster. The [.noloc]`Fluentd` parsers are configured to only parse log messages in JSON format. Unlike `dockerd`, the `containerd` container runtime has log messages that aren't in JSON format. If you don't migrate to [.noloc]`Fluent Bit`, some of the configured [.noloc]`Fluentd's` parsers will generate a massive amount of errors inside the [.noloc]`Fluentd` container. For more information on migrating, see link:AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html[Set up Fluent Bit as a DaemonSet to send logs to CloudWatch Logs,type="documentation"]. +* In [.noloc]`Kubernetes` `1.23` and earlier, `kubelet` serving certificates with unverifiable IP and DNS Subject Alternative Names (SANs) are automatically issued with unverifiable SANs. These unverifiable SANs are omitted from the provisioned certificate. In version `1.24` and later clusters, `kubelet` serving certificates aren't issued if any SAN can't be verified. This prevents `kubectl` exec and `kubectl` logs commands from working. For more information, see <>. +* When upgrading an Amazon EKS `1.23` cluster that uses [.noloc]`Fluent Bit`, you must make sure that it's running `k8s/1.3.12` or later. You can do this by reapplying the latest applicable [.noloc]`Fluent Bit` YAML file from [.noloc]`GitHub`. For more information, see link:AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html#Container-Insights-FluentBit-setup[Setting up Fluent Bit,type="documentation"] in the _Amazon CloudWatch User Guide_. + +==== + +* You can use Topology Aware Hints to indicate your preference for keeping traffic in zone when cluster worker nodes are deployed across multiple availability zones. Routing traffic within a zone can help reduce costs and improve network performance. By default, Topology Aware Hints are enabled in Amazon EKS `1.24`. For more information, see https://kubernetes.io/docs/concepts/services-networking/topology-aware-hints/[Topology Aware Hints] in the [.noloc]`Kubernetes` documentation. +* The `PodSecurityPolicy` ([.noloc]`PSP`) is scheduled for removal in [.noloc]`Kubernetes` `1.25`. [.noloc]`PSPs` are being replaced with https://kubernetes.io/docs/concepts/security/pod-security-admission/[Pod Security Admission (PSA)]. PSA is a built-in admission controller that uses the security controls that are outlined in the https://kubernetes.io/docs/concepts/security/pod-security-standards/[Pod Security Standards (PSS)]. PSA and PSS are both beta features and are enabled in Amazon EKS by default. To address the removal of [.noloc]`PSP` in version `1.25`, we recommend that you implement PSS in Amazon EKS. For more information, see link:containers/implementing-pod-security-standards-in-amazon-eks[Implementing Pod Security Standards in Amazon EKS,type="blog"] on the {aws} blog. +* The `client.authentication.k8s.io/v1alpha1` ExecCredential is removed in [.noloc]`Kubernetes` `1.24`. The ExecCredential API was generally available in [.noloc]`Kubernetes` `1.22`. If you use a client-go credential plugin that relies on the `v1alpha1` API, contact the distributor of your plugin on how to migrate to the `v1` API. +* For [.noloc]`Kubernetes` `1.24`, we contributed a feature to the upstream Cluster Autoscaler project that simplifies scaling Amazon EKS managed node groups to and from zero nodes. Previously, for the Cluster Autoscaler to understand the resources, labels, and taints of a managed node group that was scaled to zero nodes, you needed to tag the underlying Amazon EC2 Auto Scaling group with the details of the nodes that it was responsible for. Now, when there are no running nodes in the managed node group, the Cluster Autoscaler calls the Amazon EKS `DescribeNodegroup` API operation. This API operation provides the information that the Cluster Autoscaler requires of the managed node group's resources, labels, and taints. This feature requires that you add the `eks:DescribeNodegroup` permission to the Cluster Autoscaler service account IAM policy. When the value of a Cluster Autoscaler tag on the Auto Scaling group powering an Amazon EKS managed node group conflicts with the node group itself, the Cluster Autoscaler prefers the value of the Auto Scaling group tag. This is so that you can override values as needed. For more information, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md[Cluster Autoscaler]. +* If you intend to use [.noloc]`Inferentia` or [.noloc]`Trainium` instance types with Amazon EKS `1.24`, you must upgrade to the {aws} [.noloc]`Neuron` device plugin version 1.9.3.0 or later. For more information, see https://awsdocs-neuron.readthedocs-hosted.com/en/latest/release-notes/containers/neuron-k8.html#id46[Neuron K8 release [1.9.3.0]] in the {aws} [.noloc]`Neuron` Documentation. +* `Containerd` has `IPv6` enabled for [.noloc]`Pods`, by default. It applies node kernel settings to [.noloc]`Pod` network namespaces. Because of this, containers in a [.noloc]`Pod` bind to both `IPv4` (`127.0.0.1`) and `IPv6` (`::1`) loopback addresses. `IPv6` is the default protocol for communication. Before updating your cluster to version `1.24`, we recommend that you test your multi-container [.noloc]`Pods`. Modify apps so that they can bind to all IP addresses on loopback interfaces. The majority of libraries enable `IPv6` binding, which is backward compatible with `IPv4`. When it's not possible to modify your application code, you have two options: ++ +** Run an `init` container and set `disable ipv6` to `true` (`sysctl -w net.ipv6.conf.all.disable_ipv6=1`). +** Configure a https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook[mutating admission webhook] to inject an `init` container alongside your application [.noloc]`Pods`. + ++ +If you need to block `IPv6` for all [.noloc]`Pods` across all nodes, you might have to disable `IPv6` on your instances. +* The https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/[goaway-chance] option in the [.noloc]`Kubernetes` API server helps prevent `HTTP/2` client connections from being stuck on a single API server instance, by randomly closing a connection. When the connection is closed, the client will try to reconnect, and will likely land on a different API server as a result of load balancing. Amazon EKS version `1.24` has enabled `goaway-chance` flag. If your workload running on Amazon EKS cluster uses a client that is not compatible with https://www.rfc-editor.org/rfc/rfc7540#section-6.8[HTTP GOAWAY], we recommend that you update your client to handle `GOAWAY` by reconnecting on connection termination. + +For the complete [.noloc]`Kubernetes` `1.24` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1230. + +[[kubernetes-1.23,kubernetes-1.23.title]] +== [.noloc]`Kubernetes` 1.23 + +[.noloc]`Kubernetes` `1.23` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.23`, see the https://kubernetes.io/blog/2021/12/07/kubernetes-1-23-release-announcement/[official release announcement]. + +[IMPORTANT] +==== + + +* The [.noloc]`Kubernetes` in-tree to container storage interface (CSI) volume migration feature is enabled. This feature enables the replacement of existing [.noloc]`Kubernetes` in-tree storage plugins for Amazon EBS with a corresponding Amazon EBS CSI driver. For more information, see https://kubernetes.io/blog/2019/12/09/kubernetes-1-17-feature-csi-migration-beta/[Kubernetes 1.17 Feature: Kubernetes In-Tree to CSI Volume Migration Moves to Beta] on the [.noloc]`Kubernetes` blog. ++ +The feature translates in-tree APIs to equivalent CSI APIs and delegates operations to a replacement CSI driver. With this feature, if you use existing `StorageClass`, `PersistentVolume`, and `PersistentVolumeClaim` objects that belong to these workloads, there likely won't be any noticeable change. The feature enables [.noloc]`Kubernetes` to delegate all storage management operations from the in-tree plugin to the CSI driver. If you use Amazon EBS volumes in an existing cluster, install the Amazon EBS CSI driver in your cluster before you update your cluster to version `1.23`. If you don't install the driver before updating an existing cluster, interruptions to your workloads might occur. If you plan to deploy workloads that use Amazon EBS volumes in a new `1.23` cluster, install the Amazon EBS CSI driver in your cluster before deploying the workloads your cluster. For instructions on how to install the Amazon EBS CSI driver on your cluster, see <>. For frequently asked questions about the migration feature, see <>. +* Extended Support for Amazon EKS optimized [.noloc]`Windows` AMIs that are published by {aws} isn't available for [.noloc]`Kubernetes` version `1.23` but is available for [.noloc]`Kubernetes` version `1.24` and higher. + +==== + +* [.noloc]`Kubernetes` stopped supporting `dockershim` in version `1.20` and removed `dockershim` in version `1.24`. For more information, see https://kubernetes.io/blog/2022/01/07/kubernetes-is-moving-on-from-dockershim/[Kubernetes is Moving on From Dockershim: Commitments and Next Steps] in the [.noloc]`Kubernetes` blog. Amazon EKS will end support for `dockershim` starting in Amazon EKS version `1.24`. Starting with Amazon EKS version `1.24`, Amazon EKS official AMIs will have `containerd` as the only runtime. ++ +Even though Amazon EKS version `1.23` continues to support `dockershim`, we recommend that you start testing your applications now to identify and remove any [.noloc]`Docker` dependencies. This way, you are prepared to update your cluster to version `1.24`. For more information about `dockershim` removal, see <>. +* [.noloc]`Kubernetes` graduated `IPv4`/``IPv6`` dual-stack networking for [.noloc]`Pods`, services, and nodes to general availability. However, Amazon EKS and the [.noloc]`Amazon VPC CNI plugin for Kubernetes` don't support dual-stack networking. Your clusters can assign `IPv4` or `IPv6` addresses to [.noloc]`Pods` and services, but can't assign both address types. +* [.noloc]`Kubernetes` graduated the Pod Security Admission (PSA) feature to beta. The feature is enabled by default. For more information, see https://kubernetes.io/docs/concepts/security/pod-security-admission/[Pod Security Admission] in the [.noloc]`Kubernetes` documentation. PSA replaces the https://aws.github.io/aws-eks-best-practices/security/docs/pods/#pod-security-solutions[Pod Security Policy] ([.noloc]`PSP`) admission controller. The PSP admission controller isn't supported and is scheduled for removal in [.noloc]`Kubernetes` version `1.25`. ++ +The [.noloc]`PSP` admission controller enforces [.noloc]`Pod` security standards on [.noloc]`Pods` in a namespace based on specific namespace labels that set the enforcement level. For more information, see https://aws.github.io/aws-eks-best-practices/security/docs/pods/#pod-security-standards-pss-and-pod-security-admission-psa[Pod Security Standards (PSS) and Pod Security Admission (PSA)] in the Amazon EKS best practices guide. +* The `kube-proxy` image deployed with clusters is now the https://gallery.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-iptables[minimal base image] maintained by Amazon EKS Distro (EKS-D). The image contains minimal packages and doesn't have shells or package managers. +* [.noloc]`Kubernetes` graduated ephemeral containers to beta. Ephemeral containers are temporary containers that run in the same namespace as an existing [.noloc]`Pod`. You can use them to observe the state of [.noloc]`Pods` and containers for troubleshooting and debugging purposes. This is especially useful for interactive troubleshooting when `kubectl exec` is insufficient because either a container has crashed or a container image doesn't include debugging utilities. An example of a container that includes a debugging utility is https://github.com/GoogleContainerTools/distroless#distroless-container-images[distroless images]. For more information, see https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/#ephemeral-container[Debugging with an ephemeral debug container] in the [.noloc]`Kubernetes` documentation. +* [.noloc]`Kubernetes` graduated the `HorizontalPodAutoscaler` `autoscaling/v2` stable API to general availability. The `HorizontalPodAutoscaler` `autoscaling/v2beta2` API is deprecated. It will be unavailable in `1.26`. +* The https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/[goaway-chance] option in the [.noloc]`Kubernetes` API server helps prevent `HTTP/2` client connections from being stuck on a single API server instance, by randomly closing a connection. When the connection is closed, the client will try to reconnect, and will likely land on a different API server as a result of load balancing. Amazon EKS version `1.23` has enabled `goaway-chance` flag. If your workload running on Amazon EKS cluster uses a client that is not compatible with https://www.rfc-editor.org/rfc/rfc7540#section-6.8[HTTP GOAWAY], we recommend that you update your client to handle `GOAWAY` by reconnecting on connection termination. + +For the complete [.noloc]`Kubernetes` `1.23` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#changelog-since-v1220. diff --git a/latest/ug/clusters/kubernetes-versions-standard.adoc b/latest/ug/clusters/kubernetes-versions-standard.adoc new file mode 100644 index 00000000..ad1034fc --- /dev/null +++ b/latest/ug/clusters/kubernetes-versions-standard.adoc @@ -0,0 +1,88 @@ +//!!NODE_ROOT
+ +[.topic] +[[kubernetes-versions-standard,kubernetes-versions-standard.title]] += Review release notes for [.noloc]`Kubernetes` versions on standard support +:info_titleabbrev: Standard support versions + +include::../attributes.txt[] + +[abstract] +-- +This topic gives important changes to be aware of for each [.noloc]`Kubernetes` version in standard support. +-- + +This topic gives important changes to be aware of for each [.noloc]`Kubernetes` version in standard support. When upgrading, carefully review the changes that have occurred between the old and new versions for your cluster. + +[NOTE] +==== + +For `1.24` and later clusters, officially published Amazon EKS AMIs include `containerd` as the only runtime. [.noloc]`Kubernetes` versions earlier than `1.24` use [.noloc]`Docker` as the default runtime. These versions have a bootstrap flag option that you can use to test out your workloads on any supported cluster with `containerd`. For more information, see <>. + +==== + + +[[kubernetes-1.31,kubernetes-1.31.title]] +== [.noloc]`Kubernetes` 1.31 + +[.noloc]`Kubernetes` `1.31` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.31`, see the https://kubernetes.io/blog/2024/08/13/kubernetes-v1-31-release/[official release announcement]. + +[IMPORTANT] +==== + + +* The kubelet flag `--keep-terminated-pod-volumes` deprecated since 2017 has been removed as part of the `v1.31` release. This change impacts how terminated pod volumes are handled by the kubelet. If you are using this flag in your node configurations, you must update your bootstrap scripts and launch templates to remove it before upgrading. + +==== + +* The beta `VolumeAttributesClass` feature gate and API resource is enabled in Amazon EKS `v1.31`. This feature allows cluster operators to modify mutable properties of Persistent Volumes (PVs) managed by compatible CSI Drivers, including the Amazon EBS CSI Driver. To leverage this feature, ensure that your CSI Driver supports the `VolumeAttributesClass` feature (for the Amazon EBS CSI Driver, upgrade to version `v1.35.0` or later to automatically enable the feature). You will be able to create `VolumeAttributesClass` objects to define the desired volume attributes, such as volume type and throughput, and associate them with your Persistent Volume Claims (PVCs). See the https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/[official Kubernetes documentation] as well as the documentation of your CSI driver for more information. +** For more information about the Amazon EBS CSI Driver, see <>. +* Kubernetes support for https://apparmor.net/[AppArmor] has graduated to stable and is now generally available for public use. This feature allows you to protect your containers with AppArmor by setting the `appArmorProfile.type` field in the container's `securityContext`. Prior to Kubernetes `v1.30`, AppArmor was controlled by annotations. Starting with `v1.30`, it is controlled using fields. To leverage this feature, we recommend migrating away from annotations and using the `appArmorProfile.type` field to ensure that your workloads are compatible. +* The PersistentVolume last phase transition time feature has graduated to stable and is now generally available for public use in Kubernetes `v1.31`. This feature introduces a new field, `.status.lastTransitionTime`, in the PersistentVolumeStatus, which provides a timestamp of when a PersistentVolume last transitioned to a different phase. This enhancement allows for better tracking and management of PersistentVolumes, particularly in scenarios where understanding the lifecycle of volumes is important. + +For the complete [.noloc]`Kubernetes` `1.31` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.31.md + +[[kubernetes-1.30,kubernetes-1.30.title]] +== [.noloc]`Kubernetes` 1.30 + +[.noloc]`Kubernetes` `1.30` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.30`, see the https://kubernetes.io/blog/2024/04/17/kubernetes-v1-30-release/[official release announcement]. + +[IMPORTANT] +==== + + +* Starting with Amazon EKS version `1.30` or newer, any newly created managed node groups will automatically default to using Amazon Linux 2023 (AL2023) as the node operating system. Previously, new node groups would default to Amazon Linux 2 (AL2). You can continue to use AL2 by choosing it as the AMI type when creating a new node group. ++ +** For more information about Amazon Linux, see link:linux/al2023/ug/compare-with-al2.html[Comparing AL2 and AL2023,type="documentation"] in the Amazon Linux User Guide. +** For more information about specifiying the operating system for a managed node group, see <>. + +==== + +* With Amazon EKS `1.30`, the `topology.k8s.aws/zone-id` label is added to worker nodes. You can use Availability Zone IDs (AZ IDs) to determine the location of resources in one account relative to the resources in another account. For more information, see link:ram/latest/userguide/working-with-az-ids.html[Availability Zone IDs for your {aws} resources,type="documentation"] in the _{aws} RAM User Guide_. +* Starting with `1.30`, Amazon EKS no longer includes the `default` annotation on the `gp2 StorageClass` resource applied to newly created clusters. This has no impact if you are referencing this storage class by name. You must take action if you were relying on having a default `StorageClass` in the cluster. You should reference the `StorageClass` by the name `gp2`. Alternatively, you can deploy the Amazon EBS recommended default storage class by setting the `defaultStorageClass.enabled` parameter to true when installing `v1.31.0` or later of the `aws-ebs-csi-driver add-on`. +* The minimum required IAM policy for the Amazon EKS cluster IAM role has changed. The action `ec2:DescribeAvailabilityZones` is required. For more information, see <>. + +For the complete [.noloc]`Kubernetes` `1.30` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md. + +[[kubernetes-1.29,kubernetes-1.29.title]] +== [.noloc]`Kubernetes` 1.29 + +[.noloc]`Kubernetes` `1.29` is now available in Amazon EKS. For more information about [.noloc]`Kubernetes` `1.29`, see the https://kubernetes.io/blog/2023/12/13/kubernetes-v1-29-release/[official release announcement]. + +[IMPORTANT] +==== + + +* The deprecated `flowcontrol.apiserver.k8s.io/v1beta2` API version of `FlowSchema` and `PriorityLevelConfiguration` are no longer served in [.noloc]`Kubernetes` `v1.29`. If you have manifests or client software that uses the deprecated beta API group, you should change these before you upgrade to `v1.29`. + +==== + +* The `.status.kubeProxyVersion` field for node objects is now deprecated, and the [.noloc]`Kubernetes` project is proposing to remove that field in a future release. The deprecated field is not accurate and has historically been managed by `kubelet` - which does not actually know the `kube-proxy` version, or even whether `kube-proxy` is running. If you've been using this field in client software, stop - the information isn't reliable and the field is now deprecated. +* In [.noloc]`Kubernetes` `1.29` to reduce potential attack surface, the `LegacyServiceAccountTokenCleanUp` feature labels legacy auto-generated secret-based tokens as invalid if they have not been used for a long time (1 year by default), and automatically removes them if use is not attempted for a long time after being marked as invalid (1 additional year by default). To identify such tokens, a you can run: ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get cm kube-apiserver-legacy-service-account-token-tracking -n kube-system +---- + +For the complete [.noloc]`Kubernetes` `1.29` changelog, see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1280. diff --git a/latest/ug/clusters/kubernetes-versions.adoc b/latest/ug/clusters/kubernetes-versions.adoc new file mode 100644 index 00000000..fdf3e63e --- /dev/null +++ b/latest/ug/clusters/kubernetes-versions.adoc @@ -0,0 +1,276 @@ +//!!NODE_ROOT
+ +[.topic] +[[kubernetes-versions,kubernetes-versions.title]] += Understand the [.noloc]`Kubernetes` version lifecycle on EKS +:info_doctype: section +:info_title: Understand the Kubernetes version lifecycle on EKS +:info_titleabbrev: Kubernetes versions +:keywords: Amazon EKS, available, Kubernetes, version, release notes +:info_abstract: Learn how Amazon EKS supports Kubernetes versions with standard and extended \ + support periods, allowing you to proactively update clusters with the latest \ + versions, features, and security patches.. + + +include::../attributes.txt[] + +[abstract] +-- +Learn how Amazon EKS supports Kubernetes versions with standard and extended support periods, allowing you to proactively update clusters with the latest versions, features, and security patches.. +-- + +[.noloc]`Kubernetes` rapidly evolves with new features, design updates, and bug fixes. The community releases new [.noloc]`Kubernetes` minor versions (such as `1.30`) on average once every four months. Amazon EKS follows the upstream release and deprecation cycle for minor versions. As new [.noloc]`Kubernetes` versions become available in Amazon EKS, we recommend that you proactively update your clusters to use the latest available version. + +A minor version is under standard support in Amazon EKS for the first 14 months after it's released. Once a version is past the end of standard support date, it enters extended support for the next 12 months. Extended support allows you to stay at a specific [.noloc]`Kubernetes` version for longer at an additional cost per cluster hour. If you haven't updated your cluster before the extended support period ends, your cluster is auto-upgraded to the oldest currently supported extended version. + +Extended support is enabled by default. <> + +We recommend that you create your cluster with the latest available [.noloc]`Kubernetes` version supported by Amazon EKS. If your application requires a specific version of [.noloc]`Kubernetes`, you can select older versions. You can create new Amazon EKS clusters on any version offered in standard or extended support. + + + +video::_dJdAZ_J_jw[youtube,align = center,height = 405,fileref = https://www.youtube.com/embed/_dJdAZ_J_jw,width = 720] + + +[[available-versions,available-versions.title]] +== Available versions on standard support + +The following [.noloc]`Kubernetes` versions are currently available in Amazon EKS standard support: + + +* `1.31` +* `1.30` +* `1.29` + +For important changes to be aware of for each version in standard support, see <>. + +[[available-versions-extended,available-versions-extended.title]] +== Available versions on extended support + +The following [.noloc]`Kubernetes` versions are currently available in Amazon EKS extended support: + + +* `1.28` +* `1.27` +* `1.26` +* `1.25` +* `1.24` + +For important changes to be aware of for each version in extended support, see <>. + +[[kubernetes-release-calendar,kubernetes-release-calendar.title]] +== Amazon EKS [.noloc]`Kubernetes` release calendar + +The following table shows important release and support dates to consider for each [.noloc]`Kubernetes` version. Billing for extended support starts at the beginning of the day that the version reaches end of standard support. + +[NOTE] +==== + +Dates with only a month and a year are approximate and are updated with an exact date when it's known. + +==== + +[cols="1,1,1,1,1", options="header"] +|=== +|Kubernetes version +|Upstream release +|Amazon EKS release +|End of standard support +|End of extended support + + +|`1.31` +|August 13, 2024 +|September 26, 2024 +|November 26, 2025 +|November 26, 2026 + +|`1.30` +|April 17, 2024 +|May 23, 2024 +|July 23, 2025 +|July 23, 2026 + +|`1.29` +|December 13, 2023 +|January 23, 2024 +|March 23, 2025 +|March 23, 2026 + +|`1.28` +|August 15, 2023 +|September 26, 2023 +|November 26, 2024 +|November 26, 2025 + +|`1.27` +|April 11, 2023 +|May 24, 2023 +|July 24, 2024 +|July 24, 2025 + +|`1.26` +|December 9, 2022 +|April 11, 2023 +|June 11, 2024 +|June 11, 2025 + +|`1.25` +|August 23, 2022 +|February 22, 2023 +|May 1, 2024 +|May 1, 2025 + +|`1.24` +|May 3, 2022 +|November 15, 2022 +|January 31, 2024 +|January 31, 2025 + +|=== + +[[version-cli,version-cli.title]] +== Get version information with {AWS} CLI + +You can use the {aws} CLI to get information about Kubernetes versions available on EKS, such as the end date of Standard Support. + +=== To retrieve information about available Kubernetes versions on EKS using the {aws} CLI + +. Open your terminal. +. Ensure you have the {aws} CLI installed and configured. For more information, see link:cli/latest/userguide/getting-started-install.html["Installing or updating to the latest version of the CLI",type="documentation"]. +. Run the following command: ++ +``` +aws eks describe-cluster-versions +``` +. The command will return a JSON output with details about the available cluster versions. Here's an example of the output: ++ +```json +{ + "clusterVersions": [ + { + "clusterVersion": "1.31", + "clusterType": "eks", + "defaultPlatformVersion": "eks.21", + "defaultVersion": true, + "releaseDate": "2024-09-25T17:00:00-07:00", + "endOfStandardSupportDate": "2025-11-25T16:00:00-08:00", + "endOfExtendedSupportDate": "2026-11-25T16:00:00-08:00", + "status": "STANDARD_SUPPORT", + "kubernetesPatchVersion": "1.31.3" + } + ] +} +``` + +*The output provides the following information for each cluster version:* + +* `clusterVersion`: The Kubernetes version of the EKS cluster +* `clusterType`: The type of cluster (e.g., "eks") +* `defaultPlatformVersion`: The default EKS platform version +* `defaultVersion`: Whether this is the default version +* `releaseDate`: The date when this version was released +* `endOfStandardSupportDate`: The date when standard support ends +* `endOfExtendedSupportDate`: The date when extended support ends +* `status`: The current support status of the version, such as `STANDARD_SUPPORT` or `EXTENDED_SUPPORT` +* `kubernetesPatchVersion`: The specific Kubernetes patch version + +[[version-faqs,version-faqs.title]] +== Amazon EKS version FAQs + +*How many [.noloc]`Kubernetes` versions are available in standard support?*:: +In line with the [.noloc]`Kubernetes` community support for [.noloc]`Kubernetes` versions, Amazon EKS is committed to offering support for three [.noloc]`Kubernetes` versions at any given time. We will announce the end of standard support date of a given [.noloc]`Kubernetes` minor version at least 60 days in advance. Because of the Amazon EKS qualification and release process for new [.noloc]`Kubernetes` versions, the end of standard support date of a [.noloc]`Kubernetes` version on Amazon EKS will be after the date that the [.noloc]`Kubernetes` project stops supporting the version upstream. + +*How long does a [.noloc]`Kubernetes` receive standard support by Amazon EKS?*:: +A [.noloc]`Kubernetes` version received standard support for 14 months after first being available on Amazon EKS. This is true even if upstream [.noloc]`Kubernetes` no longer support a version that's available on Amazon EKS. We backport security patches that are applicable to the [.noloc]`Kubernetes` versions that are supported on Amazon EKS. + + +*Am I notified when standard support is ending for a [.noloc]`Kubernetes` version on Amazon EKS?*:: +Yes. If any clusters in your account are running the version nearing the end of support, Amazon EKS sends out a notice through the {aws} Health Dashboard approximately 12 months after the [.noloc]`Kubernetes` version was released on Amazon EKS. The notice includes the end of support date. This is at least 60 days from the date of the notice. + + +*Which [.noloc]`Kubernetes` features are supported by Amazon EKS?*:: +Amazon EKS supports all generally available (GA) features of the [.noloc]`Kubernetes` API. Starting with [.noloc]`Kubernetes` version `1.24`, new beta APIs aren't enabled in clusters by default. However, previously existing beta APIs and new versions of existing beta APIs continue to be enabled by default. Alpha features aren't supported. + + +*Are Amazon EKS managed node groups automatically updated along with the cluster control plane version?*:: +No. A managed node group creates Amazon EC2 instances in your account. These instances aren't automatically upgraded when you or Amazon EKS update your control plane. For more information, see <>. We recommend maintaining the same [.noloc]`Kubernetes` version on your control plane and nodes. + + +*Are self-managed node groups automatically updated along with the cluster control plane version?*:: +No. A self-managed node group includes Amazon EC2 instances in your account. These instances aren't automatically upgraded when you or Amazon EKS update the control plane version on your behalf. A self-managed node group doesn't have any indication in the console that it needs updating. You can view the `kubelet` version installed on a node by selecting the node in the *Nodes* list on the *Overview* tab of your cluster to determine which nodes need updating. You must manually update the nodes. For more information, see <>. ++ +The [.noloc]`Kubernetes` project tests compatibility between the control plane and nodes for up to three minor versions. For example, `1.27` nodes continue to operate when orchestrated by a `1.30` control plane. However, running a cluster with nodes that are persistently three minor versions behind the control plane isn't recommended. For more information, see https://kubernetes.io/docs/setup/version-skew-policy/[Kubernetes version and version skew support policy] in the [.noloc]`Kubernetes` documentation. We recommend maintaining the same [.noloc]`Kubernetes` version on your control plane and nodes. + + +*Are [.noloc]`Pods` running on Fargate automatically upgraded with an automatic cluster control plane version upgrade?*:: +No. We strongly recommend running Fargate [.noloc]`Pods` as part of a replication controller, such as a [.noloc]`Kubernetes` deployment. Then do a rolling restart of all Fargate [.noloc]`Pods`. The new version of the Fargate [.noloc]`Pod` is deployed with a `kubelet` version that's the same version as your updated cluster control plane version. For more information, see https://kubernetes.io/docs/concepts/workloads/controllers/deployment[Deployments] in the [.noloc]`Kubernetes` documentation. ++ +IMPORTANT: If you update the control plane, you must still update the Fargate nodes yourself. To update Fargate nodes, delete the Fargate [.noloc]`Pod` represented by the node and redeploy the [.noloc]`Pod`. The new [.noloc]`Pod` is deployed with a `kubelet` version that's the same version as your cluster. + + +*What Kubernetes versions are supported for hybrid nodes?*:: +Amazon EKS Hybrid Nodes supports the same Kubernetes versions as Amazon EKS clusters with other node compute types, including standard and extended Kubernetes version support. Hybrid nodes are not automatically upgraded when you upgrade your control plane version and you are responsible for upgrading your hybrid nodes. For more information, see <>. + + +[[extended-support-faqs,extended-support-faqs.title]] +== Amazon EKS extended support FAQs + +*The standard support and extended support terminology is new to me. What do those terms mean?*:: +Standard support for a [.noloc]`Kubernetes` version in Amazon EKS begins when a [.noloc]`Kubernetes` version is released on Amazon EKS, and will end 14 months after the release date. Extended support for a [.noloc]`Kubernetes` version will begin immediately after the end of standard support, and will end after the next 12 months. For example, standard support for version `1.23` in Amazon EKS ended on October 11, 2023. Extended support for version `1.23` began on October 12, 2023 and ended on October 11, 2024. + + +*What do I need to do to get extended support for Amazon EKS clusters?*:: +You will need to enable extended support (see <>) for your cluster by changing the cluster upgrade policy to EXTENDED. By default, for all new and existing clusters, the upgrade policy is set to EXTENDED, unless specified otherwise. See <> to view the upgrade policy for your cluster. Standard support will begin when a [.noloc]`Kubernetes` version is released on Amazon EKS, and will end 14 months after the release date. Extended support for a [.noloc]`Kubernetes` version will begin immediately after the end of standard support, and will end after the next 12 months. + + +*For which [.noloc]`Kubernetes` versions can I get extended support?*:: +Extended support is available for [.noloc]`Kubernetes` versions `1.23` and higher. You can run clusters on any version for up to 12 months after the end of standard support for that version. This means that each version will be supported for 26 months in Amazon EKS (14 months of standard support plus 12 months of extended support). + + +*What if I don't want to use extended support?*:: +If you don't want to be automatically enrolled in extended support, you can upgrade your cluster to a [.noloc]`Kubernetes` version that's in standard Amazon EKS support. See <> to learn how to disable extended support. Note: If you disable extended support, your cluster will be auto upgraded at the end of standard support. + + +*What will happen at the end of 12 months of extended support?*:: +Clusters running on a [.noloc]`Kubernetes` version that has completed its 26-month lifecycle (14 months of standard support plus 12 months of extended support) will be auto-upgraded to the next version. The auto-upgrade includes only the Kubernetes control plane. If you have EKS Auto Mode nodes, they may automatically update. Self managed nodes and EKS Managed Node Groups will remain on the previous version. ++ +On the end of extended support date, you can no longer create new Amazon EKS clusters with the unsupported version. Existing control planes are automatically updated by Amazon EKS to the earliest supported version through a gradual deployment process after the end of support date. After the automatic control plane update, make sure to manually update cluster add-ons and Amazon EC2 nodes. For more information, see <>. + + +*When exactly is my control plane automatically updated after the end of extended support date?*:: +Amazon EKS can't provide specific time frames. Automatic updates can happen at any time after the end of extended support date. You won't receive any notification before the update. We recommend that you proactively update your control plane without relying on the Amazon EKS automatic update process. For more information, see <>. + + +*Can I leave my control plane on a [.noloc]`Kubernetes` version indefinitely?*:: +No. Cloud security at {aws} is the highest priority. Past a certain point (usually one year), the [.noloc]`Kubernetes` community stops releasing common vulnerabilities and exposures ([.noloc]`CVE`) patches and discourages CVE submission for unsupported versions. This means that vulnerabilities specific to an older version of [.noloc]`Kubernetes` might not even be reported. This leaves clusters exposed with no notice and no remediation options in the event of a vulnerability. Given this, Amazon EKS doesn't allow control planes to stay on a version that reached end of extended support. + + +*Is there additional cost to get extended support?*:: +Yes, there is additional cost for Amazon EKS clusters running in extended support. For pricing details, see link:containers/amazon-eks-extended-support-for-kubernetes-versions-pricing[Amazon EKS extended support for Kubernetes version pricing,type="blog"] on the {aws} blog or our https://aws.amazon.com/eks/pricing/[pricing page]. + + +*What is included in extended support?*:: +Amazon EKS clusters in Extended Support receive ongoing security patches for the [.noloc]`Kubernetes` control plane. Additionally, Amazon EKS will release patches for the Amazon VPC CNI, `kube-proxy`, and [.noloc]`CoreDNS` add-ons for Extended Support versions. Amazon EKS will also release patches for {aws}-published Amazon EKS optimized AMIs for Amazon Linux, [.noloc]`Bottlerocket`, and Windows, as well as Amazon EKS Fargate nodes for those versions. All clusters in Extended Support will continue to get access to technical support from {aws}. ++ +NOTE: Extended Support for Amazon EKS optimized [.noloc]`Windows` AMIs that are published by {aws} isn't available for [.noloc]`Kubernetes` version `1.23` but is available for [.noloc]`Kubernetes` version `1.24` and higher. + + +*Are there any limitations to patches for non-[.noloc]`Kubernetes` components in extended support?*:: +While Extended Support covers all of the [.noloc]`Kubernetes` specific components from {aws}, it will only provide support for {aws}-published Amazon EKS optimized AMIs for Amazon Linux, [.noloc]`Bottlerocket`, and Windows at all times. This means, you will potentially have newer components (such as OS or kernel) on your Amazon EKS optimized AMI while using Extended Support. For example, once Amazon Linux 2 reaches the link:amazon-linux-2/faqs/[end of its lifecycle in 2025,type="marketing"], the Amazon EKS optimized Amazon Linux AMIs will be built using a newer Amazon Linux OS. Amazon EKS will announce and document important support lifecycle discrepancies such as this for each [.noloc]`Kubernetes` version. + + +*Can I create new clusters using a version on extended support?*:: +Yes. + +include::kubernetes-versions-standard.adoc[leveloffset=+1] + +include::kubernetes-versions-extended.adoc[leveloffset=+1] + +include::view-support-status.adoc[leveloffset=+1] + +include::view-upgrade-policy.adoc[leveloffset=+1] + +include::enable-extended-support.adoc[leveloffset=+1] + +include::disable-extended-support.adoc[leveloffset=+1] diff --git a/latest/ug/clusters/management/cost-monitoring-aws.adoc b/latest/ug/clusters/management/cost-monitoring-aws.adoc new file mode 100644 index 00000000..8c773eae --- /dev/null +++ b/latest/ug/clusters/management/cost-monitoring-aws.adoc @@ -0,0 +1,29 @@ +include::../../attributes.txt[] + +[.topic] +[[cost-monitoring-aws,cost-monitoring-aws.title]] += View costs by pod in {aws} billing with split cost allocation +:info_doctype: section + +.Cost monitoring using {aws} split cost allocation data for Amazon EKS +You can use {aws} split cost allocation data for Amazon EKS to get granular cost visibility for your Amazon EKS clusters. This enables you to analyze, optimize, and chargeback cost and usage for your [.noloc]`Kubernetes` applications. You allocate application costs to individual business units and teams based on Amazon EC2 CPU and memory resources consumed by your [.noloc]`Kubernetes` application. Split cost allocation data for Amazon EKS gives visibility into cost per Pod, and enables you to aggregate the cost data per Pod using namespace, cluster, and other [.noloc]`Kubernetes` primitives. The following are examples of [.noloc]`Kubernetes` primitives that you can use to analyze Amazon EKS cost allocation data. + +* Cluster name +* Deployment +* Namespace +* Node +* Workload Name +* Workload Type + +For more information about using split cost allocation data, see link:cur/latest/userguide/split-cost-allocation-data.html[Understanding split cost allocation data,type="documentation"] in the {aws} Billing User Guide. + +[[task-cur-setup,task-cur-setup.title]] +== Set up Cost and Usage Reports + +You can turn on Split Cost Allocation Data for EKS in the Cost Management Console, {aws} Command Line Interface, or the {aws} SDKs. + +Use the following for _Split Cost Allocation Data_: + +. Opt in to Split Cost Allocation Data. For more information, see link:cur/latest/userguide/enabling-split-cost-allocation-data.html[Enabling split cost allocation data,type="documentation"] in the {aws} Cost and Usage Report User Guide. +. Include the data in a new or existing report. +. View the report. You can use the Billing and Cost Management console or view the report files in Amazon Simple Storage Service. diff --git a/latest/ug/clusters/management/cost-monitoring-kubecost-bundles.adoc b/latest/ug/clusters/management/cost-monitoring-kubecost-bundles.adoc new file mode 100644 index 00000000..c3297daa --- /dev/null +++ b/latest/ug/clusters/management/cost-monitoring-kubecost-bundles.adoc @@ -0,0 +1,330 @@ +//!!NODE_ROOT
+[.topic] +[[cost-monitoring-kubecost-bundles,cost-monitoring-kubecost-bundles.title]] += Learn more about Kubecost +:info_doctype: section + +include::../../attributes.txt[] + +Amazon EKS provides an {aws} optimized bundle of [.noloc]`Kubecost` for cluster cost visibility. Amazon EKS supports [.noloc]`Kubecost`, which you can use to monitor your costs broken down by [.noloc]`Kubernetes` resources including [.noloc]`Pods`, nodes, namespaces, and labels. + +This topic covers the available versions of [.noloc]`Kubecost`, and the differences between the available tiers. EKS supports [.noloc]`Kubecost` Version 1 and Version 2. Each version is available in different tiers. You can use _Amazon EKS optimized [.noloc]`Kubecost` custom bundle_ for your EKS clusters at no additional cost. You may be charged for use of associated {aws} services, such as Amazon Managed Service for Prometheus. Also, you can use your existing {aws} support agreements to obtain support. + +As a [.noloc]`Kubernetes` platform administrator and finance leader, you can use [.noloc]`Kubecost` to visualize a breakdown of Amazon EKS charges, allocate costs, and charge back organizational units such as application teams. You can provide your internal teams and business units with transparent and accurate cost data based on their actual {aws} bill. Moreover, you can also get customized recommendations for cost optimization based on their infrastructure environment and usage patterns within their clusters. For more information about [.noloc]`Kubecost`, see the https://guide.kubecost.com[Kubecost] documentation. + +*What is the difference between the custom bundle of [.noloc]`Kubecost` and the free version of [.noloc]`Kubecost` (also known as [.noloc]`OpenCost`)?* + +{aws} and [.noloc]`Kubecost` collaborated to offer a customized version of [.noloc]`Kubecost`. This version includes a subset of commercial features at no additional charge. See the tables below for features that are included with in the custom bundle of [.noloc]`Kubecost`. + +[[kubecost-v2,kubecost-v2.title]] +== Kubecost v2 + +*What is the difference between [.noloc]`Kubecost` v1 and v2?* + +Kubecost 2.0 is a major upgrade from previous versions and includes major new features including a brand new API Backend. Note the https://docs.kubecost.com/apis/monitoring-apis/api-allocation[Allocation] and https://docs.kubecost.com/apis/monitoring-apis/assets-api[Assets] APIs are fully backwards compatible. https://docs.kubecost.com/install-and-configure/install/kubecostv2[Please review the Kubecost documentation to ensure a smooth transition.] For the full list of enhancements, https://github.com/kubecost/cost-analyzer-helm-chart/releases/tag/v2.0.0[please see the Kubecost release notes] + +[IMPORTANT] +==== + +https://docs.kubecost.com/install-and-configure/install/kubecostv2[Review the Kubecost documentation before upgrading.] Upgrading may impact report availability. + +==== + +*Core features comparison:* + +[cols="1,1,1,1", options="header"] +|=== + +| Feature +| Kubecost free tier 2.0 +| Amazon EKS optimized Kubecost bundle 2.0 +| Kubecost Enterprise 2.0 + + +| Cluster cost visibility +| Single clusters up to 250 cores +| Unified multi-cluster without core limits when integrated with Amazon Managed Service for Prometheus +| Unified and unlimited number of clusters across unlimited numbers of environments (i.e. multi-cloud) + +| Deployment +| User hosted +| User hosted +| User hosted, Kubecost hosted (dedicated tenant), SaaS + +| Databases supported +| Local Prometheus +| Amazon Managed Service for Prometheus or Local Prometheus +| Any prometheus flavor and custom databases + +| Database retention support (raw metrics) +| 15 days +| Unlimited historical data +| Unlimited historical data + +| Kubecost API and UI retention (ETL) +| 15 days +| 15 days +| Unlimited + +| Hybrid cloud visibility +| - +| Amazon EKS and Amazon EKS Anywhere clusters +| Multi-cloud and hybrid cloud + +| Alerts and recurring reports +| Only supported on the primary cluster, limited to 250 cores +| Efficiency alerts, budget alerts, spend change alerts, and https://docs.kubecost.com/using-kubecost/navigating-the-kubecost-ui/alerts[more supported] across all clusters +| Efficiency alerts, budget alerts, spend change alerts, and https://docs.kubecost.com/using-kubecost/navigating-the-kubecost-ui/alerts[more supported] across all clusters + +| Saved reports +| - +| Reports using 15 days of metrics +| Reports using unlimited historical data and metrics + +| Cloud billing integration +| Only supported on the primary cluster, limited to 250 cores +| Custom pricing support for {aws} (including multiple clusters and multiple accounts) +| Custom pricing support for any cloud + +| Savings recommendations +| Only supported on the primary cluster, limited to 250 cores +| Primary cluster insights, but there is no 250 core limit +| Multi-cluster insights + +| Governance: Audits +| - +| - +| Audit historical cost events + +| Single sign-on (SSO) support +| - +| Amazon Cognito supported +| Okta, Auth0, PingID, KeyCloak, and anything else custom + +| Role-based access control (RBAC) with SAML 2.0 +| - +| - +| Okta, Auth0, PingID, KeyCloak, and anything else custom + +| Enterprise training and onboarding +| - +| - +| Full-service training and FinOps onboarding + +| Teams +| - +| - +| Yes + +|=== + +*New Features:* + +The following features have metric limits: + + + +* Kubecost Aggregator +* Network Monitoring +* Kubecost Actions +* Collections +* Anomaly detection +* Container Request Right-Sizing +* Kubecost Forecasting +* Autocomplete for filtering and aggregation + +*Metric limits:* + +[cols="1,1,1,1", options="header"] +|=== +|Metric +|Kubecost Free Tier 2.0 +|Amazon EKS Optimized Kubecost Custom Bundle + 2.0 +|Kubecost Enterprise 2.0 + + +|Cluster size +|Limited to 250 cores +|Unlimited +|Unlimited + +|Metric retention +|15 days +|15 days +|Unlimited + +|Multi-cluster support +|Not available +|Available +|Available + +|Core limits +|250 cores per cluster +|No core limits +|No core limits +|=== + +[[kubecost-v1,kubecost-v1.title]] +== Kubecost v1 + +[cols="1,1,1,1", options="header"] +|=== +|Feature +|Kubecost free tier +|Amazon EKS optimized Kubecost custom bundle +|Kubecost Enterprise + + +|*Deployment* +|User hosted +|User hosted +|User hosted or [.noloc]`Kubecost` hosted (SaaS) + +|*Number of clusters supported* +|Unlimited +|Unlimited +|Unlimited + +|*Databases supported* +|Local [.noloc]`Prometheus` +|Local [.noloc]`Prometheus` or Amazon Managed Service for Prometheus +|[.noloc]`Prometheus`, Amazon Managed Service for Prometheus, [.noloc]`Cortex`, or [.noloc]`Thanos` + +|*Database retention support* +|15 days +|Unlimited historical data +|Unlimited historical data + +|*[.noloc]`Kubecost` API retention (ETL)* +|15 days +|15 days +|Unlimited historical data + +|*Cluster cost visibility* +|Single clusters +|Unified multi-cluster +|Unified multi-cluster + +|*Hybrid cloud visibility* +|- +|Amazon EKS and Amazon EKS Anywhere clusters +|Multi-cloud and hybrid-cloud support + +|*Alerts and recurring reports* +|- +|Efficiency alerts, budget alerts, spend change alerts, and more supported +|Efficiency alerts, budget alerts, spend change alerts, and more supported + +|*Saved reports* +|- +|Reports using 15 days data +|Reports using unlimited historical data + +|*Cloud billing integration* +|Required for each individual cluster +|Custom pricing support for {aws} (including multiple clusters and multiple accounts) +|Custom pricing support for {aws} (including multiple clusters and multiple accounts) + +|*Savings recommendations* +|Single cluster insights +|Single cluster insights +|Multi-cluster insights + +|*Governance: Audits* +|- +|- +|Audit historical cost events + +|*Single sign-on (SSO) support* +|- +|Amazon Cognito supported +|[.noloc]`Okta`, [.noloc]`Auth0`, [.noloc]`PingID`, KeyCloak + +|*Role-based access control (RBAC) with SAML `2.0`* +|- +|- +|[.noloc]`Okta`, [.noloc]`Auth0`, [.noloc]`PingID`, [.noloc]`Keycloak` + +|*Enterprise training and onboarding* +|- +|- +|Full-service training and [.noloc]`FinOps` onboarding +|=== + +[[cost-monitoring-faq,cost-monitoring-faq.title]] +== Frequently asked questions + +See the following common questions and answers about using [.noloc]`Kubecost` with Amazon EKS. + +*What is the Kubecost API retention (ETL) feature?* + +The Kubecost ETL feature aggregates and organizes metrics to surface cost visibility at various levels of granularity (such as `namespace-level`, `pod-level`, and `deployment-level`). For the custom Kubecost bundle, customers get data and insights from metrics for the last 15 days. + +*What is the alerts and recurring reports feature? What alerts and reports does it include?* + +Kubecost alerts allow teams to receive updates on real-time Kubernetes spend as well as cloud spend. Recurring reports enable teams to receive customized views of historical Kubernetes and cloud spend. Both are configurable using the Kubecost UI or Helm values. They support email, Slack, and Microsoft Teams. + +*What do saved reports include?* + +Kubecost saved reports are predefined views of cost and efficiency metrics. They include cost by cluster, namespace, label, and more. + +*What is cloud billing integration?* + +Integration with {aws} billing APIs allows Kubecost to display out-of-cluster costs (such as Amazon S3). Additionally, it allows Kubecost to reconcile Kubecost`'s in-cluster predictions with actual billing data to account for spot usage, savings plans, and enterprise discounts. + +*What do savings recommendations include?* + +Kubecost provides insights and automation to help users optimize their Kubernetes infrastructure and spend. + +*Is there a charge for this functionality?* + +No. You can use this version of Kubecost at no additional charge. If you want additional Kubecost capabilities that aren`'t included in this bundle, you can buy an enterprise license of Kubecost through the {aws} Marketplace, or from Kubecost directly. + +*Is support available?* + +Yes. You can open a support case with the {aws} Support team at link:contact-us/[Contact {aws},type="marketing"]. + +*Do I need a license to use Kubecost features provided by the Amazon EKS integration?* + +No. + +*Can I integrate Kubecost with {aws} Cost and Usage Report for more accurate reporting?* + +Yes. You can configure Kubecost to ingest data from {aws} Cost and Usage Report to get accurate cost visibility, including discounts, Spot pricing, reserved instance pricing, and others. For more information, see https://docs.kubecost.com/install-and-configure/install/cloud-integration/aws-cloud-integrations[{aws} Cloud Billing Integration] in the Kubecost documentation. + +*Does this version support cost management of self-managed Kubernetes clusters on Amazon EC2?* + +No. This version is only compatible with Amazon EKS clusters. + +*Can Kubecost track costs for Amazon EKS on {aws} Fargate?* + +Kubecost provides best effort to show cluster cost visibility for Amazon EKS on Fargate, but with lower accuracy than with Amazon EKS on Amazon EC2. This is primarily due to the difference in how you`'re billed for your usage. With Amazon EKS on Fargate, you`'re billed for consumed resources. With Amazon EKS on Amazon EC2 nodes, you`'re billed for provisioned resources. Kubecost calculates the cost of an Amazon EC2 node based on the node specification, which includes CPU, RAM, and ephemeral storage. With Fargate, costs are calculated based on the requested resources for the Fargate Pods. + +*How can I get updates and new versions of Kubecost?* + +You can upgrade your Kubecost version using standard Helm upgrade procedures. The latest versions are in the https://gallery.ecr.aws/kubecost/cost-analyzer[Amazon ECR Public Gallery]. + +*Is the `*kubectl-cost*` CLI supported? How do I install it?* + +Yes. `Kubectl-cost` is an open source tool by Kubecost (Apache 2.0 License) that provides CLI access to Kubernetes cost allocation metrics. To install `kubectl-cost`, see https://github.com/kubecost/kubectl-cost#installation[Installation] on GitHub. + +*Is the Kubecost user interface supported? How do I access it?* + +Kubecost provides a web dashboard that you can access through `kubectl` port forwarding, an ingress, or a load balancer. You can also use the {aws} Load Balancer Controller to expose [.noloc]`Kubecost` and use Amazon Cognito for authentication, authorization, and user management. For more information, see link:containers/how-to-use-application-load-balancer-and-amazon-cognito-to-authenticate-users-for-your-kubernetes-web-apps[How to use Application Load Balancer and Amazon Cognito to authenticate users for your Kubernetes web apps,type="blog"] on the {aws} blog. + +*Is Amazon EKS Anywhere supported?* + +No. + +[[kubecost-additional,kubecost-additional.title]] +== Additional [.noloc]`Kubecost` Features + +* The following features are available in both [.noloc]`Kubecost` v1 and v2. +* *Export cost metrics* – Amazon EKS optimized cost monitoring is deployed with [.noloc]`Kubecost` and [.noloc]`Prometheus`, which is an open-source monitoring system and time series database. [.noloc]`Kubecost` reads metric from [.noloc]`Prometheus` and then performs cost allocation calculations and writes the metrics back to [.noloc]`Prometheus`. The [.noloc]`Kubecost` front-end reads metrics from [.noloc]`Prometheus` and shows them on the [.noloc]`Kubecost` user interface. The architecture is illustrated in the following diagram. ++ +image::images/kubecost-architecture.png[Kubecost architecture,scaledwidth=100%] ++ +With https://prometheus.io/[Prometheus] pre-installed, you can write queries to ingest [.noloc]`Kubecost` data into your current business intelligence system for further analysis. You can also use it as a data source for your current https://grafana.com/[Grafana] dashboard to display Amazon EKS cluster costs that your internal teams are familiar with. To learn more about how to write [.noloc]`Prometheus` queries, see the https://github.com/opencost/opencost/blob/develop/PROMETHEUS.md[Prometheus Configuration]``readme`` file on GitHub or use the example [.noloc]`Grafana` JSON models in the https://github.com/kubecost/cost-analyzer-helm-chart/tree/develop/cost-analyzer[Kubecost Github repository] as references. +* *{aws} Cost and Usage Report integration* – To perform cost allocation calculations for your Amazon EKS cluster, [.noloc]`Kubecost` retrieves the public pricing information of {aws} services and {aws} resources from the {aws} Price List API. You can also integrate [.noloc]`Kubecost` with *{aws} Cost and Usage Report*:: + to enhance the accuracy of the pricing information specific to your {aws} account. This information includes enterprise discount programs, reserved instance usage, savings plans, and spot usage. To learn more about how the {aws} Cost and Usage Report integration works, see https://docs.kubecost.com/install-and-configure/install/cloud-integration/aws-cloud-integrations[{aws} Cloud Billing Integration] in the [.noloc]`Kubecost` documentation. diff --git a/latest/ug/clusters/management/cost-monitoring-kubecost.adoc b/latest/ug/clusters/management/cost-monitoring-kubecost.adoc new file mode 100644 index 00000000..5f831184 --- /dev/null +++ b/latest/ug/clusters/management/cost-monitoring-kubecost.adoc @@ -0,0 +1,115 @@ + +[.topic] +[[cost-monitoring-kubecost,cost-monitoring-kubecost.title]] += Install Kubecost and access dashboard +:info_doctype: section + +include::../../attributes.txt[] + +Amazon EKS supports [.noloc]`Kubecost`, which you can use to monitor your costs broken down by [.noloc]`Kubernetes` resources including [.noloc]`Pods`, nodes, namespaces, and labels. This topic covers installing [.noloc]`Kubecost`, and accessing the [.noloc]`Kubecost` dashboard. + +Amazon EKS provides an {aws} optimized bundle of [.noloc]`Kubecost` for cluster cost visibility. You can use your existing {aws} support agreements to obtain support. For more information about the available versions of [.noloc]`Kubecost`, see <>. + +As a [.noloc]`Kubernetes` platform administrator and finance leader, you can use [.noloc]`Kubecost` to visualize a breakdown of Amazon EKS charges, allocate costs, and charge back organizational units such as application teams. You can provide your internal teams and business units with transparent and accurate cost data based on their actual {aws} bill. Moreover, you can also get customized recommendations for cost optimization based on their infrastructure environment and usage patterns within their clusters. + +[NOTE] +==== + +Kubecost v2 introduces several major new features. <> + +==== + +For more information about [.noloc]`Kubecost`, see the https://guide.kubecost.com[Kubecost] documentation. + + +[[kubecost-addon,kubecost-addon.title]] +== Install Kubecost using Amazon EKS Add-ons + +[NOTE] +==== +Install Kubecost as an Amazon EKS Add-on and benefit from additional features at no additional cost with the Amazon EKS optimized Kubecost bundle. For more information, see <>. +==== + +Amazon EKS Add-ons reduce the complexity of upgrading Kubecost, and managing licenses. EKS Add-ons are integrated with the {aws} marketplace. + +. View link:marketplace/seller-profile?id=983de668-2731-4c99-a7e2-74f27d796173[Kubecost in the {aws} Marketplace console,type="marketing"] and subscribe. +. Determine the name of your cluster, and the region. Verify you are logged into the {aws} CLI with sufficient permissions to manage EKS. +. Create the Kubecost addon. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks create-addon --addon-name kubecost_kubecost --cluster-name $YOUR_CLUSTER_NAME --region $AWS_REGION +---- + +Learn how to <>, such as Kubecost. + +[[kubecost-helm,kubecost-helm.title]] +== Install Kubecost using Helm + +* An existing Amazon EKS cluster. To deploy one, see <>. The cluster must have Amazon EC2 nodes because you can't run [.noloc]`Kubecost` on Fargate nodes. +* The `kubectl` command line tool is installed on your device or {aws} CloudShell. The version can be the same as or up to one minor version earlier or later than the [.noloc]`Kubernetes` version of your cluster. For example, if your cluster version is `1.29`, you can use `kubectl` version `1.28`, `1.29`, or `1.30` with it. To install or upgrade `kubectl`, see <>. +* Helm version 3.9.0 or later configured on your device or {aws} CloudShell. To install or update Helm, see <>. +* If your cluster is version `1.23` or later, you must have the <> installed on your cluster. +. Determine the version of [.noloc]`Kubecost` to install. You can see the available versions at https://gallery.ecr.aws/kubecost/cost-analyzer[kubecost/cost-analyzer] in the Amazon ECR Public Gallery. For more information about the compatibility of [.noloc]`Kubecost` versions and Amazon EKS, see the https://docs.kubecost.com/install-and-configure/install/environment[Environment Requirements] in the Kubecost documentation. +. Install [.noloc]`Kubecost` with the following command. Replace [.replaceable]`kubecost-version` with the value retrieved from ECR, such as [.replaceable]`1.108.1`. ++ +[source,bash,subs="verbatim,attributes"] +---- +helm upgrade -i kubecost oci://public.ecr.aws/kubecost/cost-analyzer --version kubecost-version \ + --namespace kubecost --create-namespace \ + -f https://raw.githubusercontent.com/kubecost/cost-analyzer-helm-chart/develop/cost-analyzer/values-eks-cost-monitoring.yaml +---- ++ +[.noloc]`Kubecost` releases new versions regularly. You can update your version using https://helm.sh/docs/helm/helm_upgrade/[helm upgrade]. By default, the installation includes a local https://prometheus.io/[Prometheus] server and `kube-state-metrics`. You can customize your deployment to use link:mt/integrating-kubecost-with-amazon-managed-service-for-prometheus[Amazon Managed Service for Prometheus,type="blog"] by following the documentation in link:prometheus/latest/userguide/integrating-kubecost.html[Integrating with Amazon EKS cost monitoring,type="documentation"]. For a list of all other settings that you can configure, see the https://github.com/kubecost/cost-analyzer-helm-chart/blob/develop/cost-analyzer/values-eks-cost-monitoring.yaml[sample configuration file] on GitHub. ++ +You can remove [.noloc]`Kubecost` from your cluster with the following commands. ++ +[source,bash,subs="verbatim,attributes"] +---- +helm uninstall kubecost --namespace kubecost +kubectl delete ns kubecost +---- + + + +[[kubecost-dashboard,kubecost-dashboard.title]] +== Access Kubecost Dashboard +. Make sure the required [.noloc]`Pods` are running. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods -n kubecost +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +NAME READY STATUS RESTARTS AGE +kubecost-cost-analyzer-b9788c99f-5vj5b 2/2 Running 0 3h27m +kubecost-kube-state-metrics-99bb8c55b-bn2br 1/1 Running 0 3h27m +kubecost-prometheus-server-7d9967bfc8-9c8p7 2/2 Running 0 3h27m +---- +. On your device, enable port-forwarding to expose the [.noloc]`Kubecost` dashboard. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090 +---- ++ +Alternatively, you can use the <> to expose [.noloc]`Kubecost` and use Amazon Cognito for authentication, authorization, and user management. For more information, see link:containers/how-to-use-application-load-balancer-and-amazon-cognito-to-authenticate-users-for-your-kubernetes-web-apps[How to use Application Load Balancer and Amazon Cognito to authenticate users for your Kubernetes web apps,type="blog"]. +. On the same device that you completed the previous step on, open a web browser and enter the following address. ++ +[source,bash,subs="verbatim,attributes"] +---- +http://localhost:9090 +---- ++ +You see the [.noloc]`Kubecost` Overview page in your browser. It might take 5–10 minutes for [.noloc]`Kubecost` to gather metrics. You can see your Amazon EKS spend, including cumulative cluster costs, associated [.noloc]`Kubernetes` asset costs, and monthly aggregated spend. ++ +image::images/kubecost.png[Kubecost dashboard,scaledwidth=100%] +. To track costs at a cluster level, tag your Amazon EKS resources for billing. For more information, see <>. + + +* *Cost allocation* – View monthly Amazon EKS costs and cumulative costs for each of your namespaces and other dimensions over the past seven days. This is helpful for understanding which parts of your application are contributing to Amazon EKS spend. +* *Assets* – View the costs of the {aws} infrastructure assets that are associated with your Amazon EKS resources. diff --git a/latest/ug/clusters/management/cost-monitoring.adoc b/latest/ug/clusters/management/cost-monitoring.adoc new file mode 100644 index 00000000..6f92be95 --- /dev/null +++ b/latest/ug/clusters/management/cost-monitoring.adoc @@ -0,0 +1,30 @@ +//!!NODE_ROOT
+ + +[.topic] +[[cost-monitoring,cost-monitoring.title]] += Monitor and optimize Amazon EKS cluster costs +:info_doctype: section +:info_title: Monitor and optimize Amazon EKS cluster costs +:info_titleabbrev: Cost monitoring +:keywords: cost, monitoring, watch +:info_abstract: Learn how to monitor and optimize costs for your Amazon EKS clusters using {aws} Billing split cost allocation data or Kubecost, a Kubernetes-native cost monitoring tool integrated with {aws}. + +include::../../attributes.txt[] + +[abstract] +-- +Learn how to monitor and optimize costs for your Amazon EKS clusters using {aws} Billing split cost allocation data or Kubecost, a Kubernetes-native cost monitoring tool integrated with {aws}. +-- + +Cost monitoring is an essential aspect of managing your [.noloc]`Kubernetes` clusters on Amazon EKS. By gaining visibility into your cluster costs, you can optimize resource utilization, set budgets, and make data-driven decisions about your deployments. Amazon EKS provides two cost monitoring solutions, each with its own unique advantages, to help you track and allocate your costs effectively: + +*{aws} Billing split cost allocation data for Amazon EKS* -- This native feature integrates seamlessly with the {aws} Billing Console, allowing you to analyze and allocate costs using the same familiar interface and workflows you use for other {aws} services. With split cost allocation, you can gain insights into your [.noloc]`Kubernetes` costs directly alongside your other {aws} spend, making it easier to optimize costs holistically across your {aws} environment. You can also leverage existing {aws} Billing features like Cost Categories and Cost Anomaly Detection to further enhance your cost management capabilities. For more information, see link:cur/latest/userguide/split-cost-allocation-data.html[Understanding split cost allocation data,type="documentation"] in the {aws} Billing User Guide. + +*[.noloc]`Kubecost`* -- Amazon EKS supports Kubecost, a Kubernetes cost monitoring tool. Kubecost offers a feature-rich, Kubernetes-native approach to cost monitoring, providing granular cost breakdowns by Kubernetes resources, cost optimization recommendations, and out-of-the-box dashboards and reports. Kubecost also retrieves accurate pricing data by integrating with the {aws} Cost and Usage Report, ensuring you get a precise view of your Amazon EKS costs. Learn how to <>. + +include::cost-monitoring-aws.adoc[leveloffset=+1] + +include::cost-monitoring-kubecost.adoc[leveloffset=+1] + +include::cost-monitoring-kubecost-bundles.adoc[leveloffset=+1] diff --git a/latest/ug/clusters/management/eks-managing.adoc b/latest/ug/clusters/management/eks-managing.adoc new file mode 100644 index 00000000..42e6db90 --- /dev/null +++ b/latest/ug/clusters/management/eks-managing.adoc @@ -0,0 +1,40 @@ +//!!NODE_ROOT +include::../../attributes.txt[] +[[eks-managing,eks-managing.title]] += Organize and monitor cluster resources +:doctype: book +:sectnums: +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_doctype: chapter +:info_title: Organize and monitor cluster resources +:info_titleabbrev: Cluster management + +This chapter includes the following topics to help you manage your cluster. You can also view information about your <> with the {aws-management-console}. + + + +* The [.noloc]`Kubernetes` Dashboard is a general purpose, web-based UI for [.noloc]`Kubernetes` clusters. It allows users to manage applications running in the cluster and troubleshoot them, as well as manage the cluster itself. For more information, see The https://github.com/kubernetes/dashboard[Kubernetes Dashboard] GitHub repository. +* <> – The [.noloc]`Kubernetes` Metrics Server is an aggregator of resource usage data in your cluster. It isn't deployed by default in your cluster, but is used by [.noloc]`Kubernetes` add-ons, such as the [.noloc]`Kubernetes` Dashboard and <>. In this topic you learn how to install the Metrics Server. +* <> – The Helm package manager for [.noloc]`Kubernetes` helps you install and manage applications on your [.noloc]`Kubernetes` cluster. This topic helps you install and run the Helm binaries so that you can install and manage charts using the Helm CLI on your local computer. +* <> – To help you manage your Amazon EKS resources, you can assign your own metadata to each resource in the form of _tags_. This topic describes tags and shows you how to create them. +* <> – Your {aws} account has default quotas, formerly referred to as limits, for each {aws} service. Learn about the quotas for Amazon EKS and how to increase them. + + +include::cost-monitoring.adoc[leveloffset=+1] + + +include::metrics-server.adoc[leveloffset=+1] + + +include::helm.adoc[leveloffset=+1] + + +include::eks-using-tags.adoc[leveloffset=+1] + + +include::service-quotas.adoc[leveloffset=+1] diff --git a/latest/ug/clusters/management/eks-using-tags.adoc b/latest/ug/clusters/management/eks-using-tags.adoc new file mode 100644 index 00000000..447b8799 --- /dev/null +++ b/latest/ug/clusters/management/eks-using-tags.adoc @@ -0,0 +1,215 @@ +//!!NODE_ROOT
+include::../../attributes.txt[] + +[.topic] +[[eks-using-tags,eks-using-tags.title]] += Organize Amazon EKS resources with tags +:info_doctype: section +:info_title: Organize Amazon EKS resources with tags +:info_titleabbrev: Tagging your resources +:keywords: metadata, tag, resources +:info_abstract: Learn how to use tags to categorize and manage your Amazon EKS resources like clusters, managed node groups, and Fargate profiles for billing, cost allocation, and resource identification. + +[abstract] +-- +Learn how to use tags to categorize and manage your Amazon EKS resources like clusters, managed node groups, and Fargate profiles for billing, cost allocation, and resource identification. +-- + +You can use _tags_ to help you manage your Amazon EKS resources. This topic provides an overview of the tags function and shows how you can create tags. + +[.topiclist] +[[Topic List]] + +[NOTE] +==== + +Tags are a type of metadata that's separate from [.noloc]`Kubernetes` labels and annotations. For more information about these other metadata types, see the following sections in the [.noloc]`Kubernetes` documentation: + + + +* https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/[Labels and Selectors] +* https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/[Annotations] + +==== + +[[tag-basics,tag-basics.title]] +== Tag basics + +A tag is a label that you assign to an {aws} resource. Each tag consists of a _key_ and an optional _value_. + +With tags, you can categorize your {aws} resources. For example, you can categorize resources by purpose, owner, or environment. When you have many resources of the same type, you can use the tags that you assigned to a specific resource to quickly identify that resource. For example, you can define a set of tags for your Amazon EKS clusters to help you track each cluster's owner and stack level. We recommend that you devise a consistent set of tag keys for each resource type. You can then search and filter the resources based on the tags that you add. + +After you add a tag, you can edit tag keys and values or remove tags from a resource at any time. If you delete a resource, any tags for the resource are also deleted. + +Tags don't have any semantic meaning to Amazon EKS and are interpreted strictly as a string of characters. You can set the value of a tag to an empty string. However, you can't set the value of a tag to null. If you add a tag that has the same key as an existing tag on that resource, the new value overwrites the earlier value. + +If you use {aws} Identity and Access Management (IAM), you can control which users in your {aws} account have permission to manage tags. + +[[tag-resources,tag-resources.title]] +== Tagging your resources + +The following Amazon EKS resources support tags: + + + +* clusters +* managed node groups +* Fargate profiles + +You can tag these resources using the following: + + + +* If you're using the Amazon EKS console, you can apply tags to new or existing resources at any time. You can do this by using the *Tags* tab on the relevant resource page. For more information, see <>. +* If you're using `eksctl`, you can apply tags to resources when they're created using the `--tags` option. +* If you're using the {aws} CLI, the Amazon EKS API, or an {aws} SDK, you can apply tags to new resources using the `tags` parameter on the relevant API action. You can apply tags to existing resources using the `TagResource` API action. For more information, see link:eks/latest/APIReference/API_TagResource.html[TagResource,type="documentation"]. + +When you use some resource-creating actions, you can also specify tags for the resource at the same time that you create it. If tags can't be applied while the resource is being created, the resource fails to be created. This mechanism ensures that resources that you intend to tag are either created with the tags that you specify or not created at all. If you tag resources when you create them, you don't need to run custom tagging scripts after you create the resource. + +Tags don't propagate to other resources that are associated with the resource that you create. For example, Fargate profile tags don't propagate to other resources that are associated with the Fargate profile, such as the [.noloc]`Pods` that are scheduled with it. + +[[tag-restrictions,tag-restrictions.title]] +== Tag restrictions + +The following restrictions apply to tags: + +* A maximum of 50 tags can be associated with a resource. +* Tag keys can't be repeated for one resource. Each tag key must be unique, and can only have one value. +* Keys can be up to 128 characters long in UTF-8. +* Values can be up to 256 characters long in UTF-8. +* If multiple {aws} services and resources use your tagging schema, limit the types of characters you use. Some services might have restrictions on allowed characters. Generally, allowed characters are letters, numbers, spaces, and the following characters: `+` `-` `=` `.` `_` `:` `/` `@`. +* Tag keys and values are case sensitive. +* Don't use `aws:`, `{aws}:`, or any upper or lowercase combination of such as a prefix for either keys or values. These are reserved only for {aws} use. You can't edit or delete tag keys or values with this prefix. Tags with this prefix don't count against your tags-per-resource limit. + + +[[tag-resources-for-billing,tag-resources-for-billing.title]] +== Tagging your resources for billing + +When you apply tags to Amazon EKS clusters, you can use them for cost allocation in your *Cost & Usage Reports*. The metering data in your *Cost & Usage Reports* shows usage across all of your Amazon EKS clusters. For more information, see link:awsaccountbilling/latest/aboutv2/billing-reports-costusage.html[{aws} cost and usage report,type="documentation"] in the _{aws} Billing User Guide_. + +The {aws} generated cost allocation tag, specifically `aws:eks:cluster-name`, lets you break down Amazon EC2 instance costs by individual Amazon EKS cluster in *Cost Explorer*. However, this tag doesn't capture the control plane expenses. The tag is automatically added to Amazon EC2 instances that participate in an Amazon EKS cluster. This behavior happens regardless of whether the instances are provisioned using Amazon EKS managed node groups, [.noloc]`Karpenter`, or directly with Amazon EC2. This specific tag doesn't count towards the 50 tags limit. To use the tag, the account owner must activate it in the {aws} Billing console or by using the API. When an {aws} Organizations management account owner activates the tag, it's also activated for all organization member accounts. + +You can also organize your billing information based on resources that have the same tag key values. For example, you can tag several resources with a specific application name, and then organize your billing information. That way, you can see the total cost of that application across several services. For more information about setting up a cost allocation report with tags, see link:awsaccountbilling/latest/aboutv2/configurecostallocreport.html[The Monthly Cost Allocation Report,type="documentation"] in the _{aws} Billing User Guide_. + +[NOTE] +==== + +If you just enabled reporting, data for the current month is available for viewing after 24 hours. + +==== + +*Cost Explorer* is a reporting tool that's available as part of the {aws} Free Tier. You can use *Cost Explorer* to view charts of your Amazon EKS resources from the last 13 months. You can also forecast how much you're likely to spend for the next three months. You can see patterns in how much you spend on {aws} resources over time. For example, you can use it to identify areas that need further inquiry and see trends that you can use to understand your costs. You also can specify time ranges for the data, and view time data by day or by month. + +[[tag-resources-console,tag-resources-console.title]] +== Working with tags using the console + +Using the Amazon EKS console, you can manage the tags that are associated with new or existing clusters and managed node groups. + +When you select a resource-specific page in the Amazon EKS console, the page displays a list of those resources. For example, if you select *Clusters* from the left navigation pane, the console displays a list of Amazon EKS clusters. When you select a resource from one of these lists (for example, a specific cluster) that supports tags, you can view and manage its tags on the *Tags* tab. + +You can also use *Tag Editor* in the {aws-management-console}, which provides a unified way to manage your tags. For more information, see link:ARG/latest/userguide/tag-editor.html[Tagging your {aws} resources with Tag Editor,type="documentation"] in the _{aws} Tag Editor User Guide_. + +[[adding-tags-creation,adding-tags-creation.title]] +=== Adding tags on a resource on creation + +You can add tags to Amazon EKS clusters, managed node groups, and Fargate profiles when you create them. For more information, see <>. + +[[adding-or-deleting-tags,adding-or-deleting-tags.title]] +=== Adding and deleting tags on a resource + +You can add or delete the tags that are associated with your clusters directly from the resource's page. + +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. On the navigation bar, select the {aws} Region to use. +. In the left navigation pane, choose *Clusters*. +. Choose a specific cluster. +. Choose the *Tags* tab, and then choose *Manage tags*. +. On the *Manage tags* page, add or delete your tags as necessary. ++ +** To add a tag, choose *Add tag*. Then specify the key and value for each tag. +** To delete a tag, choose *Remove tag*. +. Repeat this process for each tag that you want to add or delete. +. Choose *Update* to finish. + + +[[tag-resources-api-sdk,tag-resources-api-sdk.title]] +== Working with tags using the CLI, API, or `eksctl` + +Use the following {aws} CLI commands or Amazon EKS API operations to add, update, list, and delete the tags for your resources. You can only use `eksctl` to add tags while simultaneously creating the new resources with one command. +[[tag-eks-resources-table]] +[cols="1,1,1,1", options="header"] +|=== +|Task +|{aws} CLI +|{aws} Tools for Windows PowerShell +|API action + + +|Add or overwrite one or more tags. +|link:cli/latest/reference/eks/tag-resource.html[tag-resource,type="documentation"] +|link:powershell/latest/reference/items/Add-EKSResourceTag.html[Add-EKSResourceTag,type="documentation"] +|link:eks/latest/APIReference/API_TagResource.html[TagResource,type="documentation"] + +|Delete one or more tags. +|link:cli/latest/reference/eks/untag-resource.html[untag-resource,type="documentation"] +|link:powershell/latest/reference/items/Remove-EKSResourceTag.html[Remove-EKSResourceTag,type="documentation"] +|link:eks/latest/APIReference/API_UntagResource.html[UntagResource,type="documentation"] +|=== + +The following examples show how to tag or untag resources using the {aws} CLI. + +.Example 1: Tag an existing cluster +The following command tags an existing cluster. + +[source,bash,subs="verbatim,attributes"] +---- +aws eks tag-resource --resource-arn resource_ARN --tags team=devs +---- + +.Example 2: Untag an existing cluster +The following command deletes a tag from an existing cluster. + +[source,bash,subs="verbatim,attributes"] +---- +aws eks untag-resource --resource-arn resource_ARN --tag-keys tag_key +---- + +.Example 3: List tags for a resource +The following command lists the tags that are associated with an existing resource. + +[source,bash,subs="verbatim,attributes"] +---- +aws eks list-tags-for-resource --resource-arn resource_ARN +---- + +When you use some resource-creating actions, you can specify tags at the same time that you create the resource. The following actions support specifying a tag when you create a resource. + +[cols="1,1,1,1,1", options="header"] +|=== +|Task +|{aws} CLI +|{aws} Tools for Windows PowerShell +|API action +|eksctl + + +|Create a cluster +|link:cli/latest/reference/eks/create-cluster.html[create-cluster,type="documentation"] +|link:powershell/latest/reference/items/New-EKSCluster.html[New-EKSCluster,type="documentation"] +|link:eks/latest/APIReference/API_CreateCluster.html[CreateCluster,type="documentation"] +|`create cluster` + +|Create a managed node group* +|link:cli/latest/reference/eks/create-nodegroup.html[create-nodegroup,type="documentation"] +|link:powershell/latest/reference/items/New-EKSNodegroup.html[New-EKSNodegroup,type="documentation"] +|link:eks/latest/APIReference/API_CreateNodegroup.html[CreateNodegroup,type="documentation"] +|`create nodegroup` + +|Create a Fargate profile +|link:cli/latest/reference/eks/create-fargate-profile.html[create-fargate-profile,type="documentation"] +|link:powershell/latest/reference/items/New-EKSFargateProfile.html[New-EKSFargateProfile,type="documentation"] +|link:eks/latest/APIReference/API_CreateFargateProfile.html[CreateFargateProfile.html,type="documentation"] +|`create fargateprofile` +|=== + +* If you want to also tag the Amazon EC2 instances when you create a managed node group, create the managed node group using a launch template. For more information, see <>. If your instances already exist, you can manually tag the instances. For more information, see link:AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources[Tagging your resources,type="documentation"] in the Amazon EC2 User Guide. diff --git a/latest/ug/clusters/management/helm.adoc b/latest/ug/clusters/management/helm.adoc new file mode 100644 index 00000000..56c8385e --- /dev/null +++ b/latest/ug/clusters/management/helm.adoc @@ -0,0 +1,77 @@ +//!!NODE_ROOT
+include::../../attributes.txt[] + +[.topic] +[[helm,helm.title]] += Deploy applications with [.noloc]`Helm` on Amazon EKS +:info_doctype: section +:info_title: Deploy applications with Helm on Amazon EKS +:info_titleabbrev: Deploy apps with Helm +:info_abstract: Learn how to install and use Helm, a package manager for Kubernetes, with your Amazon EKS cluster to manage and deploy applications seamlessly. + +[abstract] +-- +Learn how to install and use Helm, a package manager for Kubernetes, with your Amazon EKS cluster to manage and deploy applications seamlessly. +-- + +The Helm package manager for [.noloc]`Kubernetes` helps you install and manage applications on your [.noloc]`Kubernetes` cluster. For more information, see the https://docs.helm.sh/[Helm documentation]. This topic helps you install and run the Helm binaries so that you can install and manage charts using the Helm CLI on your local system. + +[IMPORTANT] +==== + +Before you can install Helm charts on your Amazon EKS cluster, you must configure `kubectl` to work for Amazon EKS. If you have not already done this, see <> before proceeding. If the following command succeeds for your cluster, you're properly configured. + +[source,bash,subs="verbatim,attributes"] +---- +kubectl get svc +---- + +==== +. Run the appropriate command for your client operating system. ++ +** If you're using macOS with https://brew.sh/[Homebrew], install the binaries with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +brew install helm +---- +** If you're using [.noloc]`Windows` with https://chocolatey.org/[Chocolatey], install the binaries with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +choco install kubernetes-helm +---- +** If you're using [.noloc]`Linux`, install the binaries with the following commands. ++ +[source,bash,subs="verbatim,attributes"] +---- +curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh +chmod 700 get_helm.sh +./get_helm.sh +---- ++ +NOTE: If you get a message that `openssl` must first be installed, you can install it with the following command. + +[source,bash,subs="verbatim,attributes"] +---- +sudo yum install openssl +---- +. To pick up the new binary in your `PATH`, Close your current terminal window and open a new one. +. See the version of Helm that you installed. ++ +[source,bash,subs="verbatim,attributes"] +---- +helm version | cut -d + -f 1 +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +v3.9.0 +---- +. At this point, you can run any Helm commands (such as `helm install [.replaceable]``chart-name```) to install, modify, delete, or query Helm charts in your cluster. If you're new to Helm and don't have a specific chart to install, you can: ++ +** Experiment by installing an example chart. See https://helm.sh/docs/intro/quickstart#install-an-example-chart[Install an example chart] in the Helm https://helm.sh/docs/intro/quickstart/[Quickstart guide]. +** Create an example chart and push it to Amazon ECR. For more information, see link:AmazonECR/latest/userguide/push-oci-artifact.html[Pushing a Helm chart,type="documentation"] in the _Amazon Elastic Container Registry User Guide_. +** Install an Amazon EKS chart from the https://github.com/aws/eks-charts#eks-charts[eks-charts][.noloc]`GitHub` repo or from https://artifacthub.io/packages/search?page=1&repo=aws[ArtifactHub]. diff --git a/latest/ug/clusters/management/images b/latest/ug/clusters/management/images new file mode 120000 index 00000000..5fa69870 --- /dev/null +++ b/latest/ug/clusters/management/images @@ -0,0 +1 @@ +../../images \ No newline at end of file diff --git a/latest/ug/clusters/management/metrics-server.adoc b/latest/ug/clusters/management/metrics-server.adoc new file mode 100644 index 00000000..c53b8355 --- /dev/null +++ b/latest/ug/clusters/management/metrics-server.adoc @@ -0,0 +1,80 @@ +//!!NODE_ROOT
+include::../../attributes.txt[] + +[.topic] +[[metrics-server,metrics-server.title]] += View resource usage with the [.noloc]`Kubernetes` [.noloc]`Metrics Server` +:info_doctype: section +:info_title: View resource usage with the KubernetesMetrics Server +:info_titleabbrev: Metrics server +:info_abstract: Use the Kubernetes Metrics Server to view resource usage data on your Amazon EKS cluster for autoscaling and monitoring. + +[abstract] +-- +Use the Kubernetes Metrics Server to view resource usage data on your Amazon EKS cluster for autoscaling and monitoring. +-- + +The [.noloc]`Kubernetes` Metrics Server is an aggregator of resource usage data in your cluster, and it isn't deployed by default in Amazon EKS clusters. For more information, see https://github.com/kubernetes-sigs/metrics-server[Kubernetes Metrics Server] on [.noloc]`GitHub`. The Metrics Server is commonly used by other [.noloc]`Kubernetes` add ons, such as the <> or the <>. For more information, see https://kubernetes.io/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/[Resource metrics pipeline] in the [.noloc]`Kubernetes` documentation. This topic explains how to deploy the [.noloc]`Kubernetes` Metrics Server on your Amazon EKS cluster. + +[IMPORTANT] +==== + +The metrics are meant for point-in-time analysis and aren't an accurate source for historical analysis. They can't be used as a monitoring solution or for other non-auto scaling purposes. For information about monitoring tools, see <>. +==== + +== Deploy as community add-on with Amazon EKS Add-ons + +*New: You can now deploy Metrics Server as a community add-on using the {aws} console or Amazon EKS APIs.* + +=== Deploy with {aws} console + +. Open your EKS cluster in the {aws} console +. From the "Add-ons" tab, select *Get More Add-ons*. +. From the "Community add-ons" section, select *Metrics Server* and then *Next* +. EKS determines the appropriate version of the add-on for your cluster. You can change the version using the *Version* dropdown menu. +. Select *Next* and then *Create* to install the add-on. + +=== Additional resources + +Learn more about <>. + +You install or update community add-ons in the same way as other Amazon EKS Add-ons. + +* <> +* <> +* <> + + +== Deploy with manifest + +*New: You can now deploy Metrics Server as a community add-on using the {aws} console or Amazon EKS APIs. These manifest install instructions will be archived.* + +. Deploy the Metrics Server with the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml +---- ++ +If you are using Fargate, you will need to change this file. In the default configuration, the metrics server uses port 10250. This port is reserved on Fargate. Replace references to port 10250 in components.yaml with another port, such as 10251. +. Verify that the `metrics-server` deployment is running the desired number of [.noloc]`Pods` with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get deployment metrics-server -n kube-system +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +NAME READY UP-TO-DATE AVAILABLE AGE +metrics-server 1/1 1 1 6m +---- +. Test the metrics server is working by displaying resource (CPU/memory) usage of nodes. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl top nodes +---- +. If you receive the error message `Error from server (Forbidden)`, you need to update your Kubernetes RBAC configuration. Your Kubernetes RBAC identity needs sufficent permissions to read cluster metrics. Review the https://github.com/kubernetes-sigs/metrics-server/blob/e285375a49e3bf77ddd78c08a05aaa44f2249ebd/manifests/base/rbac.yaml#L5C9-L5C41[minimum required Kubernetes API permissions for reading metrics] on GitHub. Learn how to <>. diff --git a/latest/ug/clusters/management/service-quotas.adoc b/latest/ug/clusters/management/service-quotas.adoc new file mode 100644 index 00000000..132c3942 --- /dev/null +++ b/latest/ug/clusters/management/service-quotas.adoc @@ -0,0 +1,95 @@ +//!!NODE_ROOT
+include::../../attributes.txt[] + +[.topic] +[[service-quotas,service-quotas.title]] += View and manage Amazon EKS and [.noloc]`Fargate` service quotas +:info_doctype: section +:info_title: View and manage Amazon EKS and Fargate service quotas +:info_titleabbrev: Service quotas +:info_abstract: Use Service Quotas to view and manage Amazon EKS and {aws} Fargate quotas from the {aws-management-console} or {aws} CLI. + +[abstract] +-- +Use Service Quotas to view and manage Amazon EKS and {aws} Fargate quotas from the {aws-management-console} or {aws} CLI. +-- + +Amazon EKS has integrated with Service Quotas, an {aws} service that you can use to view and manage your quotas from a central location. For more information, see link:servicequotas/latest/userguide/intro.html[What Is Service Quotas?,type="documentation"] in the _Service Quotas User Guide_. With Service Quotas integration, you can quickly look up the value of your Amazon EKS and {aws} Fargate service quotas using the {aws-management-console} and {aws} CLI. + + +[[service-quotas-console,service-quotas-console.title]] +== View EKS service quotas in the {aws} Management Console + +. Open the link:servicequotas/home/services/eks/quotas["Service Quotas console",type="console"]. +. In the left navigation pane, choose *{aws} services*. +. From the *{aws} services* list, search for and select *Amazon Elastic Kubernetes Service (Amazon EKS)* or *{aws} Fargate*. ++ +In the *Service quotas* list, you can see the service quota name, applied value (if it's available), {aws} default quota, and whether the quota value is adjustable. +. To view additional information about a service quota, such as the description, choose the quota name. +. (Optional) To request a quota increase, select the quota that you want to increase, select *Request quota increase*, enter or select the required information, and select *Request*. + + +To work more with service quotas using the {aws-management-console}, see the link:servicequotas/latest/userguide/intro.html[Service Quotas User Guide,type="documentation"]. To request a quota increase, see link:servicequotas/latest/userguide/request-quota-increase.html[Requesting a Quota Increase,type="documentation"] in the _Service Quotas User Guide_. + + +== View EKS service quotas with the {aws} CLI + +Run the following command to view your Amazon EKS quotas. + +[source,bash,subs="verbatim,attributes"] +---- +aws service-quotas list-aws-default-service-quotas \ + --query 'Quotas[*].{Adjustable:Adjustable,Name:QuotaName,Value:Value,Code:QuotaCode}' \ + --service-code eks \ + --output table +---- + +Run the following command to view your Fargate quotas. + +[source,bash,subs="verbatim,attributes"] +---- +aws service-quotas list-aws-default-service-quotas \ + --query 'Quotas[*].{Adjustable:Adjustable,Name:QuotaName,Value:Value,Code:QuotaCode}' \ + --service-code fargate \ + --output table +---- + +NOTE: The quota returned is the number of Amazon ECS tasks or Amazon EKS [.noloc]`Pods` that can run concurrently on Fargate in this account in the current {aws} Region. + +To work more with service quotas using the {aws} CLI, see link:cli/latest/reference/service-quotas/index.html[service-quotas,type="documentation"] in the _{aws} CLI Command Reference_. To request a quota increase, see the link:cli/latest/reference/service-quotas/request-service-quota-increase.html[request-service-quota-increase,type="documentation"] command in the _{aws} CLI Command Reference_. + + +[[sq-text,sq-text.title]] +== Amazon EKS service quotas + +{aws} recommends using the {aws} management console to view your current quotas. For more information, see <>. + +To view the default EKS service quotas, see link:general/latest/gr/eks.html#limits_eks["Amazon Elastic Kubernetes Service endpoints and quotas",type="documentation"] in the _{aws} General Reference_. + +These service quotas are listed under *Amazon Elastic Kubernetes Service (Amazon EKS)* in the Service Quotas console. To request a quota increase for values that are shown as adjustable, see link:servicequotas/latest/userguide/request-quota-increase.html[Requesting a quota increase,type="documentation"] in the _Service Quotas User Guide_. + +[NOTE] +==== +The following quotas aren't available in Service Quotas: + +* Pod Identity associations per cluster is [.noloc]`1000` in each supported region and this quota isn't adjustable. +* You can use up to 15 CIDRs for Remote Node Networks and 15 CIDRs for Remote Pod Networks per cluster for hybrid nodes. This quota isn't adjustable. +==== + +[[service-quotas-eks-fargate,service-quotas-eks-fargate.title]] +== {aws} Fargate service quotas + +The *{aws} Fargate* service in the Service Quotas console lists several service quotas. You can configure alarms that alert you when your usage approaches a service quota. For more information, see <>. + +New {aws} accounts might have lower initial quotas that can increase over time. Fargate constantly monitors the account usage within each {aws} Region, and then automatically increases the quotas based on the usage. You can also request a quota increase for values that are shown as adjustable. For more information, see link:servicequotas/latest/userguide/request-quota-increase.html[Requesting a quota increase,type="documentation"] in the _Service Quotas User Guide_. + +{aws} reccomends using the {aws} management console to view your current quotas. For more information, see <>. + +To view default {aws} Fargate on EKS service quotas, see link:general/latest/gr/eks.html#service-quotas-eks-fargate["Fargate service quotas",type="documentation"] in the _{aws} General Reference_. + +[NOTE] +==== + +Fargate additionally enforces Amazon ECS tasks and Amazon EKS [.noloc]`Pods` launch rate quotas. For more information, see link:AmazonECS/latest/developerguide/throttling.html[{aws} Fargate throttling quotas,type="documentation"] in the _Amazon ECS guide_. + +==== diff --git a/latest/ug/clusters/platform-versions.adoc b/latest/ug/clusters/platform-versions.adoc new file mode 100644 index 00000000..a69c27f8 --- /dev/null +++ b/latest/ug/clusters/platform-versions.adoc @@ -0,0 +1,859 @@ +//!!NODE_ROOT
+ +[.topic] +[[platform-versions,platform-versions.title]] += View Amazon EKS platform versions for each [.noloc]`Kubernetes` version +:info_doctype: section +:info_title: View Amazon EKS platform versions for each Kubernetes version +:info_titleabbrev: Platform versions + +include::../attributes.txt[] + +Amazon EKS platform versions represent the capabilities of the Amazon EKS cluster control plane, such as which [.noloc]`Kubernetes` API server flags are enabled, as well as the current [.noloc]`Kubernetes` patch version. Each [.noloc]`Kubernetes` minor version has one or more associated Amazon EKS platform versions. The platform versions for different [.noloc]`Kubernetes` minor versions are independent. You can <> using the {aws} CLI or {aws-management-console}. If you have a local cluster on {aws} Outposts, see <> instead of this topic. + +When a new [.noloc]`Kubernetes` minor version is available in Amazon EKS, such as 1.30, the initial Amazon EKS platform version for that [.noloc]`Kubernetes` minor version starts at `eks.1`. However, Amazon EKS releases new platform versions periodically to enable new [.noloc]`Kubernetes` control plane settings and to provide security fixes. + +When new Amazon EKS platform versions become available for a minor version: + + + +* The Amazon EKS platform version number is incremented (`eks.`). +* Amazon EKS automatically upgrades all existing clusters to the latest Amazon EKS platform version for their corresponding [.noloc]`Kubernetes` minor version. Automatic upgrades of existing Amazon EKS platform versions are rolled out incrementally. The roll-out process might take some time. If you need the latest Amazon EKS platform version features immediately, you should create a new Amazon EKS cluster. ++ +If your cluster is more than two platform versions behind the current platform version, then it's possible that Amazon EKS wasn't able to automatically update your cluster. For details of what may cause this, see <>. +* Amazon EKS might publish a new node AMI with a corresponding patch version. However, all patch versions are compatible between the EKS control plane and node AMIs for a given [.noloc]`Kubernetes` minor version. + +New Amazon EKS platform versions don't introduce breaking changes or cause service interruptions. + +Clusters are always created with the latest available Amazon EKS platform version (`eks.`) for the specified [.noloc]`Kubernetes` version. If you update your cluster to a new [.noloc]`Kubernetes` minor version, your cluster receives the current Amazon EKS platform version for the [.noloc]`Kubernetes` minor version that you updated to. + +The current and recent Amazon EKS platform versions are described in the following tables. + +[NOTE] +==== + +{aws} recently disabled some platform versions published in June 2024. The platform versions had stability issues. No action is needed. + +==== + + +[[platform-versions-1.31,platform-versions-1.31.title]] +== [.noloc]`Kubernetes` version `1.31` + +The following admission controllers are enabled for all `1.31` platform versions: `NodeRestriction`, `ExtendedResourceToleration`, `NamespaceLifecycle`, `LimitRanger`, `ServiceAccount`, `TaintNodesByCondition`, `PodSecurity`, `Priority`, `DefaultTolerationSeconds`, `DefaultStorageClass`, `StorageObjectInUseProtection`, `PersistentVolumeClaimResize`, `RuntimeClass`, `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `MutatingAdmissionWebhook`, `ValidatingAdmissionWebhook`, `ResourceQuota`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.31.2` +| `eks.12` +| New platform version with Amazon EKS Hybrid Nodes support and enhancements to control plane observability. See <> and see link:blogs/containers/amazon-eks-enhances-kubernetes-control-plane-observability/[Amazon EKS enhances performance observability,type="blog"], respectively. +| November 15, 2024 + +| `1.31.1` +| `eks.6` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.31.0` +| `eks.4` +| Initial release of Kubernetes version `1.31` for EKS. For more information, see <>. +| September 26, 2024 + +|=== + + +[[platform-versions-1.30,platform-versions-1.30.title]] +== [.noloc]`Kubernetes` version `1.30` + +The following admission controllers are enabled for all `1.30` platform versions: `NodeRestriction`, `ExtendedResourceToleration`, `NamespaceLifecycle`, `LimitRanger`, `ServiceAccount`, `TaintNodesByCondition`, `PodSecurity`, `Priority`, `DefaultTolerationSeconds`, `DefaultStorageClass`, `StorageObjectInUseProtection`, `PersistentVolumeClaimResize`, `RuntimeClass`, `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `MutatingAdmissionWebhook`, `ValidatingAdmissionWebhook`, `ResourceQuota`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.30.6` +| `eks.20` +| New platform version with Amazon EKS Hybrid Nodes support and enhancements to control plane observability. See <> and see link:blogs/containers/amazon-eks-enhances-kubernetes-control-plane-observability/[Amazon EKS enhances performance observability,type="blog"], respectively. +| November 15, 2024 + +| `1.30.5` +| `eks.12` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.30.4` +| `eks.8` +| New platform version with security fixes and enhancements. +| September 3, 2024 + + +| `1.30.3` +| `eks.7` +| New platform version with security fixes and enhancements. +| August 28, 2024 + +| `1.30.3` +| `eks.6` +| New platform version with security fixes and enhancements. +| August 9, 2024 + +| `1.30.2` +| `eks.5` +| New platform version with security fixes and enhancements. +| July 2, 2024 + +| `1.30.0` +| `eks.2` +| Initial release of Kubernetes version `1.30` for EKS. For more information, see <>. +| May 23, 2024 +|=== + +[[platform-versions-1.29,platform-versions-1.29.title]] +== [.noloc]`Kubernetes` version `1.29` + +The following admission controllers are enabled for all `1.29` platform versions: `NodeRestriction`, `ExtendedResourceToleration`, `NamespaceLifecycle`, `LimitRanger`, `ServiceAccount`, `TaintNodesByCondition`, `PodSecurity`, `Priority`, `DefaultTolerationSeconds`, `DefaultStorageClass`, `StorageObjectInUseProtection`, `PersistentVolumeClaimResize`, `RuntimeClass`, `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `MutatingAdmissionWebhook`, `ValidatingAdmissionWebhook`, `ResourceQuota`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.29.10` +| `eks.23` +| New platform version with Amazon EKS Hybrid Nodes support and enhancements to control plane observability. See <> and see link:blogs/containers/amazon-eks-enhances-kubernetes-control-plane-observability/[Amazon EKS enhances performance observability,type="blog"], respectively. +| November 15, 2024 + +| `1.29.9` +| `eks.17` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.29.8` +| `eks.13` +| New platform version with security fixes and enhancements. +| September 3, 2024 + + +| `1.29.7` +| `eks.12` +| New platform version with security fixes and enhancements. +| August 28, 2024 + +| `1.29.7` +| `eks.11` +| New platform version with security fixes and enhancements. +| August 9, 2024 + +| `1.29.6` +| `eks.10` +| New platform version with security fixes and enhancements. +| July 2, 2024 + +| `1.29.4` +| `eks.7` +| New platform version with CoreDNS autoscaling, security fixes and enhancements. For more information about CoreDNS autoscaling, see <>. +| May 16, 2024 + +| `1.29.3` +| `eks.6` +| New platform version with security fixes and enhancements. +| April 18, 2024 + +| `1.29.1` +| `eks.5` +| New platform version with security fixes and enhancements. +| March 29, 2024 + +| `1.29.1` +| `eks.4` +| New platform version with security fixes and enhancements. +| March 20, 2024 + +| `1.29.1` +| `eks.3` +| New platform version with security fixes and enhancements. +| March 12, 2024 + +| `1.29.0` +| `eks.1` +| Initial release of Kubernetes version `1.29` for EKS. For more information, see <>. +| January 23, 2024 +|=== + +[[platform-versions-1.28,platform-versions-1.28.title]] +== [.noloc]`Kubernetes` version `1.28` + +The following admission controllers are enabled for all `1.28` platform versions: `NodeRestriction`, `ExtendedResourceToleration`, `NamespaceLifecycle`, `LimitRanger`, `ServiceAccount`, `TaintNodesByCondition`, `PodSecurity`, `Priority`, `DefaultTolerationSeconds`, `DefaultStorageClass`, `StorageObjectInUseProtection`, `PersistentVolumeClaimResize`, `RuntimeClass`, `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `MutatingAdmissionWebhook`, `ValidatingAdmissionWebhook`, `ResourceQuota`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.28.15` +| `eks.29` +| New platform version with Amazon EKS Hybrid Nodes support and enhancements to control plane observability. See <> and see link:blogs/containers/amazon-eks-enhances-kubernetes-control-plane-observability/[Amazon EKS enhances performance observability,type="blog"], respectively. +| November 15, 2024 + +| `1.28.14` +| `eks.23` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.28.13` +| `eks.19` +| New platform version with security fixes and enhancements. +| September 3, 2024 + +| `1.28.12` +| `eks.18` +| New platform version with security fixes and enhancements. +| August 28, 2024 + +| `1.28.11` +| `eks.17` +| New platform version with security fixes and enhancements. +| August 9, 2024 + +| `1.28.11` +| `eks.16` +| New platform version with security fixes and enhancements. +| July 2, 2024 + +| `1.28.9` +| `eks.13` +| New platform version with CoreDNS autoscaling, security fixes and enhancements. For more information about CoreDNS autoscaling, see <>. +| May 16, 2024 + +| `1.28.8` +| `eks.12` +| New platform version with security fixes and enhancements. +| April 18, 2024 + +| `1.28.7` +| `eks.11` +| New platform version with security fixes and enhancements. +| March 29, 2024 + +| `1.28.7` +| `eks.10` +| New platform version with security fixes and enhancements. +| March 20, 2024 + +| `1.28.6` +| `eks.9` +| New platform version with security fixes and enhancements. +| March 12, 2024 + +| `1.28.5` +| `eks.7` +| New platform version with security fixes and enhancements. +| January 17, 2024 + +| `1.28.4` +| `eks.6` +| New platform version with <>, security fixes and enhancements. +| December 14, 2023 + +| `1.28.4` +| `eks.5` +| New platform version with security fixes and enhancements. +| December 12, 2023 + +| `1.28.3` +| `eks.4` +| New platform version with <>, security fixes and enhancements. +| November 10, 2023 + +| `1.28.3` +| `eks.3` +| New platform version with security fixes and enhancements. +| November 3, 2023 + +| `1.28.2` +| `eks.2` +| New platform version with security fixes and enhancements. +| October 16, 2023 + +| `1.28.1` +| `eks.1` +| Initial release of Kubernetes version `1.28` for EKS. For more information, see <>. +| September 26, 2023 +|=== + +[[platform-versions-1.27,platform-versions-1.27.title]] +== [.noloc]`Kubernetes` version `1.27` + +The following admission controllers are enabled for all `1.27` platform versions: `NodeRestriction`, `ExtendedResourceToleration`, `NamespaceLifecycle`, `LimitRanger`, `ServiceAccount`, `TaintNodesByCondition`, `PodSecurity`, `Priority`, `DefaultTolerationSeconds`, `DefaultStorageClass`, `StorageObjectInUseProtection`, `PersistentVolumeClaimResize`, `RuntimeClass`, `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `MutatingAdmissionWebhook`, `ValidatingAdmissionWebhook`, `ResourceQuota`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.27.16` +| `eks.33` +| New platform version with Amazon EKS Hybrid Nodes support, security fixes and enhancements. For more information about Amazon EKS Hybrid Nodes, see <>. +| November 15, 2024 + +| `1.27.16` +| `eks.27` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.27.16` +| `eks.23` +| New platform version with security fixes and enhancements. +| September 3, 2024 + +| `1.27.16` +| `eks.22` +| New platform version with security fixes and enhancements. +| August 28, 2024 + +| `1.27.16` +| `eks.21` +| New platform version with security fixes and enhancements. +| August 9, 2024 + +| `1.27.15` +| `eks.20` +| New platform version with security fixes and enhancements. +| July 2, 2024 + +| `1.27.13` +| `eks.17` +| New platform version with CoreDNS autoscaling, security fixes and enhancements. For more information about CoreDNS autoscaling, see <>. +| May 16, 2024 + +| `1.27.12` +| `eks.16` +| New platform version with security fixes and enhancements. +| April 18, 2024 + +| `1.27.11` +| `eks.15` +| New platform version with security fixes and enhancements. +| March 29, 2024 + +| `1.27.11` +| `eks.14` +| New platform version with security fixes and enhancements. +| March 20, 2024 + +| `1.27.10` +| `eks.13` +| New platform version with security fixes and enhancements. +| March 12, 2024 + +| `1.27.9` +| `eks.11` +| New platform version with security fixes and enhancements. +| January 17, 2024 + +| `1.27.8` +| `eks.10` +| New platform version with <>, security fixes and enhancements. +| December 14, 2023 + +| `1.27.8` +| `eks.9` +| New platform version with security fixes and enhancements. +| December 12, 2023 + +| `1.27.7` +| `eks.8` +| New platform version with <>, security fixes and enhancements. +| November 10, 2023 + +| `1.27.7` +| `eks.7` +| New platform version with security fixes and enhancements. +| November 3, 2023 + +| `1.27.6` +| `eks.6` +| New platform version with security fixes and enhancements. +| October 16, 2023 + +| `1.27.4` +| `eks.5` +| New platform version with security fixes and enhancements. +| August 30, 2023 + +| `1.27.4` +| `eks.4` +| New platform version with security fixes and enhancements. +| July 30, 2023 + +| `1.27.3` +| `eks.3` +| New platform version with security fixes and enhancements. +| June 30, 2023 + +| `1.27.2` +| `eks.2` +| New platform version with security fixes and enhancements. +| June 9, 2023 + +| `1.27.1` +| `eks.1` +| Initial release of Kubernetes version `1.27` for EKS. For more information, see <>. +| May 24, 2023 +|=== + +[[platform-versions-1.26,platform-versions-1.26.title]] +== [.noloc]`Kubernetes` version `1.26` + +The following admission controllers are enabled for all `1.26` platform versions: `NodeRestriction`, `ExtendedResourceToleration`, `NamespaceLifecycle`, `LimitRanger`, `ServiceAccount`, `TaintNodesByCondition`, `PodSecurity`, `Priority`, `DefaultTolerationSeconds`, `DefaultStorageClass`, `StorageObjectInUseProtection`, `PersistentVolumeClaimResize`, `RuntimeClass`, `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `MutatingAdmissionWebhook`, `ValidatingAdmissionWebhook`, `ResourceQuota`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.26.15` +| `eks.35` +| New platform version with Amazon EKS Hybrid Nodes support, security fixes and enhancements. For more information about Amazon EKS Hybrid Nodes, see <>. +| November 15, 2024 + +| `1.26.15` +| `eks.28` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.26.15` +| `eks.24` +| New platform version with security fixes and enhancements. +| September 3, 2024 + +| `1.26.15` +| `eks.23` +| New platform version with security fixes and enhancements. +| August 28, 2024 + +| `1.26.15` +| `eks.22` +| New platform version with security fixes and enhancements. +| August 9, 2024 + +| `1.26.15` +| `eks.21` +| New platform version with security fixes and enhancements. +| July 2, 2024 + +| `1.26.15` +| `eks.18` +| New platform version with CoreDNS autoscaling, security fixes and enhancements. For more information about CoreDNS autoscaling, see <>. +| May 16, 2024 + +| `1.26.15` +| `eks.17` +| New platform version with security fixes and enhancements. +| April 18, 2024 + +| `1.26.14` +| `eks.16` +| New platform version with security fixes and enhancements. +| March 29, 2024 + +| `1.26.14` +| `eks.15` +| New platform version with security fixes and enhancements. +| March 20, 2024 + +| `1.26.13` +| `eks.14` +| New platform version with security fixes and enhancements. +| March 12, 2024 + +| `1.26.12` +| `eks.12` +| New platform version with security fixes and enhancements. +| January 17, 2024 + +| `1.26.11` +| `eks.11` +| New platform version with <>, security fixes and enhancements. +| December 14, 2023 + +| `1.26.11` +| `eks.10` +| New platform version with security fixes and enhancements. +| December 12, 2023 + +| `1.26.10` +| `eks.9` +| New platform version with <>, security fixes and enhancements. +| November 10, 2023 + +| `1.26.10` +| `eks.8` +| New platform version with security fixes and enhancements. +| November 3, 2023 + +| `1.26.9` +| `eks.7` +| New platform version with security fixes and enhancements. +| October 16, 2023 + +| `1.26.7` +| `eks.6` +| New platform version with security fixes and enhancements. +| August 30, 2023 + +| `1.26.7` +| `eks.5` +| New platform version with security fixes and enhancements. +| July 30, 2023 + +| `1.26.6` +| `eks.4` +| New platform version with security fixes and enhancements. +| June 30, 2023 + +| `1.26.5` +| `eks.3` +| New platform version with security fixes and enhancements. +| June 9, 2023 + +| `1.26.4` +| `eks.2` +| New platform version with security fixes and enhancements. +| May 5, 2023 + +| `1.26.2` +| `eks.1` +| Initial release of Kubernetes version `1.26` for EKS. For more information, see <>. +| April 11, 2023 +|=== + +[[platform-versions-1.25,platform-versions-1.25.title]] +== [.noloc]`Kubernetes` version `1.25` + +The following admission controllers are enabled for all `1.25` platform versions: `NodeRestriction`, `ExtendedResourceToleration`, `NamespaceLifecycle`, `LimitRanger`, `ServiceAccount`, `TaintNodesByCondition`, `PodSecurity`, `Priority`, `DefaultTolerationSeconds`, `DefaultStorageClass`, `StorageObjectInUseProtection`, `PersistentVolumeClaimResize`, `RuntimeClass`, `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `MutatingAdmissionWebhook`, `ValidatingAdmissionWebhook`, `ResourceQuota`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.25.16` +| `eks.35` +| New platform version with Amazon EKS Hybrid Nodes support, security fixes and enhancements. For more information about Amazon EKS Hybrid Nodes, see <>. +| November 15, 2024 + +| `1.25.16` +| `eks.29` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.25.16` +| `eks.25` +| New platform version with security fixes and enhancements. +| September 3, 2024 + + +| `1.25.16` +| `eks.24` +| New platform version with security fixes and enhancements. +| August 28, 2024 + +| `1.25.16` +| `eks.23` +| New platform version with security fixes and enhancements. +| August 9, 2024 + +| `1.25.16` +| `eks.22` +| New platform version with security fixes and enhancements. +| July 2, 2024 + +| `1.25.16` +| `eks.19` +| New platform version with CoreDNS autoscaling, security fixes and enhancements. For more information about CoreDNS autoscaling, see <>. +| May 16, 2024 + +| `1.25.16` +| `eks.18` +| New platform version with security fixes and enhancements. +| April 18, 2024 + +| `1.25.16` +| `eks.17` +| New platform version with security fixes and enhancements. +| March 29, 2024 + +| `1.25.16` +| `eks.16` +| New platform version with security fixes and enhancements. +| March 20, 2024 + +| `1.25.16` +| `eks.15` +| New platform version with security fixes and enhancements. +| March 12, 2024 + +| `1.25.16` +| `eks.13` +| New platform version with security fixes and enhancements. +| January 17, 2024 + +| `1.25.16` +| `eks.12` +| New platform version with <>, security fixes and enhancements. +| December 14, 2023 + +| `1.25.16` +| `eks.11` +| New platform version with security fixes and enhancements. +| December 12, 2023 + +| `1.25.15` +| `eks.10` +| New platform version with <>, security fixes and enhancements. +| November 10, 2023 + +| `1.25.15` +| `eks.9` +| New platform version with security fixes and enhancements. +| November 3, 2023 + +| `1.25.14` +| `eks.8` +| New platform version with security fixes and enhancements. +| October 16, 2023 + +| `1.25.12` +| `eks.7` +| New platform version with security fixes and enhancements. +| August 30, 2023 + +| `1.25.12` +| `eks.6` +| New platform version with security fixes and enhancements. +| July 30, 2023 + +| `1.25.11` +| `eks.5` +| New platform version with security fixes and enhancements. +| June 30, 2023 + +| `1.25.10` +| `eks.4` +| New platform version with security fixes and enhancements. +| June 9, 2023 + +| `1.25.9` +| `eks.3` +| New platform version with security fixes and enhancements. +| May 5, 2023 + +| `1.25.8` +| `eks.2` +| New platform version with security fixes and enhancements. +| March 24, 2023 + +| `1.25.6` +| `eks.1` +| Initial release of Kubernetes version `1.25` for EKS. For more information, see <>. +| February 21, 2023 +|=== + +[[platform-versions-1.24,platform-versions-1.24.title]] +== [.noloc]`Kubernetes` version `1.24` + +The following admission controllers are enabled for all `1.24` platform versions: `CertificateApproval`, `CertificateSigning`, `CertificateSubjectRestriction`, `DefaultIngressClass`, `DefaultStorageClass`, `DefaultTolerationSeconds`, `ExtendedResourceToleration`, `LimitRanger`, `MutatingAdmissionWebhook`, `NamespaceLifecycle`, `NodeRestriction`, `PersistentVolumeClaimResize`, `Priority`, `PodSecurityPolicy`, `ResourceQuota`, `RuntimeClass`, `ServiceAccount`, `StorageObjectInUseProtection`, `TaintNodesByCondition`, and `ValidatingAdmissionWebhook`. + +[cols="1,1,1,1", options="header"] +|=== +| Kubernetes version +| EKS platform version +| Release notes +| Release date + +| `1.24.17` +| `eks.39` +| New platform version with security fixes and enhancements. +| November 15, 2024 + +| `1.24.17` +| `eks.32` +| New platform version with security fixes and enhancements. +| October 21, 2024 + +| `1.24.17` +| `eks.28` +| New platform version with security fixes and enhancements. +| September 3, 2024 + + +| `1.24.17` +| `eks.27` +| New platform version with security fixes and enhancements. +| August 28, 2024 + + +| `1.24.17` +| `eks.26` +| New platform version with security fixes and enhancements. +| August 9, 2024 + +| `1.24.17` +| `eks.25` +| New platform version with security fixes and enhancements. +| July 2, 2024 + +| `1.24.17` +| `eks.22` +| New platform version with security fixes and enhancements. +| May 16, 2024 + +| `1.24.17` +| `eks.21` +| New platform version with security fixes and enhancements. +| April 18, 2024 + +| `1.24.17` +| `eks.20` +| New platform version with security fixes and enhancements. +| March 29, 2024 + +| `1.24.17` +| `eks.19` +| New platform version with security fixes and enhancements. +| March 20, 2024 + +| `1.24.17` +| `eks.18` +| New platform version with security fixes and enhancements. +| March 12, 2024 + +| `1.24.17` +| `eks.16` +| New platform version with security fixes and enhancements. +| January 17, 2024 + +| `1.24.17` +| `eks.15` +| New platform version with <>, security fixes and enhancements. +| December 14, 2023 + +| `1.24.17` +| `eks.14` +| New platform version with security fixes and enhancements. +| December 12, 2023 + +| `1.24.17` +| `eks.13` +| New platform version with <>, security fixes and enhancements. +| November 10, 2023 + +| `1.24.17` +| `eks.12` +| New platform version with security fixes and enhancements. +| November 3, 2023 + +| `1.24.17` +| `eks.11` +| New platform version with security fixes and enhancements. +| October 16, 2023 + +| `1.24.16` +| `eks.10` +| New platform version with security fixes and enhancements. +| August 30, 2023 + +| `1.24.16` +| `eks.9` +| New platform version with security fixes and enhancements. +| July 30, 2023 + +| `1.24.15` +| `eks.8` +| New platform version with security fixes and enhancements. +| June 30, 2023 + +| `1.24.14` +| `eks.7` +| New platform version with security fixes and enhancements. +| June 9, 2023 + +| `1.24.13` +| `eks.6` +| New platform version with security fixes and enhancements. +| May 5, 2023 + +| `1.24.12` +| `eks.5` +| New platform version with security fixes and enhancements. +| March 24, 2023 + +| `1.24.8` +| `eks.4` +| New platform version with security fixes and enhancements. +| January 27, 2023 + +| `1.24.7` +| `eks.3` +| New platform version with security fixes and enhancements. +| December 5, 2022 + +| `1.24.7` +| `eks.2` +| New platform version with security fixes and enhancements. +| November 18, 2022 + +| `1.24.7` +| `eks.1` +| Initial release of Kubernetes version `1.24` for EKS. For more information, see <>. +| November 15, 2022 +|=== + +[[get-platform-version,get-platform-version.title]] +== Get current platform version +. Open the Amazon EKS console. +. In the navigation pane, choose *Clusters*. +. In the list of clusters, choose the *Cluster Name* to check the platform version of. +. Choose the *Overview* tab. +. The *Platform Version* is available under in the *Details* section. +. Determine the *Name* of the cluster you want to check the platform version of. +. Run the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster --name my-cluster --query cluster.platformVersion +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +"eks.10" +---- + + +[[change-platform-version,change-platform-version.title]] +== Change platform version + +You cannot change the platform version of an EKS cluster. When new Amazon EKS platform versions become available for a [.noloc]`Kubernetes` version, EKS automatically upgrades all existing clusters to the latest Amazon EKS platform version for their corresponding [.noloc]`Kubernetes` version. Automatic upgrades of existing Amazon EKS platform versions are rolled out incrementally. You cannot use the {aws} Console or CLI to change the platform version. + +If you upgrade your [.noloc]`Kubernetes` version, your cluster will move onto the most recent platform version for the [.noloc]`Kubernetes` version. diff --git a/latest/ug/clusters/private-clusters.adoc b/latest/ug/clusters/private-clusters.adoc new file mode 100644 index 00000000..22477bb6 --- /dev/null +++ b/latest/ug/clusters/private-clusters.adoc @@ -0,0 +1,106 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[private-clusters,private-clusters.title]] += Deploy private clusters with limited internet access +:info_doctype: section +:info_title: Deploy private clusters with limited internet access +:info_titleabbrev: Private clusters +:info_abstract: Learn how to deploy and operate an Amazon EKS cluster without outbound internet access, including requirements for private container registries, endpoint access control, and VPC interface endpoints for {aws} services. + +[abstract] +-- +Learn how to deploy and operate an Amazon EKS cluster without outbound internet access, including requirements for private container registries, endpoint access control, and VPC interface endpoints for {aws} services. +-- + +This topic describes how to deploy an Amazon EKS cluster that is deployed on the {aws} Cloud, but doesn't have outbound internet access. If you have a local cluster on {aws} Outposts, see <>, instead of this topic. + +If you're not familiar with Amazon EKS networking, see link:containers/de-mystifying-cluster-networking-for-amazon-eks-worker-nodes[De-mystifying cluster networking for Amazon EKS worker nodes,type="blog"]. If your cluster doesn't have outbound internet access, then it must meet the following requirements: + + + +* Your cluster must pull images from a container registry that's in your VPC. You can create an Amazon Elastic Container Registry in your VPC and copy container images to it for your nodes to pull from. For more information, see <>. +* Your cluster must have endpoint private access enabled. This is required for nodes to register with the cluster endpoint. Endpoint public access is optional. For more information, see <>. +* Self-managed [.noloc]`Linux` and [.noloc]`Windows` nodes must include the following bootstrap arguments before they're launched. These arguments bypass Amazon EKS introspection and don't require access to the Amazon EKS API from within the VPC. ++ +.. Determine the value of your cluster's endpoint with the following command. Replace [.replaceable]`my-cluster` with the name of your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com +---- +.. Determine the value of your cluster's certificate authority with the following command. Replace [.replaceable]`my-cluster` with the name of your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text +---- ++ +The returned output is a long string. +.. Replace [.replaceable]`cluster-endpoint` and [.replaceable]`certificate-authority` in the following commands with the values returned in the output from the previous commands. For more information about specifying bootstrap arguments when launching self-managed nodes, see <> and <>. ++ +** For [.noloc]`Linux` nodes: ++ +[source,bash,subs="verbatim,attributes"] +---- +--apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority +---- ++ +For additional arguments, see the https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh[bootstrap script] on [.noloc]`GitHub`. +** For [.noloc]`Windows` nodes: ++ +NOTE: If you're using custom service CIDR, then you need to specify it using the `-ServiceCIDR` parameter. Otherwise, the DNS resolution for [.noloc]`Pods` in the cluster will fail. ++ +[source,bash,subs="verbatim,attributes"] +---- +-APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority +---- ++ +For additional arguments, see <>. +* Your cluster's `aws-auth` `ConfigMap` must be created from within your VPC. For more information about creating and adding entries to the `aws-auth` `ConfigMap`, enter `eksctl create iamidentitymapping --help` in your terminal. If the `ConfigMap` doesn't exist on your server, `eksctl` will create it when you use the command to add an identity mapping. +* [.noloc]`Pods` configured with xref:iam-roles-for-service-accounts[IAM roles for service accounts,linkend=iam-roles-for-service-accounts] acquire credentials from an {aws} Security Token Service ({aws} STS) API call. If there is no outbound internet access, you must create and use an {aws} STS VPC endpoint in your VPC. Most {aws} `v1` SDKs use the global {aws} STS endpoint by default (`sts.amazonaws.com`), which doesn't use the {aws} STS VPC endpoint. To use the {aws} STS VPC endpoint, you might need to configure your SDK to use the regional {aws} STS endpoint (``sts.[.replaceable]`region-code`.amazonaws.com``). For more information, see <>. +* Your cluster's VPC subnets must have a VPC interface endpoint for any {aws} services that your [.noloc]`Pods` need access to. For more information, see link:vpc/latest/privatelink/create-interface-endpoint.html[Access an {aws} service using an interface VPC endpoint,type="documentation"]. Some commonly-used services and endpoints are listed in the following table. For a complete list of endpoints, see link:vpc/latest/privatelink/aws-services-privatelink-support.html[{aws} services that integrate with {aws} PrivateLink,type="documentation"] in the link:vpc/latest/privatelink/[{aws} PrivateLink Guide,type="documentation"]. ++ +We recommend that you link:vpc/latest/privatelink/interface-endpoints.html#enable-private-dns-names[enable private DNS names,type="documentation"] for your VPC endpoints, that way workloads can continue using public {aws} service endpoints without issues. ++ +[cols="1,1", options="header"] +|=== +|Service +|Endpoint + + +|Amazon EC2 +|com.amazonaws.[.replaceable]`region-code`.ec2 + +|Amazon Elastic Container Registry (for pulling container images) +|com.amazonaws.[.replaceable]`region-code`.ecr.api, com.amazonaws.[.replaceable]`region-code`.ecr.dkr, and com.amazonaws.[.replaceable]`region-code`.s3 + +|Application Load Balancers and Network Load Balancers +|com.amazonaws.[.replaceable]`region-code`.elasticloadbalancing + +|{aws} X-Ray +|com.amazonaws.[.replaceable]`region-code`.xray + +|Amazon CloudWatch Logs +|com.amazonaws.[.replaceable]`region-code`.logs + +|{aws} Security Token Service (required when using IAM roles for service accounts) +|com.amazonaws.[.replaceable]`region-code`.sts +|=== + + +* Any self-managed nodes must be deployed to subnets that have the VPC interface endpoints that you require. If you create a managed node group, the VPC interface endpoint security group must allow the CIDR for the subnets, or you must add the created node security group to the VPC interface endpoint security group. +* If your [.noloc]`Pods` use Amazon EFS volumes, then before deploying the <>, the driver's https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/deploy/kubernetes/overlays/stable/kustomization.yaml[kustomization.yaml] file must be changed to set the container images to use the same {aws} Region as the Amazon EKS cluster. +* You can use the <> to deploy {aws} Application Load Balancers (ALB) and Network Load Balancers to your private cluster. When deploying it, you should use https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.7/deploy/configurations/#controller-command-line-flags[command line flags] to set `enable-shield`, `enable-waf`, and `enable-wafv2` to false. https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.7/guide/ingress/cert_discovery/#discover-via-ingress-rule-host[Certificate discovery] with hostnames from Ingress objects isn't supported. This is because the controller needs to reach {aws} Certificate Manager, which doesn't have a VPC interface endpoint. ++ +The controller supports network load balancers with IP targets, which are required for use with Fargate. For more information, see <> and <>. +* https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md[Cluster Autoscaler] is supported. When deploying Cluster Autoscaler [.noloc]`Pods`, make sure that the command line includes `--aws-use-static-instance-list=true`. For more information, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#use-static-instance-list[Use Static Instance List] on [.noloc]`GitHub`. The worker node VPC must also include the {aws} STS VPC endpoint and autoscaling VPC endpoint. +* Some container software products use API calls that access the {aws} Marketplace Metering Service to monitor usage. Private clusters do not allow these calls, so you can't use these container types in private clusters. diff --git a/latest/ug/clusters/update-cluster.adoc b/latest/ug/clusters/update-cluster.adoc new file mode 100644 index 00000000..2a29b8ae --- /dev/null +++ b/latest/ug/clusters/update-cluster.adoc @@ -0,0 +1,256 @@ +//!!NODE_ROOT
+ +[.topic] +[[update-cluster,update-cluster.title]] += Update existing cluster to new Kubernetes version +:info_doctype: section +:info_title: Update existing cluster to new Kubernetes version +:info_titleabbrev: Update Kubernetes version +:info_abstract: Learn how to update your Amazon EKS cluster to the latest Kubernetes version, ensuring compatibility with nodes and add-ons, and maintaining high availability during the process. + +include::../attributes.txt[] + +[abstract] +-- +Learn how to update your Amazon EKS cluster to the latest Kubernetes version, ensuring compatibility with nodes and add-ons, and maintaining high availability during the process. +-- + +When a new [.noloc]`Kubernetes` version is available in Amazon EKS, you can update your Amazon EKS cluster to the latest version. + +[IMPORTANT] +==== + +Once you upgrade a cluster, you can't downgrade to a previous version. We recommend that, before you update to a new [.noloc]`Kubernetes` version, you review the information in <> and also review in the update steps in this topic. + +==== + +New [.noloc]`Kubernetes` versions sometimes introduce significant changes. Therefore, we recommend that you test the behavior of your applications against a new [.noloc]`Kubernetes` version before you update your production clusters. You can do this by building a continuous integration workflow to test your application behavior before moving to a new [.noloc]`Kubernetes` version. + +The update process consists of Amazon EKS launching new API server nodes with the updated [.noloc]`Kubernetes` version to replace the existing ones. Amazon EKS performs standard infrastructure and readiness health checks for network traffic on these new nodes to verify that they're working as expected. However, once you've started the cluster upgrade, you can't pause or stop it. If any of these checks fail, Amazon EKS reverts the infrastructure deployment, and your cluster remains on the prior [.noloc]`Kubernetes` version. Running applications aren't affected, and your cluster is never left in a non-deterministic or unrecoverable state. Amazon EKS regularly backs up all managed clusters, and mechanisms exist to recover clusters if necessary. We're constantly evaluating and improving our [.noloc]`Kubernetes` infrastructure management processes. + +To update the cluster, Amazon EKS requires up to five available IP addresses from the subnets that you specified when you created your cluster. Amazon EKS creates new cluster elastic network interfaces (network interfaces) in any of the subnets that you specified. The network interfaces may be created in different subnets than your existing network interfaces are in, so make sure that your security group rules allow <> for any of the subnets that you specified when you created your cluster. If any of the subnets that you specified when you created the cluster don't exist, don't have enough available IP addresses, or don't have security group rules that allows necessary cluster communication, then the update can fail. + +[NOTE] +==== + +To ensure that the API server endpoint for your cluster is always accessible, Amazon EKS provides a highly available [.noloc]`Kubernetes` control plane and performs rolling updates of API server instances during update operations. In order to account for changing IP addresses of API server instances supporting your [.noloc]`Kubernetes` API server endpoint, you must ensure that your API server clients manage reconnects effectively. Recent versions of `kubectl` and the [.noloc]`Kubernetes` client https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#programmatic-access-to-the-api[libraries] that are officially supported, perform this reconnect process transparently. + +==== + +== Considerations for Amazon EKS Auto Mode + +* The compute capability of Amazon EKS Auto Mode controls the Kubernetes version of nodes. After you upgrade the control plane, EKS Auto Mode will begin incrementally updating managed nodes. EKS Auto Mode respects pod disruption budgets. +* You do not have to manually upgrade the capabilities of Amazon EKS Auto Mode, including the compute autoscaling, block storage, and load balancing capabilities. + +[[update-existing-cluster,update-existing-cluster.title]] +== Step 1: Prepare for upgrade +. Compare the [.noloc]`Kubernetes` version of your cluster control plane to the [.noloc]`Kubernetes` version of your nodes. ++ +** Get the [.noloc]`Kubernetes` version of your cluster control plane. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl version +---- +** Get the [.noloc]`Kubernetes` version of your nodes. This command returns all self-managed and managed Amazon EC2, Fargate, and hybrid nodes. Each Fargate [.noloc]`Pod` is listed as its own node. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get nodes +---- + ++ +Before updating your control plane to a new [.noloc]`Kubernetes` version, make sure that the [.noloc]`Kubernetes` minor version of both the managed nodes and Fargate nodes in your cluster are the same as your control plane's version. For example, if your control plane is running version `1.29` and one of your nodes is running version `1.28`, then you must update your nodes to version `1.29` before updating your control plane to 1.30. We also recommend that you update your self-managed nodes and hybrid nodes to the same version as your control plane before updating the control plane. For more information, see <>, <>, and <>. If you have Fargate nodes with a minor version lower than the control plane version, first delete the [.noloc]`Pod` that's represented by the node. Then update your control plane. Any remaining [.noloc]`Pods` will update to the new version after you redeploy them. +. If the [.noloc]`Kubernetes` version that you originally deployed your cluster with was [.noloc]`Kubernetes` `1.25` or later, skip this step. ++ +By default, the [.noloc]`Pod` security policy admission controller is enabled on Amazon EKS clusters. Before updating your cluster, ensure that the proper [.noloc]`Pod` security policies are in place. This is to avoid potential security issues. You can check for the default policy with the `kubectl get psp eks.privileged` command. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get psp eks.privileged +---- ++ +If you receive the following error, see <> before proceeding. ++ +[source,bash,subs="verbatim,attributes"] +---- +Error from server (NotFound): podsecuritypolicies.extensions "eks.privileged" not found +---- +. If the [.noloc]`Kubernetes` version that you originally deployed your cluster with was [.noloc]`Kubernetes` `1.18` or later, skip this step. ++ +You might need to remove a discontinued term from your [.noloc]`CoreDNS` manifest. ++ +.. Check to see if your [.noloc]`CoreDNS` manifest has a line that only has the word `upstream`. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream +---- ++ +If no output is returned, this means that your manifest doesn't have the line. If this is the case, skip to the next step. If the word `upstream` is returned, remove the line. +.. Remove the line near the top of the file that only has the word `upstream` in the configmap file. Don't change anything else in the file. After the line is removed, save the changes. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl edit configmap coredns -n kube-system -o yaml +---- + +== Step 2: Review upgrade considerations + +* If you're updating to version `1.23` and use Amazon EBS volumes in your cluster, then you must install the Amazon EBS CSI driver in your cluster before updating your cluster to version `1.23` to avoid workload disruptions. For more information, see <> and <>. +* Kubernetes `1.24` and later use `containerd` as the default container runtime. If you're switching to the `containerd` runtime and already have [.noloc]`Fluentd` configured for [.noloc]`Container Insights`, then you must migrate [.noloc]`Fluentd` to [.noloc]`Fluent Bit` before updating your cluster. The [.noloc]`Fluentd` parsers are configured to only parse log messages in JSON format. Unlike `dockerd`, the `containerd` container runtime has log messages that aren't in JSON format. If you don't migrate to [.noloc]`Fluent Bit`, some of the configured [.noloc]`Fluentd's` parsers will generate a massive amount of errors inside the [.noloc]`Fluentd` container. For more information on migrating, see link:AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html[Set up Fluent Bit as a DaemonSet to send logs to CloudWatch Logs,type="documentation"]. +** Because Amazon EKS runs a highly available control plane, you can update only one minor version at a time. For more information about this requirement, see https://kubernetes.io/docs/setup/version-skew-policy/#kube-apiserver[Kubernetes Version and Version Skew Support Policy]. Assume that your current cluster version is version `1.28` and you want to update it to version `1.30`. You must first update your version `1.28` cluster to version `1.29` and then update your version `1.29` cluster to version `1.30`. +* Review the version skew between the [.noloc]`Kubernetes` `kube-apiserver` and the `kubelet` on your nodes. ++ +** Starting from [.noloc]`Kubernetes` version `1.28`, `kubelet` may be up to three minor versions older than `kube-apiserver`. See https://kubernetes.io/releases/version-skew-policy/#kubelet[Kubernetes upstream version skew policy]. +** If the `kubelet` on your managed and Fargate nodes is on [.noloc]`Kubernetes` version `1.25` or newer, you can update your cluster up to three versions ahead without updating the `kubelet` version. For example, if the `kubelet` is on version `1.25`, you can update your Amazon EKS cluster version from `1.25` to `1.26`, to `1.27`, and to `1.28` while the `kubelet` remains on version `1.25`. +** If the `kubelet` on your managed and Fargate nodes is on [.noloc]`Kubernetes` version `1.24` or older, it may only be up to two minor versions older than the `kube-apiserver`. In other words, if the `kubelet` is version `1.24` or older, you can only update your cluster up to two versions ahead. For example, if the `kubelet` is on version `1.21`, you can update your Amazon EKS cluster version from `1.21` to `1.22`, and to `1.23`, but you will not be able to update the cluster to `1.24` while the `kubelet` remains on `1.21`. +* As a best practice before starting an update, make sure that the `kubelet` on your nodes is at the same [.noloc]`Kubernetes` version as your control plane. +* If your cluster is configured with a version of the [.noloc]`Amazon VPC CNI plugin for Kubernetes` that is earlier than `1.8.0`, then we recommend that you update the plugin to the latest version before updating your cluster. To update the plugin, see <>. +* If you're updating your cluster to version `1.25` or later and have the [.noloc]`{aws} Load Balancer Controller` deployed in your cluster, then update the controller to version `2.4.7` or later _before_ updating your cluster version to `1.25`. For more information, see the xref:kubernetes-1.25[Kubernetes 1.25,linkend=kubernetes-1.25] release notes. + +== Step 3: Update cluster control plane + +You can submit the request to upgrade your EKS control plane version using: + +* xref:step3-eksctl[eksctl] +* xref:step3-console[the {aws} console] +* xref:step3-cli[the {aws} cli] + +[[step3-eksctl,step3-eksctl.title]] +=== Update cluster - eksctl + +This procedure requires `eksctl` version `{eksctl-min-version}` or later. You can check your version with the following command: + +[source,bash,subs="verbatim,attributes"] +---- +eksctl version +---- + +For instructions on how to install and update `eksctl`, see https://eksctl.io/installation[Installation] in the `eksctl` documentation. + +Update the [.noloc]`Kubernetes` version of your Amazon EKS control plane. Replace [.replaceable]`my-cluster` with your cluster name. Replace [.replaceable]`1.30` with the Amazon EKS supported version number that you want to update your cluster to. For a list of supported version numbers, see <>. + +[source,bash,subs="verbatim,attributes"] +---- +eksctl upgrade cluster --name my-cluster --version 1.30 --approve +---- + +The update takes several minutes to complete. + +Continue to <> + +[[step3-console,step3-console.title]] +=== Update cluster - {aws} console + +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. Choose the name of the Amazon EKS cluster to update and choose *Update cluster version*. +. For *[.noloc]`Kubernetes` version*, select the version to update your cluster to and choose *Update*. +. For *Cluster name*, enter the name of your cluster and choose *Confirm*. ++ +The update takes several minutes to complete. +. Continue to <> + +[[step3-cli,step3-cli.title]] +=== Update cluster - {aws} CLI + +. Update your Amazon EKS cluster with the following {aws} CLI command. Replace the [.replaceable]`example values` with your own. Replace [.replaceable]`1.30` with the Amazon EKS supported version number that you want to update your cluster to. For a list of supported version numbers, see <>. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks update-cluster-version --region region-code --name my-cluster --kubernetes-version 1.30 +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +{ + "update": { + "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", + "status": "InProgress", + "type": "VersionUpdate", + "params": [ + { + "type": "Version", + "value": "1.30" + }, + { + "type": "PlatformVersion", + "value": "eks.1" + } + ], +[...] + "errors": [] + } + +---- + +. Monitor the status of your cluster update with the following command. Use the cluster name and update ID that the previous command returned. When a `Successful` status is displayed, the update is complete. The update takes several minutes to complete. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-update --region region-code --name my-cluster --update-id b5f0ba18-9a87-4450-b5a0-825e6e84496f +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +{ + "update": { + "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", + "status": "Successful", + "type": "VersionUpdate", + "params": [ + { + "type": "Version", + "value": "1.30" + }, + { + "type": "PlatformVersion", + "value": "eks.1" + } + ], +[...] + "errors": [] + } + +---- +. Continue to <> + +[[step4,step4.title]] +== Step 4: Update cluster components + +. After your cluster update is complete, update your nodes to the same [.noloc]`Kubernetes` minor version as your updated cluster. For more information, see <>, <>, and <>. Any new [.noloc]`Pods` that are launched on Fargate have a `kubelet` version that matches your cluster version. Existing Fargate [.noloc]`Pods` aren't changed. +. (Optional) If you deployed the [.noloc]`Kubernetes` Cluster Autoscaler to your cluster before updating the cluster, update the Cluster Autoscaler to the latest version that matches the [.noloc]`Kubernetes` major and minor version that you updated to. ++ +.. Open the Cluster Autoscaler https://github.com/kubernetes/autoscaler/releases[releases] page in a web browser and find the latest Cluster Autoscaler version that matches your cluster's [.noloc]`Kubernetes` major and minor version. For example, if your cluster's [.noloc]`Kubernetes` version is `1.30` find the latest Cluster Autoscaler release that begins with `1.30`. Record the semantic version number (``1.30.n``, for example) for that release to use in the next step. +.. Set the Cluster Autoscaler image tag to the version that you recorded in the previous step with the following command. If necessary, replace [.replaceable]`1.30`.[.replaceable]`n`` with your own value. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:v1.30.n +---- +. (Clusters with GPU nodes only) If your cluster has node groups with GPU support (for example, `p3.2xlarge`), you must update the https://github.com/NVIDIA/k8s-device-plugin[NVIDIA device plugin for Kubernetes][.noloc]`DaemonSet` on your cluster. Replace [.replaceable]`vX.X.X` with your desired https://github.com/NVIDIA/k8s-device-plugin/releases[NVIDIA/k8s-device-plugin] version before running the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml +---- +. Update the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, [.noloc]`CoreDNS`, and `kube-proxy` add-ons. We recommend updating the add-ons to the minimum versions listed in <>. ++ +** If you are using Amazon EKS add-ons, select *Clusters* in the Amazon EKS console, then select the name of the cluster that you updated in the left navigation pane. Notifications appear in the console. They inform you that a new version is available for each add-on that has an available update. To update an add-on, select the *Add-ons* tab. In one of the boxes for an add-on that has an update available, select *Update now*, select an available version, and then select *Update*. +** Alternately, you can use the {aws} CLI or `eksctl` to update add-ons. For more information, see <>. +. If necessary, update your version of `kubectl`. You must use a `kubectl` version that is within one minor version difference of your Amazon EKS cluster control plane. For example, a `1.29` `kubectl` client works with [.noloc]`Kubernetes` `1.28`, `1.29`, and `1.30` clusters. You can check your currently installed version with the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl version --client +---- + + +[[downgrade-cluster,downgrade-cluster.title]] +== Downgrade the [.noloc]`Kubernetes` version for an Amazon EKS cluster + +You cannot downgrade the [.noloc]`Kubernetes` of an Amazon EKS cluster. Instead, create a new cluster on a previous Amazon EKS version and migrate the workloads. diff --git a/latest/ug/clusters/view-support-status.adoc b/latest/ug/clusters/view-support-status.adoc new file mode 100644 index 00000000..d6e08980 --- /dev/null +++ b/latest/ug/clusters/view-support-status.adoc @@ -0,0 +1,20 @@ +include::../attributes.txt[] +[.topic] +[[view-support-status,view-support-status.title]] += View current cluster support period +:info_titleabbrev: View support period + +The *cluster support period* section of the {aws} console indicates if your cluster is _currently_ on standard or extended support. If your cluster support period is *Extended support*, you are being charged for EKS extended support. + +For more information about standard and extended support, see <>. + +. Navigate to the *Clusters* page in the EKS section of the {aws} Console. Confirm the console is set to the same {aws} region as the cluster you want to review. +. Review the *Support Period* column. If the value is *Standard support until...*, you are not currently being charged for extended support. You are within the standard support period. If the value is *Extended support...* this cluster is currently being charged for extended support. + + +[NOTE] +==== + +The *Support Period* cannot be retrieved with the {aws} API or CLI. + +==== diff --git a/latest/ug/clusters/view-upgrade-policy.adoc b/latest/ug/clusters/view-upgrade-policy.adoc new file mode 100644 index 00000000..5c8d515c --- /dev/null +++ b/latest/ug/clusters/view-upgrade-policy.adoc @@ -0,0 +1,51 @@ +include::../attributes.txt[] +[.topic] +[[view-upgrade-policy,view-upgrade-policy.title]] += View current cluster upgrade policy +:info_titleabbrev: View upgrade policy + +The *cluster upgrade policy* determines what happens to your cluster when it leaves the standard support period. If your upgrade policy is `EXTENDED`, the cluster will not be automatically upgraded, and will enter extended support. If your upgrade policy is `STANDARD`, it will be automatically upgraded. + +Amazon EKS controls for [.noloc]`Kubernetes` version policy allows you to choose the end of standard support behavior for your EKS clusters. With these controls you can decide which clusters should enter extended support and which clusters should be automatically upgraded at the end of standard support for a [.noloc]`Kubernetes` version. + +A minor version is under standard support in Amazon EKS for the first 14 months after it's released. Once a version is past the end of standard support date, it enters extended support for the next 12 months. Extended support allows you to stay at a specific [.noloc]`Kubernetes` version for longer at an additional cost per cluster hour. You can enable or disable extended support for an EKS Cluster. If you disable extended support, {aws} will automatically upgrade your cluster to the next version at the end of standard support. If you enable extended support, you can stay at the current version for an additional cost for a limited period of time. Plan to regularly upgrade your [.noloc]`Kubernetes` cluster, even if you use extended support. + +You can set the version policy for both new and existing clusters, using the `supportType` property. There are two options that can be used to set the version support policy: + + + +* `*STANDARD*` -- Your EKS cluster eligible for automatic upgrade at the end of standard support. You will not incur extended support charges with this setting but you EKS cluster will automatically upgrade to the next supported [.noloc]`Kubernetes` version in standard support. +* `*EXTENDED*` -- Your EKS cluster will enter into extended support once the [.noloc]`Kubernetes` version reaches end of standard support. You will incur extended support charges with this setting. You can upgrade your cluster to a standard supported [.noloc]`Kubernetes` version to stop incurring extended support charges. Clusters running on extended support will be eligible for automatic upgrade at the end of extended support. + +Extended support is enabled by default for new clusters, and existing clusters. You can view if extended support is enabled for a cluster in the {aws-management-console}, or by using the {aws} CLI. + +[IMPORTANT] +==== + +If you want your cluster to stay on its current [.noloc]`Kubernetes` version to take advantage of the extended support period, you must enable the extended support upgrade policy before the end of standard support period. + +==== + +You can only set the version support policy for your clusters while its running on Kubernetes version in standard support. Once the version enters extended support, you will not be able to change this setting until you are running on a version in standard support. + +For example, if you have set your version support policy as `standard` then you will not be able to change this setting after the Kubernetes version running on your cluster reaches the end of standard support. If you have set your version support policy as `extended` then you will not be able to change this setting after the Kubernetes version running on your cluster reaches end of standard support. In order to change the version support policy setting, your cluster must be running on a standard supported Kubernetes version. + +[[view-period-console,view-period-console.title]] +== View cluster upgrade policy ({aws} Console) +. Navigate to the *Clusters* page in the EKS section of the {aws} Console. Confirm the console is set to the same {aws} region as the cluster you want to review. +. Review the *Upgrade Policy* column. If the value is *Standard Support*, your cluster will not enter extended support. If the value is *Extended Support*, your cluster will enter extended support. + + +[[view-period-cli,view-period-cli.title]] +== View cluster upgrade policy ({aws} CLI) +. Verify the {aws} CLI is installed and you are logged in. link:cli/latest/userguide/getting-started-install.html[Learn how to update and install the {aws} CLI.,type="documentation"] +. Determine the name of your EKS cluster. Set the CLI to the same {aws} region as your EKS cluster. +. Run the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster \ +--name \ +--query "cluster.upgradePolicy.supportType" +---- +. If the value is `STANDARD`, your cluster will not enter extended support. If the value is `EXTENDED`, your cluster will enter extended support. diff --git a/latest/ug/clusters/windows-support.adoc b/latest/ug/clusters/windows-support.adoc new file mode 100644 index 00000000..6826baef --- /dev/null +++ b/latest/ug/clusters/windows-support.adoc @@ -0,0 +1,204 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[windows-support,windows-support.title]] += Deploy [.noloc]`Windows` nodes on EKS clusters +:info_doctype: section +:info_title: Deploy Windows nodes on EKS \ + clusters +:info_titleabbrev: Enable Windows support +:info_abstract: Learn how to enable and manage Windows support for your Amazon EKS cluster to run \ + Windows containers alongside Linux containers. + +[abstract] +-- +Learn how to enable and manage Windows support for your Amazon EKS cluster to run Windows containers alongside Linux containers. +-- + +Before deploying [.noloc]`Windows` nodes, be aware of the following considerations. + + +* EKS Auto Mode does not support Windows nodes +* You can use host networking on Windows nodes using `HostProcess` Pods. For more information, see https://kubernetes.io/docs/tasks/configure-pod-container/create-hostprocess-pod/[Create a Windows HostProcessPod] in the [.noloc]`Kubernetes` documentation. +* Amazon EKS clusters must contain one or more [.noloc]`Linux` or Fargate nodes to run core system [.noloc]`Pods` that only run on [.noloc]`Linux`, such as [.noloc]`CoreDNS`. +* The `kubelet` and `kube-proxy` event logs are redirected to the `EKS Windows` Event Log and are set to a 200 MB limit. +* You can't use xref:security-groups-for-pods[Assign security groups to individual pods,linkend=security-groups-for-pods] with [.noloc]`Pods` running on [.noloc]`Windows` nodes. +* You can't use xref:cni-custom-network[custom networking,linkend=cni-custom-network] with [.noloc]`Windows` nodes. +* You can't use `IPv6` with [.noloc]`Windows` nodes. +* [.noloc]`Windows` nodes support one elastic network interface per node. By default, the number of [.noloc]`Pods` that you can run per [.noloc]`Windows` node is equal to the number of IP addresses available per elastic network interface for the node's instance type, minus one. For more information, see link:AWSEC2/latest/WindowsGuide/using-eni.html#AvailableIpPerENI[IP addresses per network interface per instance type,type="documentation"] in the _Amazon EC2 User Guide_. +* In an Amazon EKS cluster, a single service with a load balancer can support up to 1024 back-end [.noloc]`Pods`. Each [.noloc]`Pod` has its own unique IP address. The previous limit of 64 [.noloc]`Pods` is no longer the case, after https://github.com/microsoft/Windows-Containers/issues/93[a Windows Server update] starting with https://support.microsoft.com/en-us/topic/march-22-2022-kb5011551-os-build-17763-2746-preview-690a59cd-059e-40f4-87e8-e9139cc65de4[OS Build 17763.2746]. +* Windows containers aren't supported for Amazon EKS [.noloc]`Pods` on Fargate. +* You can't use Amazon EKS Hybrid Nodes with Windows as the operating system for the host. +* You can't retrieve logs from the `vpc-resource-controller` Pod. You previously could when you deployed the controller to the data plane. +* There is a cool down period before an `IPv4` address is assigned to a new Pod. This prevents traffic from flowing to an older Pod with the same `IPv4` address due to stale `kube-proxy` rules. +* The source for the controller is managed on [.noloc]`GitHub`. To contribute to, or file issues against the controller, visit the https://github.com/aws/amazon-vpc-resource-controller-k8s[project] on [.noloc]`GitHub`. +* When specifying a custom AMI ID for [.noloc]`Windows` managed node groups, add `eks:kube-proxy-windows` to your {aws} IAM Authenticator configuration map. For more information, see <>. +* If preserving your available IPv4 addresses is crucial for your subnet, refer to https://aws.github.io/aws-eks-best-practices/windows/docs/networking/#ip-address-management[EKS Best Practices Guide - Windows Networking IP Address Management] for guidance. + + +* An existing cluster. The cluster must be running one of the [.noloc]`Kubernetes` versions and platform versions listed in the following table. Any [.noloc]`Kubernetes` and platform versions later than those listed are also supported. ++ +[[windows-support-platform-versions]] +[cols="1,1", options="header"] +|=== +|Kubernetes version +|Platform version + +|1.31 +|eks.4 + +|1.30 +|eks.2 + +|1.29 +|eks.1 + +|1.28 +|eks.1 + +|1.27 +|eks.1 + +|1.26 +|eks.1 + +|1.25 +|eks.1 + +|1.24 +|eks.2 +|=== +* Your cluster must have at least one (we recommend at least two) [.noloc]`Linux` node or Fargate [.noloc]`Pod` to run [.noloc]`CoreDNS`. If you enable legacy [.noloc]`Windows` support, you must use a [.noloc]`Linux` node (you can't use a Fargate [.noloc]`Pod`) to run [.noloc]`CoreDNS`. +* An existing <>. + + +[[enable-windows-support,enable-windows-support.title]] +== Enable [.noloc]`Windows` support +. If you don't have Amazon Linux nodes in your cluster and use security groups for [.noloc]`Pods`, skip to the next step. Otherwise, confirm that the `AmazonEKSVPCResourceController` managed policy is attached to your <>. Replace [.replaceable]`eksClusterRole` with your cluster role name. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam list-attached-role-policies --role-name eksClusterRole +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +{ + "AttachedPolicies": [ + { + "PolicyName": "AmazonEKSClusterPolicy", + "PolicyArn": "{arn-aws}iam::aws:policy/AmazonEKSClusterPolicy" + }, + { + "PolicyName": "AmazonEKSVPCResourceController", + "PolicyArn": "{arn-aws}iam::aws:policy/AmazonEKSVPCResourceController" + } + ] +} +---- ++ +If the policy is attached, as it is in the previous output, skip the next step. +. Attach the *link:aws-managed-policy/latest/reference/AmazonEKSVPCResourceController.html[AmazonEKSVPCResourceController,type="documentation"]* managed policy to your <>. Replace [.replaceable]`eksClusterRole` with your cluster role name. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam attach-role-policy \ + --role-name eksClusterRole \ + --policy-arn {arn-aws}iam::aws:policy/AmazonEKSVPCResourceController +---- +. Create a file named [.replaceable]`vpc-resource-controller-configmap.yaml` with the following contents. ++ +[source,yaml,subs="verbatim,attributes"] +---- +apiVersion: v1 +kind: ConfigMap +metadata: + name: amazon-vpc-cni + namespace: kube-system +data: + enable-windows-ipam: "true" +---- +. Apply the `ConfigMap` to your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl apply -f vpc-resource-controller-configmap.yaml +---- +. Verify that your `aws-auth` `ConfigMap` contains a mapping for the instance role of the [.noloc]`Windows` node to include the `eks:kube-proxy-windows` RBAC permission group. You can verify by running the following command. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get configmap aws-auth -n kube-system -o yaml +---- ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +apiVersion: v1 +kind: ConfigMap +metadata: + name: aws-auth + namespace: kube-system +data: + mapRoles: | + - groups: + - system:bootstrappers + - system:nodes + - eks:kube-proxy-windows # This group is required for Windows DNS resolution to work + rolearn: {arn-aws}iam::111122223333:role/eksNodeRole + username: system:node:{{EC2PrivateDNSName}} +[...] +---- ++ +You should see `eks:kube-proxy-windows` listed under groups. If the group isn't specified, you need to update your `ConfigMap` or create it to include the required group. For more information about the `aws-auth` `ConfigMap`, see <>. + + +[[windows-support-pod-deployment,windows-support-pod-deployment.title]] +== Deploy Windows Pods + +When you deploy Pods to your cluster, you need to specify the operating system that they use if you're running a mixture of node types. + +For [.noloc]`Linux` [.noloc]`Pods`, use the following node selector text in your manifests. + +[source,yaml,subs="verbatim,attributes"] +---- +nodeSelector: + kubernetes.io/os: linux + kubernetes.io/arch: amd64 +---- + +For [.noloc]`Windows` [.noloc]`Pods`, use the following node selector text in your manifests. + +[source,yaml,subs="verbatim,attributes"] +---- +nodeSelector: + kubernetes.io/os: windows + kubernetes.io/arch: amd64 +---- + +You can deploy a <> to see the node selectors in use. + +[[windows-support-pod-density,windows-support-pod-density.title]] +== Support higher [.noloc]`Pod` density on Windows nodes + +In Amazon EKS, each [.noloc]`Pod` is allocated an `IPv4` address from your VPC. Due to this, the number of [.noloc]`Pods` that you can deploy to a node is constrained by the available IP addresses, even if there are sufficient resources to run more [.noloc]`Pods` on the node. Since only one elastic network interface is supported by a Windows node, by default, the maximum number of available IP addresses on a Windows node is equal to: + +[source,bash,subs="verbatim,attributes"] +---- +Number of private IPv4 addresses for each interface on the node - 1 +---- + +One IP address is used as the primary IP address of the network interface, so it can't be allocated to [.noloc]`Pods`. + +You can enable higher [.noloc]`Pod` density on Windows nodes by enabling IP prefix delegation. This feature enables you to assign a `/28` `IPv4` prefix to the primary network interface, instead of assigning secondary `IPv4` addresses. Assigning an IP prefix increases the maximum available `IPv4` addresses on the node to: + +[source,bash,subs="verbatim,attributes"] +---- +(Number of private IPv4 addresses assigned to the interface attached to the node - 1) * 16 +---- + +With this significantly larger number of available IP addresses, available IP addresses shouldn't limit your ability to scale the number of [.noloc]`Pods` on your nodes. For more information, see <>. diff --git a/latest/ug/clusters/zone-shift-enable.adoc b/latest/ug/clusters/zone-shift-enable.adoc new file mode 100644 index 00000000..78107e9b --- /dev/null +++ b/latest/ug/clusters/zone-shift-enable.adoc @@ -0,0 +1,69 @@ +//!!NODE_ROOT
+[.topic] +[[zone-shift-enable,zone-shift-enable.title]] += Enable EKS Zonal Shift to avoid impaired Availability Zones +:info_doctype: section +:info_titleabbrev: Enable Zonal Shift +:aws: pass:q[[.shared]``AWS``] + + + + +Amazon Application Recovery Controller (ARC) helps you manage and coordinate recovery for your applications across Availability Zones (AZs) and works with many services, including Amazon EKS. With EKS support for ARC zonal shift, you can shift in-cluster network traffic away from an impaired AZ. You can also authorize {aws} to monitor the health of your AZs and temporarily shift network traffic away from an unhealthy AZ on your behalf. + +*How to use EKS Zonal Shift:* + +. Enable your EKS cluster with Amazon Application Recovery Controller (ARC). This is done at the cluster level using the Amazon EKS Console, the {aws} CLI, CloudFormation, or eksctl. +. Once enabled, you can manage zonal shifts or zonal autoshifts using the ARC Console, the {aws} CLI, or the Zonal Shift and Zonal Autoshift APIs. + +Note that after you register an EKS cluster with ARC, you still need to configure ARC. For example, you can use the ARC console to configure Zonal Autoshift. + +For more detailed information about how EKS Zonal Shift works, and how to design your workloads to handle impaired availability zones, see <>. + +*Considerations:* + +* EKS Auto Mode does not support Amazon Application Recovery Controller, Zonal Shift, and Zonal Autoshift + +== What is Amazon Application Recovery Controller? + +Amazon Application Recovery Controller (ARC) helps you prepare for and accomplish faster recovery for applications running on {aws}. Zonal shift enables you to quickly recover from Availability Zone (AZ) impairments, by temporarily moving traffic for a supported resource away from an AZ, to healthy AZs in the {aws} Region. + +link:r53recovery/latest/dg/what-is-route53-recovery.html["Learn more about Amazon Application Recovery Controller (ARC)", type="documentation"] + +== What is zonal shift? + +Zonal shift is a capability in ARC that allows you to move traffic for a resource like an EKS cluster or an Elastic Load Balancer away from an Availability Zone in an {aws} Region to quickly mitigate an issue and quickly recover your application. You might choose to shift traffic, for example, because a bad deployment is causing latency issues, or because the Availability Zone is impaired. A zonal shift requires no advance configuration steps. + +link:r53recovery/latest/dg/arc-zonal-shift.how-it-works.html["Learn more about ARC Zonal Shift", type="documentation"] + +== What is zonal autoshift? + +Zonal autoshift is a capability in ARC that you can enable to authorize {aws} to shift traffic away from an AZ for supported resources, on your behalf, to healthy AZs in the {aws} Region. {aws} starts an autoshift when internal telemetry indicates that there is an impairment in one AZ in a Region that could potentially impact customers. The internal telemetry incorporates metrics from multiple sources, including the {aws} network, and the Amazon EC2 and Elastic Load Balancing services. + +{aws} ends autoshifts when indicators show that there is no longer an issue or potential issue. + +link:r53recovery/latest/dg/arc-zonal-autoshift.how-it-works.html["Learn more about ARC Zonal Autoshift", type="documentation"] + +== What does EKS do during an autoshift? + +EKS updates networking configurations to avoid directing traffic to impaired AZs. Additionally, if you are using Managed Node Groups, EKS will only launch new nodes in the healthy AZs during a zonal shift. When the shift expires or gets cancelled, the networking configurations will be restored to include the AZ that was previously detected as unhealthy. + +xref:zone-shift[Learn more about EKS Zonal Shift]. + +[[zone-shift-enable-steps,zone-shift-enable-steps.title]] +== Register EKS cluster with Amazon Application Recovery Controller (ARC) ({aws} console) + +. Find the name and region of the EKS cluster you want to register with ARC. +. Navigate to the link:eks[EKS console,type="console"] in that region, and select your cluster. +. On the *Cluster info* page, select the *Overview* tab. +. Under the *Zonal shift* heading, select the *Manage* button. +. Select *enable* or *disable* for _EKS Zonal Shift_. + +Now your EKS cluster is registered with ARC. + +If you want {aws} to detect and avoid impaired availability zones, you need to configure ARC Zonal Autoshift. For example, you can do this in the ARC console. + +== Next Steps + +* Learn how to link:r53recovery/latest/dg/arc-zonal-autoshift.start-cancel.html["enable zonal autoshift",type="documentation"] +* Learn how to manually link:r53recovery/latest/dg/arc-zonal-shift.start-cancel.html["start a zonal shift",type="documentation"] diff --git a/latest/ug/clusters/zone-shift.adoc b/latest/ug/clusters/zone-shift.adoc new file mode 100644 index 00000000..4153ff05 --- /dev/null +++ b/latest/ug/clusters/zone-shift.adoc @@ -0,0 +1,278 @@ +//!!NODE_ROOT
+[.topic] +[[zone-shift,zone-shift.title]] += Learn about Amazon Application Recovery Controller's (ARC) Zonal Shift in Amazon EKS +:info_doctype: section +:info_titleabbrev: Learn about Zonal Shift +:aws: pass:q[[.shared]``AWS``] +:imagesdir: images/ + +//GDC: remove use of "failure" + +Kubernetes has native features that enable you to make your applications more resilient to events such as the degraded health or impairment of an Availability Zone (AZ). When running your workloads in an Amazon EKS cluster, you can further improve your application environment's fault tolerance and application recovery using link:r53recovery/latest/dg/arc-zonal-shift.html["Amazon Application Recovery Controller's (ARC) zonal shift",type="documentation"] or link:r53recovery/latest/dg/arc-zonal-autoshift.html["zonal autoshift",type="documentation"]. ARC zonal shift is designed to be a temporary measure that allows you to move traffic for a resource away from an impaired AZ until the zonal shift expires or you cancel it. You can extend the zonal shift if necessary. + +You can start a zonal shift for an EKS cluster, or you can allow {aws} to do it for you by enabling zonal autoshift. This shift updates the flow of east-to-west network traffic in your cluster to only consider network endpoints for Pods running on worker nodes in healthy AZs. Additionally, any ALB or NLB handling ingress traffic for applications in your EKS cluster will automatically route traffic to targets in the healthy AZs. For those customers seeking the highest availability goals, in the case that an AZ becomes impaired, it can be important to be able to steer all traffic away from the impaired AZ until it recovers. For this, you can also link:r53recovery/latest/dg/arc-zonal-shift.resource-types.html["_enable an ALB or NLB with ARC zonal shift_",type="documentation"]. + + +== Understanding East-West Network Traffic Flow Between Pods + +The following diagram illustrates two example workloads, Orders, and Products. The purpose of this example is to show how workloads and Pods in different AZs communicate. + +image::zs-traffic-flow-before-1.png[Illustration of network traffic] + +image::zs-traffic-flow-before-2.png[Illustration of network traffic] + +. For Orders to communicate with Products, it must first resolve the DNS name of the destination service. Orders will communicate with CoreDNS to fetch the virtual IP address (Cluster IP) for that Service. Once Orders resolves the Products service name, it sends traffic to that target IP. +. The kube-proxy runs on every node in the cluster and continuously watches the https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/[EndpointSlices] for Services. When a Service is created, an EndpointSlice is created and managed in the background by the EndpointSlice controller. Each EndpointSlice has a list or table of endpoints containing a subset of Pod addresses along with the nodes that they're running on. The kube-proxy sets up routing rules for each of these Pod endpoints using `iptables` on the nodes. The kube-proxy is also responsible for a basic form of load balancing by redirecting traffic destined to a service's Cluster IP to instead be sent to a Pod's IP address directly. The kube-proxy does this by rewriting the destination IP on the outgoing connection. +. The network packets are then sent to the Products Pod in AZ 2 via the ENIs on the respective nodes (as depicted in the diagram above). + + +=== Understanding ARC Zonal Shift in EKS + +In the case that there is an AZ impairment in your environment, you can initiate a zonal shift for your EKS cluster environment. Alternatively, you can allow {aws} to manage this for you with zonal autoshift. With zonal autoshift, {aws} will monitor the overall AZ health and respond to a potential AZ impairment by automatically shifting traffic away from the impaired AZ in your cluster environment. + +Once your EKS cluster zonal shift enabled with ARC, you can trigger a zonal shift or enable zonal autoshift using the ARC Console, the {aws} CLI, or the zonal shift and zonal autoshift APIs. +During an EKS zonal shift, the following will automatically take place: + +* All the nodes in the impacted AZ will be cordoned. This will prevent the Kubernetes Scheduler from scheduling new Pods onto the nodes in the unhealthy AZ. +* If you're using link:eks/latest/userguide/managed-node-groups.html["Managed Node Groups",type="documentation"], link:autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage["_Availability Zone rebalancing_",type="documentation"] will be suspended, and your Auto Scaling Group (ASG) will be updated to ensure that new EKS Data Plane nodes are only launched in the healthy AZs. +* The nodes in the unhealthy AZ will not be terminated and the Pods will not be evicted from these nodes. This is to ensure that when a zonal shift expires or gets cancelled, your traffic can be safely returned to the AZ which still has full capacity +* The EndpointSlice controller will find all the Pod endpoints in the impaired AZ and remove them from the relevant EndpointSlices. This will ensure that only Pod endpoints in healthy AZs are targeted to receive network traffic. When a zonal shift is cancelled or expires, the EndpointSlice controller will update the EndpointSlices to include the endpoints in the restored AZ. + +The diagrams below depicts a high level flow of how EKS zonal shift ensures that only healthy Pod endpoints are targeted in your cluster environment. + + +image::zs-traffic-flow-after-1.png[Illustration of network traffic] + +image::zs-traffic-flow-after-2.png[Illustration of network traffic] + + +== EKS Zonal Shift Requirements + +For zonal shift to work successfully in EKS, you need to setup your cluster environment to be resilient to an AZ impairment beforehand. Below is a list of the steps that you have to follow. + +* Provision your cluster's worker nodes across multiple AZs +* Provision enough compute capacity to withstand removal of a single AZ +* Pre-scale your Pods (including CoreDNS) in every AZ +* Spread multiple Pod replicas across all AZs to ensure that shifting away from a single AZ will leave you with sufficient capacity +* Co-locate interdependent or related Pods in the same AZ +* Test that your cluster environment would work as expected with on less AZ by manually starting a zonal shift. Alternatively, you can enable zonal autoshift and reply on the autoshift practice runs. This is not required for zonal shift to work in EKS but it's strongly recommended. + +=== Provision Your EKS Worker Nodes Across Multiple AZs + +{aws} Regions have multiple, separate locations with physical data centers known as Availability Zones (AZs). AZs are designed to be physically isolated from one another to avoid simultaneous impact that could affect an entire Region. When provisioning an EKS cluster, you should deploy your worker nodes across multiple AZs in a Region. This will make your cluster environment more resilient to the impairment of a single AZ, and allow you to maintain high availability (HA) of your applications running in the other AZs. When you start a zonal shift away from the impacted AZ, your EKS environment's in-cluster network will automatically update to only use healthy AZs, while maintaining a highly available posture for your cluster. + +Ensuring that you have such a multi-AZ setup for your EKS environment will enhance the overall reliability of your system. However, multi-AZ environments can play a significant role in how application data is transferred and processed, which will in turn have an impact on your environment's network charges. In particular, frequent egress cross-zone traffic (traffic distributed between AZs) can have a major impact on your network-related costs. You can apply different strategies to control the amount of cross-zone traffic between Pods in your EKS cluster and drive down the associated costs. Please refer to https://aws.github.io/aws-eks-best-practices/cost_optimization/cost_opt_networking/[_this best practice guide_] for more details on how to optimize network costs when running highly available EKS environments. + +The diagram below depicts a highly available EKS environment with 3 healthy AZs. + +image::zs-ha-before-failure.png[Illustration of network] + +The diagram below depicts how an EKS environment with 3 AZs is resilient to an AZ impairment and remains highly available because of the 2 other healthy AZs. + +image::zs-ha-after-failure.png[Illustration of network] + +=== Provision Enough Compute Capacity to Withstand Removal of a Single AZ + +To optimize resource utilization and costs for your compute infrastructure in the EKS Data Plane, it's a best practice to align compute capacity with your workload requirements. However, *if all your worker nodes are at full capacity*, then this makes you reliant on having new worker nodes added to the EKS Data Plane before new Pods can be scheduled. When running critical workloads, it is generally always a good practice to run with redundant capacity online to handle eventualities such as sudden increases in load, node health issues, etc. If you plan to use zonal shift, you are planning to remove an entire AZ of capacity so you need to adjust your redundant compute capacity so that it's sufficient to handle the load even with an AZ offline. + +When scaling your compute, the process of adding new nodes to the EKS Data Plane will take some time which can have implications on the real-time performance and availability of your applications, especially in the event of a zonal impairment. Your EKS environment should be resilient to absorb the load of losing an AZ to avoid a degraded experience for your end users or clients. This means minimizing or eliminating any lag between the time at which a new Pod is needed and when it's actually scheduled on a worker node. + +Additionally, in the event of a zonal impairment, you should mitigate the risk of a potential compute capacity constraint which would prevent newly required nodes from being added to your EKS Data Plane in the healthy AZs. + +To accomplish this, you should over-provision compute capacity in some of the worker nodes in each of the AZs so that the Kubernetes Scheduler has pre-existing capacity available for new Pod placements, especially when you have one less AZ in your environment. + + +=== Run & Spread Multiple Pod Replicas Across AZs + +Kubernetes allows you to pre-scale your workloads by running multiple instances (Pod replicas) of a single application. Running multiple Pod replicas for an application eliminates a single point of failure and increases its overall performance by reducing the resource strain on a single replica. However, to have both high availability and better fault tolerance for your applications, you should run and spread multiple replicas of an application across different failure domains (also referred to as topology domains) in this case AZs. With https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/[topology spread constraints], you can setup your applications to have pre-existing, static stability so that, in the case of an AZ impairment, you'll have enough replicas in the healthy AZs to immediately handle any additional spike or surge in traffic that they may experience. + +The diagram below depicts an EKS environment with east-to-west traffic flow when all AZs are healthy. + +image::zs-spread-constraints.png[Illustration of network] + + +The diagram below depicts an EKS environment with east-to-west traffic flow when a single AZ fails, and you initiate a zonal shift. + +image::zs-spread-constraints-2.png[Illustration of network] + +The code snippet below is an example of how to setup your workload with this Kubernetes feature. + +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: orders +spec: + replicas: 9 + selector: + matchLabels: + app:orders + template: + metadata: + labels: + app: orders + tier: backend + spec: + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: "topology.kubernetes.io/zone" + whenUnsatisfiable: ScheduleAnyway + labelSelector: + matchLabels: + app: orders +---- + + +Most important, you should run multiple replicas of your DNS server software (CoreDNS/kube-dns) and apply similar topology spread constraints if they are not already configured by default. This will help ensure that you have enough DNS Pods in healthy AZs to continue handling service discovery requests for other communicating Pods in the cluster if there's a single AZ impairment. The link:eks/latest/userguide/managing-coredns.html["CoreDNS EKS add-on",type="documentation"] has default settings for the CoreDNS Pods to be spread across your cluster's Availability Zones if there are nodes in multiple AZs available. You can also replace these default settings with your own custom configurations. + +When installing https://github.com/coredns/helm/tree/master[CoreDNS with Helm], you can update the `replicaCount` in the https://github.com/coredns/helm/blob/master/charts/coredns/values.yaml[values.yaml file] to ensure that you have a sufficient number of replicas in each AZ. In addition, to ensure that these replicas are spread across the different AZs in your cluster environment, you should update the `topologySpreadConstraints` property in the same values.yaml file. The code snippet below demonstrates how to configure CoreDNS for this. + +**CoreDNS Helm values.yaml** + +[source,yaml] +---- +replicaCount: 6 +topologySpreadConstraints: + - maxSkew: 1 + topologyKey: topology.kubernetes.io/zone + whenUnsatisfiable: ScheduleAnyway + labelSelector: + matchLabels: + k8s-app: kube-dns +---- + + +In the event of an AZ impairment, you can absorb the increased load on the CoreDNS Pods by using an autoscaling system for CoreDNS. The number of DNS instances you require will depend on the number of workloads running in your cluster. CoreDNS is CPU bound which allows it to scale based on CPU using the https://aws.github.io/aws-eks-best-practices/reliability/docs/application/#horizontal-pod-autoscaler-hpa[Horizontal Pod Autoscaler (HPA)]. Below is an example that you can modify to suit your needs. + + +[source,yaml] +---- +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + name: coredns + namespace: default +spec: + maxReplicas: 20 + minReplicas: 2 + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: coredns + targetCPUUtilizationPercentage: 50 +---- + +Alternatively, EKS can manage the autoscaling of the CoreDNS Deployment in the EKS add-on version of CoreDNS. This CoreDNS autoscaler continuously monitors the cluster state, including the number of nodes and CPU cores. Based on that information, the controller will dynamically adapt the number of replicas of the CoreDNS deployment in an EKS cluster. + +To enable the link:eks/latest/userguide/coredns-autoscaling.html["autoscaling configuration in the CoreDNS EKS add-on",type="documentation"], you should add the following optional configuration settings: + + +[source,json] +---- +{ + "autoScaling": { + "enabled": true + } +} +---- + + +You can also use https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/[NodeLocal DNS] or the https://github.com/kubernetes-sigs/cluster-proportional-autoscaler[cluster proportional autoscaler] to scale CoreDNS. You can read further about https://aws.github.io/aws-eks-best-practices/scalability/docs/cluster-services/#scale-coredns-horizontally[scaling CoreDNS horizontally here]. + +=== Colocate Interdependent Pods in the Same AZ + +In most cases, you may be running distinct workloads that have to communicate with each other for successful execution of an end-to-end process. If the distinct applications are spread across different AZs but are not colocated in the same AZ, then a single AZ impairment may impact the underlying end-to-end process. For example, if *Application A* has multiple replicas in AZ 1 and AZ 2, but *Application B* has all its replicas in AZ 3, then the loss of AZ 3 will affect any end-to-end processes between these two workloads (*Application A and B*). Combining topology spread constraints with pod affinity can enhance your application's resiliency by spreading Pods across all AZs, as well as configuring a relationship between certain Pods to ensure that they're colocated together. + +With https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/[pod affinity rules], you can define relationships between workloads to influence the behavior of the Kubernetes Scheduler so that it colocates Pods on the same worker node or in the same AZ. You can also configure how strict these scheduling constraints should be. + + +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: products + namespace: ecommerce + labels: + app.kubernetes.io/version: "0.1.6" + + spec: + serviceAccountName: graphql-service-account + affinity: + podAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app + operator: In + values: + - orders + topologyKey: "kubernetes.io/hostname" +---- + + +The diagram below depicts pods that have been co-located on the same node using +pod affinity rules. + +image::zs-pod-affinity-rule.png[Illustration of network] + + +=== Test That Your Cluster Environment Can Handle The Loss of an AZ + +After completing the above requirements, the next important step is to test that you have sufficient compute and workload capacity to handle the loss of an AZ. You can do this by manually triggering a zonal shift in EKS. Alternatively, you can enable zonal autoshift and configure practice runs to test that your applications function as expected with one less AZ in your cluster environment. + + +## Frequently Asked Questions + +**Why should I use this feature?** + +By using ARC zonal shift or zonal autoshift in your EKS cluster, you can better maintain Kubernetes application availability by automating the quick recovery process of shifting in-cluster network traffic away from an impaired AZ. With ARC, you can avoid long and complicated steps which often lead to an extended recovery period during impaired AZ events. + +**How does this feature work with other {aws} services?** + +EKS integrates with ARC which provides the primary interface for you to accomplish recovery operations in {aws}. To ensure that in-cluster traffic is appropriately routed away from an impaired AZ, modifications are made to the list of network endpoints for Pods running in the Kubernetes data plane. If you're using {aws} Load Balancers for routing external traffic into the cluster, you can already register your load balancers with ARC and trigger a zonal shift on them to prevent traffic flowing into the degraded zone. This feature also interacts with Amazon EC2 Auto Scaling Groups (ASG) that are created by EKS Managed Node Groups (MNG). To prevent an impaired AZ from being used for new Kubernetes Pods or node launches, EKS removes the impaired AZ from the ASG. + +**How is this feature different from default Kubernetes protections?** + +This feature works in tandem with several Kubernetes native built-in protections that help customers stay resilient. You can configure Pod readiness and liveness probes that decide when a Pod should take traffic. When these probes fail, Kubernetes removes these Pods as targets for a Service and traffic is no longer sent to the Pod. While this is useful, it's non-trivial for customers to configure these health checks so that they are guaranteed to fail when a zone is degraded. The ARC zonal shift feature provides you with an additional safety net that helps them isolate a degraded AZ entirely when Kubernetes' native protections have not sufficed. It also provides you with an easy way to test the operational readiness and resilience of your architecture. + +**Can {aws} trigger a zonal shift on my behalf?** + +Yes, if you want a fully automated way of using ARC zonal shift, you can enable ARC zonal autoshift. With zonal autoshift, you can rely on {aws} to monitor the health of the AZs for your EKS cluster, and to automatically trigger a shift when an AZ impairment is detected. + +**What happens if I use this feature and my worker nodes and workloads are not pre-scaled?** + +If you are not pre-scaled and rely on provisioning additional nodes or Pods during a zonal shift, then you risk experiencing a delayed recovery. The process of adding new nodes to the Kubernetes data plane will take some time which can have implications on the real-time performance and availability of your applications, especially in the event of a zonal impairment. Additionally, in the event of a zonal impairment, you may encounter a potential compute capacity constraint which would prevent newly required nodes from being added to the healthy AZs. + +If your workloads are not pre-scaled and spread across all AZs in your cluster, a zonal impairment may impact the availability of an application that is only running on worker nodes in an impacted AZ. To mitigate the risk of a complete availability outage for your application, EKS has a fail safe for traffic to be sent to Pod endpoints in an impaired zone if that workload has all of its endpoints in the unhealthy AZ. However, it's strongly recommended that you rather pre-scale and spread your applications across all AZs to maintain availability in the event of a zonal issue. + +**What happens if I'm running a stateful application?** + +If you are running a stateful application, you will need to assess its fault tolerance depending on the use case and the architecture. If you have an active/standby architecture or pattern, there may be instances where the active is in an impaired AZ. At the application level, if the standby is not activated, you may run into issues with your application. You may also run into issues when new Kubernetes Pods are launched in healthy AZs since they will not be able to attach to the persistent volumes bounded to the impaired AZ. + +**Does this feature work with Karpenter?** + +Karpenter support is currently not available with ARC zonal shift and zonal autoshift in EKS. If an AZ is impaired, you can adjust the relevant Karpenter NodePool configuration by removing the unhealthy AZ so that new worker nodes are only launched in the healthy AZs. + +**Does this feature work with EKS Fargate?** + +This feature does not work with EKS Fargate. By default, when EKS Fargate recognizes a zonal health event, Pods will prefer to run in the other AZs. + +**Will the EKS managed Kubernetes control plane be impacted?** + +No, by default Amazon EKS runs and scales the Kubernetes control plane across multiple AZs to ensure high availability. ARC zonal shift and zonal autoshift will only act on the Kubernetes data plane. + +**Are there any costs associated with this new feature?** + +You can use ARC zonal shift and zonal autoshift in your EKS cluster at no additional charge. However, you will continue to pay for provisioned instances and it is strongly recommended that you pre-scale your Kubernetes data plane before using this feature. You should consider the right balance between cost and application availability. + +== Additional Resources + +* link:r53recovery/latest/dg/arc-zonal-shift.how-it-works.html["How a zonal shift works",type="documentation"] +* link:r53recovery/latest/dg/route53-arc-best-practices.zonal-shifts.html#zonalshift.route53-arc-best-practices.zonal-shifts["Best practices for zonal shifts in ARC",type="documentation"] +* link:r53recovery/latest/dg/arc-zonal-shift.resource-types.html["Resources and scenarios supported for zonal shift and zonal autoshift",type="documentation"] +* link:blogs/containers/operating-resilient-workloads-on-amazon-eks/["Operating resilient workloads on Amazon EKS",type="marketing"] +* link:blogs/containers/eliminate-kubernetes-node-scaling-lag-with-pod-priority-and-over-provisioning/["Eliminate Kubernetes node scaling lag with pod priority and over-provisioning",type="marketing"] +* link:eks/latest/userguide/coredns-autoscaling.html["Scale CoreDNS Pods for high DNS traffic",type="documentation"] diff --git a/latest/ug/connector/connecting-cluster.adoc b/latest/ug/connector/connecting-cluster.adoc new file mode 100644 index 00000000..5f3cb087 --- /dev/null +++ b/latest/ug/connector/connecting-cluster.adoc @@ -0,0 +1,216 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[connecting-cluster,connecting-cluster.title]] += Connect an external [.noloc]`Kubernetes` cluster to the Amazon EKS Management Console +:info_doctype: section +:info_title: Connect an external Kubernetes cluster to the Amazon EKS Management Console +:info_titleabbrev: Connect a cluster +:info_abstract: Learn to connect an external Kubernetes cluster to an Amazon EKS Management Console and install the eks-connector agent via Helm or YAML manifests to enable visibility and management of the external cluster. + +[abstract] +-- +Learn to connect an external [.noloc]`Kubernetes` cluster to an Amazon EKS Management Console and install the eks-connector agent via Helm or YAML manifests to enable visibility and management of the external cluster. +-- + +You can connect an external [.noloc]`Kubernetes` cluster to Amazon EKS by using multiple methods in the following process. This process involves two steps: Registering the cluster with Amazon EKS and installing the `eks-connector` agent in the cluster. + +[IMPORTANT] +==== + +You must complete the second step within 3 days of completing the first step, before the registration expires. + +==== + +[[connecting-cluster-considerations,connecting-cluster-considerations.title]] +== Considerations + +You can use YAML manifests when installing the agent. Alternatively, you can use Helm if you register the cluster with the {aws-management-console} or {aws} Command Line Interface. However, you cannot use Helm to install the agent if you register the cluster with `eksctl`. + +[[connector-prereqs,connector-prereqs.title]] +== Prerequisites + +* Ensure the Amazon EKS Connector agent role was created. Follow the steps in <>. +* You must have the following permissions to register a cluster: ++ +** `eks:RegisterCluster` +** `ssm:CreateActivation` +** `ssm:DeleteActivation` +** `iam:PassRole` + + +[[connector-connecting,connector-connecting.title]] +== Step 1: Registering the cluster +To register a cluster to Amazon EKS connector, you can use one of these tools: + +* <> +* <> +* <> + +=== {aws} CLI [[awscli_register_cluster_connect]] + +. {aws} CLI must be installed. To install or upgrade it, see link:cli/latest/userguide/cli-chap-install.html[Installing the {aws} CLI,type="documentation"]. +. For the Connector configuration, specify your Amazon EKS Connector agent IAM role. For more information, see <>. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks register-cluster \ + --name my-first-registered-cluster \ + --connector-config roleArn={arn-aws}iam::111122223333:role/AmazonEKSConnectorAgentRole,provider="OTHER" \ + --region aws-region +---- ++ +An example output is as follows. ++ +[source,json,subs="verbatim,attributes"] +---- +{ + "cluster": { + "name": "my-first-registered-cluster", + "arn": "{arn-aws}eks:region:111122223333:cluster/my-first-registered-cluster", + "createdAt": 1627669203.531, + "ConnectorConfig": { + "activationId": "xxxxxxxxACTIVATION_IDxxxxxxxx", + "activationCode": "xxxxxxxxACTIVATION_CODExxxxxxxx", + "activationExpiry": 1627672543.0, + "provider": "OTHER", + "roleArn": "{arn-aws}iam::111122223333:role/AmazonEKSConnectorAgentRole" + }, + "status": "CREATING" + } +} +---- ++ +You use the `aws-region`, `activationId`, and `activationCode` values in the next step. + +=== {aws-management-console} [[console_register_cluster_connect]] +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. Choose *Add cluster* and select *Register* to bring up the configuration page. +. On the *Configure cluster* section, fill in the following fields: ++ +*** *Name* – A unique name for your cluster. +*** *Provider* – Choose to display the dropdown list of [.noloc]`Kubernetes` cluster providers. If you don't know the specific provider, select *Other*. +*** *EKS Connector role* – Select the role to use for connecting the cluster. +. Select *Register cluster*. +. The Cluster overview page displays. If you want to use the Helm chart, copy the `helm install` command and continue to the next step. If you want to use the YAML manifest, choose *Download YAML file* to download the manifest file to your local drive. ++ +[IMPORTANT] +==== +This is your only opportunity to copy the `helm install` command or download this file. Don't navigate away from this page, as the link will not be accessible and you must deregister the cluster and start the steps from the beginning. +==== ++ +The command or manifest file can be used only once for the registered cluster. If you delete resources from the [.noloc]`Kubernetes` cluster, you must re-register the cluster and obtain a new manifest file. + +Continue to the next step to apply the manifest file to your [.noloc]`Kubernetes` cluster. + +=== `eksctl` [[eksctl_register_cluster_connect]] +. `eksctl` version `0.68` or later must be installed. To install or upgrade it, see <>. ++ +. Register the cluster by providing a name, provider, and region. ++ +[source,bash,subs="verbatim,attributes"] +---- +eksctl register cluster --name my-cluster --provider my-provider --region region-code +---- ++ +Example output: ++ +[source,bash,subs="verbatim,attributes"] +---- + +2021-08-19 13:47:26 [ℹ] creating IAM role "eksctl-20210819194112186040" +2021-08-19 13:47:26 [ℹ] registered cluster "" successfully +2021-08-19 13:47:26 [ℹ] wrote file eks-connector.yaml to +2021-08-19 13:47:26 [ℹ] wrote file eks-connector-clusterrole.yaml to +2021-08-19 13:47:26 [ℹ] wrote file eks-connector-console-dashboard-full-access-group.yaml to +2021-08-19 13:47:26 [!] note: "eks-connector-clusterrole.yaml" and "eks-connector-console-dashboard-full-access-group.yaml" give full EKS Console access to IAM identity "", edit if required; read https://eksctl.io/usage/eks-connector for more info +2021-08-19 13:47:26 [ℹ] run `kubectl apply -f eks-connector.yaml,eks-connector-clusterrole.yaml,eks-connector-console-dashboard-full-access-group.yaml` before expiry> to connect the cluster +---- ++ +This creates files on your local computer. These files must be applied to the external cluster within 3 days, or the registration expires. +. In a terminal that can access the cluster, apply the `eks-connector-binding.yaml` file: ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl apply -f eks-connector-binding.yaml +---- + + +[[eks-connector-apply,eks-connector-apply.title]] +== Step 2: Installing the `eks-connector` agent +To install the `eks-connector` agent, use one of the following tools: + + +* <> +* <> + +=== helm [[helm_agent_cluster_connect]] + +[NOTE] +==== +If you registered the cluster with `eksctl`, use the YAML manifest method instead of the Helm chart method. +==== + +. If you used the {aws} CLI in the previous step, replace the `ACTIVATION_CODE` and `ACTIVATION_ID` in the following command with the `activationId`, and `activationCode` values respectively. Replace the `aws-region` with the {aws} Region that you used in the previous step. Then run the command to install the `eks-connector` agent on the registering cluster: ++ +[source,shell,subs="verbatim,attributes"] +---- +$ helm install eks-connector \ + --namespace eks-connector \ + oci://public.ecr.aws/eks-connector/eks-connector-chart \ + --set eks.activationCode=ACTIVATION_CODE \ + --set eks.activationId=ACTIVATION_ID \ + --set eks.agentRegion=aws-region +---- ++ +If you used the {aws-management-console} in the previous step, use the command that you copied from the previous step that has these values filled in. +. Check the healthiness of the installed `eks-connector` deployment and wait for the status of the registered cluster in Amazon EKS to be `ACTIVE`. + +=== yaml [[yaml_agent_cluster_connect]] +Complete the connection by applying the Amazon EKS Connector manifest file to your [.noloc]`Kubernetes` cluster. To do this, you must use the methods described previously. If the manifest isn't applied within three days, the Amazon EKS Connector registration expires. If the cluster connection expires, the cluster must be deregistered before connecting the cluster again. + +. Download the Amazon EKS Connector YAML file. ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml +---- +. Edit the Amazon EKS Connector YAML file to replace all references of `%AWS_REGION%`, `%EKS_ACTIVATION_ID%`, `%EKS_ACTIVATION_CODE%` with the `aws-region`, `activationId`, and `activationCode` from the output of the previous step. ++ +The following example command can replace these values. ++ +[source,bash,subs="verbatim,attributes"] +---- +sed -i "s~%AWS_REGION%~$aws-region~g; s~%EKS_ACTIVATION_ID%~$EKS_ACTIVATION_ID~g; s~%EKS_ACTIVATION_CODE%~$(echo -n $EKS_ACTIVATION_CODE | base64)~g" eks-connector.yaml +---- ++ +[IMPORTANT] +==== +Ensure that your activation code is in the base64 format. +==== +. In a terminal that can access the cluster, you can apply the updated manifest file by running the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl apply -f eks-connector.yaml +---- +. After the Amazon EKS Connector manifest and role binding YAML files are applied to your [.noloc]`Kubernetes` cluster, confirm that the cluster is now connected. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster \ + --name "my-first-registered-cluster" \ + --region AWS_REGION +---- ++ +The output should include `status=ACTIVE`. +. (Optional) Add tags to your cluster. For more information, see <>. + + +[[eks-connector-next,eks-connector-next.title]] +== Next steps + +If you have any issues with these steps, see <>. + +To grant additional link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principals,type="documentation"] access to the Amazon EKS console to view [.noloc]`Kubernetes` resources in a connected cluster, see <>. diff --git a/latest/ug/connector/connector-grant-access.adoc b/latest/ug/connector/connector-grant-access.adoc new file mode 100644 index 00000000..aaa58c36 --- /dev/null +++ b/latest/ug/connector/connector-grant-access.adoc @@ -0,0 +1,75 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[connector-grant-access,connector-grant-access.title]] += Grant access to view [.noloc]`Kubernetes` cluster resources on an Amazon EKS console +:info_doctype: section +:info_title: Grant access to view Kubernetes cluster resources on an \ + Amazon EKS console +:info_titleabbrev: Grant access to Kubernetes clusters from {aws} console +:info_abstract: Learn to grant IAM principals access to view Kubernetes cluster resources on an Amazon EKS Management Console. + +[abstract] +-- +Learn to grant IAM principals access to view Kubernetes cluster resources on an Amazon EKS Management Console. +-- + +Grant link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principals,type="documentation"] access to the Amazon EKS console to view information about [.noloc]`Kubernetes` resources running on your connected cluster. + +[[connector-grant-access-prereqs,connector-grant-access-prereqs.title]] +== Prerequisites + +The link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] that you use to access the {aws-management-console} must meet the following requirements: + +* It must have the `eks:AccessKubernetesApi` IAM permission. +* The Amazon EKS Connector service account can impersonate the IAM principal in the cluster. This allows the Amazon EKS Connector to map the IAM principal to a [.noloc]`Kubernetes` user. + +*To create and apply the Amazon EKS Connector cluster role* + +. Download the `eks-connector` cluster role template. ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/eks-connector/manifests/eks-connector-console-roles/eks-connector-clusterrole.yaml +---- +. Edit the cluster role template YAML file. Replace references of `%IAM_ARN%` with the Amazon Resource Name (ARN) of your IAM principal. +. Apply the Amazon EKS Connector cluster role YAML to your [.noloc]`Kubernetes` cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl apply -f eks-connector-clusterrole.yaml +---- + +For an IAM principal to view [.noloc]`Kubernetes` resources in Amazon EKS console, the principal must be associated with a [.noloc]`Kubernetes` `role` or `clusterrole` with necessary permissions to read the resources. For more information, see https://kubernetes.io/docs/reference/access-authn-authz/rbac/[Using RBAC Authorization] in the [.noloc]`Kubernetes` documentation. + +*To configure an IAM principal to access the connected cluster* + +. You can download either of these example manifest files to create a `clusterrole` and `clusterrolebinding` or a `role` and `rolebinding`, respectively: + ++ +*View [.noloc]`Kubernetes` resources in all namespaces*::: +** The `eks-connector-console-dashboard-full-access-clusterrole` cluster role gives access to all namespaces and resources that can be visualized in the console. You can change the name of the `role`, `clusterrole` and their corresponding binding before applying it to your cluster. Use the following command to download a sample file. ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/eks-connector/manifests/eks-connector-console-roles/eks-connector-console-dashboard-full-access-group.yaml +---- + + +*View [.noloc]`Kubernetes` resources in a specific namespace*::: +** The namespace in this file is `default`, so if you want to specify a different namespace, edit the file before applying it to your cluster. Use the following command to download a sample file. ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/eks-connector/manifests/eks-connector-console-roles/eks-connector-console-dashboard-restricted-access-group.yaml +---- +. Edit the full access or restricted access YAML file to replace references of `%IAM_ARN%` with the Amazon Resource Name (ARN) of your IAM principal. +. Apply the full access or restricted access YAML files to your [.noloc]`Kubernetes` cluster. Replace the YAML file value with your own. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl apply -f eks-connector-console-dashboard-full-access-group.yaml +---- + +To view [.noloc]`Kubernetes` resources in your connected cluster, see <>. Data for some resource types on the *Resources* tab isn't available for connected clusters. diff --git a/latest/ug/connector/deregister-connected-cluster.adoc b/latest/ug/connector/deregister-connected-cluster.adoc new file mode 100644 index 00000000..090a4358 --- /dev/null +++ b/latest/ug/connector/deregister-connected-cluster.adoc @@ -0,0 +1,93 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[deregister-connected-cluster,deregister-connected-cluster.title]] += Deregister a Kubernetes cluster from the Amazon EKS console +:info_doctype: section +:info_title: Deregister a Kubernetes cluster from the Amazon EKS console +:info_titleabbrev: Deregister a cluster +:info_abstract: Learn to deregister a Kubernetes cluster from Amazon EKS and uninstall the eks-connector agent to stop managing the cluster from the Amazon EKS Management Console. + +[abstract] +-- +Learn to deregister a [.noloc]`Kubernetes` cluster from Amazon EKS and uninstall the eks-connector agent to stop managing the cluster from the Amazon EKS Management Console. +-- + +If you are finished using a connected cluster, you can deregister it. After it's deregistered, the cluster is no longer visible in the Amazon EKS console. + +You must have the following permissions to call the deregisterCluster API: + + + +* `eks:DeregisterCluster` +* `ssm:DeleteActivation` +* `ssm:DeregisterManagedInstance` + +This process involves two steps: Deregistering the cluster with Amazon EKS and uninstalling the eks-connector agent in the cluster. + +[[deregister-connected-cluster-eks,deregister-connected-cluster-eks.title]] +== Deregister the [.noloc]`Kubernetes` cluster +To deregister a cluster from Amazon EKS connector, you can use one of these tools: + +* <> +* <> +* <> + +=== {aws} CLI [[awscli_deregister_cluster_connect]] + +. {aws} CLI must be installed. To install or upgrade it, see link:cli/latest/userguide/cli-chap-install.html[Installing the {aws} CLI,type="documentation"]. +. Ensure the Amazon EKS Connector agent role was created. +. Deregister the connected cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks deregister-cluster \ + --name my-cluster \ + --region region-code +---- + +=== {aws-management-console} [[console_deregister_cluster_connect]] + +. Open the link:eks/home#/clusters[Amazon EKS console,type="console"]. +. Choose *Clusters*. +. On the *Clusters* page, select the connected cluster and select *Deregister*. +. Confirm that you want to deregister the cluster. + +=== `eksctl` [[eksctl_deregister_cluster_connect]] + +. Install `eksctl` version `0.68` or later. To install or upgrade it, see <>. +. Ensure the Amazon EKS Connector agent role was created. +. Deregister the connected cluster: ++ +[source,bash,subs="verbatim,attributes"] +---- +eksctl deregister cluster --name my-cluster +---- + + +[[deregister-connected-cluster-k8s,deregister-connected-cluster-k8s.title]] +== Clean up the resources in your [.noloc]`Kubernetes` cluster +To uninstall the `eks-connector` agent, use one of the following tools: + +* <> +* <> + +=== helm [[helm_agent_cluster_deregister]] + +Run the following command to uninstall the agent. + +[source,shell,subs="verbatim,attributes"] +---- +helm -n eks-connector uninstall eks-connector +---- + +=== yaml [[yaml_agent_cluster_deregister]] + +. Delete the Amazon EKS Connector YAML file from your [.noloc]`Kubernetes` cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl delete -f eks-connector.yaml +---- +. If you created `clusterrole` or `clusterrolebindings` for additional link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principals,type="documentation"] to access the cluster, delete them from your [.noloc]`Kubernetes` cluster. diff --git a/latest/ug/connector/eks-connector.adoc b/latest/ug/connector/eks-connector.adoc new file mode 100644 index 00000000..c0d61be8 --- /dev/null +++ b/latest/ug/connector/eks-connector.adoc @@ -0,0 +1,87 @@ +//!!NODE_ROOT +include::../attributes.txt[] +[[eks-connector,eks-connector.title]] += Connect a [.noloc]`Kubernetes` cluster to an Amazon EKS Management Console with Amazon EKS Connector +:doctype: book +:sectnums: +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_doctype: chapter +:info_title: Connect a Kubernetes cluster to an Amazon EKS Management Console with Amazon EKS Connector +:info_titleabbrev: Amazon EKS Connector +:info_abstract: Discover how to connect conformant Kubernetes clusters to {aws} and visualize them in the Amazon EKS console using the Amazon EKS Connector agent and required IAM roles. + +[abstract] +-- +Discover how to connect conformant [.noloc]`Kubernetes` clusters to {aws} and visualize them in the Amazon EKS console using the Amazon EKS Connector agent and required IAM roles. +-- + +You can use Amazon EKS Connector to register and connect any conformant [.noloc]`Kubernetes` cluster to {aws} and visualize it in the Amazon EKS console. After a cluster is connected, you can see the status, configuration, and workloads for that cluster in the Amazon EKS console. You can use this feature to view connected clusters in Amazon EKS console, but you can't manage them. The Amazon EKS Connector requires an agent that is an https://github.com/aws/amazon-eks-connector[open source project on Github]. For additional technical content, including frequently asked questions and troubleshooting, see <>. + + +The Amazon EKS Connector can connect the following types of [.noloc]`Kubernetes` clusters to Amazon EKS. + + + +* On-premises [.noloc]`Kubernetes` clusters +* Self-managed clusters that are running on Amazon EC2 +* Managed clusters from other cloud providers + + +[[connect-cluster-reqts,connect-cluster-reqts.title]] +== Amazon EKS Connector considerations + +Before you use Amazon EKS Connector, understand the following: + + + +* You must have administrative privileges to the [.noloc]`Kubernetes` cluster to connect the cluster to Amazon EKS. +* The [.noloc]`Kubernetes` cluster must have [.noloc]`Linux` 64-bit (x86) worker nodes present before connecting. ARM worker nodes aren't supported. +* You must have worker nodes in your [.noloc]`Kubernetes` cluster that have outbound access to the `ssm.` and `ssmmessages.` Systems Manager endpoints. For more information, see link:general/latest/gr/ssm.html[Systems Manager endpoints,type="documentation"] in the _{aws} General Reference_. +* By default, you can connect up to 10 clusters in a Region. You can request an increase through the link:servicequotas/latest/userguide/request-quota-increase.html[service quota console,type="documentation"]. See link:servicequotas/latest/userguide/request-quota-increase.html[Requesting a quota increase,type="documentation"] for more information. +* Only the Amazon EKS `RegisterCluster`, `ListClusters`, `DescribeCluster`, and `DeregisterCluster` APIs are supported for external [.noloc]`Kubernetes` clusters. +* You must have the following permissions to register a cluster: ++ +** eks:RegisterCluster +** ssm:CreateActivation +** ssm:DeleteActivation +** iam:PassRole +* You must have the following permissions to deregister a cluster: ++ +** eks:DeregisterCluster +** ssm:DeleteActivation +** ssm:DeregisterManagedInstance + + +[[connector-iam-permissions,connector-iam-permissions.title]] +== Required IAM roles for Amazon EKS Connector + +Using the Amazon EKS Connector requires the following two IAM roles: + + + +* The <> service-linked role is created when you register a cluster for the first time. +* You must create the Amazon EKS Connector agent IAM role. See <> for details. + +To enable cluster and workload view permission for link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principals,type="documentation"], apply the `eks-connector` and Amazon EKS Connector cluster roles to your cluster. Follow the steps in <>. + +include::connecting-cluster.adoc[leveloffset=+1] + + +include::connector-grant-access.adoc[leveloffset=+1] + + +include::deregister-connected-cluster.adoc[leveloffset=+1] + + +include::troubleshooting-connector.adoc[leveloffset=+1] + + +include::tsc-faq.adoc[leveloffset=+1] + + +include::security-connector.adoc[leveloffset=+1] diff --git a/latest/ug/connector/images b/latest/ug/connector/images new file mode 120000 index 00000000..5e675731 --- /dev/null +++ b/latest/ug/connector/images @@ -0,0 +1 @@ +../images \ No newline at end of file diff --git a/latest/ug/connector/security-connector.adoc b/latest/ug/connector/security-connector.adoc new file mode 100644 index 00000000..e7dfa1cf --- /dev/null +++ b/latest/ug/connector/security-connector.adoc @@ -0,0 +1,44 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[security-connector,security-connector.title]] += Understand security in Amazon EKS Connector +:info_doctype: section +:info_title: Understand security in Amazon EKS Connector +:info_titleabbrev: Security considerations +:info_abstract: Learn how the open-source EKS Connector affects security, and understand {aws} and \ + customer security responsibilities for connectivity, cluster management, and IAM \ + access control. + +[abstract] +-- +Learn how the open-source EKS Connector affects security, and understand {aws} and customer security responsibilities for connectivity, cluster management, and IAM access control. +-- + +The Amazon EKS Connector is an open source component that runs on your [.noloc]`Kubernetes` cluster. This cluster can be located outside of the {aws} environment. This creates additional considerations for security responsibilities. This configuration can be illustrated by the following diagram. Orange represents {aws} responsibilities, and blue represents customer responsibilities: + + + +image::images/connector-model.png[EKS Connector Responsibilities,scaledwidth=100%] + +This topic describes the differences in the responsibility model if the connected cluster is outside of {aws}. + +[[connect-aws-resp,connect-aws-resp.title]] +== {aws} responsibilities + +* Maintaining, building, and delivering Amazon EKS Connector, which is an https://github.com/aws/amazon-eks-connector[open source component] that runs on a customer's [.noloc]`Kubernetes` cluster and communicates with {aws}. +* Maintaining transport and application layer communication security between the connected [.noloc]`Kubernetes` cluster and {aws} services. + + +[[connect-cust-resp,connect-cust-resp.title]] +== Customer responsibilities + +* [.noloc]`Kubernetes` cluster specific security, specifically along the following lines: ++ +** [.noloc]`Kubernetes` secrets must be properly encrypted and protected. +** Lock down access to the `eks-connector` namespace. +* Configuring role-based access control (RBAC) permissions to manage link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] access from {aws}. For instructions, see <>. +* Installing and upgrading Amazon EKS Connector. +* Maintaining the hardware, software, and infrastructure that supports the connected [.noloc]`Kubernetes` cluster. +* Securing their {aws} accounts (for example, through safeguarding your link:IAM/latest/UserGuide/best-practices.html#lock-away-credentials[root user credentials,type="documentation"]). diff --git a/latest/ug/connector/troubleshooting-connector.adoc b/latest/ug/connector/troubleshooting-connector.adoc new file mode 100644 index 00000000..3440d66e --- /dev/null +++ b/latest/ug/connector/troubleshooting-connector.adoc @@ -0,0 +1,275 @@ +//!!NODE_ROOT
+[.topic] +[[troubleshooting-connector,troubleshooting-connector.title]] += Troubleshoot Amazon EKS Connector issues +:info_doctype: section +:info_title: Troubleshoot Amazon EKS Connector issues +:info_titleabbrev: Troubleshoot Amazon EKS Connector +:info_abstract: Troubleshoot and resolve common issues when using Amazon EKS Connector to connect your Kubernetes clusters to Amazon EKS. + +include::../attributes.txt[] + +[abstract] +-- +Troubleshoot and resolve common issues when using Amazon EKS Connector to connect your [.noloc]`Kubernetes` clusters to Amazon EKS. +-- + +This topic covers some of the common errors that you might encounter while using the Amazon EKS Connector, including instructions on how to resolve them and workarounds. + +[[tsc-steps,tsc-steps.title]] +== Basic troubleshooting + +This section describes steps to diagnose Amazon EKS Connector issues. + +[[tsc-check,tsc-check.title]] +=== Check Amazon EKS Connector status + +To check the Amazon EKS Connector status, type: + +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods -n eks-connector +---- + + +[[tsc-logs,tsc-logs.title]] +=== Inspect Amazon EKS Connector logs + +The Amazon EKS Connector [.noloc]`Pod` consists of three containers. To retrieve full logs for all of these containers so that you can inspect them, run the following commands: + + + +* `connector-init` ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl logs eks-connector-0 --container connector-init -n eks-connector +kubectl logs eks-connector-1 --container connector-init -n eks-connector +---- +* `connector-proxy` ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl logs eks-connector-0 --container connector-proxy -n eks-connector +kubectl logs eks-connector-1 --container connector-proxy -n eks-connector +---- +* `connector-agent` ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl exec eks-connector-0 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log +kubectl exec eks-connector-1 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log +---- + + +[[tsc-name,tsc-name.title]] +=== Get the effective cluster name + +Amazon EKS clusters are uniquely identified by `clusterName` within a single {aws} account and {aws} Region. If you have multiple connected clusters in Amazon EKS, you can confirm which Amazon EKS cluster that the current [.noloc]`Kubernetes` cluster is registered to. To do this, enter the following to find out the `clusterName` of the current cluster. + +// Not using subs="quotes" here with [.replaceable]`region-code` because the * characters get dropped. +[source,bash,subs="verbatim,attributes"] +---- +kubectl exec eks-connector-0 --container connector-agent -n eks-connector \ + -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" +kubectl exec eks-connector-1 --container connector-agent -n eks-connector \ + -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" +---- + + +[[tsc-misc,tsc-misc.title]] +=== Miscellaneous commands + +The following commands are useful to retrieve information that you need to troubleshoot issues. + +* Use the following command to gather images that's used by [.noloc]`Pods` in Amazon EKS Connector. +// Not using subs="quotes" here with [.replaceable]`region-code` because the * characters get dropped. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n' +---- +* Use the following command to determine the node names that Amazon EKS Connector is running on. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.nodeName}" | tr -s '[[:space:]]' '\n' +---- +* Run the following command to get your [.noloc]`Kubernetes` client and server versions. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl version +---- +* Run the following command to get information about your nodes. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get nodes -o wide --show-labels +---- + + +[[w662aac60c33b9]] +== Helm issue: 403 Forbidden + +If you received the following error when running helm install commands: + +[source,bash,subs="verbatim,attributes"] +---- +Error: INSTALLATION FAILED: unexpected status from HEAD request to https://public.ecr.aws/v2/eks-connector/eks-connector-chart/manifests/0.0.6: 403 Forbidden +---- + +You can run the following line to fix it: + +[source,bash,subs="verbatim,attributes"] +---- +docker logout public.ecr.aws +---- + + +[[symp-pending,symp-pending.title]] +== Console error: the cluster is stuck in the Pending state + +If the cluster gets stuck in the `Pending` state on the Amazon EKS console after you're registered it, it might be because the Amazon EKS Connector didn't successfully connect the cluster to {aws} yet. For a registered cluster, the `Pending` state means that the connection isn't successfully established. To resolve this issue, make sure that you have applied the manifest to the target [.noloc]`Kubernetes` cluster. If you applied it to the cluster, but the cluster is still in the `Pending` state, then the `eks-connector` statefulset might be unhealthy. To troubleshoot this issue, see <>in this topic. + +[[symp-imp,symp-imp.title]] +== Console error: User system:serviceaccount:eks-connector:eks-connector can't impersonate resource users in API group at cluster scope + +The Amazon EKS Connector uses [.noloc]`Kubernetes` https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation[user impersonation] to act on behalf of link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principals,type="documentation"] from the {aws-management-console}. Each principal that accesses the [.noloc]`Kubernetes` API from the {aws} `eks-connector` service account must be granted permission to impersonate the corresponding [.noloc]`Kubernetes` user with an IAM ARN as its [.noloc]`Kubernetes` user name. In the following examples, the IAM ARN is mapped to a [.noloc]`Kubernetes` user. + + +* IAM user [.replaceable]`john` from {aws} account [.replaceable]`111122223333` is mapped to a [.noloc]`Kubernetes` user. link:IAM/latest/UserGuide/id_users.html[IAM best practices,type="documentation"] recommend that you grant permissions to roles instead of users. ++ +[source,bash,subs="verbatim,attributes"] +---- +{arn-aws}iam::111122223333:user/john +---- +* IAM role [.replaceable]`admin` from {aws} account [.replaceable]`111122223333` is mapped to a [.noloc]`Kubernetes` user: ++ +[source,bash,subs="verbatim,attributes"] +---- +{arn-aws}iam::111122223333:role/admin +---- ++ +The result is an IAM role ARN, instead of the {aws} STS session ARN. + +For instructions on how to configure the `ClusterRole` and `ClusterRoleBinding` to grant the `eks-connector` service account privilege to impersonate the mapped user, see <>. Make sure that in the template, `%IAM_ARN%` is replaced with the IAM ARN of the {aws-management-console} IAM principal. + +[[symp-rbac,symp-rbac.title]] +== Console error: [...] is forbidden: User [...] cannot list resource [...] in API group at the cluster scope + +Consider the following problem. The Amazon EKS Connector has successfully impersonated the requesting {aws-management-console} IAM principal in the target [.noloc]`Kubernetes` cluster. However, the impersonated principal doesn't have RBAC permission for [.noloc]`Kubernetes` API operations. + +To resolve this issue, there are two methods to give permissions to additional users. If you previously installed eks-connector via helm chart, you can easily grant users access by running the following command. Replace the `userARN1` and `userARN2` with a list of the ARNs of the IAM roles to give access to view the [.noloc]`Kubernetes` resources: + +[source,shell,subs="verbatim,attributes"] +---- +helm upgrade eks-connector oci://public.ecr.aws/eks-connector/eks-connector-chart \ + --reuse-values \ + --set 'authentication.allowedUserARNs={userARN1,userARN2}' +---- + +Or, as the cluster administrator, grant the appropriate level of RBAC privileges to individual [.noloc]`Kubernetes` users. For more information and examples, see <>. + +[[symp-con,symp-con.title]] +== Console error: Amazon EKS can't communicate with your [.noloc]`Kubernetes` cluster API server. The cluster must be in an ACTIVE state for successful connection. Try again in few minutes. + +If the Amazon EKS service can't communicate with the Amazon EKS connector in the target cluster, it might be because of one of the following reasons: + +* The Amazon EKS Connector in the target cluster is unhealthy. +* Poor connectivity or an interrupted connection between the target cluster and the {aws} Region. + +To resolve this problem, check the <>. If you don't see an error for the Amazon EKS Connector, retry the connection after a few minutes. If you regularly experience high latency or intermittent connectivity for the target cluster, consider re-registering the cluster to an {aws} Region that's located closer to you. + +[[symp-loop,symp-loop.title]] +== Amazon EKS connector [.noloc]`Pods` are crash looping + +There are many reasons that can cause an Amazon EKS connector [.noloc]`Pod` to enter the `CrashLoopBackOff` status. This issue likely involves the `connector-init` container. Check the status of the Amazon EKS connector [.noloc]`Pod`. + +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods -n eks-connector +---- + +An example output is as follows. + +[source,bash,subs="verbatim,attributes"] +---- +NAME READY STATUS RESTARTS AGE +eks-connector-0 0/2 Init:CrashLoopBackOff 1 7s +---- + +If your output is similar to the previous output, see <> to troubleshoot the issue. + +[[symp-regis,symp-regis.title]] +== Failed to initiate eks-connector: InvalidActivation + +When you start the Amazon EKS Connector for the first time, it registers an `activationId` and `activationCode` with Amazon Web Services. The registration might fail, which can cause the `connector-init` container to crash with an error similar to the following error. + +[source,bash,subs="verbatim,attributes"] +---- +F1116 20:30:47.261469 1 init.go:43] failed to initiate eks-connector: InvalidActivation: +---- + +To troubleshoot this issue, consider the following causes and recommended fixes: + + + +* Registration might have failed because the `activationId` and `activationCode` aren't in your manifest file. If this is the case, make sure that they are the correct values that were returned from the `RegisterCluster` API operation, and that the `activationCode` is in the manifest file. The `activationCode` is added to [.noloc]`Kubernetes` secrets, so it must be `base64` encoded. For more information, see <>. +* Registration might have failed because your activation expired. This is because, for security reasons, you must activate the Amazon EKS Connector within three days after registering the cluster. To resolve this issue, make sure that the Amazon EKS Connector manifest is applied to the target [.noloc]`Kubernetes` cluster before the expiry date and time. To confirm your activation expiry date, call the `DescribeCluster` API operation. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks describe-cluster --name my-cluster +---- ++ +In the following example response, the expiry date and time is recorded as `2021-11-12T22:28:51.101000-08:00`. ++ +[source,json,subs="verbatim,attributes"] +---- + +{ + "cluster": { + "name": "my-cluster", + "arn": "{arn-aws}eks:region:111122223333:cluster/my-cluster", + "createdAt": "2021-11-09T22:28:51.449000-08:00", + "status": "FAILED", + "tags": { + }, + "connectorConfig": { + "activationId": "00000000-0000-0000-0000-000000000000", + "activationExpiry": "2021-11-12T22:28:51.101000-08:00", + "provider": "OTHER", + "roleArn": "{arn-aws}iam::111122223333:role/my-connector-role" + } + } +} +---- ++ +If the `activationExpiry` passed, deregister the cluster and register it again. Doing this generates a new activation. + + +[[symp-out,symp-out.title]] +== Cluster node is missing outbound connectivity + +To work properly, the Amazon EKS Connector requires outbound connectivity to several {aws} endpoints. You can't connect a private cluster without outbound connectivity to a target {aws} Region. To resolve this issue, you must add the necessary outbound connectivity. For information about connector requirements, see <>. + +[[symp-img,symp-img.title]] +== Amazon EKS connector [.noloc]`Pods` are in `ImagePullBackOff` state + +If you run the `get pods` command and [.noloc]`Pods` are in the `ImagePullBackOff` state, they can't work properly. If the Amazon EKS Connector [.noloc]`Pods` are in the `ImagePullBackOff` state, they can't work properly. Check the status of your Amazon EKS Connector [.noloc]`Pods`. + +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods -n eks-connector +---- + +An example output is as follows. + +[source,bash,subs="verbatim,attributes"] +---- +NAME READY STATUS RESTARTS AGE +eks-connector-0 0/2 Init:ImagePullBackOff 0 4s +---- + +The default Amazon EKS Connector manifest file references images from the https://gallery.ecr.aws/[Amazon ECR Public Gallery]. It's possible that the target [.noloc]`Kubernetes` cluster can't pull images from the Amazon ECR Public Gallery. Either resolve the Amazon ECR Public Gallery image pull issue, or consider mirroring the images in the private container registry of your choice. diff --git a/latest/ug/connector/tsc-faq.adoc b/latest/ug/connector/tsc-faq.adoc new file mode 100644 index 00000000..82c65f30 --- /dev/null +++ b/latest/ug/connector/tsc-faq.adoc @@ -0,0 +1,27 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[tsc-faq,tsc-faq.title]] += {aws} Connector frequently asked questions +:info_doctype: section +:info_title: {aws} Connector frequently asked questions +:info_titleabbrev: Frequently asked questions +:info_abstract: Learn to connect and manage Kubernetes clusters outside {aws} with Amazon EKS Connector, enabling unified cluster visibility and management across environments using a secure, outbound-only connection. + +[abstract] +-- +Learn to connect and manage [.noloc]`Kubernetes` clusters outside {aws} with Amazon EKS Connector, enabling unified cluster visibility and management across environments using a secure, outbound-only connection. +-- + +.Q: How does the underlying technology behind the Amazon EKS Connector work? +A: The Amazon EKS Connector is based on the {aws} Systems Manager (Systems Manager) agent. The Amazon EKS Connector runs as a `StatefulSet` on your [.noloc]`Kubernetes` cluster. It establishes a connection and proxies the communication between the API server of your cluster and Amazon Web Services. It does this to display cluster data in the Amazon EKS console until you disconnect the cluster from {aws}. The Systems Manager agent is an open source project. For more information about this project, see the https://github.com/aws/amazon-ssm-agent[GitHub project page]. + +.Q: I have an on-premises [.noloc]`Kubernetes` cluster that I want to connect. Do I need to open firewall ports to connect it? +A: No, you don't need to open any firewall ports. The [.noloc]`Kubernetes` cluster only requires outbound connection to {aws} Regions. {aws} services never access resources in your on-premises network. The Amazon EKS Connector runs on your cluster and initiates the connection to {aws}. When the cluster registration completes, {aws} only issues commands to the Amazon EKS Connector after you start an action from the Amazon EKS console that requires information from the [.noloc]`Kubernetes` API server on your cluster. + +.Q: What data is sent from my cluster to {aws} by the Amazon EKS Connector? +A: The Amazon EKS Connector sends technical information that's necessary for your cluster to be registered on {aws}. It also sends cluster and workload metadata for the Amazon EKS console features that customers request. The Amazon EKS Connector only gathers or sends this data if you start an action from the Amazon EKS console or the Amazon EKS API that necessitates the data to be sent to {aws}. Other than the [.noloc]`Kubernetes` version number, {aws} doesn't store any data by default. It stores data only if you authorize it to. + +.Q: Can I connect a cluster outside of an {aws} Region? +A: Yes, you can connect a cluster from any location to Amazon EKS. Moreover, your Amazon EKS service can be located in any {aws} public commercial {aws} Region. This works with a valid network connection from your cluster to the target {aws} Region. We recommend that you pick an {aws} Region that is closest to your cluster location for UI performance optimization. For example, if you have a cluster running in Tokyo, connect your cluster to the {aws} Region in Tokyo (that is, the `ap-northeast-1` {aws} Region) for low latency. You can connect a cluster from any location to Amazon EKS in any of the public commercial {aws} Regions, except the China or GovCloud {aws} Regions. diff --git a/latest/ug/contribute/contribute.adoc b/latest/ug/contribute/contribute.adoc new file mode 100644 index 00000000..fa868a90 --- /dev/null +++ b/latest/ug/contribute/contribute.adoc @@ -0,0 +1,20 @@ +[[contribute,contribute.title]] +# Contribute to the EKS User Guide +:info_titleabbrev: Contribute + +include::../attributes.txt[] + + +{aws} is building an improved contribution experience for the EKS User Guide. + +The previous GitHub repository at `awsdocs/amazon-eks-user-guide` is temporarily unavailable while we prepare the new contribution system. + +The updated experience will use AsciiDoc, a powerful authoring language similar to markdown. AsciiDoc combines simple syntax with enterprise documentation features like advanced formatting, cross-referencing, and security controls. + +When the EKS User Guide returns to GitHub in mid-November, you'll be able to edit the documentation source files directly. Our streamlined process includes: + +* Faster pull request processing +* Reduced manual steps +* Automated content quality checks + +We look forward to your contributions. diff --git a/latest/ug/diagrams/README.adoc b/latest/ug/diagrams/README.adoc new file mode 100644 index 00000000..6cb2f9a6 --- /dev/null +++ b/latest/ug/diagrams/README.adoc @@ -0,0 +1,5 @@ += Diagram Source Files + +Diagram source files have moved to Amazon Workdocs. + +View the https://amazon.awsapps.com/workdocs-amazon/index.html#/folder/c87506fb95055627a2e80046310a1df2b0dfe8f66f185bea4c1d7e423a4a7f8b[AmazonEKSDocs-diagrams] folder. This folder is owned by `eks-docs`. \ No newline at end of file diff --git a/latest/ug/doc-history.adoc b/latest/ug/doc-history.adoc new file mode 100644 index 00000000..cdacfe8e --- /dev/null +++ b/latest/ug/doc-history.adoc @@ -0,0 +1,1882 @@ +//!!NODE_ROOT + +[.topic] +[[doc-history,doc-history.title]] +// H1 title is necessary, and must occur before the [abstract], but is unused in the web page (:info_title: is used instead, and :info_titleabbrev: is used in the ToC) += Document history +:doctype: book +:sectnums: +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_doctype: chapter +:info_title: Document history +:keywords: document, publish, release, history, log +:info_abstract: Important updates to the Amazon EKS documentation, sorted by date, with brief \ + descriptions of each update and when they occurred. + + +include::attributes.txt[] + +[abstract] +-- +Important updates to the Amazon EKS documentation, sorted by date, with brief descriptions of each update and when they occurred. +-- + +The following table describes the major updates and new features for the Amazon EKS User Guide. We also update the documentation frequently to address the feedback that you send us. + +[.updates] +== Updates + +[.update,date="2025-01-13"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Added multiple permissions to `AmazonEBSCSIDriverPolicy` to allow the Amazon EBS CSI Driver restore all snapshots, enable Fast Snapshot Restore (FSR) on EBS volumes, and modify tags on volumes. + +[.update,date="2024-12-26"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Added permissions to `AmazonEKSLoadBalancingPolicy`. + + +[.update,date="2024-12-20"] +=== Updated cluster insights +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cluster-insights.html + +Amazon EKS upgrade insights will now warn about more cluster health and version compatibility issues. It can detect issues between different [.noloc]`Kubernetes` and Amazon EKS components such as `kubelet`, `kube-proxy`, and Amazon EKS add-ons. + + +[.update,date="2024-12-16"] +=== Node monitoring agent and auto repair +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/node-health.html + +You can use the new `eks-node-monitoring-agent` as an Amazon EKS add-on to detect and show health issues. You can also enable node auto repair to automatically replace nodes when issues are detected. + + +[.update,date="2024-12-01"] +=== Amazon EKS Hybrid Nodes +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-overview.html + +You can now run node on-premises connected to Amazon EKS clusters. With Amazon EKS Hybrid Nodes, you can use your on-premises and edge infrastructure as nodes in Amazon EKS clusters. {aws} manages the {aws}-hosted Kubernetes control plane of the Amazon EKS cluster, and you manage the hybrid nodes that run in your on-premises or edge environments. + + +[.update,date="2024-12-01"] +=== Amazon EKS Auto Mode +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/automode.html + +Amazon EKS Auto Mode fully automates Kubernetes cluster infrastructure management for compute, storage, and networking on {aws}. It simplifies Kubernetes management by automatically provisioning infrastructure, selecting optimal compute instances, dynamically scaling resources, continuously optimizing costs, patching operating systems, and integrating with {aws} security services. + + +[.update,date="2024-11-22"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Updated `AWSServiceRoleForAmazonEKSNodegroup` for compatibility with China regions. + + +[.update,date="2024-11-22"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +This is a new platform version with security fixes and enhancements. This includes new patch versions of Kubernetes `1.31.2`, `1.30.6`, `1.29.10`, and `1.28.15`. + + +[.update,date="2024-11-21"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +EKS updated {aws} managed policy `AmazonEKSLocalOutpostClusterPolicy`. Added `ec2:DescribeAvailabilityZones` permission so the {aws} Cloud Controller Manager on the cluster control plane can identify the Availability Zone that each node is in. + + +[.update,date="2024-11-21"] +=== [.noloc]`Kubernetes` version 1.30 is now available for local clusters on {aws} Outposts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-platform-versions.html + +You can now create an Amazon EKS local cluster on an {aws} Outposts using [.noloc]`Kubernetes` version 1.30. + + +[.update,date="2024-11-20"] +=== [.noloc]`Bottlerocket` AMIs that use FIPS 140-3 +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id-bottlerocket.html + +[.noloc]`Bottlerocket` AMIs are available that are preconfigured to use FIPS 140-3 validated cryptographic modules. This includes the Amazon Linux 2023 Kernel Crypto API Cryptographic Module and the {aws}-LC Cryptographic Module. + + +[.update,date="2024-11-20"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Updated `AWSServiceRoleForAmazonEKSNodegroup` policy to allow `ec2:RebootInstances` for instances created by Amazon EKS managed node groups. Restricted the `ec2:CreateTags` permissions for Amazon EC2 resources. + + +[.update,date="2024-11-18"] +=== Observability dashboard +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/observability-dashboard.html + +The observability dashboard helps you to quickly detect, troubleshoot, and remediate issues. There are also new link:eks/latest/userguide/cloudwatch.html[CloudWatch vended metrics,type="documentation"] available in the `AWS/EKS` namespace. + + +[.update,date="2024-11-16"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +EKS updated {aws} managed policy `AmazonEKSServiceRolePolicy`. Added permissions for EKS access policies, load balancer management, and automated cluster resource cleanup. + + +[.update,date="2024-11-15"] +=== New role creation in console for add-ons that support EKS Pod Identities +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/creating-an-add-on.html#_create_add_on_console + +There are new steps when using the console to create or update add-ons that support EKS Pod Identities where you can automatically generate IAM roles with the appropriate name, role policy, and trust policy for the add-on. + + +[.update,date="2024-11-15"] +=== Managed node groups in {aws} Local Zones +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/local-zones.html + +Managed node groups can now be created in {aws} Local Zones. + + +[.update,date="2024-11-11"] +=== New metrics are available +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/view-raw-metrics.html + +There are new metrics available under the API group `metrics.eks.amazonaws.com`. + + +[.update,date="2024-11-07"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +EKS updated {aws} managed policy `AmazonEKSComputePolicy`. Updated resource permissions for the `iam:AddRoleToInstanceProfile` action. + + +[.update,date="2024-11-01"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +EKS added a new {aws} managed policy: `AmazonEKSComputePolicy` + + +[.update,date="2024-11-01"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Added permissions to `AmazonEKSClusterPolicy`. Added `ec2:DescribeInstanceTopology` permission to allow Amazon EKS to attach topology information to the node as labels. + + +[.update,date="2024-10-30"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +EKS added a new {aws} managed policy: `AmazonEKSBlockStoragePolicy` + + + +[.update,date="2024-10-30"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +EKS added a new {aws} managed policy: `AmazonEKSLoadBalancingPolicy` + + + +[.update,date="2024-10-29"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Added `cloudwatch:PutMetricData` permissions to `AmazonEKSServiceRolePolicy` to allow Amazon EKS to publish metrics to Amazon CloudWatch. + + + +[.update,date="2024-10-28"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +EKS added a new {aws} managed policy: `AmazonEKSNetworkingPolicy` + + + +[.update,date="2024-10-21"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Added `autoscaling:ResumeProcesses`, `autoscaling:SuspendProcesses`, and associated permissions to `AWSServiceRoleForAmazonEKSNodegroup` in China regions to integrate with Amazon Application Recovery Controller for EKS. No changes to other regions. + +[.update,date="2024-10-21"] +=== Dual-stack endpoints for new `IPv6` clusters +[.update-ulink] +link:eks/latest/userguide/cluster-endpoint.html[Configure endpoint access,type="documentation"] + +Connect to new `IPv6` clusters with a `eks-cluster.[.replaceable]``region``.api.aws` endpoint that is dual-stack. This endpoint is returned when you describe these clusters. `kubectl` and other Kubernetes API clients in `IPv4`, `IPv6`, or dual-stack environments can resolve and connect to these endpoints for public or private clusters. + + +[.update,date="2024-10-10"] +=== {aws} managed policy updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +Added permissions to `AmazonEKSServicePolicy` and `AmazonEKSServiceRolePolicy`. Added `ec2:GetSecurityGroupsForVpc` and associated tag permissions to allow EKS to read security group information and update related tags. + + +[.update,date="2024-10-11"] +=== AL2023 accelerated AMIs +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html + +You can now use accelerated `NVIDIA` and {aws} Neuron instances for AMIs based on AL2023. + + +[.update,date="2024-10-10"] +=== New source format + +We have switched over to a new source format with some layout changes. There are temporary minor formatting issues that we are addressing. + + +[.update,date="2024-10-03"] +=== {aws} managed policy updates - New policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +EKS added a new {aws} managed policy. + +[.update,date="2024-09-24"] +=== [.noloc]`Kubernetes` version `1.31` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.31 + +Added [.noloc]`Kubernetes` version `1.31` support for new clusters and version upgrades. + + +[.update,date="2024-08-21"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2024-08-20"] +=== [.noloc]`Kubernetes` version 1.29 is now available for local clusters on {aws} Outposts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-platform-versions.html + +You can now create an Amazon EKS local cluster on an {aws} Outposts using [.noloc]`Kubernetes` version 1.29. + + +[.update,date="2024-08-14"] +=== EKS Pod Identity in {aws} GovCloud (US) +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/pod-identites.html + +Amazon EKS Pod Identities associate an IAM role with a [.noloc]`Kubernetes` service account. With this feature, you no longer need to provide extended permissions to the node IAM role. This way, [.noloc]`Pods` on that node can call {aws} APIs. Unlike IAM roles for service accounts, EKS Pod Identities are completely inside EKS; you don't need an [.noloc]`OIDC` identity provider. + + +[.update,date="2024-08-09"] +=== Scenario-driven content updates +We renamed and updated topics to be more scenario-driven throughout the entire guide. + + +[.update,date="2024-08-07"] +=== Dual-stack VPC interface endpoints for Amazon EKS +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/vpc-interface-endpoints.html + +You can now create dual-stack VPC interface endpoints for Amazon EKS with both `IPv4` and `IPv6` IP addresses and DNS names. + + +[.update,date="2024-08-01"] +=== New dual-stack endpoints for the Amazon EKS APIs with `IPv6` addresses +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/network-reqs.html + +The EKS API for creating and managing clusters, and the OIDC issuer URLs for clusters have new dual-stack endpoints. The new DNS name for the Amazon EKS API is `eks.[.replaceable]``region``.api.aws` which resolves to `IPv4` addresses and `IPv6` addresses. New clusters have a new dual-stack OIDC issuer URL (`oidc-eks.[.replaceable]``region``.api.aws`). + + +[.update,date="2024-07-01"] +=== Capacity Blocks for managed node groups +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks-mng.html + +You can now use Capacity Blocks for managed node groups. + + +[.update,date="2024-06-28"] +=== Auto Scaling Group metrics collection enabled by default +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/enable-asg-metrics.html + +Amazon EKS managed node groups now have Amazon EC2 Auto Scaling group metrics enabled by default with no additional charge. Previously, you had to do several steps to enable this feature. + + +[.update,date="2024-06-27"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2024-06-12"] +=== Improvements to AMI information references +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html + +We made improvements to the AMI information references, in particular for [.noloc]`Bottlerocket`. + + +[.update,date="2024-06-12"] +=== [.noloc]`Kubernetes` version `1.26` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.26 + +[.noloc]`Kubernetes` version `1.26` is now in extended support. + + +[.update,date="2024-05-23"] +=== [.noloc]`Kubernetes` version `1.30` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.30 + +Added [.noloc]`Kubernetes` version `1.30` support for new clusters and version upgrades. + + +[.update,date="2024-05-14"] +=== [.noloc]`CoreDNS` Autoscaling +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/coredns-autoscaling.html + +[.noloc]`CoreDNS` autoscaler will dynamically adapt the number of replicas of the [.noloc]`CoreDNS` deployment in an EKS cluster based on the number of nodes and CPU cores. This feature works for [.noloc]`CoreDNS` `v1.9` and the latest platform version of EKS release version `1.25` and later. + + +[.update,date="2024-05-14"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +This is a new platform version with security fixes and enhancements. This includes new patch versions of Kubernetes `1.29.4`, `1.28.9`, and `1.27.13`. + + +[.update,date="2024-04-10"] +=== CloudWatch [.noloc]`Container Insights` support for [.noloc]`Windows` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cloudwatch.html + +The Amazon CloudWatch Observability Operator add-on now also allows [.noloc]`Container Insights` on [.noloc]`Windows` worker nodes in the cluster. + + +[.update,date="2024-04-05"] +=== [.noloc]`Kubernetes` concepts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-concepts.html + +Added new Kubernetes concepts topic. + + +[.update,date="2024-04-02"] +=== Restructure Access and IAM Content +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cluster-auth.html + +Move existing pages related to access and IAM topics, such as auth config map, access entries, Pod ID, and IRSA into new section. Revise overview content. + + +[.update,date="2024-03-13"] +=== [.noloc]`Bottlerocket` OS support for Amazon S3 CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/s3-csi.html + +The Mountpoint for Amazon S3 CSI driver is now compatible with [.noloc]`Bottlerocket`. + + +[.update,date="2024-03-04"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2024-02-29"] +=== Amazon Linux 2023 +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/al2023.html + +Amazon Linux 2023 (AL2023) is a new Linux-based operating system designed to provide a secure, stable, and high-performance environment for your cloud applications. + + +[.update,date="2024-02-26"] +=== EKS Pod Identity and IRSA support sidecars in [.noloc]`Kubernetes` `1.29` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.29 + +In [.noloc]`Kubernetes` `1.29`, sidecar containers are available in Amazon EKS clusters. Sidecar containers are supported with IAM roles for service accounts or EKS Pod Identity. For more information about sidecars, see https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/[Sidecar Containers] in the [.noloc]`Kubernetes` documentation. + + +[.update,date="2024-01-23"] +=== [.noloc]`Kubernetes` version `1.29` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.29 + +Added [.noloc]`Kubernetes` version `1.29` support for new clusters and version upgrades. + + +[.update,date="2024-01-16"] +=== Full release: Amazon EKS Extended Support for [.noloc]`Kubernetes` versions +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html + +Extended [.noloc]`Kubernetes` version support allows you to stay at a specific [.noloc]`Kubernetes` version for longer than 14 months. + + +[.update,date="2023-12-28"] +=== Amazon EKS cluster health detection in the {aws} Cloud +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/troubleshooting.html#cluster-health-status + +Amazon EKS detects issues with your Amazon EKS clusters and the infrastructure of the cluster prerequisites in _cluster health_. You can view the issues with your EKS clusters in the {aws-management-console} and in the `health` of the cluster in the EKS API. These issues are in addition to the issues that are detected by and displayed by the console. Previously, cluster health was only available for local clusters on {aws} Outposts. + + +[.update,date="2023-12-20"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Canada West (Calgary) (`ca-west-1`) {aws} Region. + + +[.update,date="2023-12-20"] +=== Cluster insights +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cluster-insights.html + +You can now get recommendations on your cluster based on recurring checks. + + +[.update,date="2023-12-18"] +=== You can now grant IAM roles and users access to your cluster using access entries +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html + +Before the introduction of access entries, you granted IAM roles and users access to your cluster by adding entries to the `aws-auth` `ConfigMap`. Now each cluster has an access mode, and you can switch to using access entries on your schedule. After you switch modes, you can add users by adding access entries in the {aws} CLI, {aws} CloudFormation, and the {aws} SDKs. + + +[.update,date="2023-12-12"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +This is a new platform version with security fixes and enhancements. This includes new patch versions of Kubernetes `1.28.4`, `1.27.8`, `1.26.11`, and `1.25.16`. + + +[.update,date="2023-11-27"] +=== [.noloc]`Mountpoint` for Amazon S3 CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/s3-csi.html + +You can now install the [.noloc]`Mountpoint` for Amazon S3 CSI driver on Amazon EKS clusters. + + +[.update,date="2023-11-26"] +=== Amazon EKS Pod Identities +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/pod-identites.html + +Amazon EKS Pod Identities associate an IAM role with a [.noloc]`Kubernetes` service account. With this feature, you no longer need to provide extended permissions to the node IAM role. This way, [.noloc]`Pods` on that node can call {aws} APIs. Unlike IAM roles for service accounts, EKS Pod Identities are completely inside EKS; you don't need an [.noloc]`OIDC` identity provider. + + +[.update,date="2023-11-26"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2023-11-26"] +=== Turn on [.noloc]`Prometheus` metrics when creating a cluster +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/prometheus.html + +In the {aws-management-console}, you can now turn on [.noloc]`Prometheus` metrics when creating a cluster. You can also view [.noloc]`Prometheus` scraper details in the *Observability* tab. + + +[.update,date="2023-11-17"] +=== CSI snapshot controller +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/csi-snapshot-controller.html + +You can now install the CSI snapshot controller for use with compatible CSI drivers, such as the Amazon EBS CSI driver. + + +[.update,date="2023-11-14"] +=== ADOT Operator topic rewrite +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/opentelemetry.html + +The Amazon EKS add-on support for ADOT Operator section was redundant with the {aws} Distro for [.noloc]`OpenTelemetry` documentation. We migrated remaining essential information to that resource to reduce outdated and inconsistent information. + + +[.update,date="2023-11-10"] +=== [.noloc]`CoreDNS` EKS add-on support for Prometheus metrics +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/managing-coredns.html + +The `v1.10.1-eksbuild.5`, `v1.9.3-eksbuild.9`, and `v1.8.7-eksbuild.8` versions of the EKS add-on for [.noloc]`CoreDNS` expose the port that [.noloc]`CoreDNS` published metrics to, in the `kube-dns` service. This makes it easier to include the [.noloc]`CoreDNS` metrics in your monitoring systems. + + +[.update,date="2023-11-06"] +=== Amazon EKS CloudWatch Observability Operator add-on +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cloudwatch.html + +Added Amazon EKS CloudWatch Observability Operator page. + + +[.update,date="2023-10-31"] +=== Capacity Blocks for self-managed P5 instances in US East (Ohio) +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks.html + +In US East (Ohio), you can now use Capacity Blocks for self-managed P5 instances. + + +[.update,date="2023-10-24"] +=== Clusters support modifying subnets and security groups +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/network-reqs.html + +You can update the cluster to change which subnets and security groups the cluster uses. You can update from the {aws-management-console}, the latest version of the {aws} CLI, {aws} CloudFormation, and `eksctl` version `v0.164.0-rc.0` or later. You might need to do this to provide subnets with more available IP addresses to successfully upgrade a cluster version. + + +[.update,date="2023-10-23"] +=== Cluster role and managed node group role supports customer managed {aws} Identity and Access Management policies +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cluster-iam-role.html + +You can use a custom IAM policy on the cluster role, instead of the link:aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html[AmazonEKSClusterPolicy,type="documentation"] {aws} managed policy. Also, you can use a custom IAM policy on the node role in a managed node group, instead of the link:aws-managed-policy/latest/reference/AmazonEKSWorkerNodePolicy.html[AmazonEKSWorkerNodePolicy,type="documentation"] {aws} managed policy. Do this to create a policy with the least privilege to meet strict compliance requirements. + + +[.update,date="2023-10-06"] +=== Fix link to eksctl installation +Fix install link for eksctl after the page was moved. + + +[.update,date="2023-10-04"] +=== Preview release: Amazon EKS Extended Support for [.noloc]`Kubernetes` versions +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html + +Extended [.noloc]`Kubernetes` version support allows you to stay at a specific [.noloc]`Kubernetes` version for longer than 14 months. + + +[.update,date="2023-09-29"] +=== Remove references to {aws} App Mesh integration +Amazon EKS integrations with {aws} App Mesh remain for existing customers of App Mesh only. + + +[.update,date="2023-09-26"] +=== [.noloc]`Kubernetes` version `1.28` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.28 + +Added [.noloc]`Kubernetes` version `1.28` support for new clusters and version upgrades. + + +[.update,date="2023-09-15"] +=== [.noloc]`CoreDNS` Amazon EKS add-on supports modifying PDB +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/managing-coredns.html + +You can modify the `PodDisruptionBudget` of the EKS add-on for [.noloc]`CoreDNS` in versions `v1.9.3-eksbuild.7` and later and `v1.10.1-eksbuild.4` and later. + + +[.update,date="2023-09-15"] +=== Existing clusters support [.noloc]`Kubernetes` network policy enforcement in the [.noloc]`Amazon VPC CNI plugin for Kubernetes` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-network-policy.html + +You can use [.noloc]`Kubernetes` _network policy_ in existing clusters with the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, instead of requiring a third party solution. +You can use [.noloc]`Kubernetes` _network policy_ in existing clusters with the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, instead of requiring a third party solution. + + +[.update,date="2023-09-07"] +=== Amazon EKS support for shared subnets +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/network-reqs.html#network-requirements-shared + +New link:eks/latest/userguide/network-reqs.html#network-requirements-shared[Shared subnet requirements and considerations,type="documentation"] for making Amazon EKS clusters in shared subnets. + + +[.update,date="2023-09-06"] +=== Updates to What is Amazon EKS? +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html + +Added new link:eks/latest/userguide/common-use-cases.html[Common use cases,type="documentation"] and link:eks/latest/userguide/eks-architecture.html[Architecture,type="documentation"] topics. Refreshed other topics. + + +[.update,date="2023-08-29"] +=== [.noloc]`Kubernetes` network policy enforcement in the [.noloc]`Amazon VPC CNI plugin for Kubernetes` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-network-policy.html + +You can use [.noloc]`Kubernetes` _network policy_ with the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, instead of requiring a third party solution. +You can use [.noloc]`Kubernetes` _network policy_ with the [.noloc]`Amazon VPC CNI plugin for Kubernetes`, instead of requiring a third party solution. + + +[.update,date="2023-08-01"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Israel (Tel Aviv) (`il-central-1`) {aws} Region. + + +[.update,date="2023-07-31"] +=== Configurable ephemeral storage for Fargate +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fargate-pod-configuration.html#fargate-storage + +You can increase the total amount of ephemeral storage for each [.noloc]`Pod` running on Amazon EKS Fargate. + + +[.update,date="2023-07-26"] +=== Add-on support for Amazon EFS CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html#add-ons-aws-efs-csi-driver + +You can now use the {aws-management-console}, {aws} CLI, and API to manage the Amazon EFS CSI driver. + + +[.update,date="2023-07-26"] +=== {aws} managed policy updates - New policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS added a new {aws} managed policy. + + +[.update,date="2023-07-20"] +=== [.noloc]`Kubernetes` version updates for 1.27, 1.26, 1.25, and 1.24 are now available for local clusters on {aws} Outposts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-platform-versions.html + +[.noloc]`Kubernetes` version updates to 1.27.3, 1.26.6, 1.25.11, and 1.24.15 are now available for local clusters on {aws} Outposts + + +[.update,date="2023-07-06"] +=== IP prefixes support for [.noloc]`Windows` nodes +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html + +Assigning IP prefixes to your nodes can enable you to host a significantly higher number of [.noloc]`Pods` on your nodes than you can when assigning individual secondary IP addresses to your nodes. + + +[.update,date="2023-06-30"] +=== Amazon FSx for OpenZFS CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fsx-openzfs-csi.html + +You can now install the Amazon FSx for OpenZFS CSI driver on Amazon EKS clusters. + + +[.update,date="2023-06-19"] +=== [.noloc]`Pods` on Linux nodes in `IPv4` clusters can now communicate with `IPv6` endpoints. +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6-egress.html + +After assigning an IPv6 address to your node, your [.noloc]`Pods`' `IPv4` address is network address translated to the `IPv6` address of the node that it's running on. + + +[.update,date="2023-05-30"] +=== [.noloc]`Windows` managed node groups in {aws} GovCloud (US) Regions +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html + +In the {aws} GovCloud (US) Regions, Amazon EKS managed node groups can now run [.noloc]`Windows` containers. + + +[.update,date="2023-05-24"] +=== [.noloc]`Kubernetes` version `1.27` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.27 + +Added [.noloc]`Kubernetes` version `1.27` support for new clusters and version upgrades. + + +[.update,date="2023-04-11"] +=== [.noloc]`Kubernetes` version `1.26` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.26 + +Added [.noloc]`Kubernetes` version `1.26` support for new clusters and version upgrades. + + +[.update,date="2023-03-27"] +=== Domainless [.noloc]`gMSA` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-windows-ami.html#ad-and-gmsa-support + +You can now use domainless [.noloc]`gMSA` with [.noloc]`Windows` [.noloc]`Pods`. + + +[.update,date="2023-03-10"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Asia Pacific (Melbourne) (`ap-southeast-4`) {aws} Region. + + +[.update,date="2023-03-03"] +=== Amazon File Cache CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/file-cache-csi.html + +You can now install the Amazon File Cache CSI driver on Amazon EKS clusters. + + +[.update,date="2023-03-01"] +=== [.noloc]`Kubernetes` version 1.25 is now available for local clusters on {aws} Outposts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-create.html + +You can now create an Amazon EKS local cluster on an Outpost using [.noloc]`Kubernetes` versions `1.22` – `1.25`. + + +[.update,date="2023-02-22"] +=== [.noloc]`Kubernetes` version `1.25` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.25 + +Added [.noloc]`Kubernetes` version `1.25` support for new clusters and version upgrades. + + +[.update,date="2023-02-07"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2023-02-06"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Asia Pacific (Hyderabad) (`ap-south-2`), Europe (Zurich) (`eu-central-2`), and Europe (Spain) (`eu-south-2`) {aws} Regions. + + +[.update,date="2023-01-17"] +=== [.noloc]`Kubernetes` versions `1.21` – `1.24` are now available for local clusters on {aws} Outposts. +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-create.html + +You can now create an Amazon EKS local cluster on an Outpost using [.noloc]`Kubernetes` versions `1.21` – `1.24`. Previously, only version `1.21` was available. + + +[.update,date="2022-12-16"] +=== Amazon EKS now supports {aws} PrivateLink +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/vpc-interface-endpoints.html + +You can use an {aws} PrivateLink to create a private connection between your VPC and Amazon EKS. + + +[.update,date="2022-12-15"] +=== Managed node group Windows support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html + +You can now use Windows for Amazon EKS managed node groups. + + +[.update,date="2022-11-28"] +=== Amazon EKS add-ons from independent software vendors are now available in the {aws} Marketplace +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html + +You can now browse and subscribe to Amazon EKS add-ons from independent software vendors through the {aws} Marketplace. + + +[.update,date="2022-11-17"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2022-11-15"] +=== [.noloc]`Kubernetes` version `1.24` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.24 + +Added [.noloc]`Kubernetes` version `1.24` support for new clusters and version upgrades. + + +[.update,date="2022-11-03"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Middle East (UAE) (`me-central-1`) {aws} Region. + + +[.update,date="2022-10-24"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2022-10-20"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2022-09-19"] +=== Local clusters on {aws} Outposts are now available +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-create.html + +You can now create an Amazon EKS local cluster on an Outpost. + + +[.update,date="2022-09-08"] +=== Fargate vCPU based quotas +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html#service-quotas-eks-fargate + +Fargate is transitioning from [.noloc]`Pod` based quotas to vCPU based quotas. + + +[.update,date="2022-08-31"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2022-08-24"] +=== {aws} managed policy updates - New policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS added a new {aws} managed policy. + + +[.update,date="2022-08-24"] +=== Cost monitoring +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cost-monitoring + +Amazon EKS now supports [.noloc]`Kubecost`, which enables you to monitor costs broken down by [.noloc]`Kubernetes` resources including [.noloc]`Pods`, nodes, namespaces, and labels. + + +[.update,date="2022-08-23"] +=== {aws} managed policy updates - New policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS added a new {aws} managed policy. + + +[.update,date="2022-08-16"] +=== Tag resources for billing +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-using-tags.html#tag-resources-for-billing + +Added `aws:eks:cluster-name` generated cost allocation tag support for all clusters. + + +[.update,date="2022-08-16"] +=== Fargate profile wildcards +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html#fargate-profile-wildcards + +Added support for Fargate profile wildcards in the selector criteria for namespaces, label keys, and label values. + + +[.update,date="2022-08-11"] +=== [.noloc]`Kubernetes` version `1.23` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-1.23 + +Added [.noloc]`Kubernetes` version `1.23` support for new clusters and version upgrades. + + +[.update,date="2022-05-03"] +=== View [.noloc]`Kubernetes` resources in the {aws-management-console} +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/view-kubernetes-resources.html + +You can now view information about the [.noloc]`Kubernetes` resources deployed to your cluster using the {aws-management-console}. + + +[.update,date="2022-05-02"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Asia Pacific (Jakarta) (`ap-southeast-3`) {aws} Region. + + +[.update,date="2022-04-21"] +=== Observability page and ADOT add-on support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-observe.html + +Added Observability page and {aws} Distro for [.noloc]`OpenTelemetry` (ADOT). + + +[.update,date="2022-04-04"] +=== {aws} managed policy updates - New policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS added a new {aws} managed policy. + + +[.update,date="2022-04-04"] +=== [.noloc]`Kubernetes` version `1.22` +Added [.noloc]`Kubernetes` version `1.22` support for new clusters and version upgrades. + + +[.update,date="2022-04-01"] +=== Added Fargate [.noloc]`Pod` patching details +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fargate-pod-patching.html + +When upgrading Fargate [.noloc]`Pods`, Amazon EKS first tries to evict [.noloc]`Pods` based on your [.noloc]`Pod` disruption budgets. You can create event rules to react to failed evictions before the [.noloc]`Pods` are deleted. + + +[.update,date="2022-03-31"] +=== Full release: Add-on support for Amazon EBS CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html + +You can now use the {aws-management-console}, {aws} CLI, and API to manage the Amazon EBS CSI driver. + + +[.update,date="2022-03-22"] +=== {aws} Outposts content update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/outposts.html + +Instructions to deploy an Amazon EKS cluster on {aws} Outposts. + + +[.update,date="2022-03-21"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2022-03-14"] +=== Windows `containerd` support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-windows-ami.html.html + +You can now select the `containerd` runtime for [.noloc]`Windows` nodes. + + +[.update,date="2022-02-25"] +=== Added Amazon EKS Connector considerations to security documentation +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/connector-considerations.html + +Describes the shared responsibility model as it relates to connected clusters. + + +[.update,date="2022-01-06"] +=== Assign `IPv6` addresses to your [.noloc]`Pods` and services +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html + +You can now create a `1.21` or later cluster that assigns `IPv6` addresses to your [.noloc]`Pods` and services. + + +[.update,date="2021-12-13"] +=== {aws} managed policy updates - Update to an existing policy +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates + +Amazon EKS updated an existing {aws} managed policy. + + +[.update,date="2021-12-09"] +=== Preview release: Add-on support for Amazon EBS CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html + +You can now preview using the {aws-management-console}, {aws} CLI, and API to manage the Amazon EBS CSI driver. + + +[.update,date="2021-11-29"] +=== Karpenter autoscaler support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html#karpenter + +You can now use the Karpenter open-source project to autoscale your nodes. + + +[.update,date="2021-11-10"] +=== Fluent Bit [.noloc]`Kubernetes` filter support in Fargate logging +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fargate-logging.html#fargate-logging-kubernetes-filter + +You can now use the Fluent Bit [.noloc]`Kubernetes` filter with Fargate logging. + + +[.update,date="2021-11-09"] +=== [.noloc]`Windows` support available in the control plane +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/windows-support.html + +[.noloc]`Windows` support is now available in your control plane. You no longer need to enable it in your data plane. + + +[.update,date="2021-10-28"] +=== [.noloc]`Bottlerocket` added as an AMI type for managed node groups +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami-bottlerocket.html + +Previously, [.noloc]`Bottlerocket` was only available as a self-managed node option. Now it can be configured as a managed node group, reducing the effort that's required to meet node compliance requirements. + + +[.update,date="2021-10-25"] +=== DL1 driver support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-build-scripts.html + +Custom Amazon Linux AMIs now support deep learning workloads for Amazon Linux 2. This enablement allows a generic on-premises or cloud baseline configuration. + + +[.update,date="2021-09-13"] +=== VT1 video support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-build-scripts.html + +Custom Amazon Linux AMIs now support VT1 for some distributions. This enablement advertises Xilinx U30 devices on your Amazon EKS cluster. + + +[.update,date="2021-09-08"] +=== Amazon EKS Anywhere is now available +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-deployment-options.html + +Amazon EKS Anywhere is a new deployment option for Amazon EKS that you can use to create and operate [.noloc]`Kubernetes` clusters on-premises. + + +[.update,date="2021-09-08"] +=== Amazon EKS Connector is now available +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-connector.html + +You can use Amazon EKS Connector to register and connect any conformant [.noloc]`Kubernetes` cluster to {aws} and visualize it in the Amazon EKS console. + + +[.update,date="2021-09-02"] +=== Amazon FSx for NetApp ONTAP CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fsx-ontap.html + +Added topic that summarizes the Amazon FSx for NetApp ONTAP CSI driver and gives links to other references. + + +[.update,date="2021-08-30"] +=== Managed node groups now auto-calculates the Amazon EKS recommended maximum [.noloc]`Pods` for nodes +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html + +Managed node groups now auto-calculate the Amazon EKS maximum [.noloc]`Pods` for nodes that you deploy without a launch template, or with a launch template that you haven't specified an AMI ID in. + + +[.update,date="2021-08-20"] +=== Remove Amazon EKS management of add-on settings without removing the Amazon EKS add-on software +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/managing-vpc-cni.html#removing-vpc-cni-eks-add-on + +You can now remove an Amazon EKS add-on without removing the add-on software from your cluster. + + +[.update,date="2021-08-02"] +=== Create multi-homed [.noloc]`Pods` using Multus +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/pod-multiple-network-interfaces.html + +You can now add multiple network interfaces to a [.noloc]`Pod` using Multus. + + +[.update,date="2021-07-27"] +=== Add more IP addresses to your [.noloc]`Linux` Amazon EC2 nodes +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html + +You can now add significantly more IP addresses to your [.noloc]`Linux` Amazon EC2 nodes. This means that you can run a higher density of [.noloc]`Pods` on each node. +You can now add significantly more IP addresses to your [.noloc]`Linux` Amazon EC2 nodes. This means that you can run a higher density of [.noloc]`Pods` on each node. + + +[.update,date="2021-07-19"] +=== [.noloc]`Kubernetes` version `1.21` +Added [.noloc]`Kubernetes` version `1.21` support. + + +[.update,date="2021-07-19"] +=== `containerd` runtime bootstrap +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html#containerd-bootstrap + +The Amazon EKS optimized accelerated Amazon Linux Amazon Machine Image (AMI) now contains a bootstrap flag that you can use to enable the `containerd` runtime in Amazon EKS optimized and [.noloc]`Bottlerocket` AMIs. This flag is available in all supported [.noloc]`Kubernetes` versions of the AMI. + + +[.update,date="2021-06-17"] +=== Added managed policies topic +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-iam-awsmanpol.html + +A list of all Amazon EKS IAM managed policies and changes that were made to them since June 17, 2021. + + +[.update,date="2021-06-01"] +=== Use security groups for [.noloc]`Pods` with Fargate +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-groups-for-pods.html + +You can now use security groups for [.noloc]`Pods` with Fargate, in addition to using them with Amazon EC2 nodes. + + +[.update,date="2021-05-19"] +=== Added [.noloc]`CoreDNS` and `kube-proxy` Amazon EKS add-ons +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html + +Amazon EKS can now help you manage the [.noloc]`CoreDNS` and `kube-proxy` Amazon EKS add-ons for your cluster. + + +[.update,date="2021-05-18"] +=== [.noloc]`Kubernetes` version `1.20` +Added [.noloc]`Kubernetes` version `1.20` support for new clusters and version upgrades. + + +[.update,date="2021-05-14"] +=== [.noloc]`{aws} Load Balancer Controller` `2.2.0` released +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html + +You can now use the [.noloc]`{aws} Load Balancer Controller` to create Elastic Load Balancers using instance or IP targets. + + +[.update,date="2021-05-11"] +=== Node taints for managed node groups +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html + +Amazon EKS now supports adding note taints to managed node groups. + + +[.update,date="2021-02-26"] +=== Secrets encryption for existing clusters +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html#enable-kms + +Amazon EKS now supports adding https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/[secrets encryption] to existing clusters. + + +[.update,date="2021-02-16"] +=== [.noloc]`Kubernetes` version `1.19` +Added [.noloc]`Kubernetes` version `1.19` support for new clusters and version upgrades. + + +[.update,date="2021-02-12"] +=== Amazon EKS now supports [.noloc]`OpenID Connect` (OIDC) identity providers as a method to authenticate users to a version `1.16` or later cluster. +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html + +OIDC identity providers can be used with, or as an alternative to {aws} Identity and Access Management (IAM). + + +[.update,date="2020-12-01"] +=== Amazon EKS can now manage specific add-ons for your cluster +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html + +You can manage add-ons yourself, or allow Amazon EKS to control the launch and version of an add-on through the Amazon EKS API. + + +[.update,date="2020-12-01"] +=== Deploy Spot Instance types in a managed node group +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types + +You can now deploy multiple Spot or On-Demand Instance types to a managed node group. + + +[.update,date="2020-12-01"] +=== View node and workload resources in the {aws-management-console} +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/view-kubernetes-resources.html + +You can now view details about your managed, self-managed, and Fargate nodes and your deployed [.noloc]`Kubernetes` workloads in the {aws-management-console}. + + +[.update,date="2020-10-23"] +=== NLB IP target support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/networkg-load-balancing.html#network-load-balancer + +You can now deploy a Network Load Balancer with IP targets. This means that you can use an NLB to load balance network traffic to Fargate [.noloc]`Pods` and directly to [.noloc]`Pods` that are running on Amazon EC2 nodes. + + +[.update,date="2020-10-23"] +=== Share an ALB across multiple Ingresses +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html + +You can now share an {aws} Application Load Balancer (ALB) across multiple [.noloc]`Kubernetes` Ingresses. In the past, you had to deploy a separate ALB for each Ingress. + + +[.update,date="2020-10-13"] +=== [.noloc]`Kubernetes` version `1.18` +Added [.noloc]`Kubernetes` version `1.18` support for new clusters and version upgrades. + + +[.update,date="2020-09-29"] +=== Specify a custom CIDR block for [.noloc]`Kubernetes` service IP address assignment. +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html + +You can now specify a custom CIDR block that [.noloc]`Kubernetes` assigns service IP addresses from. + + +[.update,date="2020-09-09"] +=== Assign security groups to individual [.noloc]`Pods` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/security-groups-for-pods.html + +You can now associate different security groups to some of the individual [.noloc]`Pods` that are running on many Amazon EC2 instance types. + + +[.update,date="2020-08-31"] +=== Deploy [.noloc]`Bottlerocket` on your nodes +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/launch-node-bottlerocket.html + +You can now deploy nodes that are running link:bottlerocket/[Bottlerocket,type="marketing"]. + + +[.update,date="2020-08-17"] +=== Managed node group launch templates and custom AMI +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html + +You can now deploy a managed node group that uses an Amazon EC2 launch template. The launch template can specify a custom AMI, if you choose. + + +[.update,date="2020-08-17"] +=== The ability to launch Arm nodes is generally available +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html#arm-ami + +You can now launch Arm nodes in managed and self-managed node groups. + + +[.update,date="2020-08-17"] +=== EFS support for {aws} Fargate +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html + +You can now use Amazon EFS with {aws} Fargate. + + +[.update,date="2020-08-12"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +This is a new platform version with security fixes and enhancements. This includes UDP support for services of type `LoadBalancer` when using Network Load Balancers with [.noloc]`Kubernetes` version `1.15` or later. For more information, see the https://github.com/kubernetes/kubernetes/pull/92109[Allow UDP for {aws} Network Load Balancer] issue on [.noloc]`GitHub`. + + +[.update,date="2020-08-06"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Africa (Cape Town) (`af-south-1`) and Europe (Milan) (`eu-south-1`) {aws} Regions. + + +[.update,date="2020-08-03"] +=== Fargate usage metrics +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/monitoring-fargate-usage.html + +{aws} Fargate provides CloudWatch usage metrics that provide visibility into your account's usage of Fargate On-Demand resources. + + +[.update,date="2020-07-10"] +=== [.noloc]`Kubernetes` version `1.17` +Added [.noloc]`Kubernetes` version `1.17` support for new clusters and version upgrades. + + +[.update,date="2020-06-18"] +=== Create and manage App Mesh resources from within [.noloc]`Kubernetes` with the App Mesh controller for [.noloc]`Kubernetes` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/mesh-k8s-integration.html + +You can create and manage App Mesh resources from within [.noloc]`Kubernetes`. The controller also automatically injects the Envoy proxy and init containers into [.noloc]`Pods` that you deploy. + + +[.update,date="2020-06-04"] +=== Amazon EKS now supports Amazon EC2 Inf1 nodes +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/inferentia-support.html + +You can add Amazon EC2 Inf1 nodes to your cluster. + + +[.update,date="2020-05-13"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the {aws} GovCloud (US-East) (`us-gov-east-1`) and {aws} GovCloud (US-West) (`us-gov-west-1`) {aws} Regions. + + +[.update,date="2020-05-12"] +=== [.noloc]`Kubernetes` `1.12` is no longer supported on Amazon EKS +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html + +[.noloc]`Kubernetes` version `1.12` is no longer supported on Amazon EKS. Update any `1.12` clusters to version `1.13` or later to avoid service interruption. + + +[.update,date="2020-04-30"] +=== [.noloc]`Kubernetes` version `1.16` +Added [.noloc]`Kubernetes` version `1.16` support for new clusters and version upgrades. + + +[.update,date="2020-04-16"] +=== Added the *AWSServiceRoleForAmazonEKS* service-linked role +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles-eks.html + +Added the *AWSServiceRoleForAmazonEKS* service-linked role. + + +[.update,date="2020-03-10"] +=== [.noloc]`Kubernetes` version `1.15` +Added [.noloc]`Kubernetes` version `1.15` support for new clusters and version upgrades. + + +[.update,date="2020-02-26"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Beijing (`cn-north-1`) and Ningxia (`cn-northwest-1`) {aws} Regions. + + +[.update,date="2019-12-23"] +=== FSx for Lustre CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fsx-csi.html + +Added topic for installing the FSx for Lustre CSI driver on [.noloc]`Kubernetes` `1.14` Amazon EKS clusters. + + +[.update,date="2019-12-20"] +=== Restrict network access to the public access endpoint of a cluster +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html + +With this update, you can use Amazon EKS to restrict the CIDR ranges that can communicate to the public access endpoint of the [.noloc]`Kubernetes` API server. + + +[.update,date="2019-12-13"] +=== Resolve the private access endpoint address for a cluster from outside of a VPC +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html + +With this update, you can use Amazon EKS to resolve the private access endpoint of the [.noloc]`Kubernetes` API server from outside of a VPC. + + +[.update,date="2019-12-04"] +=== (Beta) Amazon EC2 A1 Amazon EC2 instance nodes +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/arm-support.html + +Launch link:ec2/instance-types/a1/[Amazon EC2 A1,type="marketing"] Amazon EC2 instance nodes that register with your Amazon EKS cluster. + + +[.update,date="2019-12-03"] +=== Creating a cluster on {aws} Outposts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-on-outposts.html + +Amazon EKS now supports creating clusters on {aws} Outposts. + + +[.update,date="2019-12-03"] +=== {aws} Fargate on Amazon EKS +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/fargate.html + +Amazon EKS [.noloc]`Kubernetes` clusters now support running [.noloc]`Pods` on Fargate. + + +[.update,date="2019-11-21"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Canada (Central) (`ca-central-1`) {aws} Region. + + +[.update,date="2019-11-18"] +=== Managed node groups +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html + +Amazon EKS managed node groups automate the provisioning and lifecycle management of nodes (Amazon EC2 instances) for Amazon EKS [.noloc]`Kubernetes` clusters. + + +[.update,date="2019-11-06"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform versions to address https://groups.google.com/forum/#!msg/kubernetes-security-announce/jk8polzSUxs/dfq6a-MnCQAJ[CVE-2019-11253]. + + +[.update,date="2019-11-04"] +=== [.noloc]`Kubernetes` `1.11` is no longer supported on Amazon EKS +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html + +[.noloc]`Kubernetes` version `1.11` is no longer supported on Amazon EKS. Please update any `1.11` clusters to version `1.12` or higher to avoid service interruption. + + +[.update,date="2019-10-16"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the South America (São Paulo) (`sa-east-1`) {aws} Region. + + +[.update,date="2019-10-07"] +=== [.noloc]`Windows` support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/windows-support.html + +Amazon EKS clusters running [.noloc]`Kubernetes` version `1.14` now support [.noloc]`Windows` workloads. + + +[.update,date="2019-09-30"] +=== Autoscaling +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html + +Added a chapter to cover some of the different types of [.noloc]`Kubernetes` autoscaling that are supported on Amazon EKS clusters. + + +[.update,date="2019-09-28"] +=== [.noloc]`Kubernetes` Dashboard update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html + +Updated topic for installing the [.noloc]`Kubernetes` Dashboard on Amazon EKS clusters to use the beta `2.0` version. + + +[.update,date="2019-09-19"] +=== Amazon EFS CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html + +Added topic for installing the Amazon EFS CSI driver on [.noloc]`Kubernetes` `1.14` Amazon EKS clusters. + + +[.update,date="2019-09-18"] +=== Amazon EC2 Systems Manager parameter for Amazon EKS optimized AMI ID +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html + +Added topic for retrieving the Amazon EKS optimized AMI ID using an Amazon EC2 Systems Manager parameter. The parameter eliminates the need for you to look up AMI IDs. + + +[.update,date="2019-09-16"] +=== Amazon EKS resource tagging +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-using-tags.html + +You can manage the tagging of your Amazon EKS clusters. + + +[.update,date="2019-09-09"] +=== Amazon EBS CSI driver +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html + +Added topic for installing the Amazon EBS CSI driver on [.noloc]`Kubernetes` `1.14` Amazon EKS clusters. + + +[.update,date="2019-09-06"] +=== New Amazon EKS optimized AMI patched for `CVE-2019-9512` and `CVE-2019-9514` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has updated the Amazon EKS optimized AMI to address https://groups.google.com/forum/#!topic/kubernetes-security-announce/wlHLHit1BqA[CVE-2019-9512 and CVE-2019-9514]. + + +[.update,date="2019-09-04"] +=== Announcing deprecation of [.noloc]`Kubernetes` `1.11` in Amazon EKS +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html + +Amazon EKS discontinued support for [.noloc]`Kubernetes` version `1.11` on November 4, 2019. + + +[.update,date="2019-09-03"] +=== IAM roles for service accounts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html + +With IAM roles for service accounts on Amazon EKS clusters, you can associate an IAM role with a [.noloc]`Kubernetes` service account. With this feature, you no longer need to provide extended permissions to the node IAM role. This way, [.noloc]`Pods` on that node can call {aws} APIs. + + +[.update,date="2019-09-03"] +=== [.noloc]`Kubernetes` version `1.14` +Added [.noloc]`Kubernetes` version `1.14` support for new clusters and version upgrades. + + +[.update,date="2019-08-29"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Middle East (Bahrain) (`me-south-1`) {aws} Region. + + +[.update,date="2019-08-28"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform versions to address https://groups.google.com/forum/#!topic/kubernetes-security-announce/wlHLHit1BqA[CVE-2019-9512 and CVE-2019-9514]. + + +[.update,date="2019-08-05"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform versions to address https://groups.google.com/forum/#!topic/kubernetes-security-announce/vUtEcSEY6SM[CVE-2019-11247 and CVE-2019-11249]. + + +[.update,date="2019-07-31"] +=== Amazon EKS Region expansion +Amazon EKS is now available in the Asia Pacific (Hong Kong) (`ap-east-1`) {aws} Region. + + +[.update,date="2019-07-30"] +=== [.noloc]`Kubernetes` `1.10` no longer supported on Amazon EKS +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html + +[.noloc]`Kubernetes` version `1.10` is no longer supported on Amazon EKS. Update any `1.10` clusters to version `1.11` or higher to avoid service interruption. + + +[.update,date="2019-07-11"] +=== Added topic on ALB ingress controller +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html + +The {aws} ALB Ingress Controller for [.noloc]`Kubernetes` is a controller that causes an ALB to be created when ingress resources are created. + + +[.update,date="2019-07-03"] +=== New Amazon EKS optimized AMI +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Removing unnecessary `kubectl` binary from AMIs. + + +[.update,date="2019-06-18"] +=== [.noloc]`Kubernetes` version `1.13` +Added [.noloc]`Kubernetes` version `1.13` support for new clusters and version upgrades. + + +[.update,date="2019-06-17"] +=== New Amazon EKS optimized AMI patched for `{aws}-2019-005` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has updated the Amazon EKS optimized AMI to address the vulnerabilities that are described in link:security/security-bulletins/{aws}-2019-005/[{aws}-2019-005,type="marketing"]. + + +[.update,date="2019-05-21"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform version for [.noloc]`Kubernetes` `1.11` and `1.10` clusters to support custom DNS names in the `kubelet` certificate and improve `etcd` performance. + + +[.update,date="2019-05-21"] +=== Announcing discontinuation of support of [.noloc]`Kubernetes` `1.10` in Amazon EKS +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html + +Amazon EKS stopped supporting [.noloc]`Kubernetes` version `1.10` on July 22, 2019. + + +[.update,date="2019-05-10"] +=== Getting started with `eksctl` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html + +This getting started guide describes how you can install all of the required resources to get started with Amazon EKS using `eksctl`. This is a simple command line utility for creating and managing [.noloc]`Kubernetes` clusters on Amazon EKS. + + +[.update,date="2019-05-10"] +=== {aws} CLI `get-token` command +The `aws eks get-token` command was added to the {aws} CLI. You no longer need to install the {aws} IAM Authenticator for [.noloc]`Kubernetes` to create client security tokens for cluster API server communication. Upgrade your {aws} CLI installation to the latest version to use this new functionality. For more information, see link:cli/latest/userguide/installing.html[Installing the {aws} Command Line Interface,type="documentation"] in the _{aws} Command Line Interface User Guide_. + + +[.update,date="2019-05-08"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform version for [.noloc]`Kubernetes` `1.12` clusters to support custom DNS names in the `kubelet` certificate and improve `etcd` performance. This fixes a bug that caused node `kubelet` daemons to request a new certificate every few seconds. + + +[.update,date="2019-04-05"] +=== [.noloc]`Prometheus` tutorial +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/prometheus.html + +Added topic for deploying [.noloc]`Prometheus` to your Amazon EKS cluster. + + +[.update,date="2019-04-04"] +=== Amazon EKS control plane logging +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html + +With this update, you can get audit and diagnostic logs directly from the Amazon EKS control pane. You can use these CloudWatch logs in your account as reference for securing and running clusters. + + +[.update,date="2019-03-28"] +=== [.noloc]`Kubernetes` version `1.12` +Added [.noloc]`Kubernetes` version `1.12` support for new clusters and version upgrades. + + +[.update,date="2019-03-27"] +=== Added App Mesh getting started guide +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/mesh-gs-k8s.html + +Added documentation for getting started with App Mesh and [.noloc]`Kubernetes`. + + +[.update,date="2019-03-19"] +=== Amazon EKS API server endpoint private access +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html + +Added documentation for disabling public access for your Amazon EKS cluster's [.noloc]`Kubernetes` API server endpoint. + + +[.update,date="2019-03-18"] +=== Added topic for installing the [.noloc]`Kubernetes` Metrics Server +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/metrics-server.html + +The [.noloc]`Kubernetes` Metrics Server is an aggregator of resource usage data in your cluster. + + +[.update,date="2019-03-15"] +=== Added list of related open source projects +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/metrics-server.html + +These open source projects extend the functionality of [.noloc]`Kubernetes` clusters running on {aws}, including clusters that are managed by Amazon EKS. + + +[.update,date="2019-03-11"] +=== Added topic for installing Helm locally +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/helm.html + +The `helm` package manager for [.noloc]`Kubernetes` helps you install and manage applications on your [.noloc]`Kubernetes` cluster. This topic shows how to install and run the `helm` and `tiller` binaries locally. That way, you can install and manage charts using the Helm CLI on your local system. + + +[.update,date="2019-03-08"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform version that updates Amazon EKS [.noloc]`Kubernetes` `1.11` clusters to patch level `1.11.8` to address https://discuss.kubernetes.io/t/kubernetes-security-announcement-v1-11-8-1-12-6-1-13-4-released-to-address-medium-severity-cve-2019-1002100/5147[CVE-2019-1002100]. + + +[.update,date="2019-02-13"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Europe (London) (`eu-west-2`), Europe (Paris) (`eu-west-3`), and Asia Pacific (Mumbai) (``ap-south-1`) {aws} Regions. + + +[.update,date="2019-02-13"] +=== Increased cluster limit +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/service_limits.html + +Amazon EKS has increased the number of clusters that you can create in an {aws} Region from 3 to 50. + + +[.update,date="2019-02-11"] +=== New Amazon EKS optimized AMI patched for `ALAS-2019-1156` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has updated the Amazon EKS optimized AMI to address the vulnerability that's described in https://alas.aws.amazon.com/ALAS-2019-1156.html[ALAS-2019-1156]. + + +[.update,date="2019-01-09"] +=== New Amazon EKS optimized AMI patched for `ALAS2-2019-1141` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has updated the Amazon EKS optimized AMI to address the CVEs that are referenced in https://alas.aws.amazon.com/AL2/ALAS-2019-1141.html[ALAS2-2019-1141]. + + +[.update,date="2019-01-09"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Asia Pacific (Seoul) (`ap-northeast-2`) {aws} Region. + + +[.update,date="2018-12-19"] +=== Amazon EKS region expansion +Amazon EKS is now available in the following additional {aws} Regions: Europe (Frankfurt) (`eu-central-1`), Asia Pacific (Tokyo) (`ap-northeast-1`), Asia Pacific (Singapore) (`ap-southeast-1`), and Asia Pacific (Sydney) (`ap-southeast-2`). + + +[.update,date="2018-12-12"] +=== Amazon EKS cluster updates +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html + +Added documentation for Amazon EKS link:eks/latest/userguide/update-cluster.html[cluster Kubernetes version updates,type="documentation"] and link:eks/latest/userguide/update-workers.html[node replacement,type="documentation"]. + + +[.update,date="2018-12-11"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Europe (Stockholm) (`eu-north-1`) {aws} Region. + + +[.update,date="2018-12-04"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform version updating [.noloc]`Kubernetes` to patch level `1.10.11` to address link:security/security-bulletins/{aws}-2018-020/[CVE-2018-1002105,type="marketing"]. + + +[.update,date="2018-11-20"] +=== Added version `1.0.0` support for the ALB ingress controller +[.update-ulink] +https://github.com/kubernetes-sigs/aws-alb-ingress-controller + +The ALB ingress controller releases version `1.0.0` with formal support from {aws}. + + +[.update,date="2018-10-16"] +=== Added support for CNI network configuration +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/cni-custom-network.html + +The [.noloc]`Amazon VPC CNI plugin for Kubernetes` version `1.2.1` now supports custom network configuration for secondary [.noloc]`Pod` network interfaces. + + +[.update,date="2018-10-10"] +=== Added support for `MutatingAdmissionWebhook` and `ValidatingAdmissionWebhook` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +Amazon EKS platform version `1.10-eks.2` now supports `MutatingAdmissionWebhook` and `ValidatingAdmissionWebhook` admission controllers. + + +[.update,date="2018-10-03"] +=== Added partner AMI information +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-partner-amis.html + +Canonical has partnered with Amazon EKS to create node AMIs that you can use in your clusters. + + +[.update,date="2018-09-21"] +=== Added instructions for {aws} CLI `update-kubeconfig` command +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html + +Amazon EKS has added the `update-kubeconfig` to the {aws} CLI to simplify the process of creating a `kubeconfig` file for accessing your cluster. + + +[.update,date="2018-09-13"] +=== New Amazon EKS optimized AMIs +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has updated the Amazon EKS optimized AMIs (with and without GPU support) to provide various security fixes and AMI optimizations. + + +[.update,date="2018-09-05"] +=== Amazon EKS {aws} Region expansion +Amazon EKS is now available in the Europe (Ireland) (`eu-west-1`) Region. + + +[.update,date="2018-08-31"] +=== Amazon EKS platform version update +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html + +New platform version with support for [.noloc]`Kubernetes` https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/[aggregation layer] and the https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler](HPA). + + +[.update,date="2018-08-22"] +=== New Amazon EKS optimized AMIs and GPU support +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has updated the Amazon EKS optimized AMI to use a new {aws} CloudFormation node template and https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh[bootstrap script]. In addition, a new link:eks/latest/userguide/eks-optimized-ami.html#gpu-ami[Amazon EKS optimized AMI with GPU support,type="documentation"] is available. + + +[.update,date="2018-08-14"] +=== New Amazon EKS optimized AMI patched for `ALAS2-2018-1058` +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has updated the Amazon EKS optimized AMI to address the CVEs that are referenced in https://alas.aws.amazon.com/AL2/ALAS-2018-1058.html[ALAS2-2018-1058]. + + +[.update,date="2018-07-10"] +=== Amazon EKS optimized AMI build scripts +[.update-ulink] +https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html + +Amazon EKS has open-sourced the build scripts that are used to build the Amazon EKS optimized AMI. These build scripts are now available on [.noloc]`GitHub`. + + +[.update,date="2018-06-05"] +=== Amazon EKS initial release +Initial documentation for service launch + +[.level] +== {blank} + +[.update-history] +|=== +|=== diff --git a/latest/ug/getting-started/getting-started-automode.adoc b/latest/ug/getting-started/getting-started-automode.adoc new file mode 100644 index 00000000..734e148b --- /dev/null +++ b/latest/ug/getting-started/getting-started-automode.adoc @@ -0,0 +1,31 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[getting-started-automode,getting-started-automode.title]] += Get started with Amazon EKS – EKS Auto Mode +:info_doctype: section +:info_title: Get started with Amazon EKS – \ + EKS Auto Mode +:info_titleabbrev: Create your first cluster – EKS Auto Mode +:keywords: using, Auto, getting, started, tutorial +:info_abstract: Learn how to create your first Amazon EKS cluster with nodes using EKS Auto Mode + +Like other EKS getting started experiences, creating your first cluster with EKS Auto Mode delegates the management of the cluster itself to {aws}. +However, EKS Auto Mode extends EKS automation by handing responsibility of many essential services needed to set up workload infrastructure (nodes, networks, and various services), making it easier to manage nodes and scale up to meet workload demands. + +Choose from one of the following ways to create a cluster with EKS Auto Mode: + +* <>: Use the `aws` command line interface to create a cluster. +* <>: Use the {aws}} Management Console to create a cluster. +* <>: Use the `eksctl` command line interface to create a cluster. + +If you are comparing different approaches to creating your first EKS cluster, +you should know that EKS Auto Mode has {aws} take over additional cluster management responsibilities +that include setting up components to: + +* Start up and scale nodes as workload demand increases and decreases. +* Regularly upgrade the cluster itself (control plane), node operating systems, and services running on nodes. +* Choose default settings that determine things like the size and speed of node storage and Pod network configuration. + +For details on what you get with EKS Auto Mode clusters, see <>. diff --git a/latest/ug/getting-started/getting-started-console.adoc b/latest/ug/getting-started/getting-started-console.adoc new file mode 100644 index 00000000..f593f89c --- /dev/null +++ b/latest/ug/getting-started/getting-started-console.adoc @@ -0,0 +1,399 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[getting-started-console,getting-started-console.title]] += Get started with Amazon EKS – {aws-management-console} and {aws} CLI +:info_doctype: section +:info_title: Get started with Amazon EKS – {aws-management-console} and \ + {aws} CLI +:info_titleabbrev: Create your first cluster – {aws-management-console} +:keywords: using, {aws-management-console}, {aws} CLI, getting, started, tutorial +:info_abstract: Learn how to create your first Amazon EKS cluster with nodes using the {aws-management-console} and \ + {aws} CLI. + +[abstract] +-- +Learn how to create your first Amazon EKS cluster with nodes using the {aws-management-console} and {aws} CLI. +-- + + +[NOTE] +==== +This topic covers getting started *without* EKS Auto Mode. + +EKS Auto Mode automates routine tasks for cluster compute, storage, and networking. xref:getting-started-automode[Learn how to get started with Amazon EKS Auto Mode. ] +==== + +This guide helps you to create all of the required resources to get started with Amazon Elastic Kubernetes Service (Amazon EKS) using the {aws-management-console} and the {aws} CLI. In this guide, you manually create each resource. At the end of this tutorial, you will have a running Amazon EKS cluster that you can deploy applications to. + +The procedures in this guide give you complete visibility into how each resource is created and how the resources interact with each other. If you'd rather have most of the resources created for you automatically, use the `eksctl` CLI to create your cluster and nodes. For more information, see <>. + +[[eks-prereqs,eks-prereqs.title]] +== Prerequisites + +Before starting this tutorial, you must install and configure the following tools and resources that you need to create and manage an Amazon EKS cluster. + + + +* *{aws} CLI* + – A command line tool for working with {aws} services, including Amazon EKS. For more information, see link:cli/latest/userguide/cli-chap-install.html[Installing, updating, and uninstalling the {aws} CLI,type="documentation"] in the {aws} Command Line Interface User Guide. After installing the {aws} CLI, we recommend that you also configure it. For more information, see link:cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config[Quick configuration with aws configure,type="documentation"] in the {aws} Command Line Interface User Guide. Note that {aws} CLI v2 is required to use the *update-kubeconfig* option shown in this page. +* *`kubectl`* + – A command line tool for working with [.noloc]`Kubernetes` clusters. For more information, see <>. +* *Required IAM permissions* + – The IAM security principal that you're using must have permissions to work with Amazon EKS IAM roles, service linked roles, {aws} CloudFormation, a VPC, and related resources. For more information, see link:service-authorization/latest/reference/list_amazonelastickubernetesservice.html[Actions, resources, and condition keys for Amazon Elastic Kubernetes Service,type="documentation"] and link:IAM/latest/UserGuide/using-service-linked-roles.html[Using service-linked roles,type="documentation"] in the IAM User Guide. You must complete all steps in this guide as the same user. To check the current user, run the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +aws sts get-caller-identity +---- + +We recommend that you complete the steps in this topic in a Bash shell. If you aren't using a Bash shell, some script commands such as line continuation characters and the way variables are set and used require adjustment for your shell. Additionally, the quoting and escaping rules for your shell might be different. For more information, see link:cli/latest/userguide/cli-usage-parameters-quoting-strings.html[Using quotation marks with strings in the {aws} CLI,type="documentation"] in the {aws} Command Line Interface User Guide. + + +[[eks-create-cluster,eks-create-cluster.title]] +== Step 1: Create your Amazon EKS cluster + +[IMPORTANT] +==== + +To get started as simply and quickly as possible, this topic includes steps to create a cluster with default settings. Before creating a cluster for production use, we recommend that you familiarize yourself with all settings and deploy a cluster with the settings that meet your requirements. For more information, see <>. Some settings can only be enabled when creating your cluster. + +==== +. Create an Amazon VPC with public and private subnets that meets Amazon EKS requirements. Replace [.replaceable]`region-code` with any {aws} Region that is supported by Amazon EKS. For a list of {aws} Regions, see link:general/latest/gr/eks.html[Amazon EKS endpoints and quotas,type="documentation"] in the {aws} General Reference guide. You can replace [.replaceable]`my-eks-vpc-stack` with any name you choose. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws cloudformation create-stack \ + --region region-code \ + --stack-name my-eks-vpc-stack \ + --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml +---- ++ +TIP: For a list of all the resources the previous command creates, open the {aws} CloudFormation console at link:cloudformation/[cloudformation,type="console"]. Choose the [.replaceable]`my-eks-vpc-stack` stack and then choose the *Resources* tab. +. Create a cluster IAM role and attach the required Amazon EKS IAM managed policy to it. [.noloc]`Kubernetes` clusters managed by Amazon EKS make calls to other {aws} services on your behalf to manage the resources that you use with the service. ++ +.. Copy the following contents to a file named [.replaceable]`eks-cluster-role-trust-policy.json`. ++ +[source,json,subs="verbatim,attributes"] +---- +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "eks.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] +} +---- +.. Create the role. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam create-role \ + --role-name myAmazonEKSClusterRole \ + --assume-role-policy-document file://"eks-cluster-role-trust-policy.json" +---- +.. Attach the required Amazon EKS managed IAM policy to the role. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam attach-role-policy \ + --policy-arn {arn-aws}iam::aws:policy/AmazonEKSClusterPolicy \ + --role-name myAmazonEKSClusterRole +---- +. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters[https://console.aws.amazon.com/eks/home#/clusters]. ++ +Make sure that the {aws} Region shown in the upper right of your console is the {aws} Region that you want to create your cluster in. If it's not, choose the dropdown next to the {aws} Region name and choose the {aws} Region that you want to use. +. Choose *Add cluster*, and then choose *Create*. If you don't see this option, then choose *Clusters* in the left navigation pane first. +. On the *Configure cluster* page, do the following: ++ +.. Enter a *Name* for your cluster, such as `my-cluster`. The name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the {aws} Region and {aws} account that you're creating the cluster in. +.. For *Cluster Service Role*, choose [.replaceable]`myAmazonEKSClusterRole`. +.. Leave the remaining settings at their default values and choose *Next*. +. On the *Specify networking* page, do the following: ++ +.. Choose the ID of the VPC that you created in a previous step from the *VPC* dropdown list. It is something like [.replaceable]`vpc-00x0000x000x0x000` | [.replaceable]`my-eks-vpc-stack-VPC`. +.. Leave the remaining settings at their default values and choose *Next*. +. On the *Configure observability* page, choose *Next*. +. On the *Select add-ons* page, choose *Next*. ++ +For more information on add-ons, see <>. +. On the *Configure selected add-ons settings* page, choose *Next*. +. On the *Review and create* page, choose *Create*. ++ +To the right of the cluster's name, the cluster status is *Creating* for several minutes until the cluster provisioning process completes. Don't continue to the next step until the status is *Active*. ++ +NOTE: You might receive an error that one of the Availability Zones in your request doesn't have sufficient capacity to create an Amazon EKS cluster. If this happens, the error output contains the Availability Zones that can support a new cluster. Retry creating your cluster with at least two subnets that are located in the supported Availability Zones for your account. For more information, see <>. + + +[[eks-configure-kubectl,eks-configure-kubectl.title]] +== Step 2: Configure your computer to communicate with your cluster + +In this section, you create a `kubeconfig` file for your cluster. The settings in this file enable the `kubectl` CLI to communicate with your cluster. + +Before proceeding, be sure that your cluster creation completed successfully in Step 1. + +. Create or update a `kubeconfig` file for your cluster. Replace [.replaceable]`region-code` with the {aws} Region that you created your cluster in. Replace [.replaceable]`my-cluster` with the name of your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks update-kubeconfig --region region-code --name my-cluster +---- ++ +By default, the `config` file is created in `~/.kube` or the new cluster's configuration is added to an existing `config` file in `~/.kube`. +. Test your configuration. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get svc +---- ++ +NOTE: If you receive any authorization or resource type errors, see <> in the troubleshooting topic. ++ +An example output is as follows. ++ +[source,bash,subs="verbatim,attributes"] +---- +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.100.0.1 443/TCP 1m +---- + + +[[eks-launch-workers,eks-launch-workers.title]] +== Step 3: Create nodes + +[IMPORTANT] +==== + +To get started as simply and quickly as possible, this topic includes steps to create nodes with default settings. Before creating nodes for production use, we recommend that you familiarize yourself with all settings and deploy nodes with the settings that meet your requirements. For more information, see <>. Some settings can only be enabled when creating your nodes. + +==== + +You can create a cluster with one of the following node types. To learn more about each type, see <>. After your cluster is deployed, you can add other node types. + +* *Fargate – [.noloc]``Linux``* – Choose this type of node if you want to run [.noloc]``Linux`` applications on <>. Fargate is a serverless compute engine that lets you deploy [.noloc]``Kubernetes``[.noloc]``Pods`` without managing Amazon EC2 instances. +* *Managed nodes – [.noloc]``Linux``* – Choose this type of node if you want to run Amazon Linux applications on Amazon EC2 instances. Though not covered in this guide, you can also add <> and <> nodes to your cluster. + +==== +[role="tablist"] +Fargate - [.noloc]`Linux`:: + +Create a Fargate profile. When [.noloc]``Kubernetes``[.noloc]``Pods`` are deployed with criteria that matches the criteria defined in the profile, the [.noloc]``Pods`` are deployed to Fargate. ++ +*To create a Fargate profile* ++ +. Create an IAM role and attach the required Amazon EKS IAM managed policy to it. When your cluster creates [.noloc]``Pods`` on Fargate infrastructure, the components running on the Fargate infrastructure must make calls to {aws} APIs on your behalf. This is so that they can do actions such as pull container images from Amazon ECR or route logs to other {aws} services. The Amazon EKS [.noloc]``Pod`` execution role provides the IAM permissions to do this. + +.. Copy the following contents to a file named `pod-execution-role-trust-policy.json`. Replace [.replaceable]`region-code` with the {aws} Region that your cluster is in. If you want to use the same role in all {aws} Regions in your account, replace [.replaceable]`region-code` with `{asterisk}`. Replace [.replaceable]`111122223333` with your account ID and [.replaceable]`my-cluster` with the name of your cluster. If you want to use the same role for all clusters in your account, replace [.replaceable]`my-cluster` with `{asterisk}`. ++ +[source,json,subs="verbatim,attributes"] +---- +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Condition": { + "ArnLike": { + "aws:SourceArn": "{arn-aws}eks:region-code:111122223333:fargateprofile/my-cluster/*" + } + }, + "Principal": { + "Service": "eks-fargate-pods.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] +} +---- + +.. Create a [.noloc]``Pod`` execution IAM role. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam create-role \ + --role-name AmazonEKSFargatePodExecutionRole \ + --assume-role-policy-document file://"pod-execution-role-trust-policy.json" +---- + +.. Attach the required Amazon EKS managed IAM policy to the role. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam attach-role-policy \ + --policy-arn {arn-aws}iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ + --role-name AmazonEKSFargatePodExecutionRole +---- +.. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters[https://console.aws.amazon.com/eks/home#/clusters]. +.. On the *Clusters* page, choose the [.replaceable]`my-cluster` cluster. +.. On the *[.replaceable]`my-cluster`* page, do the following: ++ +.. Choose the *Compute* tab. +.. Under *Fargate Profiles*, choose *Add Fargate Profile*. +. On the *Configure Fargate Profile* page, do the following: ++ +.. For *Name*, enter a unique name for your Fargate profile, such as [.replaceable]`my-profile`. +.. For *Pod execution role*, choose the *AmazonEKSFargatePodExecutionRole* that you created in a previous step. +.. Choose the *Subnets* dropdown and deselect any subnet with `Public` in its name. Only private subnets are supported for [.noloc]``Pods`` that are running on Fargate. +.. Choose *Next*. +. On the *Configure [.noloc]``Pod`` selection* page, do the following: ++ +.. For *Namespace*, enter `default`. +.. Choose *Next*. +. On the *Review and create* page, review the information for your Fargate profile and choose *Create*. +. After a few minutes, the *Status* in the *Fargate Profile configuration* section will change from *Creating* to *Active*. Don't continue to the next step until the status is *Active*. +. If you plan to deploy all [.noloc]`Pods` to Fargate (none to Amazon EC2 nodes), do the following to create another Fargate profile and run the default name resolver ([.noloc]`CoreDNS`) on Fargate. ++ +NOTE: If you don't do this, you won't have any nodes at this time. ++ +.. On the *Fargate Profile* page, choose [.replaceable]`my-profile`. +.. Under *Fargate profiles*, choose *Add Fargate Profile*. +.. For *Name*, enter [.noloc]`CoreDNS`. +.. For *Pod execution role*, choose the *AmazonEKSFargatePodExecutionRole* that you created in a previous step. +.. Choose the *Subnets* dropdown and deselect any subnet with `Public` in its name. Only private subnets are supported for [.noloc]`Pods` running on Fargate. +.. Choose *Next*. +.. For *Namespace*, enter `kube-system`. +.. Choose *Match labels*, and then choose *Add label*. +.. Enter `k8s-app` for *Key* and `kube-dns` for value. This is necessary for the default name resolver ([.noloc]`CoreDNS`) to deploy to Fargate. +.. Choose *Next*. +.. On the *Review and create* page, review the information for your Fargate profile and choose *Create*. +.. Run the following command to remove the default `eks.amazonaws.com/compute-type : ec2` annotation from the [.noloc]`CoreDNS` [.noloc]`Pods`. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl patch deployment coredns \ + -n kube-system \ + --type json \ + -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]' +---- ++ +NOTE: The system creates and deploys two nodes based on the Fargate profile label you added. You won't see anything listed in *Node groups* because they aren't applicable for Fargate nodes, but you will see the new nodes listed in the *Overview* tab. + + +Managed nodes - [.noloc]`Linux`:: + +Create a managed node group, specifying the subnets and node IAM role that you created in previous steps. ++ +*To create your {ec2} [.noloc]`Linux` managed node group* ++ +. Create a node IAM role and attach the required Amazon EKS IAM managed policy to it. The Amazon EKS node `kubelet` daemon makes calls to {aws} APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies. ++ +.. Copy the following contents to a file named `node-role-trust-policy.json`. ++ +[source,json,subs="verbatim,attributes"] +---- +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ec2.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] +} +---- +.. Create the node IAM role. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam create-role \ + --role-name myAmazonEKSNodeRole \ + --assume-role-policy-document file://"node-role-trust-policy.json" +---- +.. Attach the required managed IAM policies to the role. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws iam attach-role-policy \ + --policy-arn {arn-aws}iam::aws:policy/AmazonEKSWorkerNodePolicy \ + --role-name myAmazonEKSNodeRole +aws iam attach-role-policy \ + --policy-arn {arn-aws}iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ + --role-name myAmazonEKSNodeRole +aws iam attach-role-policy \ + --policy-arn {arn-aws}iam::aws:policy/AmazonEKS_CNI_Policy \ + --role-name myAmazonEKSNodeRole +---- +.. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters[https://console.aws.amazon.com/eks/home#/clusters]. +.. Choose the name of the cluster that you created in <>, such as [.replaceable]`my-cluster`. +.. On the *[.replaceable]`my-cluster`* page, do the following: ++ +.. Choose the *Compute* tab. +.. Choose *Add Node Group*. +. On the *Configure Node Group* page, do the following: ++ +.. For *Name*, enter a unique name for your managed node group, such as [.replaceable]`my-nodegroup`. The node group name can't be longer than 63 characters. It must start with letter or digit, but can also include hyphens and underscores for the remaining characters. +.. For *Node IAM role name*, choose [.replaceable]`myAmazonEKSNodeRole` role that you created in a previous step. We recommend that each node group use its own unique IAM role. +.. Choose *Next*. +. On the *Set compute and scaling configuration* page, accept the default values and choose *Next*. +. On the *Specify networking* page, accept the default values and choose *Next*. +. On the *Review and create* page, review your managed node group configuration and choose *Create*. +. After several minutes, the *Status* in the *Node Group configuration* section will change from *Creating* to *Active*. Don't continue to the next step until the status is *Active*. +==== + +[[gs-view-resources,gs-view-resources.title]] + +== Step 4: View resources + +You can view your nodes and [.noloc]`Kubernetes` workloads. + +. In the left navigation pane, choose *Clusters*. In the list of *Clusters*, choose the name of the cluster that you created, such as [.replaceable]`my-cluster`. +. On the *[.replaceable]`my-cluster`* page, choose the following: ++ +.. *Compute* + tab – You see the list of *Nodes* that were deployed for the cluster. You can choose the name of a node to see more information about it. +.. *Resources* tab + – You see all of the [.noloc]`Kubernetes` resources that are deployed by default to an Amazon EKS cluster. Select any resource type in the console to learn more about it. + + +[[gs-console-clean-up,gs-console-clean-up.title]] +== Step 5: Delete resources + +After you've finished with the cluster and nodes that you created for this tutorial, you should delete the resources that you created. If you want to do more with this cluster before you delete the resources, see <>. + +. Delete any node groups or Fargate profiles that you created. ++ +.. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters[https://console.aws.amazon.com/eks/home#/clusters]. +.. In the left navigation pane, choose *Clusters*. In the list of clusters, choose [.replaceable]`my-cluster`. +.. Choose the *Compute* tab. +.. If you created a node group, choose the [.replaceable]`my-nodegroup` node group and then choose *Delete*. Enter [.replaceable]`my-nodegroup`, and then choose *Delete*. +.. For each Fargate profile that you created, choose it and then choose *Delete*. Enter the name of the profile, and then choose *Delete*. ++ +NOTE: When deleting a second Fargate profile, you may need to wait for the first one to finish deleting. +.. Don't continue until the node group or Fargate profiles are deleted. +. Delete the cluster. ++ +.. In the left navigation pane, choose *Clusters*. In the list of clusters, choose [.replaceable]`my-cluster`. +.. Choose *Delete cluster*. +.. Enter [.replaceable]`my-cluster` and then choose *Delete*. Don't continue until the cluster is deleted. +. Delete the VPC {aws} CloudFormation stack that you created. ++ +.. Open the link:cloudformation/[{aws} CloudFormation console,type="console"]. +.. Choose the [.replaceable]`my-eks-vpc-stack` stack, and then choose *Delete*. +.. In the *Delete [.replaceable]`my-eks-vpc-stack`* confirmation dialog box, choose *Delete stack*. +. Delete the IAM roles that you created. ++ +.. Open the IAM console at https://console.aws.amazon.com/iam/. +.. In the left navigation pane, choose *Roles*. +.. Select each role you created from the list (*[.replaceable]`myAmazonEKSClusterRole`*, as well as *AmazonEKSFargatePodExecutionRole* or [.replaceable]`myAmazonEKSNodeRole`). Choose *Delete*, enter the requested confirmation text, then choose *Delete*. + + +[[gs-console-next-steps,gs-console-next-steps.title]] +== Next steps + +The following documentation topics help you to extend the functionality of your cluster. + + + +* The link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] that created the cluster is the only principal that can make calls to the [.noloc]`Kubernetes` API server with `kubectl` or the {aws-management-console}. If you want other IAM principals to have access to your cluster, then you need to add them. For more information, see <> and <>. +* Deploy a <> to your cluster. +* Before deploying a cluster for production use, we recommend familiarizing yourself with all of the settings for <> and <>. Some settings (such as enabling SSH access to Amazon EC2 nodes) must be made when the cluster is created. +* To increase security for your cluster, <>. diff --git a/latest/ug/getting-started/getting-started-eksctl.adoc b/latest/ug/getting-started/getting-started-eksctl.adoc new file mode 100644 index 00000000..4b05e974 --- /dev/null +++ b/latest/ug/getting-started/getting-started-eksctl.adoc @@ -0,0 +1,179 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[getting-started-eksctl,getting-started-eksctl.title]] += Get started with Amazon EKS – `eksctl` +:info_doctype: section +:info_title: Get started with Amazon EKS – \ + eksctl +:info_titleabbrev: Create your first cluster – eksctl +:keywords: using, eksctl, getting, started, tutorial +:info_abstract: Learn how to create your first Amazon EKS cluster with nodes using the eksctl command \ + line tool. + +[abstract] +-- +Learn how to create your first Amazon EKS cluster with nodes using the `eksctl` command line tool. +-- + +[NOTE] +==== +This topic covers getting started *without* EKS Auto Mode. + +EKS Auto Mode automates routine tasks for cluster compute, storage, and networking. xref:getting-started-automode[Learn how to get started with Amazon EKS Auto Mode. ] +==== + + +This guide helps you to create all of the required resources to get started with Amazon Elastic Kubernetes Service (Amazon EKS) using `eksctl`, a simple command line utility for creating and managing [.noloc]`Kubernetes` clusters on Amazon EKS. At the end of this tutorial, you will have a running Amazon EKS cluster that you can deploy applications to. + +The procedures in this guide create several resources for you automatically that you have to create manually when you create your cluster using the {aws-management-console}. If you'd rather manually create most of the resources to better understand how they interact with each other, then use the {aws-management-console} to create your cluster and compute. For more information, see <>. + +[[eksctl-prereqs,eksctl-prereqs.title]] +== Prerequisites + +Before starting this tutorial, you must install and configure the {aws} CLI, kubectl, and eksctl tools as described in <>. + +[[create-cluster-gs-eksctl,create-cluster-gs-eksctl.title]] +== Step 1: Create your Amazon EKS cluster and nodes + +[IMPORTANT] +==== + +To get started as simply and quickly as possible, this topic includes steps to create a cluster and nodes with default settings. Before creating a cluster and nodes for production use, we recommend that you familiarize yourself with all settings and deploy a cluster and nodes with the settings that meet your requirements. For more information, see <> and <>. Some settings can only be enabled when creating your cluster and nodes. + +==== + +You can create a cluster with one of the following node types. To learn more about each type, see <>. After your cluster is deployed, you can add other node types. + + +* *Fargate – [.noloc]``Linux``* – Select this type of node if you want to run [.noloc]``Linux`` applications on <>. Fargate is a serverless compute engine that lets you deploy [.noloc]``Kubernetes`` [.noloc]``Pods`` without managing Amazon EC2 instances. +* *Managed nodes – [.noloc]``Linux``* – Select this type of node if you want to run Amazon Linux applications on Amazon EC2 instances. Though not covered in this guide, you can also add <> and <> nodes to your cluster. + +Create your Amazon EKS cluster with the following command. You can replace [.replaceable]`my-cluster` with your own value. The name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the {aws} Region and {aws} account that you're creating the cluster in. Replace [.replaceable]`region-code` with any {aws} Region that is supported by Amazon EKS. For a list of {aws} Regions, see link:general/latest/gr/eks.html[Amazon EKS endpoints and quotas,type="documentation"] in the {aws} General Reference guide. + +==== +[role="tablist"] +Fargate - [.noloc]`Linux`:: ++ +[source,bash,subs="verbatim,attributes"] +---- +eksctl create cluster --name my-cluster --region region-code --fargate +---- + +Managed nodes - [.noloc]`Linux`:: ++ +[source,bash,subs="verbatim,attributes"] +---- +eksctl create cluster --name my-cluster --region region-code +---- +==== + + +Cluster creation takes several minutes. During creation you'll see several lines of output. The last line of output is similar to the following example line. + +---- +[...] +[✓] EKS cluster "my-cluster" in "`region-code`" region is ready +---- + +`eksctl` created a `kubectl` config file in `~/.kube/config` or added the new cluster's configuration within an existing config file in `~/.kube/config` on your computer. + +After cluster creation is complete, view the {aws} CloudFormation stack named `eksctl-[.replaceable]``my-cluster``-cluster` in the {aws} CloudFormation link:cloudformation/[console,type="console"] to see all of the resources that were created. + +[[gs-eksctl-view-resources,gs-eksctl-view-resources.title]] + + +== Step 2: View [.noloc]`Kubernetes` resources +. View your cluster nodes. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get nodes -o wide +---- ++ +An example output is as follows. ++ +==== +[role="tablist"] +Fargate - [.noloc]`Linux`:: ++ +[source,none,subs="verbatim,attributes"] +---- +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +fargate-ip-192-0-2-0.region-code.compute.internal Ready 8m3s v1.2.3-eks-1234567 192.0.2.0 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 +fargate-ip-192-0-2-1.region-code.compute.internal Ready 7m30s v1.2.3-eks-1234567 192-0-2-1 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 +---- + +Managed nodes - [.noloc]`Linux`:: ++ +[source,none,subs="verbatim,attributes"] +---- +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +ip-192-0-2-0.region-code.compute.internal Ready 6m7s v1.2.3-eks-1234567 192.0.2.0 192.0.2.2 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 +ip-192-0-2-1.region-code.compute.internal Ready 6m4s v1.2.3-eks-1234567 192.0.2.1 192.0.2.3 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 +---- +==== ++ +For more information about what you see in the output, see <>. + +. View the workloads running on your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl get pods -A -o wide +---- ++ +An example output is as follows. ++ +==== +[role="tablist"] +Fargate - [.noloc]`Linux`:: ++ +[source,none,subs="verbatim,attributes"] +---- +NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +kube-system coredns-1234567890-abcde 1/1 Running 0 18m 192.0.2.0 fargate-ip-192-0-2-0.region-code.compute.internal +kube-system coredns-1234567890-12345 1/1 Running 0 18m 192.0.2.1 fargate-ip-192-0-2-1.region-code.compute.internal +---- + +Managed nodes - [.noloc]`Linux`:: ++ +[source,none,subs="verbatim,attributes"] +---- +NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +kube-system aws-node-12345 1/1 Running 0 7m43s 192.0.2.1 ip-192-0-2-1.region-code.compute.internal +kube-system aws-node-67890 1/1 Running 0 7m46s 192.0.2.0 ip-192-0-2-0.region-code.compute.internal +kube-system coredns-1234567890-abcde 1/1 Running 0 14m 192.0.2.3 ip-192-0-2-3.region-code.compute.internal +kube-system coredns-1234567890-12345 1/1 Running 0 14m 192.0.2.4 ip-192-0-2-4.region-code.compute.internal +kube-system kube-proxy-12345 1/1 Running 0 7m46s 192.0.2.0 ip-192-0-2-0.region-code.compute.internal +kube-system kube-proxy-67890 1/1 Running 0 7m43s 192.0.2.1 ip-192-0-2-1.region-code.compute.internal +---- +==== ++ +For more information about what you see in the output, see <>. + + +[[gs-eksctl-clean-up,gs-eksctl-clean-up.title]] + +== Step 3: Delete your cluster and nodes + +After you've finished with the cluster and nodes that you created for this tutorial, you should clean up by deleting the cluster and nodes with the following command. If you want to do more with this cluster before you clean up, see <>. + +[source,bash,subs="verbatim,attributes"] +---- +eksctl delete cluster --name my-cluster --region region-code +---- + + +[[gs-eksctl-next-steps,gs-eksctl-next-steps.title]] +== Next steps + +The following documentation topics help you to extend the functionality of your cluster. + + + +* Deploy a <> to your cluster. +* The link:IAM/latest/UserGuide/id_roles.html#iam-term-principal[IAM principal,type="documentation"] that created the cluster is the only principal that can make calls to the [.noloc]`Kubernetes` API server with `kubectl` or the {aws-management-console}. If you want other IAM principals to have access to your cluster, then you need to add them. For more information, see <> and <>. +* Before deploying a cluster for production use, we recommend familiarizing yourself with all of the settings for <> and <>. Some settings (such as enabling SSH access to Amazon EC2 nodes) must be made when the cluster is created. +* To increase security for your cluster, <>. diff --git a/latest/ug/getting-started/getting-started.adoc b/latest/ug/getting-started/getting-started.adoc new file mode 100644 index 00000000..ae1fc70f --- /dev/null +++ b/latest/ug/getting-started/getting-started.adoc @@ -0,0 +1,45 @@ +//!!NODE_ROOT +include::../attributes.txt[] +[[getting-started,getting-started.title]] += Get started with Amazon EKS +:doctype: book +:sectnums: +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_doctype: chapter +:info_title: Get started with Amazon EKS +:info_titleabbrev: Get started +:info_abstract: Learn about the tools needed for creating and working with an Amazon EKS cluster. +:keywords: getting, started, tutorials, quick, start + +[abstract] +-- +Learn about the tools needed for creating and working with an Amazon EKS cluster. +-- + +Make sure that you are set up to use Amazon EKS before going through the getting started guides. For more information, see <>. + +There are two getting started guides available for creating a new [.noloc]`Kubernetes` cluster with nodes in Amazon EKS: + + + +* <> – This getting started guide helps you to install all of the required resources to get started with Amazon EKS using `eksctl`, a simple command line utility for creating and managing [.noloc]`Kubernetes` clusters on Amazon EKS. At the end of the tutorial, you will have a running Amazon EKS cluster that you can deploy applications to. This is the fastest and simplest way to get started with Amazon EKS. +* <> – This getting started guide helps you to create all of the required resources to get started with Amazon EKS using the {aws-management-console} and {aws} CLI. At the end of the tutorial, you will have a running Amazon EKS cluster that you can deploy applications to. In this guide, you manually create each resource required for an Amazon EKS cluster. The procedures give you visibility into how each resource is created and how they interact with each other. + +We also offer the following references: + + + +* For a collection of hands-on tutorials, see https://community.aws/tags/eks-cluster-setup[EKS Cluster Setup] on _{aws} Community_. +* For code examples, see link:code-library/latest/ug/eks_code_examples.html[Code examples for Amazon EKS using {aws} SDKs,type="documentation"]. + + +include::getting-started-automode.adoc[leveloffset=+1] + +include::getting-started-eksctl.adoc[leveloffset=+1] + +include::getting-started-console.adoc[leveloffset=+1] diff --git a/latest/ug/getting-started/install-awscli.adoc b/latest/ug/getting-started/install-awscli.adoc new file mode 100644 index 00000000..08e3a9cf --- /dev/null +++ b/latest/ug/getting-started/install-awscli.adoc @@ -0,0 +1,114 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[install-awscli,install-awscli.title]] += Set up {aws} CLI +:info_doctype: section +:info_title: Set up {aws} CLI +:info_titleabbrev: Set up {aws} CLI +:keywords: setting up, setup +:info_abstract: Set up the {aws} CLI for managing {aws} resources needed to use Amazon EKS. Follow these \ + instructions to set up the credentials with {aws} CLI. + +[abstract] +-- +Set up the {aws} CLI for managing {aws} resources needed to use Amazon EKS. Follow these instructions to set up the credentials with {aws} CLI. +-- + +The link:cli/[{aws} CLI,type="marketing"] is a command line tool for working with {aws} services, including Amazon EKS. It is also used to authenticate IAM users or roles for access to the Amazon EKS cluster and other {aws} resources from your local machine. To provision resources in {aws} from the command line, you need to obtain an {aws} access key ID and secret key to use in the command line. Then you need to configure these credentials in the {aws} CLI. If you haven't already installed the {aws} CLI, see link:cli/latest/userguide/cli-chap-install.html[Install or update the latest version of the {aws} CLI,type="documentation"] in the _{aws} Command Line Interface User Guide_. + +[[create-access-key,create-access-key.title]] +== To create an access key +. Sign into the https://console.aws.amazon.com/[{aws-management-console}]. +. For single-user or multiple-user accounts: ++ +** *Single-user account –*:: + In the top right, choose your {aws} user name to open the navigation menu. For example, choose *`webadmin`*. +** *Multiple-user account –*:: + Choose IAM from the list of services. From the IAM Dashboard, select *Users*, and choose the name of the user. +. Choose *Security credentials*. +. Under *Access keys*, choose *Create access key*. +. Choose *Command Line Interface (CLI)*, then choose *Next*. +. Choose *Create access key*. +. Choose *Download .csv file*. + + +[[configure-cli,configure-cli.title]] +== To configure the {aws} CLI + +After installing the {aws} CLI, do the following steps to configure it. For more information, see link:cli/latest/userguide/cli-chap-configure.html[Configure the {aws} CLI,type="documentation"] in the _{aws} Command Line Interface User Guide_. + +. In a terminal window, enter the following command: ++ +[source,bash,subs="verbatim,attributes"] +---- +aws configure +---- ++ +Optionally, you can configure a named profile, such as `--profile cluster-admin`. If you configure a named profile in the {aws} CLI, you must *always* pass this flag in subsequent commands. +. Enter your {aws} credentials. For example: ++ +[source,bash,subs="verbatim,attributes"] +---- +Access Key ID [None]: AKIAIOSFODNN7EXAMPLE +Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY +Default region name [None]: region-code +Default output format [None]: json +---- + + +[[security-token,security-token.title]] +== To get a security token + +If needed, run the following command to get a new security token for the {aws} CLI. For more information, see link:cli/latest/reference/sts/get-session-token.html[get-session-token,type="documentation"] in the _{aws} CLI Command Reference_. + +By default, the token is valid for 15 minutes. To change the default session timeout, pass the `--duration-seconds` flag. For example: + +[source,bash,subs="verbatim,attributes"] +---- +aws sts get-session-token --duration-seconds 3600 +---- + +This command returns the temporary security credentials for an {aws} CLI session. You should see the following response output: + +[source,bash,subs="verbatim,attributes"] +---- +{ + "Credentials": { + "AccessKeyId": "ASIA5FTRU3LOEXAMPLE", + "SecretAccessKey": "JnKgvwfqUD9mNsPoi9IbxAYEXAMPLE", + "SessionToken": "VERYLONGSESSIONTOKENSTRING", + "Expiration": "2023-02-17T03:14:24+00:00" + } +} +---- + + +[[verify-identity,verify-identity.title]] +== To verify the user identity + +If needed, run the following command to verify the {aws} credentials for your IAM user identity (such as [.replaceable]`ClusterAdmin`) for the terminal session. + +[source,bash,subs="verbatim,attributes"] +---- +aws sts get-caller-identity +---- + +This command returns the Amazon Resource Name (ARN) of the IAM entity that's configured for the {aws} CLI. You should see the following example response output: + +[source,bash,subs="verbatim,attributes"] +---- +{ + "UserId": "AKIAIOSFODNN7EXAMPLE", + "Account": "01234567890", + "Arn": "{arn-aws}iam::01234567890:user/ClusterAdmin" +} +---- + + +[[install-awscli-next-steps,install-awscli-next-steps.title]] +== Next steps + +* <> +* <> diff --git a/latest/ug/getting-started/install-kubectl.adoc b/latest/ug/getting-started/install-kubectl.adoc new file mode 100644 index 00000000..384eb84c --- /dev/null +++ b/latest/ug/getting-started/install-kubectl.adoc @@ -0,0 +1,816 @@ +//!!NODE_ROOT
+ + +[.topic] +[[install-kubectl,install-kubectl.title]] += Set up `kubectl` and `eksctl` +:info_doctype: section +:info_title: Set up kubectl and eksctl +:info_titleabbrev: Set up kubectl and eksctl +:keywords: install, update, kubectl +:info_abstract: Learn how to install or update the kubectl and eksctl command line tools \ + to work with Kubernetes and Amazon EKS features. + + +include::../attributes.txt[] + +[abstract] +-- +Learn how to install or update the `kubectl` and `eksctl` command line tools to work with [.noloc]`Kubernetes` and Amazon EKS features. +-- + +`Kubectl` is a command line tool that you use to communicate with the [.noloc]`Kubernetes` API server. The `kubectl` binary is available in many operating system package managers. Using a package manager for your installation is often easier than a manual download and install process. The `eksctl` command lets you create and modify Amazon EKS clusters. + +Topics on this page help you install and set up these tools: + + + +* <> +* <> + + +[[kubectl-install-update,kubectl-install-update.title]] +== Install or update `kubectl` + +This topic helps you to download and install, or update, the `kubectl` binary on your device. The binary is identical to the https://kubernetes.io/docs/tasks/tools/#kubectl[upstream community versions]. The binary is not unique to Amazon EKS or {aws}. Use the steps below to get the specific version of `kubectl` that you need, although many builders simply run `brew install kubectl` to install it. + +[NOTE] +==== + +You must use a `kubectl` version that is within one minor version difference of your Amazon EKS cluster control plane. For example, a `1.30` `kubectl` client works with [.noloc]`Kubernetes` `1.29`, `1.30`, and `1.31` clusters. + +==== + +== Step 1: Check if `kubectl` is installed + +Determine whether you already have `kubectl` installed on your device. + +[source,bash,subs="verbatim,attributes"] +---- +kubectl version --client +---- + +If you have `kubectl` installed in the path of your device, the example output includes information similar to the following. If you want to update the version that you currently have installed with a later version, complete the next step, making sure to install the new version in the same location that your current version is in. + +[source,bash,subs="verbatim,attributes"] +---- +Client Version: v1.31.X-eks-1234567 +---- + +If you receive no output, then you either don't have `kubectl` installed, or it's not installed in a location that's in your device's path. + +== Step 2: Install or update `kubectl` + +Install or update `kubectl` on one of the following operating systems: + +* <> +* <> +* <> +* <> + +=== macOS [[macos_kubectl]] + +. Download the binary for your cluster's [.noloc]`Kubernetes` version from Amazon S3. ++ +**** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/darwin/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/darwin/amd64/kubectl +---- +. (Optional) Verify the downloaded binary with the `SHA-256` checksum for your binary. ++ +.. Download the `SHA-256` checksum for your cluster's [.noloc]`Kubernetes` version. ++ +***** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/darwin/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/darwin/amd64/kubectl.sha256 +---- +.. Check the `SHA-256` checksum for your downloaded binary. ++ +[source,bash,subs="verbatim,attributes"] +---- +openssl sha1 -sha256 kubectl +---- +.. Make sure that the generated checksum in the output matches in the checksum in the downloaded `kubectl.sha256` file. +. Apply execute permissions to the binary. ++ +[source,bash,subs="verbatim,attributes"] +---- +chmod +x ./kubectl +---- +. Copy the binary to a folder in your `PATH`. If you have already installed a version of `kubectl`, then we recommend creating a `$HOME/bin/kubectl` and ensuring that `$HOME/bin` comes first in your `$PATH`. ++ +[source,bash,subs="verbatim,attributes"] +---- +mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH +---- +. (Optional) Add the `$HOME/bin` path to your shell initialization file so that it is configured when you open a shell. ++ +[source,bash,subs="verbatim,attributes"] +---- +echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile +---- + +=== Linux (amd64) [[linux_amd64_kubectl]] + +. Download the `kubectl` binary for your cluster's [.noloc]`Kubernetes` version from Amazon S3. ++ +**** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/linux/amd64/kubectl +---- +**** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/linux/amd64/kubectl +---- +. (Optional) Verify the downloaded binary with the `SHA-256` checksum for your binary. ++ +.. Download the `SHA-256` checksum for your cluster's [.noloc]`Kubernetes` version from Amazon S3using the command for your device's hardware platform. ++ +***** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/linux/amd64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/linux/amd64/kubectl.sha256 +---- +.. Check the `SHA-256` checksum for your downloaded binary with one of the following commands. ++ +[source,bash,subs="verbatim,attributes"] +---- +sha256sum -c kubectl.sha256 +---- +or ++ +---- +openssl sha1 -sha256 kubectl +---- +.. For the first, you should see `kubectl: OK`, for the second, you can check that the generated checksum in the output matches in the checksum in the downloaded `kubectl.sha256` file. +. Apply execute permissions to the binary. ++ +[source,bash,subs="verbatim,attributes"] +---- +chmod +x ./kubectl +---- +. Copy the binary to a folder in your `PATH`. If you have already installed a version of `kubectl`, then we recommend creating a `$HOME/bin/kubectl` and ensuring that `$HOME/bin` comes first in your `$PATH`. ++ +[source,bash,subs="verbatim,attributes"] +---- +mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH +---- +. (Optional) Add the `$HOME/bin` path to your shell initialization file so that it is configured when you open a shell. ++ +NOTE: This step assumes you are using the Bash shell; if you are using another shell, change the command to use your specific shell initialization file. ++ +[source,bash,subs="verbatim,attributes"] +---- +echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc +---- + +=== Linux (arm64) [[linux_arm64_kubectl]] + +. Download the `kubectl` binary for your cluster's [.noloc]`Kubernetes` version from Amazon S3. ++ +**** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/linux/arm64/kubectl +---- +**** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/linux/arm64/kubectl +---- +. (Optional) Verify the downloaded binary with the `SHA-256` checksum for your binary. ++ +.. Download the `SHA-256` checksum for your cluster's [.noloc]`Kubernetes` version from Amazon S3using the command for your device's hardware platform. ++ +***** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/linux/arm64/kubectl.sha256 +---- +***** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/linux/arm64/kubectl.sha256 +---- +.. Check the `SHA-256` checksum for your downloaded binary with one of the following commands. ++ +[source,bash,subs="verbatim,attributes"] +---- +sha256sum -c kubectl.sha256 +---- +or ++ +---- +openssl sha1 -sha256 kubectl +---- +.. For the first, you should see `kubectl: OK`, for the second, you can check that the generated checksum in the output matches in the checksum in the downloaded `kubectl.sha256` file. +. Apply execute permissions to the binary. ++ +[source,bash,subs="verbatim,attributes"] +---- +chmod +x ./kubectl +---- +. Copy the binary to a folder in your `PATH`. If you have already installed a version of `kubectl`, then we recommend creating a `$HOME/bin/kubectl` and ensuring that `$HOME/bin` comes first in your `$PATH`. ++ +[source,bash,subs="verbatim,attributes"] +---- +mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH +---- +. (Optional) Add the `$HOME/bin` path to your shell initialization file so that it is configured when you open a shell. ++ +NOTE: This step assumes you are using the Bash shell; if you are using another shell, change the command to use your specific shell initialization file. ++ +[source,bash,subs="verbatim,attributes"] +---- +echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc +---- + +=== Windows [[windows_kubectl]] + +. Open a [.noloc]`PowerShell` terminal. +. Download the `kubectl` binary for your cluster's [.noloc]`Kubernetes` version from Amazon S3. ++ +**** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/windows/amd64/kubectl.exe +---- +**** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/windows/amd64/kubectl.exe +---- +. (Optional) Verify the downloaded binary with the `SHA-256` checksum for your binary. ++ +.. Download the `SHA-256` checksum for your cluster's [.noloc]`Kubernetes` version for [.noloc]`Windows`. ++ +***** [.noloc]`Kubernetes` `1.32` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.32.0/2024-12-20/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.31` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.3/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.30` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.7/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.29` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.10/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.28` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.15/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.27` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.16/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.26` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.15/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.25` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.16/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.24` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.17/2024-12-12/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.23` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.17/2024-09-11/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.22` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.17/2024-09-11/bin/windows/amd64/kubectl.exe.sha256 +---- +***** [.noloc]`Kubernetes` `1.21` ++ +[source,bash,subs="verbatim,attributes"] +---- +curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.14/2024-09-11/bin/windows/amd64/kubectl.exe.sha256 +---- +.. Check the `SHA-256` checksum for your downloaded binary. ++ +[source,bash,subs="verbatim,attributes"] +---- +Get-FileHash kubectl.exe +---- +.. Make sure that the generated checksum in the output matches in the checksum in the downloaded `kubectl.sha256` file. The PowerShell output should be an uppercase equivalent string of characters. +. Copy the binary to a folder in your `PATH`. If you have an existing directory in your `PATH` that you use for command line utilities, copy the binary to that directory. Otherwise, complete the following steps. ++ +.. Create a new directory for your command line binaries, such as `C:\bin`. +.. Copy the `kubectl.exe` binary to your new directory. +.. Edit your user or system `PATH` environment variable to add the new directory to your `PATH`. +.. Close your [.noloc]`PowerShell` terminal and open a new one to pick up the new `PATH` variable. +. After you install `kubectl`, you can verify its version. ++ +[source,bash,subs="verbatim,attributes"] +---- +kubectl version --client +---- +. When first installing `kubectl`, it isn't yet configured to communicate with any server. We will cover this configuration as needed in other procedures. If you ever need to update the configuration to communicate with a particular cluster, you can run the following command.Replace [.replaceable]`region-code` with the {aws} Region that your cluster is in. Replace [.replaceable]`my-cluster` with the name of your cluster. ++ +[source,bash,subs="verbatim,attributes"] +---- +aws eks update-kubeconfig --region region-code --name my-cluster +---- +. Consider configuring auto completion, which lets you use the tab key to complete `kubectl` subcommands after typing the first few letters. See https://kubernetes.io/docs/reference/kubectl/quick-reference/#kubectl-autocomplete[Kubectl autocomplete] in the [.noloc]`Kubernetes` documentation for details. + + +[[eksctl-install-update,eksctl-install-update.title]] +== Install `eksctl` + +The `eksctl` CLI is used to work with EKS clusters. It automates many individual tasks. See https://eksctl.io/installation[Installation] in the `eksctl` documentation for instructions on installing `eksctl`. + +When using `eksctl` the IAM security principal that you're using must have permissions to work with Amazon EKS IAM roles, service linked roles, {aws} CloudFormation, a VPC, and related resources. For more information, see link:service-authorization/latest/reference/list_amazonelastickubernetesservice.html[Actions, resources, and condition keys for Amazon Elastic Container Service for Kubernetes,type="documentation"] and link:IAM/latest/UserGuide/using-service-linked-roles.html[Using service-linked roles,type="documentation"] in the IAM User Guide. You must complete all steps in this guide as the same user. To check the current user, run the following command: + +[source,bash,subs="verbatim,attributes"] +---- +aws sts get-caller-identity +---- + + +[[install-kubectl-next-steps,install-kubectl-next-steps.title]] +== Next steps + +* <> diff --git a/latest/ug/getting-started/learn-eks.adoc b/latest/ug/getting-started/learn-eks.adoc new file mode 100644 index 00000000..1631c12e --- /dev/null +++ b/latest/ug/getting-started/learn-eks.adoc @@ -0,0 +1,158 @@ +//!!NODE_ROOT
+include::../attributes.txt[] + +[.topic] +[[learn-eks,learn-eks.title]] += Learn Amazon EKS by example +:info_doctype: chapter +:info_title: Learn Amazon EKS by example +:info_titleabbrev: Learn Amazon EKS +:keywords: tutorial, workshop, developer, learn +:info_abstract: Find learning paths to extend your knowledge of Amazon EKS. +:sectnums: +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . + +[abstract] +-- +Find learning paths to extend your knowledge of Amazon EKS. +-- + +[[overview,overview.title]] +== Overview + +This Amazon EKS User Guide contains general-purpose procedures to create your first EKS cluster from the <> or <> and a solid reference for all major Amazon EKS components. However, as an Amazon EKS cluster administrator or developer, you can gain a deeper understanding of Amazon EKS by following learning paths that exist in sites outside of this guide. These sites can help you: + + + +* *Set up specific types of clusters*. Specific cluster types can be based on your workload types or security requirements. For example, you may want to tune a cluster to run batch, machine learning, or compute-intensive workloads. +* *Enhance your clusters*. You can add advanced features to your cluster to provide things like observability,flexible storage, autoscaling, or specialized cluster networking. +* *Automate updates*. Using features like GitOps, you can set up to provision cluster infrastructure and workloads automatically, based on changes that occur to those components in your Git repositories. +* *Use advanced cluster setup tools*. While `eksctl` provides a quick way to create a cluster, there are other tools that can make it easier to configure and upgrade more complex clusters. These include tools like https://www.terraform.io/[Terraform] and link:cloudformation/[CloudFormation,type="marketing"]. + +To start out on your Amazon EKS learning path, I recommend that you visit some of the sites described on this page. If you run into problems along the way, there are also resources to help you get through them. For example, the https://repost.aws/search/content?globalSearch=EKS[Re:post Knowledge Center] lets you search the support database for Amazon EKS-related support issues. Also the https://aws.github.io/aws-eks-best-practices/[Amazon EKS Best Practices Guide] offers tips on the best ways to set up your production-grade clusters. + +[[eks-workshop,eks-workshop.title]] +== Amazon EKS Workshop + +Starting with a basic understanding of Kubernetes and containers, the https://www.eksworkshop.com/[Amazon EKS workshop] is a learning platform for walking a cluster administrator through important features of Amazon EKS. Here are ways you can engage with the Amazon EKS workshop: + + + +* *Amazon EKS Basics*: Watch the video on the https://www.eksworkshop.com/docs/introduction[Introduction] page to learn about how Amazon EKS implements Kubernetes features on the {aws} cloud. If you need an even more basic understanding of Kubernetes, watch the https://www.youtube.com/watch?v=a2gfpZE8vXY[What is Kubernetes] video. +* *Amazon EKS Setup*: If you have an {aws} account, the https://www.eksworkshop.com/docs/introduction/setup/[Setup] section helps you set up a CloudShell environment to you for creating a cluster. It offers a choice of https://www.eksworkshop.com/docs/introduction/setup/your-account/using-eksctl[eksctl] (a simple cluster creation command line) and https://www.eksworkshop.com/docs/introduction/setup/your-account/using-terraform[Terraform] (a more infrastructure-as-code approach to creating a cluster) for creating your Amazon EKS cluster. +* *Amazon EKS Getting started*: Try out a simple web store from the https://www.eksworkshop.com/docs/introduction/getting-started/about[Sample application] section. You can use this throughout the other exercises. In this section, you can also learn about https://www.eksworkshop.com/docs/introduction/getting-started/packaging-application[packaging container images] and how microservices are managed using Kubernetes Pods, Deployments, Services, StatefulSets and Namespaces. Then use Kustomize to deploy changes to Kubernetes manifests. +* *Amazon EKS Fundamentals*: Using {aws} features such as the https://www.eksworkshop.com/docs/fundamentals/exposing/aws-lb-controller[{aws} Load Balancer Controller], the workshop shows you how to expose your applications to the outside world. For storage, the workshop showcases how to use https://www.eksworkshop.com/docs/fundamentals/storage/ebs/[Amazon EBS] for block storage, https://www.eksworkshop.com/docs/fundamentals/storage/efs/[Amazon EFS] for filesystem storage, and Amazon FSx for NetApp ONTAP to manage ONTAP file systems in {aws}. For node management, the workshop helps you set up https://www.eksworkshop.com/docs/fundamentals/managed-node-groups/[Managed Node Groups]. +* *Amazon EKS advanced features*: More advanced features offered through the Amazon EKS workshop include labs for setting up: ++ +** Autoscaling: This includes node autoscaling (with https://www.eksworkshop.com/docs/autoscaling/compute/cluster-autoscaler/[Cluster Autoscaler] or https://www.eksworkshop.com/docs/autoscaling/compute/karpenter/[Karpenter]) and workload autoscaling (with https://www.eksworkshop.com/docs/autoscaling/workloads/horizontal-pod-autoscaler/[Horizontal Pod Autoscaler] and https://www.eksworkshop.com/docs/autoscaling/workloads/cluster-proportional-autoscaler/[Cluster Proportional Autoscaler]). +** Observability: Learn about https://www.eksworkshop.com/docs/observability/logging/[Logging], https://www.eksworkshop.com/docs/observability/opensearch/[OpenSearch], https://www.eksworkshop.com/docs/observability/container-insights/[Container Insights on Amazon EKS], and https://www.eksworkshop.com/docs/observability/kubecost/[Cost Visibility with Kubecost] in a set of https://www.eksworkshop.com/docs/observability/[Observability labs]. +** Security: This set of https://www.eksworkshop.com/docs/security/[Security labs] let you explore https://www.eksworkshop.com/docs/security/secrets-management/[Secrets Management], https://www.eksworkshop.com/docs/security/guardduty/[Amazon GuardDuty], https://www.eksworkshop.com/docs/security/pod-security-standards/[Pod Security Standards], and https://www.eksworkshop.com/docs/security/kyverno/[Kyverno policy management]. +** Networking: Learn networking features for Amazon EKS from https://www.eksworkshop.com/docs/networking/[Networking] labs that include https://www.eksworkshop.com/docs/networking/vpc-cni/[Amazon VPC CNI] (supporting network plugins) and https://www.eksworkshop.com/docs/networking/vpc-lattice/[Amazon VPC Lattice] (for configuring clusters across VC and user accounts). +** Automation: Labs on https://www.eksworkshop.com/docs/automation/[Automation] step you through https://www.eksworkshop.com/docs/automation/gitops/[GitOps] methods of managing your clusters and projects like https://www.eksworkshop.com/docs/automation/controlplanes/ack/[{aws} Controllers for Kubernetes] and https://www.eksworkshop.com/docs/automation/controlplanes/crossplane/[Crossplane] for managing Amazon EKS control planes. + + +[[eks-hands-on-cluster-setup-tutorials,eks-hands-on-cluster-setup-tutorials.title]] +== Amazon EKS hands-on cluster setup tutorials + +A set of https://community.aws/tags/eks-cluster-setup[Amazon EKS Cluster Setup tutorials] on the {aws} Community site can help you create special-purpose Amazon EKS clusters and enhance those clusters in various ways. The tutorials are divided into three different types: + +_Building clusters_ + +These tutorials help you build clusters that can be used for special purposes. These special purposes include the ability to run: + + + +* https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-ipv6-globally-scalable[Globally scalable applications based on IPv6] +* https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-batch-processing[Asynchronous batch tasks] +* https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-high-traffic[High traffic microservices] +* https://community.aws/tutorials/navigating-amazon-eks/eks-karpenter-fargate[Autoscaling with Karpenter on Fargate] +* https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-financial-workload[Financial workloads] +* https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-windows-fargate[Windows Managed Node Groups] + +_Enhancing clusters_ + +Once you have an existing cluster, you can extend and enhance that cluster in ways that allow it to run specialized workloads and otherwise enhance the clusters. These tutorials include ways to: + + + +* https://community.aws/tutorials/navigating-amazon-eks/eks-with-efs-add-on/[Provide storage solutions with EFS CSI] +* https://community.aws/tutorials/navigating-amazon-eks/eks-dynamic-db-storage-ebs-csi[Provide dynamic database storage with EBS CSI] +* https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-load-balancer-ipv4[Expose applications on IPv4 clusters using the {aws} Load Balancer Controller] +* https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-load-balancer-ipv6[Expose applications on IPv6 clusters using the {aws} Load Balancer Controller] + +_Optimizing {aws} services_ + +Using these tutorials, you can better integrate your clusters with {aws} services. These tutorials include those that help you: + + + +* https://community.aws/tutorials/navigating-amazon-eks/automating-dns-records-for-microservices-using-externaldns/[Manage DNS records for microservices with ExternalDNS] +* https://community.aws/tutorials/navigating-amazon-eks/eks-monitor-containerized-applications[Monitor applications with CloudWatch] +* https://community.aws/tutorials/navigating-amazon-eks/managing-high-volume-batch-sqs-eks[Manage asynchronous tasks with SQS and EFS storage] +* https://community.aws/tutorials/navigating-amazon-eks/eks-integrate-secrets-manager[Consume {aws} Secrets Manager Secrets from workloads] +* https://community.aws/tutorials/navigating-amazon-eks/eks-fargate-mtls-nginx-controller[Set up mTLS with Fargate, NGINX, and ACM PCA] + + +[[eks-samples,eks-samples.title]] +== Amazon EKS Samples + +The https://github.com/aws-samples/aws-eks-se-samples[Amazon EKS Samples] repository stores manifests to use with Amazon EKS. These manifests give you the opportunity to try out different kinds of applications in Amazon EKS or create specific types of Amazon EKS clusters. Samples include manifests to: + + + +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/eksctl/how-to-eks-fargate[Create an {aws} Amazon EKS Fargate cluster] +* https://github.com/aws-samples/aws-eks-se-samples/blob/main/examples/eksctl/how-to-existing-iamrole/existing-role.yaml[Create a cluster with an existing IAM role] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/eksctl/how-to-ubuntu-nodegroups[Add and Ubuntu Managed Node Group to a cluster] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-backup-restore-ebs-pvc[Backup and restore Pod storage with volume snapshots] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-dr-multi-account[Recover EBS volumes mounted as PVCs with multiple accounts] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-enable-proxy-procotcol-clb[Enable proxy protocol for NGINX Ingress Controller with Classic Load Balancers] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-logging-eks-fargate-opensearch[Configure Logging on Fargate to {aws} OpenSearch] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-python-sdk-containers[Run Python SDK with a web federated identity provider] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-setup-nfs-csi-eks[Deploy a sample app on an NFS CSI controller] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-snapshot-restore-resize-sts[Use volume snapshots for StatefulSets] +* https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-topology-awareness-hints[Deploy pods across nodes on different availability zones] + +Keep in mind that these samples are for learning and testing purposes only and are not intended to be used in production. + +[[aws-tutorials,aws-tutorials.title]] +== {aws} Tutorials + +The link:tutorials[{aws} Tutorials,type="marketing"] site publishes a few Amazon EKS tutorials, but also offers a search tool to find other tutorials published on {aws} sites (such as the {aws} Community site). Amazon EKS tutorials published directly on this site include: + + + +* link:tutorials/deploy-webapp-eks/[Deploy a Container Web App on Amazon EKS,type="marketing"] +* link:tutorials/amazon-eks-with-spot-instances/[Run Kubernetes clusters for less (Amazon EKS and Spot instances),type="marketing"] +* link:tutorials/cost-optimize-jenkins/[How to cost optimize Jenkins jobs on Kubernetes,type="marketing"] + + +[[developers-workshop,developers-workshop.title]] +== Developers Workshop + +If you are a software developer, looking to create or refactor applications to run on Amazon EKS, the http://developers.eksworkshop.com[Amazon EKS Developers workshop]is a good place to start. The workshop not only helps you build containerized applications, but also helps you deploy those containers to a container registry (link:ecr/[ECR,type="marketing"]) and from there to an Amazon EKS cluster. + +Start with the https://developers.eksworkshop.com/docs/python/[Amazon EKS Python Workshop] to go through the process of refactoring a python application, then set up your development environment to prepare for deploying the application. Step through sections on Containers, Kubernetes, and Amazon EKS to prepare to run your containerized applications in those environments. + +[[terraform-workshop,terraform-workshop.title]] +== Terraform Workshop + +While `eksctl` is a simple tool for creating a cluster, for more complex infrastructure-as-code types of Amazon EKS deployments, https://www.terraform.io/[Terraform] is a popular Amazon EKS cluster creation and management tool. The https://catalog.us-east-1.prod.workshops.aws/workshops/afee4679-89af-408b-8108-44f5b1065cc7/en-US[Terraform Amazon EKS Workshop] teaches how to use Terraform to build an {aws} VPC, create Amazon EKS clusters, and add optional enhancements to your cluster. In particular, there is a section for creating a https://catalog.us-east-1.prod.workshops.aws/workshops/afee4679-89af-408b-8108-44f5b1065cc7/en-US/500-eks-terraform-workshop[private Amazon EKS cluster] + +[[aws-eks-training,aws-eks-training.title]] +== {aws} Amazon EKS Training + +{aws} offers formal training for learning about Amazon EKS. A three-day training course entitled link:training/classroom/running-containers-on-amazon-elastic-kubernetes-service-amazon-eks/[Running Containers on Amazon Elastic Kubernetes Service,type="marketing"] teaches: + + + +* Kubernetes and Amazon EKS fundamentals +* How to build Amazon EKS clusters +* Securing Amazon EKS with {aws} IAM and Kubernetes RBAC authorization +* GitOps automation tools +* Monitoring tools +* Techniques for improving cost, efficiency, and resiliency diff --git a/latest/ug/getting-started/setting-up.adoc b/latest/ug/getting-started/setting-up.adoc new file mode 100644 index 00000000..036f8986 --- /dev/null +++ b/latest/ug/getting-started/setting-up.adoc @@ -0,0 +1,47 @@ +//!!NODE_ROOT +include::../attributes.txt[] +[[setting-up,setting-up.title]] += Set up to use Amazon EKS +:doctype: book +:sectnums: +:toc: left +:icons: font +:experimental: +:idprefix: +:idseparator: - +:sourcedir: . +:info_doctype: chapter +:info_title: Set up to use Amazon EKS +:info_titleabbrev: Set up +:keywords: setting up, setup +:info_abstract: Set up the tools needed for creating and working with an Amazon EKS cluster. + +[abstract] +-- +Set up the tools needed for creating and working with an Amazon EKS cluster. +-- + +To prepare for the command-line management of your Amazon EKS clusters, you need to install several tools. Use the following to set up credentials, create and modify clusters, and work with clusters once they are running: + + + +* <> – Get the {aws} CLI to set up and manage the services you need to work with Amazon EKS clusters. In particular, you need {aws} CLI to configure credentials, but you also need it with other {aws} services. +* <> – The `eksctl` CLI interacts with {aws} to create, modify, and delete Amazon EKS clusters. Once a cluster is up, use the open source `kubectl` command to manage Kubernetes objects within your Amazon EKS clusters. +* Set up a development environment (optional)– Consider adding the following tools: ++ +** *Local deployment tool* – If you're new to [.noloc]`Kubernetes`, consider installing a local deployment tool like https://minikube.sigs.k8s.io/docs/[minikube] or https://kind.sigs.k8s.io/[kind]. These tools allow you to have an Amazon EKS cluster on your local machine for testing applications. +** *Package manager* – https://helm.sh/docs/intro/install/[Helm] is a popular package manager for [.noloc]`Kubernetes` that simplifies the installation and management of complex packages. With [.noloc]`Helm`, it's easier to install and manage packages like the {aws} Load Balancer Controller on your Amazon EKS cluster. + + +[[setting-up-next-steps,setting-up-next-steps.title]] +== Next steps + +* <> +* <> +* <> + + +include::install-awscli.adoc[leveloffset=+1] + + +include::install-kubectl.adoc[leveloffset=+1] diff --git a/latest/ug/iam_policies/AmazonEKS_CNI_IPv6_Policy.json b/latest/ug/iam_policies/AmazonEKS_CNI_IPv6_Policy.json new file mode 100644 index 00000000..23d72e4e --- /dev/null +++ b/latest/ug/iam_policies/AmazonEKS_CNI_IPv6_Policy.json @@ -0,0 +1,25 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:AssignIpv6Addresses", + "ec2:DescribeInstances", + "ec2:DescribeTags", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeInstanceTypes" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "ec2:CreateTags" + ], + "Resource": [ + "arn:aws:ec2:*:*:network-interface/*" + ] + } + ] +} diff --git a/latest/ug/iam_policies/EKS_trust_relationship.json b/latest/ug/iam_policies/EKS_trust_relationship.json new file mode 100644 index 00000000..d763eb1f --- /dev/null +++ b/latest/ug/iam_policies/EKS_trust_relationship.json @@ -0,0 +1,12 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ssm.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] +} \ No newline at end of file diff --git a/latest/ug/iam_policies/Worker_node_trust_relationship.json b/latest/ug/iam_policies/Worker_node_trust_relationship.json new file mode 100644 index 00000000..3c0e5598 --- /dev/null +++ b/latest/ug/iam_policies/Worker_node_trust_relationship.json @@ -0,0 +1,12 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ec2.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] +} \ No newline at end of file diff --git a/latest/ug/images/2048.png b/latest/ug/images/2048.png new file mode 100644 index 0000000000000000000000000000000000000000..9c71fe59e89bd401143077f671828bd7603a60a6 GIT binary patch literal 18465 zcmd?RWl&tv_bmtnLU4Br?(QDkA-KD{yCnp7m&Sra&_;qgH0}xRPSB=to&LQyGxeW& zRWonq+thsM>bj?H-`jVeea_x{t-Wr{S5-MQWMX6(7#K7Kd1(z87+7NH$Nkes=t#{s zTWaVRtfz*YBuw2j=?U}z-c~|I0tN<{gz{pJ06j)>lh^lzfx)N!&j(gPgXRhbM(($Q zw1k$Q$$36v5U%zTsPJY}3OfJ~0S|$hoex*$^{YAydn{St$Y!Sn0ds7ug+zbs&#PaR zW@XgH^TMT)0c%!}{G(|$r&JaB+-&3N!mZ>LMqiiUi+1b7kLelvS`zBG!?JM3p?EUt zPErxF>bPs_MbIH1EjwHpAQ>JpbXe~HYIsf;6SoZg*RQwNVk}I|?bT}R_cot*TA#-< zaOEt6B3XE(-01uITLKmKHzr%k@rm)$Z%xUFlr$`|iSLF9nDpaH5ToaW|J3`B-c`(CxXc~Bie;f zwRfLu;+I31eVJql1FxAxU1jAEy=$VJq{emcVmK2ML!Y4T1`9$bZf~eK$r@h`H{65k zR}&qkVt$xlL{!Wj&$dK9(sNWDTvvE_DglNEQye0(B~7g`gSB73Bw+SRh(f;pA5CIU zqgsIz5rM$K$R=yA5F@DLbQgEvS7d*8<)@&I6}vBFGV?m{5`>G7o1M7HB{;K%&?pF) zJ=#G_{Mx?3!p@#`q?H{^USc{iF|l9&AobD*L3s4u*Rp^KR z)FE&6zcbXjO1Ga&o58cTy&<1aQHKhZ2&kF4Km3R)h=*}^gp{L=PLB_SyrN5gb;HbL z)ej4a!jK+IJdci!8=-)N46bG{|2vCvkLI{N3FQd5KV2%F-u@YQ+5QT<)Kkm=7a@BC z$DGL`ZRgi^S}9{KgPaf zhg@7-B4eh3g-Q7B(l*4ICI3$%*$xBi;1h2(@G7f)bYkMxpwIsChRiMdOxx@fgf>c` z{^&uSLmCphaz$#H#ZiY1Y-?VIDosUsk!BX#C)7_|iv+BVgNXvz_Ed>mA-A*|8moJy3#xKQ zE~1!3c(jYyLtC7;vC2xbOp=50H@{nGHrJ01mHZ&${AK4~n5k79?r<4rQ9@o3)H&zM zXMU&@HKUVp*j>4&+NerP%a#Pzch5HIy4p8dDHbITt*>lFqrig3&AAzUpM4fekxKsl zfjgO`!$NS`>+nAQ(^9RcE>X!+&#{OKnS-%sa@K2=4XMX@uK+YOFIq{j0aQ^5Rlff6 zcC%~y13%X&GltJ-817Vry|U=dGYsHbn|noFBv)vld9wd~g@)z*8GabYti=ds+PJwcBn1)S#lKPFbwN$z<1$CtGVu zNz0+tk>q!p83+Al%}pujLD=ZHAIN0QZBS?VT<&TvLH^rmHT+LA`h3k8hl`x7^v|}+ zPu2%Pe}4va@RgrfVXASz%fys59^Y?0_@tlI$6)p<$`0DN58jYuWbIyBhsuXohN{8* zKC;TSUCOElta&w-ac94wAz9KJV7}?Skh~e((R2NFk?c8fuTTCar;y7h0oTp{ks`Di zx7<%F{Rj|U%id6+HxqqC9#X(f;;8c$QJc$O(%h^?#Sa4nx*yNBGe1%AzyzLq{xs4J zyPmi33|7J-#;0u2mTeiTXeVYPVo;tud>WAYZcg_JNh#S>b@JI7U8mmYJL=d^8H9*R zTwf|Gs+8=!Xg1?O^X-%yGb1^E^G^DJD z+)(?mw$O#7_4=ekpO3ATvm73k>#!1YgyI)SlX+rfbDW%?2>$vYM!plS#A6181gfGx zU9?hM1YD^P4GsUSDQ(#N0wHQnh5KO%9`{Vjv8AD*1B5x(pqT7+B*qwO>Dd){5A!bV zF5^VSEj#gF@E~@O;irVJxpu)-zrB%AV%zYO%90A5@fdk75F#n{EH&ue%jKZn-;^Zn zRtSny>2P_q38T^#)SPCU3%=xJ<;LBSt?sSny2up1Vx+q5kK*0hqL{zn-G4jju<*}kMi;7@!Y_#MX9+k|0e)7ih)YDkZ3}`}@LBb~)opazRz40Ljz*hbu?Tg4O1v(?#AOp z5i^&^4QU1ibz$urgK2h>gK^a6%P$#hgdz?u3`e&A9*rmpq#gs@HPu&zSgCl*ujD0W zaGOGJD%Fqwv^O#Cqea*lC7E=)%{aH3FGPBmH^h|GHFbVMMwYf0bOVpRQ?atP^v{@~ zWn`yYtrq*P`(^OxVjJ5MN6})Z=z*80CLeY+soi*A#|pjiLO0d0#+0|hqb_?skkJ+h zaP1(~7YR;GIe+Xd5}a(yhrBukJxu#y<@$Mc&;K?Hl~quOMTS83>-GLzKW~LS4l2`3 z&ScOD(jzLuJ`vbqLG8MKgtuGlDO;SYN5~6=Gqi|=X$ShNH+{SE)dji~1niqH-2Afl zxe9W#gS+UwrK6#3U0XT%7a74N&W=HJa$@raQ>c#P6RSRIGxeZ{T*YJT@L=xS@TjY9 z5)pOTPBOL|Ro+Lp)s!S|9?{PozngV-=ESYU&C7~LChWr#wb1I!t@4HchP$?TM(j-w zpt%B4Q(PcZs&BMJCCFywi>WnAAINrQ#}t%Zgpd{crX4_A~G+kYVSpfPH>lEBN? z_~T|isNwTia7ielxaA6>R7m)BnENh5viH=;BiAkiVOrO{F(UKbGe1q=890kBE_aEG z`#RQ617~M3Uv7^i7vj{a`_j1VCmKC3{&BXN?e1e-%^SK}95W6k9RCSdX}{kpU5Q~h)orq0|^mb2>lfi4Qr>#B;StJK-x~;Ujd7){W_pa z2u#NPH>X6L)?#>wc4+U%jP1@DWO}gY`Mw|a_1XL($9B70%{JByUc0(h!O4jQ8dK>I z>~tY92#lW@@E62imzCMB!|$7rcths3Ncpb5E>vK#s{op03zCp7Ra0#gy@5qv+$D2bYNA#8##qs`i^3y7S!st zF*A?Pm9WbhQr5;$Df^x2Oacaw@t2>!Nhzn*@!E41rKDOS%NiJPiRIm)b=)4CBQN0W z(PgKQC(^n5(3l=FrG5J#Bk=s9%Jgv_O2*+ccGD}A)t1X}vXv8$t^rad#Zx_2@fDT0 zLk)b?sFDHH?#zyQ=6)v$iP0_gCW6#hOex?F*l8*-M#Of*g1K&nfA7XF?7!sJWgu zj)TLIX%GjsTbrZ%UwG9+vDMDz!1wB|uD&kTGa|7Ht87B2a?-|E7> z2>0*20{CQo(FPU*hFMhOdHKw5zFwty)$~ga&PZJ>RM1P(q=;Vb%-*4>iPMJEa4h1? zxR;DJe0V9dEeMwynr_;17)dlD4W0iQQ@-fz$b4%)wM}=CzN)=^ARnw>JB+j}sGpR9 zU8qvn4oMyhtv#m54Ufb!^kt~w?$3UEg%`N#4;zZ zvrTzP^W!3$dKnQvQ3ScQ9Foe-4h+3QWb?k$qTuKF3$2fjGr6C(l$5Rf)*9lP_in*+ z>B$=rBjb}fjdLu+O9`8L!^9>hVztkUYG&J*yc}3R2MM{b>V@jG0~E&W^VPGnP~_}6 zi!B6m$ww!qn}_N%?7HdOIS>S>&=ei??Qx&2Y>%|6=VGMl z6qJ-WyI;Kt_z*SbSC`z>;MigcSm880v-4(?@`BpzHr29U&-wp8S?i5H-w4CdV^G+K z@Rvs~BqcVUw_Rj*N)HXFM75LLsem;z-jrcY0WKb%`SJ<1Ref`02G+Nimo5Xz z!H}F%A4YELuzTRha!strEQ}5VI zvHWJw-WEIWA|&LP5#B5#Gn1zK@BzsQs|Wp(zAOsIU#!oXaH2`>rpSP0x$6?2g%KQE z?Q`9oN6O-B4c8JFZBSC{rW-5v?q2mHHM1z0TF+HucB#zu@l&Bb1u0e~1A8CNOm8H& zT%xpsLP82Zmc-0`#V2u@t3FFh_oE+{38TQ?3SLK=GIQzSq1{e3x}Bz&y{iq|%bljy zf{`TC5WB=yzUH5N^~T>ZOhZt&VohyAZa!{??oa{`eZ^N-=bHhudcou|ZF?YQW%>%+ zz>M#k&E_RMhy^kkO?|)a9L-p;XGT*T8Sr5{Sub@e9Go8xnIdemax*E?CMN(dnZJ%u zoJeJR4+@@#!W?XE4EYd!=`WWNFZ<*!yAgZJjMD%*#I?PM7ace_rh%JXlKtjy|8xrH z8{JT=?7C$6rCdmPL5OV`0Mx?T55eZ9~M|^CYqB8oCoj zl+CfT4PP2OAw``oT!+1nvq>aKJSbpo{`GHlqIapI4EMxEve_ainMRg9bB${PC>;3G z&JUYdtYi}^6G?Lq&KFKEJhrMWAt_;DL8yXYE7GUJeg^g`vB`Bky9|Vna=Wo8GoXK= zZ&iF&ssdvv`7_E|eAVj~1Gd*?Q|()!NpUlRc<6FvfAor&`1tw+&^&k-1RGb<6Ph+x z*hhOerHQI zY~4*eF$J7FZX)M-yTXS&+!=PgK9NMn++rqmiTEEL5C#o^8Pdv8o+SmwJ;9?*vuw29 z71^^;+`vtQKO~i>#piaS?bZ8s_?>sD<2i`|R}PIl3`N$I?qcylIeZ<5>3*H}P|?cT z3eeiJG20#Qyhg*OI$Wl^VU;-b7=mv?c8|KdyIZZIWfjTD!ZcLMs7Xtm?vK_v??qTR ziDA@l_Bx*Nx8`!OFF)^@)a{$KOm+}X%-@NuqUOqFz3W<}2sS!4^o_dW0R9Z zarH_3>;f8?4zl08T~Wn?e5ra~9c)@CcgZYR*ZtON1s-Ol5)>3dO@hIKbSWET4PAvQ zm8}&aOueNiI_JiC?Hn8*bxo-xso#B&R5(9k2x1)>2SpgUvUcy_4{%`BY=u0Lv5P@U zb52epj~>4N8z~IN%I~=039~V#ptb$MdH8FtJPEXby??CP`{8--Y3(9&XvSG%m)U#p z;b_##F)p4yPt)c)2PIMY&G1B7sr;~X8DwU-5W~*Wc(v*Gh%mYgFj2C4xZZCkFxIFa zJu8+3pfPGpSLZs{9Gv(}DTMyru_fY~Div1~P@`vMRasA`llOx!4}PiRNkOhoxK7W^ z+)l@`%_(EVf8nD*Ib^+F#^1ZN4oZrsN7h@ynVx{w7IgQMgD+bI7AL!9bWH|X(mN9~ zVs(5*st+#9uSp`bR10IuUNrI4i{zxn0e6364qI(Wau#P(X;IXZXC8@a=ixR>%z|$;TP;)F3V2V-b=@%^l^NuXga7O0Kt=i$d#C3DUbl z%5t-FHkhu^yLX$tjToF?-CASj*CmN0u@Lrlz4fXMUkiN%g*K-@pSX9XJ^g}mc{;^j zc9q7I(IFlOx~4&qRTM!CDxLqNE}BUv?~S@YQ3|6xj?DrFFY<=uCL#w2aR}mcHv=X< z8OrMk)O8$Fd3HaOFJdz?GWuPO*-E=P_8!|rP~tb0henQF_8bMA_fcsA^3@VaqNa_7 zm2iIjmZ@NHj=--)u9d_}^pL}xCKLPfDY0U-LG}S;Dhjz$c$$GBP?Ucc~VFnM#vzYm>8@(7~H}~UeCxi)FpAz z5w(a?I91!+HW~z2z*z)cwhLQK?&CF771 zXt~@+$43W7cj$93d$I{yjT+pVdM&S;a}IF|@eXvjBc_mDb1OI+7B4p)O@S;!c{dF4 zPEBt}jv}ER9eRdr|hh}g{yFgdg}>H;sP^S+?vzcH$sExW*@rV=aAZ*Kh2TYtM0)Ci}|W`3<+g2 zPj-3>*Cbq73B=Ytucs|nf}}R3BWvvr^52Uv*WKTL2-ti&s!h+f3}Q7~0M)j6PA0S* z7R*ZSFu_v41+v|(w6ZJ4DstXOxq{bb#B+)q)EENtD(_cIlfIe&Y+t0zp8_8}SoE8h zCsphj%y&|<9}lu*F*gwMU3`z15ni7t%nl{P<)nA_H6w|{BO^z)Ut8(7J9C;GVq{f) z_@>FdVI%XOLJt$%QRt!Qmas|4ojwG0rYN{$#CNzL_y7+=Dq}yRx`3Y*mCCBHqU9O4c`LvR`8TY& z?rXsqyUBwXu;S^%M_>~J$?yGW1VnLeM!{q93o2*7x0jKE&cO6L>v3#ZrnoQ_p8&M* zq-5h0%mdz8#twi?-dfBM7-myI)&+(<;z#(LY5P0KpEH#4@yVg%>iYg<9JN%pKfTfk z#V>2k@(VF-C{CV5B%pj^)w$rFJ zWsdw!-e>b;UJOgPL_KD!zFV&{R&A=<3v^!@6&>d-B&D)<3>_d`0H^WhreYWz`cNCX ze)qpWHez$zhHXHHD!Fb~J3lxMr=QE*JR)7s5&a-?#Ma@U2%hTxdP)D<{#S5Qc%e&tB9>}Bg1&m+%nWrFSKd(!^dQ~4mQKN%f z%gLn&1BVDXWY}Df3NrCguknsv$3cJo!N|gxQ`c@4>9U>-CQBIsMetqt5{Kgxs;9W{ zBvBTK6*=K6C6xlFMbkg%><(7O$(0x;iLn8-aJPQSghwKb1kLa_1R&Z%7}CNF)V4kp z+HVFVetBB_tJh}6c!*O0Hh%NN(y;*7&|K}RR?JrG z(lZN)=#_{RB!D8Jx+u$HdY8phJ7`P#+ zzRJbQ$Gx2WG}UPBpwW%Ai*}lmDT8NaB2=o~-%ckooi+FH`pI~9+ihH-q%}bYG z5fXgu>LKk%6SG^|RBVgm8C^OEvS1klWxG|l3&~TEE=rj&DHBs{?`&~?|2rQ`c0q3a z?&+IuI^ZE=mLYbY?|*_W>jgAaF!<~S<3AKgLJobZpuE_RN-onc>uDsgiH#qF+Un4u zbXyrLlq<8CM^W27a;>1IDFsrT#9xZ4L58=4{C$yF}7f zKuNOLb0{|#Yaz_a#B=M74K}hAPPyAxqirs0SYS_35cV}#QucHmS?4)4;ODI`^1nQP z0xU7ss>LCp;c&800jI+c`8@`ys7_U!3OwsmrY6rhOf%M68iF0wPrNQ(n6`Q&9*a$I zUd(or3$<%0wO%%od8_@zvu1V(-X~qbKS~D7=SzEk*JmyEe81!K<-L2O)hWLqsE zZ4ttuLxJs?6X=)7C_nIs$z5Is_gwD%D6-aydPQHyf=!fs+q8g3f}IR(EMHtyGas`> z3bR_NNe+1N#hh3YuRYF2r=?YGgpjX&UQQpIfX&gf99%ict)`*vFA3beIr{B7*hq2F zASJb=;hPyTIX%DdvCnkeQ5@WcNUrTzF|M}3wwX9cNO2=5YN81U5PW%1ET1D4nAl}f zz$=$1wO16#_0xOvoG-Ldf$zvAyuLXEQjy zw;e3jx<*;l@;V&cap^xDT>soI0!nak>jCX6T$(*KvnPbEyR>iY+;&Yv&)(QEGYSQd zd8MZt?3yJH=O8eXoo`H% zkz8*eC<0oSK%Z*(wq$0wcF8!_I`oA#B$l&~G59Iv+3j}NcJCZ%FJTQouP`;5-^3qw zufR{bE@OOLKVpQUjU+2k1T9J2kDv{k3lcAaJ^c%&>-`RKbb=LITxR#-`zv^3X@T>8 zq+Q@LzG;eUG@TZN!|z%600ut0jHDvO#V-duwU#k5vJD_nPmdVSbVam<)1+r)ZckTi zNhSr~aS!Zy>BQQl=VSFuX$a$4)a>wUfM9FxvS z#E$Q}3PL3kl6J_aO3x5ZNlW`7p6N!kEYLnO-u5DW!OvY`xiT+)@D)g-6{dd+PNGEt zS_T&A2~+O+;KnM&g43*Ol4q|R5F%o9H4GBh*F{)Nx}?_=ZEL86h1ZNmAZx9c968Q` zK8Yf1Fukve;&kQ*leoH)Sa^65>CIX%Elya-$g%r5JD_=FWMq(6aJ ztaIB4*p_5|mX`jhQO(KA3#&Y4_&8zKo)#VYrvJS*w-rDeA=9|82gm2SNfjotHN=~T z_Ykm3|8P{_`?VjNDI7k^3{uYea93>)4J&EkKP>R$9;tSr`1)?7wjc)@+y^+I-A>Sp zkS$v*vTt@vxscDl@Ut2fy>^S1bpm^MI_ZI{2{rMOh6cThRu=8pY4n&a1=sEf*eKHP zcjv-8V^J3b6ydu)YnMEyr5NIlxHds|M4N%9-tNq+5B?xqid`ka-|mAS+xcKDDMFNY zt+)#a?~&(eT?#_4Ihz9L7dYhRomWTFz%yGD2RV39ERu%QcRmJtOTsQI(_(;xNoN|M z?Ra%>`W`KgBeNgY;BcU*(2DK8f$i7nruaf%=JiEVQ7+H>1j6NC){%P2wPU^@7M2wsjl)T#06dgtTacp-{hF|R4`Wee)_BDFI zxiHKid)r6zF?v$tkkpBr#rwe%lJoXOEyF zvn}v~GYQ_Y?z&!Y$`(CkX7t0NgSc)sB1AksKFDxAcC?T{G1PFwx=v(>OvAL;t(HP5 zW{m+5ZpkEo2nynH1RW!#!j>q5%=||G3NA| zY{*P@uN%K}w(SnYaUA}t-UrOMkAmMoOWUC8y7ZyxVcMfNUF7e7jf%bnJ>T*u z`+>FhFGfcqYzt{;FoxGDdPd&KJmd3nV;tp@WMySDai36){H9l^YLvhiYdFS^k%m-? z68<|UQQ+xte$LyHB)2(1>hGU{5$w+Y^@5+6*)6WzN5)@urZ#Q2#BBU?TB>!6 zD;X$W(a+fBCNK#}W9$oqEQT)sy3bfVHfH!;)pcG?Bze{#d>}d*Fy=S?A$QqJz%B~G zb?La4MAGGEyb*BzBM{V`Bq0^G_nUr8 zdPeM(<7rWj^J+P5t}M{i$mdyaC>GD_-=nVO(D0H%7an2tzPMB*5r07kL@`M8);V6x zAEu!FS<&m{FQTvbJsY}^$0s&&2*-5ilMgQ5{?4^<;ShCwXe>8d2P{U{i`YfTn{l51 z$`qBVuDP5l9eJpykgCu#mH*}*;cy@_B;na-zF2Zkb?AP}AEmxm7~#m&1Mdmi;V|D? zC*c&7XI~Ei6b(l1yp0s}S1Q%xavD(6a>=K6V&@CpOOCJ^yZ0Z*LHkiCfI^M#Gg3)= z^VP0HoFi!Xjx;3ixnSClWWhD-*ztZqKfW4$bL6z#etOa*#6mw<0+SHl#n^@hV{(d_ zsy!Xe?-LW)bz863hH0D@`w_>Xqvmaob%^f!b8^(e+)@rFR7RqQ_~7@0w$tx&((yL( z62{>df#(rdR~$E|TNJ&M`P97D40T;^bRzewG>q`yHF9Bs@7FLcL#|t_TqXeKQ(XI{ zST-?RySo}-$A&*Fc~@Eyjt4|b8y*;MYSKLP%qWFwIbmz1+esY{$VPr+W#tXP$X17K zjhF5-H4*TOKz#ci?9FOtYdF0DKzCvIJqo}()9SK8hi`^a+N{(M#RwU|D`VMncn8A* zxA6-!ljm+@c>K|2cl<)Wr{;?t#Lw#}*`kopT`?6flV)_1&>;h9&~g!>$8MDk+0CA+ z2$8So13VjPFc2v822G0dg?(l8tir=v*+U8-Kf=Y8*Bd57>gL;b>%~i{{6D^TZ&Lv$ zsfN3JKabc9W-d zTWMJ$kqA6IKw7Tff&sfWJNjEy3mVZ*g&%~nfL4x-qnqT6!@M1J6n4frG67BVVoD&K za_}LVV}r+vWPI1IO*(;RRiVbq(ZfP=VH28Z$d!=CJpaz<-aAH9Z(f+#EBe4&6uJGy zx%d^K*S|k_TcNj{&|aG1nL6GPgkl$l@DSNz2&)DS zgy8z<$i_zSW7UhivqTn%XiYxz2-2V1fC=7HxfrFtf0v-!v@niHA!{hmlFt<~Lgth1 zi^iK&v>dy|gjH5h7#dU)F`stdpszDONF)FS>*xG6u_YDGN0(N_Nr#VskNrD*<5`bK zyW0jac=G`8mPbng;+=|d@$eNRW@U!Tsbyd8jq-xV8F$4UPfYo62&POwXCC9VLB7km z&okO8m^1Q+6{d|1KYw#xo5vy}Ny6C7`SuwojsMOkSM#fCzJ?9=^w!XxNi?xvDskkw zaC#`k;?*c{$-?jzuY9Jze_Fe`(2@Z5&?uP)&(qUap4&xO)|6WoKvg7Q`=|YQ zr75mz_AGL$$<5wEHRlRd=?mQ{vs78tr7(xb6gwq_m^3z9|NL*)2o5H`O{<%NfGl31}NtKmQ# zi{ddnZ?)3+(&rbAiA6^VO0`^)jL;if1lj@f_-YIj*y+{2cqw-Y+R#s76XRRlX}`2P z5rsTI3e(W)$5o+`dco86LOPl$7dSmZOB!nzu0q3lIO;_!{xVE7+kcm4eEuAjWAxiqV@}XzC=`k1Aj_NiHDuFm3igyfgxQ}OeI^)j_A>sw}}}l4^c2AX)8{_ z)Jo`@iL@r-2k`n*{Az7|rS0_%2pSll@~+n)qMGV!5%3vxA03mj=Hf|BupmQ8E=pqyAdc#nJpV{0<~fiUdD{&K^@wCpcEbD+CBmD_>5{T5M7%z5bwAAxDm z*YWI}NFjXOfxK(T&F1qwsUdSjoPYSKiMC>bsZ-75X!NHAEl&YOpw$jLXu!`9 zkcV>g$^^E9jHU^YQO!ihCxXgvtAW-V$e!762KO^urQRurr9&s`Qfi#9eAO~vKQaHU za_u&|v+s5`=#`ykTlQiO61V&%__mvV$?=fhR5sSqyG}x#p+oN}Vma~gtmP60i%O?J z=gnq#*o|Z#^Z8Hle!+0>3~!W>_sRF}r#mTMEM{Bg__L22fiveAZFjlSZt^sn0nS~` z3%WaZ&*YKKEN;!sjG?dg=smf-ACg30Yj|{vX_|CC*GeJUOAf~hNEaI>se)3?LggzG zn-!U8lXT5`KcIus@3%O~%mdFC2&yb#p)DNaE!xNPWldJggX-yp%m~+L_NN$puP`hP z0JH9mYjs0ijlpwAOQjiT^x<`mW}<52TEuvRE#6OdQlK(5l(914wzahF$B zO+EaJt^B&pYUH)@clVxLHe4?kLttM#8$4_~Ps2PkHG6%CsGLK-;0!Fbba zk;%iTCSafa03`cJ8uWQH#4_we%PK7vj6=Co{!JOc0Xq`i!f{+#qN2Bpz30A>Z76fh zVs0hm^>5XfDM`G+YbVHF5)BuegkO|#gB{xVqerejcur~ebqdTLBTpOa?Rz%O(*Q7y zIi|HIz{z4bSwa$}C6!VoW%H*-U73%6yhO0TBKO5!r5*XX_3Z=j@(q!y-MG<-jN@w5 zlEyeGIkxZnt;SajK`+cYBI>Cm4aay7SY_-{Aj)U%K6YvAXkrmu|d*%>_u69g{~LQeMH z+=b~G>Dv{qJ;@Dn)Fw<28S&7hv3k*nc;{T&OW6|Ltq+{GhxEIL0Ztpu(>EwCMz5`m zAI|nxyIjg*giU%)0D2@#FF$%dpcA|z4JDbX@XEqOREg=0d7XBP2gs-8<2hN{-zjCF ze&c1A#2!?4axfm4Lt4DaNTkAe%fisE zD9`1J)s9BX_i`VzLhRZEY;bEd;d3_JNv8F8__&zqD~_O>4^hQaqSL$iI@mky$sByz zg#4<^XXU0hrUHtKP^Pw)&&+^`^`;2 zEltJCL$s`MKQa9an!IdZvb`)!WnuP!Uk0GWk(rnhAOc%VjW9nmba(`v8HbC!cE_2y z`}pYF=lfTkUKrr~%)ff~K{~F5DPn^x8$eTyLC2h{O{LL%T}|m9YPQENWTXWDHXN3x^eRGpIZh^Qn$|_ z%e=O>zHc@DHFdTrPt)!8qr88UPyOYj>U=v@9865N1o?SiL0f2dwrIr6Ja6)z5#=(n z`Ptuiapu;5k@LxcBzr!Zue;|xPwNi<1l9g^B#w+L`F^IQ9gZi@$kL$ z5_137tJ@9Ty0ms1|Fyx4SEGyUVw!s|b3{!EI@KPl*!lG2zJna%JTMO)hbY(4e}|99oY zfAj?Z^D2t}2@v_eNHOez7^b|pIH9q{&B1_9BbB&MXfl!2m>=QYTDlJX<<--F!%s8~ z)clg~tk+TT$ zA8kp#jqk@O8JgX}tPv_9woUJ5zOFh!DNARhUr!h58-)W(Jd>L%X##R zUw7R8Bh*-nD2Hl7u&`1-A)}{~7$FAZDSW7C!XA#0x%G(!W{Ghz8DOh~JoshjfT41T zol3WCpALS)&E##&@QA4AkbciHeRXy7{2kg1JUnQaPj!6xY>F~j9g$l9xRkrxY+uBA zG&qo)o$drb0%g&dSy;YEg!C-M>roPM(DI`7Q%S#RtRZ|vpyUqD#YzX{B%51_l$N$c zEvU_BmnBH1=A^jH1L@+UvX}LwfGtUpIUMp_lroXeZw;I* z60jO^f2Dp}Y1w>ny?0S_8*Oo%>R{8=l_|D{eSyxCjtP>l4)%D}qaB;2fUd=7_n5vnKDQ^-rxy;PWel9%+J6j4^ z$&G7mM2zQo8lO&~6|T{cDi1!HkzZ8=P1XJyKS4I0!1=0^x?rVm^AROZekh7PNyf{l z>(tJhiJ2J-3oGX5_UHC~?^#`}eqSMGbt65R9V8#Jngq=u-v9Wf+JEy+*opt-^Ddi z$Wepd%{$9%JmE`^K_9(#bl#t?Dz326ntbm{IiACz^v>=YkFK55C3GK>`5$I;T7MovL4A`baTVf;%=ACg0J*(AN}ni~k;HST zNb1huiqHgq+^4FFE+j}aLE$I72s=LpR6qq?73C3;5o}CM$a9=Pn=Oj%nmG?fzxH4Dg!3JG~iF8(dzoW6V9y^`abm}unAs#_NaFUEQ zA*uBW4W*Dw6%v|B$~x*!JILVL#lT@5S}-(`z`+bf=C+SEyRbLEtGMdmSK_JGrD2UY z{|_Bj{9iaRCZ5>hk5307bu_$pgBK>tgTHIsXWMyTPcE>O%Fu1wR^z9i*@z9mLy85mn;iEpY zh;*4qTq7CT>u71|+4?C!d}CYx zXG-ygYf@}}H(h{hQ-}$bJqG0-A}5^Z_s149{Fk|3U<&3T^}nuABXMc!N)YU7mf5a1h&S4LR*raD>EaqV8Z!^@r!J!zti4H!Z zkNH7WLGr2!;3S?*MH+T~f|VSiPiQEfWVMOCWt`?Ab=7dr3zCE3@+p(PeUwo-?S$6? zr{V0>5}(k}hJ8(Eu7pTOQ3?TJrf z=2RTL?_7uo{*Nul6cAAq>&`z~IO1<+)rg9XhX;p64Gn$O|A~54m6cyA*fwT8FT1DU z=|jJnC&ni7NlH23i$t~uKcmw@zy_h8X=vbch)&9PujqJEsA`~f9;%{ZtYiMYOtwq2 z6;$Ddxw4|)!lD}~2yH$p%KORi{3iL|*W*wCnmgG_1O}?>vz&Q#q}9+9&k!qz3rb%W zf1_}Jv+A>{&=LVvsG{Y)O-#8cUc{Xp6O^9*FLwWbvlJf^X0K@Z@5>+P0id3^8RP`v zCNR#&9dq;O#8^o$FCM6~P09gyq@Khsc&q}hpE=Z1L7b_e7Z!wtjo^g&JFr5L`DScf zf{cYE6h8!_a`(Iur)|E&Ty{a&db0V*s+JDas2-DjmcfSmlrY5UYK8n zgr7#c4qnX{kB(1PLI!n>V!XE13%ZXZlYD)dug**9^~Ayb39L41U{Ddi;a_y}bQ<4lK#`W$!=t<}WTAjVq_N zhWBmW`PeicOaeC&^t!B&I=n8z^?*)PR0G4!=rY-Q98R*dG(*(9v?B3&WHF} z4xG7EKbLis(dlWOI1GV)efg!_n-_@r z#Xj&s>%_8rJk{X5rb%}D1ejDL6@^at{Ghkso802h&9&s(S7lphtwU+XDnBqVprSIm zs>*G?7G;3BK#6L?okuv%1COaBdpj z1uwS#Y(@*J1K7$=PEE;lHIH3(Kcib&mtNMaD4!oP@K1zf2Nx9&e5Yw&G?Xi!=Q9`5 z&r}w?Xg@_?5II~`zu>Vkz{kUj&2T8A7q-RO+nsbTbKXrmNAk6qn3<`kBd?j$d1)s_ z$0E2_FHn@yz4?QL_JF?7MFB5s@chjZci3N7hP1lk;{@4ZQhG zaaMESbGH2b!}IOn6n~P0j?ZtKFBFmXlSF;Yy0xHg46*RieVVj_VOrYqlbbV5wd`q& zvh%$(NlWSS;J~iC)zb$ffU--<*yw2A>|WAHcCM>*=2`XV1DmpCkIvO|*Q4JJkUn|7 zE?;3LEDX-;Y!-G#6hd=-eLd-|xHdu`QEvRq6CZr${&GE0Z-Xqfl39>A!A_E(UNSA? zW0Ohr(Hi9C8td9WZVA#g-8s-5q2}csCM{_R80|;gDT=xnfhJ>7VYv9#qNM|91q7O%7OWpd=5o__`6r#+`LqezPOEHUkep9qaa52$+%uL_t1ZzUXs*}=md;0RqudVr zytZXH>gp+e2gB~N$pDnXvci~U8Kn@qu$f)M)vc+w&93(R)cI*|kkH7CWO_R8Qlg>Y zQLyLNtY zhh)9zaDk$LBfSqu__OIdrzjCS}?Wm^>|VgJ#N$?*AZME|qI~L&e9}RcihK)Xz4&!tcZ%OglL4JuF0AT%)k$*wJvmIYFj zb0SRfBz2cs8OJetVMu=6gA(jBlts?Yd8@8K70Ir zMzi@({VMBoFUvQ>ogc%`ALLAZxbU;CrMr7a&Hii?PMLTWV)3iCFvbnh>cwQ(Ik=B=jEyG=RkD-> z-_UWDPN6`nfSwuhJ9iIgK8W>S5SagNCj+QPe90Yx*o6jO9Qxl8i}gdfd;$2;0|Dq0 z?SEX7FqN7A29bs)vXi8Mj_p}nE3IZ4z{?ewgL}`NJfUPj{b-hcaH6G2VE+<=Fq2^; zBNO2rndSEQbM%;jdj>>7H_uUzuh?^F>iWMd>GHDHV{`bqos)t#-9KZQ@a*xDWleu- z)=N$-_6!QTd}fbu{mQo%o`&c{6Y$t-m2LZ9&7Y@RK}KdQS1Ycv}~L+sARz{?eIOj$r8x>na?uv)mAx z(NTZprJM)bl$6510pCJ= z3J!{B*!%7F{hn>6t!brf!mFJv#JZo=wTpU-FWhvg^KQvC?XE}40VzV0Za7f-&c4jm1SRV#YS3j3^P6pV4oO5oRCwC$T?u$p)fIkFwOX}R>xNj1$z(B-HxtuRYUaHeBVx6! zRa+EGZQXHitD<#5a93(=0hJ_dt+p;etBAHPwN{k2Dr)tk)DLkhZY+Wu5EYpI=e|b> z$-Vd8w@fl2=X~G!W&$&J-aGf4d-n4zi-Ccm*FfLubhff0lOK|*&Hf-|yCY5A7PEt+G8q{ z8#W-5-zm<$RMzKrC86GIT?lwZCU*!4e(bezjh(JL?G7~-ia~?Ei0_OfI^*>dLpr~S z*V{p}5&P6;cV>?5A`qt+2oLkAV}BUP+jlz3(^+8hWI!Ro&E1ORiqpHGY1z5$}`S^*zA8MAQYW9(01PVLILHIg0KJz)uY~af;H+%H&SfeK)N6 zAfj$YOyxWl-n`1^b!*BZdii{QE71BM1{&>kd~P~udJ)k?1OX5&By%y9&RvVo%mlu| z0@95Ff=yZh#+e2jZW4_us~_^El$|@n6C|xa@)?sUaML*oF1?e6RQK?~ZMSW}s!lXlSS+;95CZKV?kjQ-vF z`ueS-M|RxD1MK9>G)(=J=6iR96MP7`p=m-i2q%2b6KX+r$0|(7`I>8Z&bANPKF%Ie zM69Z|p^7=W2vAwqkR~mV#99Mt@_Pymqzp^Ck7`cl%QPqR+aWdMB4gV<HG(|&yvmQOgsuGFxT`VsH$~q^^ES=8uR5fH3R0(FcMHNb1oCk5qMoD^SMl! z6gio3YVG0vMy?riN9nTS%rU(Uh7J3iE<;>d>l~~RkO`WI(+orN>eo_VW1#aDtp6v4 znNwpVe75t9(w9l+4hpMv$Xtu#e=zh|Gs}HJZFA>_DVZCQ91SxqH96^JOiY@|Gk263 z@R335QrQfIbe+PyT0x;)m5-;@sA=~s=9pdv0nx0})R8b0O4`o*%6tgQG_>YjRl|-H zPF7{(%WJdsQM2`xne368;KT298Wo>erSn6=gm@XY1Px-l4@5mN!EASF%&c>?f{7|! zZ61Y~)pkFSF!-y%T2W*E!OsXV`=$pZEZ5;0CRWuo?8V&EJ2c3g=mH{~Y1K*nNB!^0 zlX&eTVEFq%>DsmVy#wxPfg(D#CdiNQ&8+nX#hssFy?c>QIh=%2Kg?yr%M#4_;A&_ zl;6?hGK|8+q#?pq=u*OylDD)M%#kGkUd@p6ePXl_HCAnm=%3ElHfB&v1=aJIRE$q-AtbFn!;LXj+?znyepElNEDnHvp-1FwYys zuIx1t5HR}B!&b{en+-Dgyr{-SFNkR!l^+>vQTh&=D&>wqwQW>d61RPT3Pp7-1Plp+ zh#aNeNxE`~t`?B;x_nBr#%zTne7-b4fykA_+?gx+?0Qwn4TNv8;$)v2mfl|fi*t*K zPh#M++|M;w#RM+|Ijf6$LPEv;!SMf4tg%Ywz$%h}AIkC*V63YZ#fFD>{OrDUjbGK= z%Xv{rPZbBaj(b$Ol`!TP_4G3{7bn`(WOh=GZlz1uu7^k}hb1in|9C+69we==wfF{_hQb`3 zq|f2?f^P^=;ZIYP$}r^EM|91h$3$1UZYm&td#WmLaKUExf-tV)vzJPlQjt)UnN0p5 z3)#v2V)6%8V}HN5<{|SbCvDgBDQP9Goo(3UCp1)rF!PFdm^JpNW-MJ9P8)rZ zlw=N%OK?@PY?HJ4^*HMb=Q9BT(bYe-A15S>GEwKBp6TRe=+qCs={|(HBm4dTS>4db zA^a7Xy#cebMl*-U1XbC0yY9U{F$Hj55(46P@U2w@4t_zO@%z~&jFP)nO9OSM-<)=4 z=uD;g*-hZ*Qgow(<}ioH*C6vWB@XjqF5gFI3eeoyklN^ejTvb9<3A;RCkQS?2qlC0 z-?O}OmcF9gL!Qka(#;3l1YKZ-IXu3AEYdjVe~q`c7-6cLlsGPAFkz&seb-BJI^$&- zZj(NHRhV0JMWUodaStn_4z@@zz%o+fs6Wpf9$P@1=Zi&P>a7THB%8w8-KuajIn;Q4 zRyHZb@FX6gYVTE+yV&mUOW=SzzgPzxgC`&lN1ZLJjgEQkr5gf5kq?J=`V~cfwsV6# z1Zp;hliF| zhSDVX6c6PpWK+4!*_H4$r)8#0dW>n&kA#Mu|mFe?tWm_|HkZWdz#kiY{t2b zox-rlPM4?MVAD3iKQF~PkyTecA? z+a5NzBJ)K=*1p}kgvFR5LV_-yHBXT#PcT;p97L~D247_OLkx*v=mMZQRn^r8e>v*o zm>Gl!3r3R&*$-e z2=EBtNZ=&@dn_Q4Hei~y8;CSdLb$gCfoE9TFqOJ_kH)HdYD~WmA-aMEBq{-?Tib$A zcPR+?CIsa|d}b%6RF5~+WIoI)rj9ugPXm6cigp0UbJVLx@9#3nzCO;B2}8st>tF>T zH#+m50q?;31DIMRCjk5Cd`Hq2l0ChSDHny%lz9z~fXv0`PC$Hq2c}v#?bTFkFX5~= zTZ`K?eUo*F#M$3nv4`JgDn@hcwgU0S2#sNoY{I5Y2fBqq*FRmUSMCi(shX|(L>{a2 ze#}-_1|2`QwlKlsw%u5pG0AEGAzup-S6__HyPSQMqGqB^++y*x_k=eqD@iPx zq4&LUVvQLV&xuvjn8L9+k*qZnijDMrg|xkNP0Dq3HkIF_qDQ89(i`aIOvc8n3tBFG zmKJL`mtBLVw_0VO$r-?VfFFjW<$9srHGvY)`gFG^jRu24x(8G{^OpKNY@R_xm|rKQb$`<|HKT*^!S%3 z&2O^K6HHekCHkV)iHZs*TaI6iFj1V^E!K*JX|Njier=f0EUw|~4!+7eTsG8wjIxz) zI=o!W^6U=SD#FkdrSUrK#`~J*c%j|MWP>0@VG1hL#CrX}`~!vK++-c?n}L@BTkvlW z`zBIrQSZ_7_iiF>5W(qxro&ptFsF96pdd;`8v%T-3k4;NCRz!6S44i=qi5Q!^y|(_ z;aZpbA>MwG_F=MRZ?+x+Bg~zp7q%SgXMER}ps*J53O*FTp~RLOYO6t4XNas896dagZVD1O+u*{X%_ za-QMKG;-6C=%DE%`d$TmJhj}#zpoKZCd=0IvI6`6If3}lp_X}{PnDIX*L_Nr-5@k?fo mfN9hyvhdta%)r15sqDDJMsrMN?J*W&-Q-*@Jm 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 literal 0 HcmV?d00001 diff --git a/latest/ug/images/SNAT-disabled.jpg b/latest/ug/images/SNAT-disabled.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e4bc7a5aee6ca9bcea6d4705db29da002e3e404 GIT binary patch literal 66787 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

~fQB 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 literal 0 HcmV?d00001 diff --git a/latest/ug/images/connector-model.png b/latest/ug/images/connector-model.png new file mode 100644 index 0000000000000000000000000000000000000000..52404570af1951394d2f205158ab6e6b5cd95517 GIT binary patch literal 77450 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 literal 0 HcmV?d00001 diff --git a/latest/ug/images/console-cni-config-network-policy-logs-cwl.png b/latest/ug/images/console-cni-config-network-policy-logs-cwl.png new file mode 100644 index 0000000000000000000000000000000000000000..25a12c231736623486fe293671ea832bbe68ca76 GIT binary patch literal 144839 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%0DyZy8bN^Cq?J(h^*;wf8Sq;s^XU5O-@!3n z7!cH}J0#v=E-9UlFV`&6w$mV5s5QWEIP{-O{s05XU^H^58p7AhCA|)Ges5GF0G^Ja zCraNE^7B8+s_q{QF~?d(zNa5=p4fR&j5TG ziF`pHPKz7**+CQ?tcpY_XQQ~1C(+m1@gZ1@Ii~XxA^*93FU|Yt_6I9u1dxB|AX6R^ zje4ig8priNdKO<)Yb9I6>5f?a8M4JpKTTULCSSpIBL92j|M`VDfe&?Ondm3sS^KamAW{d$FJ#ufgwKSsQ+m0r$1zDkg*^K;wVT; zn`Q;$XtgN-o>qJ^dxeN_`#&`^yd!|Q>}QzM-WeL)r*gQ#HnhQbw7*sg|2{MZ9mL83 zTHfYAwToV+gFtE^{`2?y3jISn=Vj-JE0~)&BY+_F|F2wAb&3XuB$rA3_8+%JNcv^A zgV8E)V+UcltG~m3Mcwuf6p{BS$pm835YNdsrIh3^Ak0f2Ln-LA39{jMYht)sdN|wzL9C0N3bN+i+`kk#+#*H z8M)Q=VXtka#Us@oe)yybe?K4BoRE#PQ@Ynyjvb&0>5QgVOG=GayQCL^dY~ z=B6Z&KB7vK@?>m(g1hZhC8N2UiLrIp8=+W$F4bUhjq9cuvenN10>U zeQh@v+H9^sWg2s9O9|86%F5&#oGV=%ai)dN%9APNcY3wq(D24jD_X^?;^g!v zE~QgM{WzmeZmu(ARF314>oOM+5fYEPpx=phNEQEU*%Q$NEGz*T5hf)wiio9$+l`n8 zH{trhB-YZLZ`W(Rr)eVlEmqKoQLk^o;s;8sUt7bMqXnSg_MbK%YRzw9^EL9<*~Re3 z%UsR}jBGcF1RFvCh3sfbOM0vdQ?h!QE8U$h+!jZW^%WOW4bP>_tqDhlJKx*GmP8x} z4p35KOO&t9DZ)x1qRZ@-j$=X7m$6otTsQ{o1SE(^JA-O6V%xL_3BsSD2et}}#NFJz3<^v9)~Y{P#bcR`%;6gw_jR;@7XBb6Miju>%h z^h*~0m?~r!_n}IYd>gZ}k_@?Y}XMp~^H|Y24!HCu-t|!sz2k!aPImiG< z+&gJ4*5e3ecRA65rUZ4vyWuzA3zu9yn~5)ZsI!lKt*?C-(qgNH`_++8!hRe$U6vT! zmD`=Y9eq;3zARk5zZw0V*y!Squik1@ZFA%*K-nBA2&Q-Y&B_AfvL27n0w%!3&V7H2 zkQjOdU2B>cFsxDL+lz2>?$xBC%pWtly;0e^;+T58@Z`Egy!A?1rOf&E`q=i|eldf$ zeG>(#nHQjpV%Yqmw(ec@G%uxt-|_cMiRqW;KkwSa$jt~~PwabBl>R~G;rKDVx?z8r zaT7%GXevxIQ;;H_B74x(NSdbfn?sPt^0p!}Klc{f@UDT^VfB@g5-UtjQTu68%rk=t zCht4hPo9bZ5RLT*ZHCSPdP9ojZS`a8d6f>o-ll!MHWV}dmcmI)t!8n?v_ctqKQOxQ} zCUXs;HV~l)A>lU$F_ZZ#Duz#t;-u0E1q(Ni_Ti~5o5+K?@O6N!V&=EhIJ82g1_h4Qs2PH*6QzRSZWp}$d@|}g53M|DF*2o zA+lBtJ_68~*U&|JMH|nGP(b%4WRQqjSen&+3%78vu$7mFK*B|+gwi$T!tyDVQr5|1 zVG+Z#a+EeUS9qzkm4M*4R-%WRBJZAswkic?8^r(tA#i z6)}HIaTIC^YuTeKagl0{Plr=mmSb#X7O`UH>U%5|nK|_a&%z0&->Kjt`F_!Sk&394~uumnXpZ zYiV?RW4}f2lP8+8vV19riAhn$&y6~R=eLp=b~tP2Dl?OG`oqU)4Sa~GeawwY1CsH} zSfi!Y_`SSC@?A}wb)p{D;F)v#Xk}uvo+85%BVeZ1-_LO_88@ZBO4*!!ms9lP?2En3 zc^ibSh2Qk~+OScq(^9|Zzk>skG(gr}LxV#_eg{~blxLhDZ2~NuSlP_pzBam+b3D(dZXUT7H}>1j=fe~zH`E!F-duWW zwog8gGrHYN;=yt2$K&hSsFZxqs7|@gCKM%p>)p)8)@07sFfd;}KC_}Y))U7M3e}5y zOpF??@GM-nG>TYRZVxB1{J2ROEL~)zQYes0sx{Ay6N@ze-9+I&^$Xu&cQI6s!XV;a zr@S_PM&YD4`OBy!-rnJDutJqJzgbWt-3^+(-WJ3x?Hbb10!H!k*#;)v zdqn%Sc9VeSR9hDi{4%6f6-A@h^HIs#6b5C~Z z71n{>4=U*fa}(f&qj+`I)Hl|9ZpLE>0y^Ns=Jk+^jM2jvbdnVE$_p!w8_tbQpo&SN4+ z2*W*r!JMA}S|RIU^*DJLf<={EePuk8Hko*w#JJicdFS!SBkv+d502P(X@YgS#>atr<-*f zMx6Sn0ChppShhr>+PPf5U84TpX4x&VDevNtX_JOF=TB1AK-+DC8{xaqLqzqGo0g(U zwpsRFy;Ux|ts+}9>Q#*|F~_ytaY8vgs7HbyNT~KvnP*8=&ySgx?-J8!_8As%Xb*a7+CH!sUo%P=_{wh8**<^;U1X9+?VcEA zH2ZUA(B?FCVN{UX-`_xIB4-=BhPH(N6(rxETN@?>r{jYD0qpAv%uZh}J;+IMqLO&t zC$8_LlBvSt=+EiOgE=vLl2N3J5R%K#W-gC+)%w7@zdu09$x=)QIhe@Un^`-09d{Wk{k(&guVp|hA5v@#k`DxW^bV3Z1K;IW4< zVXB($SbaI(6Hu1~vwKn+lwXpW%^!l49c!+lJTM-lMuQK!)D7|{iz4QmRX*vupj;$I z%?FU*<@6+ILE*4pE#avW^^4)F^NDa8`P3tzaJa%XHWd& z69ux1>_;)kjc<;TA66*+U0p+iOpBY#UjKwq`Z-a9wd?|G8Ohl6v_CehDW+_-%J9xB zh6h1mb6Ds@l`%JN2aRbj7AJ1uRMX)px+Kupm6cR*M%&t~kMTxac=;?7#&50&N zDQ|rSV(3g?O1)?DIh$Wy;&}rvdRXf0av)sB@|Xa!dHckoR3-u;?9rQw5m~$F zMH?4i`)Fw>kxZ$Js3xU0Nb$uk=$^QKJDf35rGsLkKN|Jj9ft{(<*TR13E&-FQgYq3AWxt z7=s`+GB6s~-tRh34?$-uwE|>AfIIsI1;M!U0FjeoD`BT6sQ`@KM`%f6K$D>~I+>u! z!Y)8jI<;{G$5fbTND*?FVC=3usHrZFTsj9wWp1){Yj+wi3@7MwirKJzRdkwJG_&z8 zn@d_tx?hZ_(Wk;*eu46|lAxl#7SeLf{c@H&eg_ASzGq_5<0c@Ygu69YYULsmN9)t{ zSG$D_{C8fj{@A>>P|5%UI=nN8;M6VNqHuPBWpej+AEAruD1(dr*wQcC$yq+-)*sO9 zvh@OLkag^a>R_0hcR!mbHLIcR&k@;wK%ouHcetItckl$v?Begcw$n6~Sqqt6KEbw! z4dUcW0^I9{lh&4KNF$Ro)m)ide+(4tq1;k*g`-evdCpX>Qmw>^niQlN!Fdf%U|?Gn>6O-S_8va zMmdwJLiO9^*@1TjR+_9cZfbbaDArUp`D-O;6lyFqSTCv@uc_?b>}#%t#RH zXMWyGXDb`OYn&JMq4A|2S|5!|y10m9S;!k+sm@;*Kn&9VG_yWg_jLhrbYjRzHzaql zFNF8gL8UJ-$I+7@ehl{lbgdabmgcEkv!Tf20^)om?Px3Sq`bkKHuY`nby98+~EyaU{jEB!S{7b{! zCDS@Ck1N_54_n_}dn!h1nVm3*VRU%xwV8~h^m!b5Q_C31RseGfC|#`S+*1_av{{R# z`fYS(jmLWza8KI2y^@)zI!ijJn)ew~u#Fpt7}UvazR-x9y-Rrr6TQ6wRg&)1XN?jH zJHB@xzx{yZk^;#|T?$%!xr>C(ACj-VtftGfa z^EQ(sKDXdRMOGH7Gc_6uai6}st-cVoUmxThRMW?%j}r=vU<`^hOkkB1dOHtwIizd) z`~aX2VeB2TY!JIuX@tz?@#B4!*$D(TLmqFow3SQh z8yG*vZHU(&U%hMu!CrXN+wRmCb#(8%yqJ-Gj-S$*VOwVD4JWdrJn}f0XI;ub{5zs@ z!1S$?AT)iWzVUI8g2{aQ*Sh9kF~z$}k`I-e=G<^y*n7_R&q4n0Prim2!gW_h@4>~#KO6P;PZ(b>c&ox+s+Y(;F`wc7y70eF{B;r1+}y&#zzj;| z68Sp#L+l*bf9JzL{%errTPG}j5h(87Yu!v=xkM`yAnHfQ&q$7sI~^}FgYLx?O~(QD zL}*+$F?jJ7?qby6Q*T_TsLK6m-LGtw-E~ zeALpw{7HgjWZQauM2ExU{@eFQI(GW-Iw_65$Rt;j#gg`mr8@*$gq&H;>C@9G_j%7p zUeNwETgO@}>}k3$t7AVd(fvcx9j=h`8x*MN3y;LR>xnK@S;&_M`Xk6ob{?(=3cvAF$@R_m)gnIJkmtPG$2r=<8=|ETA86 zz!5*~k*F-(wQmQ2bjzF+51l*l<4Va=`FO1kS!XTcFPO#vG4x!r6RaEzZ8zsQf6F~V zM7QHTmmcJRrmL}JL6lH5QG8F?l%{J|4)+t4?+&_+s}`r~rVV-6#TO4m9VMPi^Wh$| zV}5dMZ2pCe*Qdm{QFu2jA2kxHjY1ZOP{If-HYq=Iz%xG=`dgE;ER!gtlwsuXi0B+7+F6*K7_B%Q?ft(v{v zpFS;?vtHxb;v!Zn&9MzId*LjeWV!ES_|LxCjQpgZ&fSfoWHk7CmfDyJSD!V6y5(x# z`VdYogv7kL!)S9|x@lwP`9)Ee+p|3~|6(_m75>?_;djfZOInsfg<`kYi=DaG@e8A> zxseS1$<0R#p9N`dhuqxVtjX}eXzozaVE103K_CqKj!Ac8MY@@h_+_#E(HpsJ!=+p( z{Cd0-9S-J#B8k2jaUc|homiBRri!aYrP;7~lSYdvtzf1|^73FRJ&GhqTub0y&&rAp zHnq}DSS*e@fxKp9gdk>lHqiSY>!X{=y!?B_SlaW{9_)|{o&Qp{5qydh0rv6sjh)d{%pPb zOS_FMtQ0`hCzniQx-)miBZDhl3I2L@!uyrkY>LFF);xw$n%{J+j3R|=53Aq~kU`8h zyH1rGahOH32gg~Y?{m3ch1^{dkOLY$W?$p!w0{rI#hM;BK`9hEzNwc^a!lE4sjZD6 z;5g(jUU1Cn6yeHKIjguhC_}P8TPLAZtU+crUret0$WW@?nj_@-MB`8&a=-5AFP8~Y z9N0dlRRx^Xvx`(asC42>G&1AxTCxEeASMelrzWMD&>girR=zfanG0oNzCv9M|A|iw zoRRhbF9$OkZnTv4M6a1$2~P{3v>O4XnP5cLZ6e}|m-2Y{%tWE>Fvc>E(t+115*98TN=`?hS4#ubd47ket{>g7n^S7uWb_3(n%i> zhGu!yexA8@y3@Dj1yZCgj?SjE%H(co_s3g%XmP#u2zWm;Q$F~)apBC4f~8$C6{3_I zp6VeL+`v|o7uzStqhK@3Q&&Q2&c1!U^=rm5(cRc*q-ZIMLk*1`+&JbaYT?p)dux+) za1zVOlLkh(bqacR|IH%;VfC18p`Vs1!^&XWE;dj(BR$zPAWGqBI0x#reex!2Mz|o- ziXQ+MMCPV$id>Opj7GAbkc9_m7T&s?opm3Mk{|A@>b0a*B80>`Rj>KL`lK%m$CX8R2_P^jKmbtzs&jPdyrvUi@kl}_i}^AoN)lQ0X7~eTKhv=S zA;vqiGi2FK0ko#pZzMr8HwJ^pQl2!4xiJN`UG0kI=3BLp`CE^x5Q;@|f{PzT!XH9! zQj21+O2Dpw*fF!kvhe;hoAE2jM6OWKP9a2USG;KGo<_<{Br=#Zd2sJspK43gj~#4Vz`lP^Jj%Fp*&r)=p`=77`Bn)h zokTFDRdXu&xTQ|WLflQzwZtOxDOf@;>?C7v^kp zW9=Z9$HV*>by{kz76^eQ@i>J;>O$9xg zEsaz(&XefqW9rzknR*PvBP`$P z;y8Fg4Ndlyi21WOuL4eqPcm-Q^+ol1kDQ*;r$@VSBa6OP?&Q{*P9DmVn94pL z5sjIcMOPbNJ#uaJpB*R` z!q3^zVi=C3zoZe_ElWSuX6=W(KG%ES=$9iA6?CP!BDGA%3%PtZdqVcS8_S`pc6%Mf zOGLwS@J0R#A=h@UK*m>qhWWkzNNXC%;LliEj;vCyD`b7X**}Gt5J!VgCJn{wamRF% z9Ud-($CX0_EJZn*0;E$R!8)QD(|b^!fSjncu=4dPKrn~WZn0G)SUy^CB7WY{_JBut z_ihplkK*2X|A|fH_;tI}$ui^6^aKi-WGs(bl_^FMsz`qtmqEkkS+{(5;>qKNwBQ9x z@Us@B%fL8hlL=T!bTp;)^UZknVASzat!G(jX=xUa=)h{Se0(cPB_w^KH&B(pK+D}Z z^j*%-mpd#)VFP4n2nQ}aYN}vo8+Dv(`gpVd+tPQ+pyeqN5 z(6Da`)={!x*c3f-tXzYWKh|#_~`Iao^9u_I`_UY#Kk`hzgebr-Q%|%X8 zm~HdH0D6518%_8kIJPxh15Dtd{9Jp<`Iv~pWi$dzVluaGNU8+2X-g5V=ZoAY__0?@ zN-QvjIn?uv2X#f>8sIed8ON_lmDkc=@jaz#G*rl3pi53BdC5%O3$-lw?TBL~9#lOY z6E58Q%$&-uu$HYYg-!?LgNf79vhVms#vhi!oRdZt>bFIo;|CE({r0(m*ukPKf0BEb zE~rvS;4E;NuX$?JC$}tZ*dB7Tg8t-m+B*1b+S$dP3ghhRTKHTF{pHsA{K+*W+dck= zky{#+?3#7C3q{hU2T&;_r5qns@9xh(iP;x+V@o4W*Voh>)Jf_Tl{ zt12<{m>mx0RZoJcaJf*C;~v3@pGx>Zna0HCvDFp&XBjapN6;8E#`by@FzP#1)s`lc zrHj<&*_F!t663_;WM&Vuavdf|W%4uB`B6Etts%M5Od_?D19*6HVyRaF=*7Ax zOCp{Ap3*5y#YOqzme1`$In_IiRwy<{XF}N8o~b%DsfO2ee)to+p4t+mA_hW%1!Y^o zH2k>55yi>9mIPys-wKHtZ@EGi)ZqXgy1r(WxgN6D!K&LEj|Oe5FSFexZOLoY-)l&B@FB^0yZS_?+o_cI3G(`XYY ztv#yFPF1x(*xFiSy8My1*D+tyxfb?-o@D@D4=`eD;yE6SPO2l0aIoFxHAaKQ2r0R4 zn-lYwWzlOs;~%<*4j7aQGzq=B2D>cZ2@@4!hlxgw#vdi>IHjJd;9a3@A{r22Fu zGL;}CzVN-yw^E!;yfOoC%lr`0Q%a6hl13OpG)@eE`~L2(6*>5` zdd@z&F`?T{&cobz#%P7Z%@AU^$+>dy?$?#1b1m>Zx1@x77@;d~eK<-jqC9`R?q(`W z?zBN&B}r2nu6wMe2G!0(^2j2mlzBZ(bg^w+IpLc>G6-!<5Vyj{Mn+^1suIdV6z{%& zD3cePU7Taor-F1W)~L8ar1*vbcqYz|KR^W=SJ~z#^MIZ1+_#wuR5KG}pz|F(o}NA( zXbFH|pW`z%azydYvxCKt4h2woo<0evZfEfy(V58tZzq>MfT3|lGP~{A9-|S7H7vBu zZ{ovw4#aRh1we;VEMZ)>P=HR`O$PEp0!~z4GD(x*$I?9=xco6wV&uZ*(iOM9UV7Y5 zgLeW zHPLRxKf-x_Vnx-W>N_XhtxmNFAq%KB+EXcrCnp6N#E!)n(pU*Krc@x}hwD8>QdE5v zl1c{hI0edO`FC>om zd{l19DvxS294BeQJxVM1k-$wDLe4OZ?;(ufJv8JmPCb+o|!vv{sjb zTs2` zU+f8bY#~gsMFk^w3&tQSD=V8W=IPYU7wrm>_D7Lr9?S?(6KPyeQb;GV=*5u-MpiQ` zjiliX-x(Kim4E@udrzAU?w#2V6eSheHDBNIpF~YPVSY0`-_exxtLW1G4fLMwMQNd@ zFb#ed=elgzhpXQkTl7ArqvAIEB>Y&Eg8Gub?f~Les{L4F@1|@(ZlH|LfZl?r{={^9 zGSJH4WB~_9!<)fKMUj|+EQ>c{l?SdZp|&-@lCDh!_%w#FT_5usPTSnRd7u|2U%aWdA*bj_;iV05_z7o z-8p+dj(&?+v~YtiGe5OH37g{KHap)&`G;c);u=(HCdG{-L33iUxWzzzTYE0QySx2y zNvpVzXbDo&TsBYfEpv8Ridm%qOati6J|CW|){ewqfLGIz_5CyjN44w7ueWv+x8I4N zG&?=>NG5Oy5?a;B{bm7g_DhydlJ0q!4#`GV?$F7B9hXc7BsPwNWcR2V9C+QWTs8uI zaf399p`++*{U7V83fmeO#f9kEcihEVWX^N86LFQ%f5|&>PZ|y{5!dy7K+ED^xZ*GD z{Ect-UYb%CznY83?z=!Wxf=RKSbye3h{)hs*W5$C@M8ANqZEI?4l9opo=7w_0=#3YbGPewLvH z(de5NXAVhM;@Y~`aGl%jHe^KB#cMfRtJN1tDYqL46tU{uzjqxTAZ#?SJ^fH)U#{CR z>W@Zf$J$I6TkTU9!2pMFF@ASKN6}pIP#)Ditt_|}_{&9@1DSD}n8kTpzFkL!eZ9WY z!QXfFu(3tZGF_E1o-*|?h>b@AFs8=Mxf|R6;z)a>C0g)McZMVDXf{fbj@m~YWrSHq zQsGg@^^$IJ{~W+V(jZQ+zIVgeE~_}lTy8e^6!omS%@9K(>1a@{Ndt=qJ&ToBwE94V zK*hH07B=L<+Zg|-b=(`N<)pntnWi0UPz;64ll7d zDMv#pG<4=*+G79W$Z0ZL#FKl!q8!xs2FNITe;4D^U{#&-&4`yFusIwGUc$p5j~{A{ zr$)&RWED?i(s^I4aImJ5Jh{CO@BnhL7>y2CH>&|8r&XYbW|c9LS|f=4@nKMA4#ZD| z$z%Rbu~2QU$jSO{^2emQ(3<&NLo?IP@PbP-9#srdbEg_ln(Ot0KLRcraU^H`(I_uM z)=b#nFV+$vO@whaBgK-#L zJ683dP9!%1C>3wvNCt=k9*lIlv!t`z)#%Tr-%=k6^tAqRqMcBtn?R1o_frusEzq8a z&wjp>LZ*lS&0IPlvq)^BKT+2O`5ZS{pbN`7}jE5@U zoO^!k_OttwtE?`DzK2rNFccNNe@UnRqtIk;yqM|)afMOu0qRVumPBKTWu(PtHr=DX zc}9ca_no_G*u3(OLO1L|n7%9$Xh(LC^k#9;3`_PRX^J zYXoY9_qYjQk8{@xk>JpZEhsD2bW!cg6aJ&up~OB#Jpxo4c5W?c5ARjli+@(W&40yG zflwWxZqvE;GiAC4>fGfLpl~+{`0>Ky9nBnu$soO~VTxkf$NE zXLtHkngh>g2Zmq?O1%xt6jj!$6Pw_BP*!>s`i>agn`D8d?7hc1{`UvBTReJ&&5kgN zjDs6zUZMskg>z|8YIfvC&e%<)U_bXkK=qRB9#Q#>`>!YMLEd9wMK?FMuVB3Lt`i2? z6vTaBFB0Ta8E;rS!(bI&WT8??oa(O{?lv|0-Wf*h(g7=I(9i+l4J^a9#wsUYnS@R* zyhIud4)uooS*<-*?W8qkobkq2hnpwo8?}EFzyEMR+!oYddw$-Q!~QVg98zioF}R9sfJUE4UgdSaGzRm zhLD8v7xpufHBw)u7?3N|)2pkIKZlr_6x+4c{Wx3^xegvFy)EyTKC;POyt&)ewB5bc zLKA%5w43l%1q~u>u}_@`sKY9RpZ7s{C{?e(lZ+OmW;q}_o_Kez7c*VtKHYfeErlaz z0x+mRQV7|L4I= zW5hpw>$FTV|J`}VCGJ9u3H?{W{I6POSBMuptC1N#HHiMrkLkZxD__2Uqk!ykKtbmg zcftKXc1`vgZge^cL{z!ZML^;H7ZT#H1ABRqd>G5L)D2A~;R*|9^`}xU{S8R*;mpWH?~XtWxD133+zY&F|( z_z2^VW3Sh5e2r(8-`E2JT%gMVWk2FlsoV4IAWJ7>=$9PvzqZpzn6IDF@jDl4t$5F6 ztnb4`R}bgxCJUuKb+MzMWOq_HTcv083Q_jrVsYpf|YKHNnTZakUJMw!Y}iap;MHL6-n9!i)X zi%wfHTM{##_4k~-+1p8Hav5hEh^H&niAB8I`^sY?QCez`l{PJ}I~Frx>6{#Oi1 zC5|NSW9v;S>G9uh*9U0G!`TLi+F`bjW(I(11ZKu0JH^%rKLtCrnwGiLR-7%oe!gt8 z>GvfLHny&>{TpGb{K5HQaop-P?|Lx_ps=6oJV?3XV<_TjYKvRN;E1hrJiz^!2p}G#_Z`{L|>0M5BO(m_0ptT;)AtLkvq&| zSJ#6nXAd=k!&Fm=Fall*+~lQ-eoO$#EX8kXK@`lsu?YgBKYX&NM@$tToId)2WvV;E zxYm$KCXvaK;u>}B8=y8po@Tc*M0<2w5A=qA4d<5tn&t(m_nXkF!+qk8z}Vg>f=~!{ zzDlQ<$*8vbrDCxkq)Dq@v&W}gs+Ilpco$e59?K)C(!X~FphdXc{ac<(=$g;ng#fpV zPa+~BcWd_^a>ZhoYRJ33bn`VQ8O+&u3s2bsY3Nx%ok6BDCv?LVljWt!)gavXokjE^`XElU8d$T%N{} zo%?$tkx&vIl^}E)0d>~mc>4)b?ZJ5-CG3;MW-=FlPnF0*&C*Y3G9}p)ITF7F1H#7g z=r>4i22WS~#hxQWqtUw4JZ}{>R1T(Zqg3`bJ>Wg9e*mB@Jr1WeFY_5h|+i_ zk;z0>oMB6g$9_U~pcIDjo4*eZe#pZrx;UA0>fL;mRhgXOn-n&=?W+gYPf8 zR7$^~qn7K~iG%hpR6(gaKE*$%lUPc!0rwQy3DVG*#=rZt-ca>k7>+M-fIYW!BAA#0gv?zcgM z3E(sRXob!{m?7oLXNyr>X51NF4Vh$Y+HlsamqXq__pw*-x@ix0GpL^H|Hgi!egI%d ziS5RZm9uS0?(}}^He|(+)&y4k#5RJ@j@TZG)Kukn{arK%&a*f`pFAzRi{WyyEf%jF z9T}1860y&+3xCpuud1$2H`x#o&V{Rj_)oh(l<~c0!S$A@+*e(_`AiJ=u`LLRidB2E z0Lzq#POE9G^zq?=_)*apr2AX1aM|e*G!bGFOJOM zIiS*SrmR4T?+ZWp+B4H2GT$agG$rxsa9*m?NRkM;T6xuJ1u+A#m5esro8bJh(G{4^ zE7zzbDa4+_^yo`viMxWn^mm|77d-^0y1M!;Vc2exjl_J=|Ksc}gX-v-uHhgFmIMo~ z!GcTh;32rXdvN#QZo%ClxVyW%JHa)$yT3zn30(K{{rRdWYO2neGc$Yd+1}CNqPA|d11t-1=gvZT-pFQ3E$YWgJD1j{1>bHn>fA(hBooXqiEL^nZ;2#cMoB;G} z>wVj4T5|2{LJtvamj;fieC~;-dk3EYR`2yQ{on}YS1weS^nMOyGS+4M}I+#l-*B?V5s~v$?o&6?fyxi<`i0wTR zibAD2ir>K+Jp)5kJ9^>MGHP`^y_h=ta>nhq(*_7WV5P10tVS*=S5{ZKO&3p!(+@sE z9l~n}`o*|*35fN^QfS_F7aAQ6=>bget5S?vE?NYd3vgy@hm5cBW%rb|&_KpnD^C*u znbVwcHRZ4u-e)hn=)5IjaeBMPU4wMP( zzvh4j5BEKoLXXx3J+T9gre7zndIk7&twN@>Idi@Z0xHv!OSp3ZBkkaF(vW_>Nk1oA3ycc6`X(cj=(ib_I>n7 z(m1{yQqR{oL~jG;Q#A1t#n!8{9my~PfmGJ^N4i1d9RvVM1nh3f78oFr%I5nnh^edN zVu@d{*z7XB%(hzooZRbF0sX|8F3%@UyrQLX7<436u7-;wQ~D%mJW%kMCS5rz>GvNK z2q(&*GMJ#NvWwVm__oE(Vzd9~tdGSrnr2)2$VQBg&Hrg}VLOjC( z|JM)W#9c-J?zzt77)6fQ5$b}gtE+!bS!InOM=AqPF4D$I_`NJ?n?sZRx)5LqBJzO- z$WlA96tDdW@49eYM%Me}HoIHcA}Hb=s*mxp`SgJnyL1kdbl16D4QA^JG?v$2k53%1 z_H5${LVRHNGp)8p(e@sI$|9#@L)`ku>E@3Bf0{L3Uw_nmq9lPBbeIdq>_#)pg+~~G7wIj1v-j-Zm)~5pf7DK8oz$`2*@Bqg=ELmBh;iHaKYI8Gg zZQkSyK%=g7oXp|E<#>1#PjBce*|Q(@LDaL_?$=OqG$2ZRZ(YIB7gZ!_lBA@6++IRw zbg4)09VnR7FBU#-4cMb}MGtQgfmxGug)!dc{2<$in^g=KmzZ=TuDu{{G`g(^)c*8a3lhJq9HgL)TbyqlYw*}U))>?ih2xzaD@D;^n|UdI-w z3(}DTgrr0@hjo$dU!Vz0u zzuxj9NyAb=uJF8uINOoNVqBh?Nky8(5b)EpMl%FQn{ixH0D-1N3+Ppi@3(=)?2*-M zrKv%S0hdoUdU;t*cbR#>I$@RK(q{^R#&IrE+bK-)w(b`wTd_N6tYVgtfOz`KfWQ@N zRf$yksynHIev3n9e;L%?gIo{n6+eKmvPbV{YZi$;MI2)!y)D)!+caqssnH05)r=sW zv))7&6qTB9-oFNwIB8vyxjzJBMOkqBTMeL35FDJwmhmF7kx08FBzzoJ^Z(U{9oA?d zj30@RDUcU6K*(%;O-?~J{`15W0uaDRE`ajrkNawjS4(h{R7r7(%1=WxnY0qbv1)%B zNW?-g@`@Bna>yg*1+kW)Ol*3C&Hq*aGc{waK^l4`hjwGLzXnFSK=36R&i%hj8^C59 zL08IpWZBqpap9uDZFc7f=gTUnM7GDJ8_?@aO{4{-Le|PYN0Z73uFz|rpPz^Q+5sGW z0cJ8Q$AMY6VzW5dfitO(1Glu6o$n-$tL@|H^!tsFBm)mNE}aeCzxIT0t*WC)A!C~s zVK4f2Nc#6OyR_it-f2_xM)XjmhZElpL^GnScSq4fQ+&>~=lI5-*mxI|IS?mCIf#}c zbR#RV5BBD%AC({O`iAUV@utE?TUn)q>8&lTc6Uh9V^{=~Iwv*+5JKzY2;F*7ude3r znM84flngGrOM0pKaH6pc;gl-1!al*@JS`^1_pzdNKhTR+zG48(uCdfnh-}f~yXY$J z#eZ>=7of;rn!P8W4BJlEQ`4L3RtsIjt8TF@D$5;Vybzz_pKdz z7eg&d)xkm7Q|v%A4Lo#k!w<_rL>Xj{jB=F@2)6fdjYDZFm_LDZk4DT@={e2(=X z0Z?Vzt;ftTt#>A)iXZaH(Z1&_ac1_uzNvP+f}Y5iiQcByOV^E`l{IXhr7^?VH9(jB z%Qf{Cj4b$qL^_4Lz}_-^7e3EDTV+TwfKGo+YGhef=yZ4MTP6Q3voaJC@-=l{V2NN= z1QLC8De32@vyTAbCMH{`j5e1kf^jURMx1s{$ixnhC9_j)QLRe|ft21BM!=~c_+J=4 zC$Q;#l#nYD%Yt0+JlXujjXrVFgbgI2pxh4|W2G_J#S2>U?~>Q&i4MmLfP|ALCs8)G zz>b2&QOLS6n`=*rajew*FBOFwKNRb?L)THB)jHqcU|4;2%1cT_5*_ImZhG*COj`oX zGR=*?r}#hlhQg5Q^#;%bIdPL94|M^dXaDs)lRL4})$Oh7SV&46L6cC{xxJkgg2G2W zHp#4ICnk6O`}&%#MGBV9%_FI`e1_zM*);zzF!cF8bWgY7*7xdNQp;3%;^zp1+#SN~ z*lvKSkt|tx&n5Sb#Y^PW$H~pBrY5y z_?M9}JX3TNRxHLU?jqcfVyHvjU2LE8?-pGSw+i10MB+RRWb=$j+FF>NPQyx!Yobn% zM;J<1`iN61ZgX;4vEdm)M>~zcKVBYi;E#tpONPn|U7kInLH+c#`g1Hnq~115swdk( zT*V9a^t?aE{`j~zncM%1|f{emwt2!`yT`h-6+3*8gE;IDHD9#I1m#kI1Q zA5ZW5@fcSTfcN4cKtP1vn~Cq8*=+2qg$)o}#}hkW4R!NyY$_{DM(D4fddU3E;9uLU?(qVhP7w~J zDpPZ6YHGXnq_PA7N&g-oUI-%+K{t2>gL20M1a8t979HYOM|K*6Oj?Glg#IWQLB>k$ zvbLMgOc(s4he~Ewyh-SuW&BdgN}@M0J}=McYB}OPnD#(e2Ogg>#cDbKH`I4eS6Kog z98d58sK07LS?8O6+zu?P6Fu@f`KW=Vwvk^H*V=7 zF0D_N=Lrkmh(l`iKVH3wA9Z1|9lO7S$QbO4W~bAc`$8&T%@j$h z9|;E%**q|%K1t4B2X4k1Dl6iBLiLp?eHr3C3<_a#Q>ztO@bguGjU{g%rK@9 z4-Wu(i2OL0sK{U{n8q8N)+3cUmav#Lmcq@qIdg_VXFJ$0ZoM&-$b)(4m7(r-Yw@pWK7`(0 zgE2iQqjBU7WIGga=E(@q*lp9dOQQB*PXzGV!@A>V2Bry5;!RY(^sG8vHr}pS7VvW< zGh50k)A0qN3q6LUJ>i{xVO>bIwtK=r>!D0$OB87xQ{hH}`ssg{7a?x|)uHtXu?ka{r{7u)? zQ1CbZm+YXRV8pS;n}Lf1dl1iXEl%8A@W-U&HrKL0Df{>XDmakc<~Ee0Ks3ZS2<_V0 z+ud82ne-_$o^=V+$ry4a#JjW*D$yl z;YJj6kHef@*&_{y_B(_4kH^}M0&-;&piX||g>m600*dxA{R2DQveV($)l(pt_Tl0f z3sG|h3?N%FjX)B4%}92lx3%4Ds4}w_vMZsG4r3c-TI7Puu*d#fLs8WLfJ0W8&I>p3 zKG!+6BEa#$&XRg|xEmT0G-G4{WFudum|iiDSHq0+b)NCB9qm zKq}WmKj}`6V)zj7Y~$XCnlAD3D8LXuUcqMAhpPf-n#rt$vY%UkYIq9fy1Hs34p+%F zBf~`9{h^1r;I$&2Z7sk3S|TXloyeepwTYF0cq3!1CT7lRd@d<{oOpJ1@dvjCJWcw2(p_9dj75v7I76vH7 z5+TxF6=(>)(y|h%t?EQW$07KOM+Vg2f4gjDt~MtYASBYG7>ca3+o)d|a@ zrV3PM_+b~Oc{q%(qY61{gh|5FGanTlV)UK9sp%8TC#h+)`oG+09yN^C0P$#BZyhUY zBFiwCNPL!mU&%G+@nU!sm9 zXq~VHR$-s+t1FM0p52t_YBhIHhMNT>m&q);;u%P`0l!t-w-P5!25?H(_ZJ=SW-N`# z23S~Qv9IT{wgRIzt#x;CxHsy>MyI@##sFdN)`iDvj(q0FS{Uub+rX{R1F)Q?nG-6R zDJj!FzvbCia7FWmGWB`Hnya>NQlk6~M;4Oa_b$&aRh_OUtgM}#lAaaN#T@J0MzEUf z;U7fXW+XfB%pwBC1vGd{X8Oel2V4ek4`U=hh>%VBE8gdA6zNq-iQzv@@rG1GO&?W4 z$H`Ecr#0^)f`Q03%b%at^Y89Y18k-3#!{#|OB3cdx$Ke;mP?k7P^>86xt;U`LJ7dh zo+VN``*G-%;?W1rx0Elr1kHp3Pbe0zJWzku;dI=87cM=$N858>*jtpkcI4$Sldv** z)qW5<*}isFT>7H4_^cS9vxhlnrrMRx+1qdfzz;%c@kc#jrkK|_^>2q-2HgPezHUDH z@iSk%nHYrS(SxV$eH9B-30Bfp5Q?M|$&Nkx#1_TKRdnWPJddHPY-g1;jVCu<;i+mu zdepnf_ucS!wH6ES+_)j;_LsDqDnHgB>d#=S7^tPel>f04j|ZG|kiI;yQT2Ku+=zJu zONF3Gm~~E^?-+w5drDW2Uome;?W_g#T$l9`#Cz1o;A@x3L>a`6RZHE3u>~-YBsbJr zyj0c86=R-~jhxtwg?aC1-ycpwz$oRrs4;$>b>F(-gU7)v_QE$c;F4*z&i<(SvR>M7 z>$7Rp{a@_BYa1C$K=RNwx*thwe0*w=$j-w%Gk!*FtvDHSU0_IMck5H&tjMcjb;#}>cV!ZF7RC0{DU|;J;^gp>*lzOb z1Xf$hxbp69rRq00Gb4dLZ?*+E@dNLwcd(enw1?F;!z zgJRe;Y4l0PC=>Au82j_vm&P}yuo0|Ut|3n-B2Xc&#P<1XEveBjk|{Iay$4~bNU_Jx za)*!lP$DGgh>Eyi;>Jif6h>5+Us89wiD@1os?`deoO5G_QP_5~8H=zHVY1BN%qX*1 zyu09JI^%K(DO04mfX>}k$^X={1CK9p`fc+O>;h}gUQKQuB#YPIjAFkIwDb2=MRFM} zqM#_TTK_~Uc`0SESR0%1=FRF;2hkTF)TW-DikKMkX0roc-75YNvYcvy+dYTXXIwQao@6N$C_&{mJ`Kgh`i3Q}PySux^3fFwjaMcZGaF<^SDlILnLfhlsj2(RO6`0A^0-L_1r+4=lMm!H{}buMfim1iN3yBr0U`O5 z)%yFm*cl*>y@Y^JdJv}mpA%nzyvO|xq+Y&ZJlj?tL;Pj9knH%~S^(Ar5*!;XM89Hz zk`O^gcEbSudd2Fa&%0CW6xkB*uP0s=YkQV**JTwY8I^>MP!kt9b=X#tSaIW2(-EUt z-PtPJ8`aoZ&iDjRFM)vdhaESIv0<<|M(j!0zDWXlEfSy0;$v zRS2MCZ--7!F5t>8 zcYvQ}$IGYbc8I}q2P3!<*a!fu`%QgKT|+8?_2zt_Y?u$7((UtlDe5BNMviJtQD=6K zzH_FzRz5D=2XJ|)uXab*u?Y&xt7i_+U!!6oP@A4Gg3u#PDmFuVBUD3Wc>Y8>il0BH zN4`tBh)2==oao$G-2&`1k*V$OIS9#6D0`6v<8WE7Q}Oq?9*66itO5N}s&`LcT31dZ zxMHsIf$3&n_IxkSuavzE$XIwO@zsre*Ogc;004 zu+qM61%+h#luiJoHl70Q>Ve=!bhdPWRk^&R)_F4bzqcGnF-~MOzy*08cK&uJS^-AN zZ@|)%hVXwY;~+4CU;vyNiBt6nA)sTF&QqWjxO|8iWcN8VX246?2G0|58pP+O zUa=Rcj?{a(_{4wq8~QHUah&lVy#I0E)C4Wn_{6v1$wQ^dPweLanmqgg04g!InZB)| zCN^0y@0$j(JhjiRoS^vXSpyKrY=Pi|I3BKPTF~2fA{*jW?9Rtl*@n;Eu@{grd;ksx zpmv^4r~P2wiqB@{F{0c8CqVU2OvE}LDLeh(b@X&^e7ve_ERg@bINwvsAE8A=&HbN` zGZ2e4qD9_zwknZ7BOd4)I0XZr_W_vJwu>Uo17f1^)A%s^015~P1;}xF&9djPeO1WnA2G28b zj!vUVtE?dZ%;!I+Z{iZcgOr@d(odL=vsy!^PDNP+fV)a z*&rSsJ;ospn@;r*A;bHa@7^Ia(94i^c{0%VKgD|hhOGBrMYQsD#!<675UTgBr8=W% z9T@zv@LxS2U!eR)V=z!G3+hgy3y|rv0lHJccp~fDIXK(@Y!i@tz@RKWu2L^8j{rS5 z;t-DDa>c_b$y)0T$_A$!O7w;wP|r6VPGQJROr+)K05>k282IkDKx}YuP5;m|?O7~|ch_Y_5%b;$FH#)YE=wzpcq6D{EZf;1Y!5PS#O ztrZ{{!&|qqS?K1*rFk~%(%q(q_4Pk19S{;2#SE%6r=rk?=wW?sZdu?$7+N$fgNu6H zttevX1xm-#MUg5|r=HFG3(ykI=AbH>r87w*{T5`H5>C2Mn-Z%I#ZOM>tn<}qD?ti{ z!UAao-|D=8x^W=|1#cqBR9gSf%Y$oakikUM$G8da766TSgla6;e*o2)B#u(OdPunK z)A;unn#AhPv46bxxaLF6@6hA^?=!@R0DCVcE|>)4fR6WfUdZuWi4J~~%l!OU+K~gP zE^jK%xBnUCe0adT00s-WL0;>7(0|?m&ZRVj5Os2+0gu!RiDWR7-!*BTK79!%YNRUroHaZua({WQrc^)y*{AXJO zfx|5oTHhr8j;-#>DGY_l`Yi@Pd4;TZ90jsO6Qis=uB}Oc+~5!*K=`#~<~Do?iDqm4t!EEj9x!ZTJij)07!0Zn+fN z4kz<(e1K|iVj$a2iZ%8H>2Flr0T#EwpvlixtbB4Foy#27BTJRW{mWNY zd_ClX-H9E>(K#>wt^OMSQ@?=^7GLu4pQTHSAwg|+EA_RsJob>tSIp%vZ~-dVSI~c` zU|awt?hQQ&z_kU42%6cfeA+TW-yf50Hg{EC$7^p*%{BX^(>f`B=Y$?vVD&oIpEB}| zRT)ir*O7H5?pA}FHjmfItk#yWAAxUW45`)EazFXKnOOtr{ADLw+Pa7VSU!&F+GWHb znD^U&rmX40s36O~V1WMdxzF@?YzbOt1pQAusGku{Pr z5@KTh?^peIWlEbI821^96&T%2(=yVCILUHr>(=4*4LBj;;o<35*MKlXvLnIVq65hD zj|Rk+X_K=C&77f+Qh9L5kN2-L+qcpgjMZdW;5cQ!q3PY2V=fbN;Fg;uwsn8?bUcx{ zoA>AIY}+Bo?U4cfoel18Za0Kb2lV~yui-W~1Kye~9_RDzf zx{C`;Z*)z6{Gbj;ukBhUf>Py^!DKl+o85H)FObTjQf-W|_jX}r69ZZu!Gw8ucmU-! zel3ybi;GqV6<`V92mb;H zJ<>mhb+6yW)7^iXi(>;y0iI5!ULm}hl;d&5WVTNj*VWFp&O^33Sa6a!Jr!N}aM|^J zOn2~6i`0s|HT77d=QK0WP$r`P>v*{Uz6JjZr{xA!IyPIaUmuB_I-%*^43c!F6-miC zh4ju*p>hM!cU2gqz3}-@d3P&Y zM)HzVgvFbF3rbz8i-k8f(evwQ&bDF=R~#*|v?qi9nHr;3;5sQGobm|W5hQ7(;<8xc zl?mFX*`Yy(H0CSqgFf>nT1L3N98T8(vvlH1KrTK@Fe&m;T=Q`&dU4%V;v01(+-R8t zip+8G{@z{z^e`6f1_3ynQPqudpk_MU z?Pt6LmtmCxw~;i5o(r|NFaq%X+@Swd@+W`;f%>KZH22z;;K$8}YL=k|IBY>`D_`y@ zJ!Bht!apG1u$!7b1jBM+vAnYF!eX&i=wK`J?ECr|5ow$fs027M02Dd?WRoS9yij6N zz-oUwt>{!p*a`A^*)uOor7(UAy;aHEc}^~lKBveM%lV`&=CCm7Ec8iBCr@~gH=V6| z@fu&EJG@!kG>ecXj%-l*HUy#HbyERpVKZlksEi%0x4dza@v z91YEWX>}D}D2g0rcsz_y$WzZ~T7p(i70AL8IMtS;zj*1zpg+fnOs-4-lwpV@5D4Sn zk|fk_f-z1UfGQn=`=QwhOsG4zJOMD{la}Ox?W1DHA$_D;3vaw|3%i)Fx(89S z@`>l*<#6D2KXz-EVd20!4IOvNO5uIyRktmc))bvHmf2UJRF#y2UySu(Af_GQ1Na5U zM&YG@UvT60AK=Vx9*W|#3kvE0F4NNcO5O)+AvAGO%H#K1{ze;##AGfC6+fa z#7;#0mEMayI=RM1G?^J6XyZ5z+8dEa-XRhpMqJnux-(_kO_;{1%V@dmC0%=Z&0pqx z)3FqS+~W9W7$tyqiZCdcsvwZ4>fmgRM*PY|HDXQws0n%IMAn-f>61 zLKjQ%-mP2Y#f8#)TBw_0jkcG)Sm0b=iSAfsqp4DDtqrHBwZNq?GEU0p=%R+1%$Z~l zcoHBc1^!(hDLkATBW=}~@@LtHUdXah+@SkVxZA&$#9nQ~Y9Xgcw_IQ1y}WSt(*&xI z(C2r-}(u z6e3!FyAszQ_w-l)e98(xoDGzk*Pvv3{*%Ak+pT?Aicxh#B;>mf@4z0a7LtuB3yW-C=TxKAAp zIj4jo$>DW29?p}DEevO0*_o}Ue)}LqLK0Vwf~eBBs$jQdso*$8Wtr|5o)ywQ7}r-a zfb@6gNVjaRW|-9z>=+b;`e{l2B_6~W8p9yR>6*H^i<5BuG2QL!6V>>phoh{3Yx98F zLX~S19c-Ka#updPu!BT+&A?1IRT+B{K$gf$EmAat0H2e3b{&SHd&h#jA5yCm-)O z1VFV16FtwEe>OM-s|tx<+MotiM+IYX>=!Z*RV?aG9#~ZCBOR$Uh~H8sAts}Rx3hMG zQJl0y!dPf;Gu!Ce8Jv4&=6?C;u(ecj~j0y7O$U^}wMeP70JZu7! zx#Tr0YI@XcyB|W0k*0idxO9%BegjGWt#65D$M{(U$!$S9CC0nf#Nhq;$T1HVp;B8# z{@O;hS9uZB%*TS~YS9Ksi9AffTE$B=G=FvA`+^6$P^>&xXRFq=IpRc%kXS=JGd|8+ zBNR^*==_a8l(pt-f5@`e8J*Ct{vj3HBsmKXTQm(7&O&A841-8PMUl(^wDpEe3hjZJ zv(e%f77dj%7!nThA;0zO_*PrJK)XWfwyU!z&08g$QvSrR4uCAL1{~FyE7o zE>d`?pcBWt=OQtGmI?~7S`5@UpR)Tgly1IIM;Yo)Lc#y-%(0R&ep1H zG&eR6AW&v%lSxnD9Fr@Tx04c0_W^OZVG^xQ0zrFM7vF4&b|1r)*0Gvo0WX%Z=|&;j zDbsyIlNpy{)g9;3bu1uqY@z9MI^Leh3%Yf|kW)TI+-k%*OT*`ob#yW{;4l+4cU=0> z@(XO7jV}(z1^olS9gQs09TMmgoyW9x161x{F83R^S36gB7NUhJb(z}WX9?s=jgm+z z)#a%L@ei{rdSJ4X=r2)k%rW=cD>ONp^d+;x0I9W*h1Q5rB56j@gb=WNTt61mn6@D3 zPv;lp&lX?BYPs!IyPT)bvDgfA#2$^;yIjZIW8W+*>{A8rFNBi0h()X>0%D9Ap79RE zotDr(m%y?5;_JPZEQuNqRZChx=lxmZ}Lgb5^@AB1#OxX^qJni5P=Iv4S3XvuiYuPmV;PwAyIq zHu;rO%MnnEL2&h1B#Iz1}GY&}R7i>Fxs0LXI4Y0+!^%d{qY5 zoqeh8B0J*iU-?>16_SmkJCe2eO)rh6b=CNfB-hWT>a~?bKyAg=iZt`T>dl^EFy`k6 zt+xv_2~3$Z2!{ln9*=Dv5IDPE&J?-)q8g`TG+h|2$8nsN=>laiJx}`D9ikdnWwc5R zD=1pQXwWxVF#B>pxxz%-)&N1SGw3`!G*%CgH#9~mWdGo6g`XAZ$ zC)0wpvLrrRExLh0STCZeIj7A6qCSgs8aICIraKe-`9}M_IBe6ITc<8_L?-SFGf{skK@NMzp(9nVT zB&HoUMh0QC^SE58)yw%R=eDLeMzMQ29JN|2g$v_b+wlF_8pA3RrLBX-i!ozbp6}QX zXH^_lv)8mXbKvu)#!7v(x_7fat3VLqz-m2X#a9=Qp%xzNN)d-Lcd-XFWwXD)T3XU~ zPu@JT-eFYiU{3;KhW&Up-32YJb*r_i8Dnyj+Jm%UjtN$OWU7%pppBDxghm8|v42IH zT=IQfr@V!Av<&57EE-kLZ8W7)ihe-kn7L?x%rNQa=>0*cx3byNd*-pnGUcpBIILFk zeY7|z#aGj{_x()GUC5SfaPAzup)U32V^Lkd+P)N9V&u(eEe4X|9DJkST2*3UtyKN!$)LM+ugDv)@mD` z;AHHDzLJ~Xel_dG`Bfjxn`)q2IouV{&UeWCHW_X%`6?#&fW|S}?{?~i1DrV&C&W=Y zjy^T=mxc5Y&MzN|wRaedSCp&`YK^zICkzRtG6N)WUD%`bZT4mgZWarby4H_=?0#`Y zmAAz;U+E0>ghB)-jK_bY45Lw!r<~&sOm(hYUTze*d=5Dp?X`n7SUUsgIOl#mO@$dE z&tWKbCmtHU_d=&VIe|+)C&kZFolxF4+kJds*V&Pas*}FUZJ1oT*XLU#u*s(`k3}}} zv(4qo!QE7F>n?TyBqAqG%W z@B%wB9Zsi-GrLi7A%1fYP~L&iuJo&WNe2_eV`!=c70^LZy#X#e)o^pZb15z#uxHVm zKn0oE-7Jl>N+cWsK$qP&KuHFFWRVV)B@_p=!5uxrqbXJE1*~-AqUxg#G80x2|Fg}b zyCN8}lLCtSs5+Aij)sDieZiO!U%GCA5_h6(H0jPWcunG zw8AkD?vn~R>bKK`noe|u7j|0;!_odY#=!s2(XNf}HA}71@?M$sLCqV;qeHQBfM{im zeHMI2^^5qm<&pyEI*f_8@hrF%PMrx%m1(2|0Em#qU(WQJ?Y?e9I+2kU5`*LT;SR}Y z;A@S!vo)I4@tLr;s_FB^<`MqS2E*WeGF^-|$PQux(2hbGf1S5py)tO$b}uNr5V!Uh z8nOiAFTyJ|)DoCVN+78_DFF<(7S@G&{>4lj;}BUb?0#}c)%N&k#$7NQr?epLuK~&H zVh#WuI8Ps{cqep^x;Dw~F853@DUfRsV5P#Db=&(S6nMyn~r zNb47W|7(S{5v&J83W<(51pK`*R{?=V{X*!}tWvvw+Ic@V@{Y$RlFF2!a&#?=3PJP* z`hDxL>$;nK?T_ICb3WbU5Wmo<1yk+{(drW2L~sefNEy_U>kPyYXEcRcjy91%SbNFPyx{9RoGekHBh8{M zAM`vN)EgvB0iAr!C{UyXNB;QPFT3EYYz`O9W%20Z zYYoxQ;52qg{8>=R@~kvAREAOHlsh(6v=y<)AW=)3I`xSsF(MnRm&2}$uFehC{c9-r zjc-F!b(?e&cfKVV7fqY5E%e|A;Zf&YX9(a2A`L%qyRUNMl8w}Bp^`1kUbm(1@+}mR z$m!e>>9b=Jo1fe$8EB;ok_i}$U&teL>aXAn*H_<9at8a^g#dU+D|~a8qcJG|8jPnpm^4l0q6*n@m#9800iBHL z5Q>7vQ*>rIhCs|I39emLAVeWuD^gxs$K+B#XD}hEN|KMrr#oM-vD|16pa>8DAokOC z#~$GQYe&T{VNphy(POgg>msVJF4JxWVY6jw?x`i>gH4xMJ zKw*#V#oiX$$V-9aPD7>|Rq9VkoTJJKK&GnKBAkM8kl|(K(Y4G^WrscpIXB(o_@l`Y zi_7}FzEhqTF`TmB)^s>rdfx)O@e-aMkSb*X5K^A{AX-FzRKW}sXg{vxFTgy}*Xo$f zgtNsrt-k?rfU`q_r-fhYh-6AeOn-!TVn15fCh-ybGZn>nzDVJy=@p%Yx^l|7A9-BH4Z?}1k5>D<4@-yvU_#tLi++;&V@iA{e==#p}(ta={`)V z$6xtFY(Zccc>Pl8*2YE_vK#SFZX42GxNOCY(!o7%l>LiYs}M(>{;AWP@Cp~*p`;1I zR4cr4Hata5a-_L!!RT`wT5oXQZ9m9JaiAI&jAeod>P6Zw>$8m_5*I_JyJcP)tEdzY zh#sI@ywwaCVmr66IzsdXe0~sQk7@Gx58Yr&g8_{5D@YQl!cyGUuN$H`{D4NcJg(V$ zAa!2N<*Fu#%y2TbA_35J>xd@fiN6pT4tXIGs56K8UJuL}BjB@6v>w7hBbquJwGaon zhNX_km_F`yoNr8^$haUe$5`fV%A`PEF<0{2i7g!7fJ@$)3MVz{Uqc81=JCfHMV}6o zBc~Q4lOry?-r%DFkSno zBxAlqyBuF1lz6noyz(u|+h!4(`1J)AHn%Q2UMJrZLkY@E>Z6=X_Y?UjO%87%rFMy} z5qCX2L_?r!SnYX>1l=hEZ!OSt9{7WF03FE`OTMoLQcppLry6S7-3HS}`B(}Aat|>& zq`tlc7lC1p?T$H==j}7^6pian+poi0J@vA{30ye|%mXoEobqGXUa~7EFq|}N9Glus zZUb%8(GAsw&FQ;h8}geckMR7LNKrSS^Q6sQYPAi<)GU8Y7uzTneU+~?pTTQ$%4x&IY z6VI&}A5I?bZG8d+!z5WG)Gj=_yThxKSubg7hCvJF*8*thMs^zZSGv)eo3~j>8 z2-#si{l%T^MYzygC)6F6LSk3utkqgC5^p>W=?=(h5^Q~DZ0L$Md5?OJ=hol%>X6gA zBz0oTn8 ze@VMWx&|5s$D}}==P6DXn)D)~o<^(l%e8Yc7y%p-l zA!fa{xd<45_0w2d$&&%buQ%t3wW?V*A}yY?RB6g}&MKWjHwx&C`BYmX+1JBS+&;nG zmBzCf(}p}92Q6SKR5GPsV#d8HAF8Z`|7m{(e2(%vIJ$-%A>Q}^?A7sOh`jzGbd@iVQiU=F$1{f`GMX8hhRcOC#P zA#i((4aq@SgWqxY8!#<_yu7~tp0{|o+_pYbVHl)!zUMmuR_P6{DhfJsf4x)GH4x7j z&0@R%MGrK->L4UP_M>1wDh-}AOG*ePv$N!PBudoWy;_U2T-H=j>|9|5)W2tk^Ah3k zqd9IEp#VZ-WGMr}HvveanM&?bZJQ#TEmr%>Qf!$5qR=zeE`JQUL$maMQC`lk1g;mT z^+V#o6so=kF(v+Xm{Hle-4LTwEUODzG7v*|OZ;@5{C*B)P=k@QFcf7YVX=R)??2yy zk9I}D$LE;~Z;Sfpb@}URocxeXM8aLl_Q2}+d$auOz^z-XnWh1hJMsSq2A!SiQwY2t z^rFNLz`pWyrE!Ald=J+)U|n}`9Jsj2o^)Do^FolkNBf+gg5;63m^~K@#5#yvcW(&`23b0qeG@&BmTE4 z8nFMoHvb%O0`H9C$v2vRC+JUtj&uC|kMG#Zj5r+5nAY|kN&o%4Sx6W-^OcsJU(pMj z#OF_n+Y2ww11m-TIK}_@OML}GRc&+)kVmX(4HCr8-T(WAb{HTfxk-ZyQ}pV;!{dt% zKCX)>3tZF>{X@k6j(|1LF(w!V^zRk=ccSqN7N}~BqT3kRmqf(g|9K8q{B5G&1Mb!> zuoM<7wr0cxU|s(XA)F349V(2V%jKa)j7+Qh|7JQ`gI#M)@ZexJMqxNM^Zow&Jgs4_ zue4HTb>#7arnMLAY{hg2lE|=Ftiw~=9K?(S}+8>G9t8@|OG=e+OvePcNMLx=9QS!>NX zpZmG*>zRwM+!CL^BI$p;zuvqHCIEyzH%j%atOtg@+|hz}zc&HnPG1b|JhXTo2xt++ zDr-@LCZ1As4g=5zfIYZxTgwGxIGhrUcBn)4uX_gp-E`U;&?I&(IqJ_2X*!lzy&NM9 zk12jQ$C9lwalLVMI1jl=U-h+bTt9-z5C#8!0#)^W|M6IJphAiI$EpH2I}Se-lJGax zd;J0Wh@cVbdKPz&hubW*87aA@-=^(!q4*E*+>CT{X!PegxTk_?!; zWu2v7ZxTFNa31m%=y()N<&n8dr|z<|-i}a?=S$e%8a@f;-%APgsipZ>0rf=)5g#2e zKQp{!(RrX>v2b&xT}Uq1!u65GWL$l^M8i@YJykW&?cTK_ib`Jg{CaOf>*U@pt5vt| zMZ!7;H1iNAzt9`ifu0b+khEt-BWvG$7d-V?q4gYE{iTXPssE!MxzW=ulY!VVFVy!( zuMiF9<6(`)&AZF}3ZSJ`e<$46-3!0rk&UT8X?eppTW%A()tSos$QyC|`H=#MmWLNi znV8J$;8&}`7k7z5@oMY-oT3M_vzaYytoStm`Fm=BnOhz48mxM|aLTW{;aX}eVUAfR zb+>8%8DD$3;SkoTNM}8#LVH!Ww|rZJ@^sPQ=aNl)Qp?k%++N8S3j3)Zi^y4Ly1qr& z(2cET*rNz*zJI(_{Lt^yN)q9E1b>2|f$ip3k2_mmB1?h9LYJ>N}PA(h>)Z*xJ$i9j_)<;+oG80lo$3aZ>5jO2SxD%b>xN6F~+hR_18 zgUAja#65bzI;47>EfLFtj8*m0nYi;KsfsOBF72aleOi_IuB{==yUSaQgV{=HUnC;Bb@DF} zREku6g+7P_b?}&y1gs`*_o)l@Hu)Ivpn(X0nm=&FGRkX`!OYwK3 znNLckDyIF(Mj+%eq#(c2W692p7(yPWFP!d1Sez5RORliLfEM*;53-i=bVc=zdNUQ& z-F3LK7Off90>P_()Y9Nhzef(#{1i!6Te=T06CdD83sg}5c}FPFPI{^kVif7I`t{J$ zg;xMAS``Be$)3^fVZ_O3aZkU1@N#Eb#d?#HBGZj96Coqoa%7mcU{uFBAAkQfq9R`= zH}ad`T6Tv^WY@=wGq!|$?yH_u)?mLP%}S}*ftW#D3U#!`%`f)Qt0OP++{AT)Xb|2W zEsgy1-B5TTV2(GLQmZy8W;Qzs=?cP^$Dvm#n3fo@wb`FO47mW~pH8ts+7FAI8}2_f z*qTaYQ(6A9Y<;F|cD9>v1qI+nsxam3T)G0|9s9J5@~P7DM(8&CW5RDv*ZW-bcnVdk zD_&>BbC}jJ8!yPr2ePgj!WY@vY!Ahb_#xNW!8mf5UJ)v)ZVx}nF3Kf7m6i|2--ps@ z)r*TKTnVNZE7yiFo19pL4IqhixZ+xfbuQbB9X3&J^en=j&0HZyP>ZPFR?BK~=+n48 z;u22lwyHUc=N#3MR;pq}X>42ce?|=bB~>|SJbqOaCbmSMLic`(>0dv5Jj@e7#AuKz zhA1S)ZehqF3R=?xc%u21%Wiv8J4vq3Pf!IkU>pW;XMYqO$aIFM`pa9?BDFk{P}9r(3h@t<=yS#wSxCLUXg(e z00yF3{T(|H#N^$UU?c{}ctkT*im(|0oQQLmt=De|Kvoq&c)SYH0#VO3vUM~bQ{Trj zvOVuN&#+0%TWx9BB?dOnM_M0>3w|Mj&f7e^3Kp=b6l4}Pbzscrw_N)Yx1(3ENH(f! zkN6aPkm(YL2EK+x#ADwctM*!{5+kCi#kAdN?wiHp!&&3SE}v$d=9XD%BV`fp6^GxEDE4LS;vThPC`szo|MvvJ z4>=;hPwP~*!2{dQ&>vtUHx)#ics&9sa3Kj^O9DC96jhkrinlxP4yeAa{X#*Rj;)^i zEgh0`7*(F0zucO5#Ms=qf}69}IR>BH0pOR$^V#R9BBnol?N68oFGJ>3^`q1&zt=}_ zM@(ZuLF@f^P0~M@w5uXDe5+x;Jrb*&8A=DP0s}GzX|XDc&3gjF9w?Eq+Q-*q~!#Um-W``{(O#hZTJ zD&jcnj$O{%?6;;B#`-eI>7vgivE(H%x~@^> zAYtZ#hIF(Up-u1lB~>)bewwsj!9EpDjekIZRVZMIo-TJ^@ubK^CE;NXSeCC&L5DuzP?&QfXugm(<#jxJ_|IC~Uv98cdWfWBf1KPc`cJl326YZR`` z>@E?kze%gnko6^r;S)k)xt>hk8g8Z|7pncR=v3v>e)H4JNJ49SU<5v;X~nIz4N#}mTk^LqnVbrLmHa|q{%s5c z|Dlgx03s$#JeiY)g}UcSC5G*w?ZH*%X~kl$z}DGjaCr#57r@CE+6wl4T1jYg*yxXz zZ+SHErpiBNbpT?51*EA+#5w&3ESU?gf2n{{D5x;k1L&!l2{PDRV*A|l*YyQOqIcem zdxs0w7yU%WY_6$hJnPi1)cP?Ew{i{Q!><2)jp*a}tMcV@c`X33#lM%;NBJH|tGrbS z&L-cABn7Q1T54auIA_RurNuuo@d$teQuDXRHwPl#Ia(9V=$9g{k26F==FstLhn8VM zV|pl}hSR1)sCXJBFO5C+_Nm-Ms&!0Zc<3%v<39>QOMy=o;2|qX*~I~qM#}0MowVo` znLlCq@k1Bk&fArWC3(WE)^x}uB3u) zj6V@HG>|muo)GLmNmuhP?-kjKYwEOgsu|Pse1M2@I@VpJ|?hf_( zAEZAgj@l_(?_Zg7*e_jLZC8XXD-xCTBk%FrZ_e&tMfIc%Yv%HVx-O=CpqXiR-fHqW z8w;b~DBZQ$@GUJ}QFW4Cb1C&z2D*8 zKurWllo?5TdNq0&AGo=`-OA^1DIUIvbh4Jn;bz$WP)s-E%a{_?TG8da z^+o}^gC*+CfvBjBz6f6@R~^Nbslplkkrt>C3bDKqw}XvcrnAntpB0wRZ_N=jQx523 zBA?=@^vIuxKMZvR-nBsaK}*;}c4usV7P>fDbiUpwJnj_@edVQpg1g-Bx1|c;2#U$} zfmDb7$|!yI=jZmb-4n}AucJr()p2Z;*J}0$F(`|7Jm>G`tB*w}%%Y?q{CwQ**S;OQhk(A8)S@AdEYl z)=$RPD;#F29E(MD`eHztgHML#F1L$uWhK+HPw_U}`inh7A?Dl8Q&yx=%1Qe??yC`I z^YvW6tJz~QqabUJ=cu>o)se)XnuXR3!U>zT=GL0)v*NrH_*kbqqDg(Rw=!{87(j78Zpl z+{HldVum^z@v`BaphrAoR%}Z0oLElKZZ*dM()xE}Ifgl4`2S*#&JmTJM8ZZs=Qc3ZB`QvqwJ7kt4I)PsZVWh+9n)o4Gfyrg*M*rLB{#caS zoP$|s{`eTW(}d|=;8jo*O4>&@=1EtS65S8&zg_W}sCE7f%uJEZvz@qA!JG87YJILW zidQI=6F}=u{8L9mvjXg>y?!=b9B-8*Xb?a5TS4Mzj%_*#I*(48-Ary^0onFr-9e%R5@|N*_4vP)Bxt6twOEd* zKac&D=C%lP#7ZueJf@Wz>bEO#*v~?cW%bzb>2@Gn|M{bB4j|WvoqxErC2(IEzZyba z-^jQ{B{{NCVbl+kI#d%g%lzh|i}j-e=A0d<*8XMzz_%P7v(lFs%jZU*&R36K5%D>y zHrSeFZmQRPpN;yc#A`Os_(QPb+pc(Z!9u;W@>*92?d9Gi+J3kFUQm67+l0HSG}Q!O zV;z?-eXE`%A6Md)WNIZpc0Le2>7OQQ+~CQKJ775gtOSO?n=)hAz@yVe%U?CMGsI@) zy0fi)7*&^#<#PypPQr(2>-6WPeiCuTFq=M5Y z`msP>8@%a6+B6)FYY#^i$HvOol3a?uIbGXzqj)P*X7F4|@goB^+b*bF4rOnCXgv^b z?|gFEXsl_Yqg%rIa*hR`J1sVoRvVR-327vvJ79-VF<_%1MEDthCVwY~gm%f4luzl=kwP_Pwoy7s6vz^89 z*^|5}Jwy|dQkygD~ilc}YEyc}mbf%o=&v=DJW9xtw85U*V zHGx@7*LWi1r(4V&y0mtVCV& zdS=9f@v4d;PO2l?M1iXK|ZlwUO`k+hg)-#nwDLLRO(8j47xNn%KW$ zd;2p6#W6!P$C=I1$rL7fX!KDw+*znZ3)5^f{D~<4qYdXyASk>*c zZK9f2N)*MFE5s9?$7rw=KY+e^ARw!C*f32 zQ^u+<^!n?&^9sDptIQ>HUR0}Y{6Fu_ZX5;get%IcBbg9Fat z9k-Y3kR`|uCu?vbxSp&Xo27=^cH_URE`dCT^=$7mZ^QS^fCfZU!Sn41N|Hu_2N-BcW^Kg~-+E}3F7{K#?mdEY=X$QozD?I!**X||FhrJV2a;5n%K+-z^q z@l4aJ_7Z9qfGl4Kh1+bMWlI<>jSShaYcAB8TnfIC9@=nLsJ2kL^jUEi&azoe%XzN6i0ds>mmra zVbZV{lZLg?sL%8(UV7Z;Iv1Hs8iT!X&-crmM@>k(JR9mLwJ+yv(s!5)Butt6%5MAF zH1F81^i2qcVOxUMx~W=ZKb>GdRhGJaBlSn`R6FquDy?NHRGx};b_wpj;e7CO?*sqB zp;e{(hmj;@MZRubXq1cO7ulLDaQ% z7oT47|G=YA9~riFYJkw%&)HEevivB3XNvT?w=13`)A%1;H@T3)b8iB#n5KGm~7JLb1J=?SbtE|1~ zd4?ph>Ju2d8EEOwO#d5^uv^$>^~0uqkp z_L2P(3uy~g{gw(8HE09MRt!E)L%`8g!+nSvp}>+UTg5?&RWS5`!QMW+PyHaCpgrbN9Zh^ifbB3IFrsmQrZJzF}lr!J-?ryr9hBPNPoUN97!E>78gRaH8Q zB3)BibBlXzu8qEY))1bzsm%$V+SFu1lR{kpo9navHOii}_7UHLWgY=StA-t({u{u% zb_@94nFFo}OgK6o4SyE8wTs{@^`EwWQS!lQI#?^wtin8M6Gat)v|Z;#GQQ`j?wmSb z^K~?Uwj(}#{8o#CDAhNkIdzYHZQg@qya<{y^eQx@DIo$2)#B6tz%HE0XTimxF!TUD z#>o~~X>|wU_HtvU@J8g!6PQUQgqof({77Vt(p2xPTTaB93;t6jT*_#aAZRrdam1JY%bSbN7ccMVaO&d^?<|`%H4oH{Jcu*zO9PlN?2&m~ePii>NuSqff+UT;Xc}<8tMKjlYMSpj&b@!nkMrl|&h+ zFi7IVMlIiSjoog&uLuT?vBZj75N`)dnR4va^pQ60DSF%OUC#i0R}0BDmL}4$Cn~%E z_JX0knbJhsmW>o{l5=kg?hHHhHFsBol+KV1j&th?4gT-OLO1r?-RCP3cjsjWs{4j7bSmF)lKFD{_`~w~Bh-j!UutJOMXNBT$8|VAVmM>Zz2a zMW)Gs7_-*b#V)9+3z$k8({A#OC3704r|Q*n7z@rj#`Wqi1;2;CG*IN9jyhkh;++zZ zM61Egkh!?F==9*N?9*iUt#X6JlE96~-N^kUEpr_#nCmkqFqPjtT$~=Ziq-a7etx9x z3lf1|UE^koD=bKD`pcUxvdHo~6-a6l=tB`MS`Sap z^B|j+3GmnRmNhYe+@Pj#x~C_qiYID&qZ2s_Vf`dxU2i%`oJ^W?rf99{Y!Fz2CmT z98m9RRA4S4D4@Au;>!wm`w*ViY5K*x-zYr`i_CN*W#6>=$i~>F(zEEHu4cgP^OV4X=egnU zQb+~3nR1G1RCkK*ds2Gko3FluQH}4t#!;L#Jd!_iyPp)b@dRyWfQGLLk0k0s*1hm^ zXgD1AinuEl1C@Ab7J2ke7dn~)3=8y6LoIoIXJJYJv+Mqpqx?i0q!F&YK3Q<1-VKDe z-tbKGrCG15$2NVGJ=oEThkK-wArE-GEFC_r5ud+LnKK#LKEh96a#oV8(eATuW;+fSWrtsP1QUy>fYcOTQ3`1_#xSaDq+p zN{-Z_+ztfCts85d9f;UcW-yfW@rP+h^y_t}71nE=&{rm60r+HTEPdkJO>TyMDB3V6Ce#h`hp^h3Q4h z+Ke1&9b5b+0g0%r`z+(RV}t2-FTweS7*5>Njelj$kFkY_N7EPOpm-bW{^KT;V75>i zbo=ftw$26R$rd3JV^ z&eN3(++8TlARRBCah3cIj#L)QaH=woXdS*5{d=kQ5e)ThI0RiW;&shH2&`{5zAGuO zw(XY+jC+cutiPzqQn+ghKw#HJ&2?jA4q#97El%7+qKjCik~X>SDNr)=qm~%LseiCK zw%dIySM5X}n^v3^-QQiJG@!{c4a!*9&rCM~Rco!Y&-njB4EfgQ(`4#Nm%n*t%w*fz zYylnG{+U2M5-!Zk%3yd+oxWrqLYGMkHuq86Kul&%C%Zc4XqYTSnSmq??HjB`G~V$~ z8xI4{Wt$;_nOOQyPZX){JmUCmn+ws1%y9x99;P3-DGx@#>W1HVd~l(ld(+s-NW(#8 zN|{7)Z(uz`&4w@QoZQrIHHd`Th@juzI{a4VG{845mVY&4rf$<5e9sLXa9S365523B zhd)TNZKxxY3M-SaqKTBF)T|U=5_2?XBE5fvkC0RS1xp6;{25nyF24KE`6jW-?MP*(HbAKM10x!3eX*)2z=5b zN@*ZjyFu2{B68nO>h0fe>WY;Z+?>wocHW}Sdj^&c=HETa7D0(+t>6Z6!)4f+Ar0qi z82>dRz7Sh5lQu{gOWLsghx35*Bk?nTCpmljj7kRZ_*0#EcZ;>y6U5B@t z(s3hT*#2?5K|9*xzTlBt?N<8{06@p!C`0nz^rMQd?Y-e?wr*CEu}<=C(7668?g;faB}6CF{$e z>LV^`!d0tRGxqn7N4vL&yLfk=PeSU|^SWME#=|51+m1M|FCBlFE=}2h2@WoLfwDEr zgGUJcBet0aJk9D=Xhz96_+HQ&wVk?SmS>47RN_VEhLeU&48oOX)$_N?C5eA_e~5dj_21ZL{ zCVnRnuEG=TCZ#Lc(~G-Iy8%G3|YV}fT>j)=Bfeh-Y_bK`kvhq2|+a8H?9LQM;eKc&@lYR2Yrr=&y!t9K7A ztl|QXo|pA92ke+t$%MwN==L7o-LVvRxns&7PrZQR*{GYedG#IcZ>Gul;0V75;7`I> z-(RCebBARDORey0$h`*mT1n|=4`JVsrZ48gqV9&*{bhU4LVA)8-NI@`Mme8PE-v}% zE;~UeT5@W5%EE&hpMaRXaGGd3qygg%*nnn94D)AIL;U#LWu|`puY0KTZ``1{d0Kgh z5LNvTWxS0sKfW!3Uo1oa#GP?6G|i-_@91){{u9n&7uMy8ifP8N?+hZ zt_RQmI`ceE$biPd>rZN4O`WAC)58BSm;KoQLc@U`R4;!jujBYcPjgc7Se!h{f z*d8P=p8pP)t11Fy)+sOd*kXVjSHElPeTOk`2Qm-!yZ?OOR~Y^s&`o1(O&jMhTnMR~ z{0(+M>-?nw`fz`|#V_akv}J=`NJghg(ReP)mW5`UUb3Lsa~vmb&0GW9(B4DX$oFEp%Nv~k`Wj*U6lj1I zaucwNA~2H~qnF~)(G)7t;7~lsTyXaR;|%q$nnY3}L`#xpLAAFqBASk%+7Da+Vqjw= zmW@Is&i7x}Bua_~SQ(X8+r3~tjd3XG$vxPubPFSJqn3m`&a=8;>=x=nfX>QZNgysg z2gw@i|6B?jyb%MArKRO?Ca&NQdcB%CmcshOnq0lBFE@2%?$59AZy$|-*i1??%FMsI zYAd&Jc%hQ??O2FG4Yw|&S~&}4b5mC72Rf?VU(WM7W1V0CCjssEV^MOVg*b{)E>|2hRj3#ZgrVQZEv>fFs(Jm7MG&x^ zc=ETQ+cLo!$G;E2sI%RVA>?xtbhba-W2v{fE&;q<%C$_uI7J{dXftaw;KRf&%bJYX zV1J!*B%VYOe*V@X@^2sM%Q+7M-a8BcvQ%yPglS^+)wuRb8BaIa{#csKSJSF>f4(%N zl+6JD(7Os=8H_g^F)TiwYyPZkv)Qk6xEAs6Te-pk4{$DKB)^pM`y6u^e;Pl?mWYn( zgtc!Co4&ufF=|fgJ@r{J%>HM0R5l7CSJ^*h;zlMeviEF1@n?|9V&9gn+cb z?8W(c=Dq=*put!QJl3yN>64db_n*JKQC`sxro#pTofsb!nVA1$IHpf{@#-t0^8NqO zA22YXIL*J@-_8EJwF_Kx8Jq);(}gH-iXIW{`1g7Me7>*+36# ze6G~MEh6rFw}+bukc|P*Wl%E0B1j(qx4LB}@!EVcX}R?^TW*n`*`F+-EZ6nXTHdAy zzc-%92^WMxtovI17vh7sGj0yBBW^M-4pabxm>eU>KHCX&O_zlY#FqX#!=@$@S#R1H zjPEQr*8&E^{dh^Ae?PkL=mL~3HwuMmR3hGY^EKwN0KN#j6&Ce-vqB$61g~p@3?+$= z_h+K?vERSOhevm)2maa^JVr@ZSiYV5ot>NtwP)={#YVOPR?`mfV{Gcwa}%C@3RQC z*cV4!{P#XBtIBnvV))z}Hjdg@*=fIkU{@4d-1;22(xQ3ZOd^Ih7G2A=us>p6c*IJ( zww`V5H3i3if(V~~ju;?|6QQp*!Dc6qT!lFQ<@j3J1g%7q8oYBfQ)lCdT^evkU)gNk zeNOmwS3R(~@|1iwkY!~c#YJ*!d~id73NlZaoa=qD6~Cz@=5yoL>kA@EzvBU5A1ci5 zHQzrfWp1N`3!dV*yJfwzM^z2!KcGJp}<30m8-%=eWltYqs0@$-Z?Ug#WVVp?|1Zbj^JAV0K1y@8hVgW=EixTO3-bFYczE#=J z6wFNOVDC>{DzE=~ErqclHODfoh@1Vb8Q+O>F(_HyUlH|S$bHCQrW~9LCv#@aSFg{A zN#$`?qExH7V6vqJ_!mp2b8?Fig-V5#FANOP^O>kt7>jV_Qq5@KX_Tl*a?Dmrw%<4j z&kSJ(x3f1%X*5WbM{GjtlOnUv>%X{sZ<@DMr2)!@XK|RL3HhE!G@??omfK^eX0aYo zOqtcXdyEOoo)N**%z>-N0CCsIvB%5OJDhyJ%nRVoEcBMEO=kw=fuXrs zQj2$trdR5VnvHhNZOIsr`yUr5R;A!;#W&j7*&3_NpVJ=zW8Q3;RiqbJUA+zc=hk+c zgSyniZfI~RI6dj=5pYa4km$*(0qBqsTy<40`$KdZ`^nbeMEbodH@jG{b9W-^Gr8@u zah|J4s#>)LJuE75gzY}7k!GFbJPcjAwjZy+c$O3huwt@`Ycc{J-aqLd<;0cG?bUu~ zR+^sFDSL1SO=`A}Hxul;OO>TbJkC5P^Iz`xo|1H(9NP*Z-R_m_csXSwL<>Aofm27`hfmXC@||<3@C6f)f?ml(S>3AfyA@b=F7># zzVrx#UQ@l^ZQU1(_O3va93a$a{9ql4`=~Z6Q18_hh%3D{lAPb}@zUnCF?=qb-iC-D z?CFm#+$^fckxt>>bfFkEm$rqrTPp6bBF3dtrLmkc)rN%Ch)7v%EYNk`pQb%+JkAX& z(P%aR&47+PBx33JIeVmQULYj=wSPiLDD--y!os%_s=9#ZfcXzS`j2gu8?<6BGQWY> zoGYU_%>oAT0&e*vHl?Ilrd%=gbI-eqfgc{JMqS;q%kG&L#os2VfjDiR=UAQxlym@A z-)61W2e=H~r3Oa{Usqni(Dsh;;?E?GrD9~aCS8UN^Z?)C4rBk9nbOHPm+lP%lTtEV`8M94}cQLWnOgKLl=q~pzrM-9<*Uy%yq zK>B0jBo$P*{b@(N=dU6(VZ&ytPURVNim!{l!38(%R6e+moqnhiz@+7=1}4KJzVSvw zw%zF|EuA8Td`~Q=YVV*Yt0E+VyPq*0d}S0uvu3|nhy;kCe^}vwk#rtS&4xSuSB1Lg z=jX$r13*RLpHWB@v#kbV%o%U(pBbN$7$u{_;wN%NDKozdRS*nVB-#;8ovAiXCpL^s zq(0o9A-MU=AQqNTdsLwMn6G(%4DnCe3H`&*yH0d{G+(OskoGGil|eRv#r)mR;0_YP zcs9d^Bxam7jBYJNsT%%?*LF*XFm0;p-QZrUCGC$swsd)(6uEVpz>GxNYLn?vGhjbv zyY6#%WXG7ajtlwwFtaTw>u>@dlPoGnQ9b)&ua4J_g;J6l4fpcv!6qmmRAYq1j}fLk!p>E(m`Qe9 zL+1giNUZ?r262CH20qJx=n}m0iL&LA_vrfPL zM(b_5GnUzV>C^1KyfhAg0aXlXjDgJ{Ox1FlVc;>L#-+ZZp)2(zA@Q!c`^#Hx+@Rvh zsEnCHr5Ipn>uZ^fr#sUEfa3WDNIjM!RGs@3Bz~Iph5X5?)3h68>@L1L4yq0Smg?P# z9n3;}Rt7rk3g;0`_<)SupF9s98BmC7jWx$yQQX@bM)!uF>Ywa3P~R{cbo#niORoo2 zV5*D7(iN}Z&Ow%>3^z9OE|9095)?I}F}&WU0q7k))odql#fhx9jY87#ceSdQGQZM= z{9v}xV~*La)_xbR{in9#M}u>ao@JHIRfZE({qVB`+Sm2UXGO$jD~Qsh`Dcd)vh@tj zjCkEcd-50tn6N^B$i%!LLa(;X!TIxy-p!AS^`COG84e#mI}O}z{?<`C*nCS8#SNtS zfcIg7st`!7GwN*}Kq!fTmq=yUnZAlzf)w{7n$1I?=#*a2l-~q=SdMDN*7bAZ8+6Ck z^eb#;Eczl?0+ZNcc;Oas4I4Ve|C#E_ODUV0!m(m{_Rge0 zBWfi;=>AcpJ&4M%DWMO1@VApb`?gSur;zx~u%V(i#!$ z3mxXq3VkK~$92NGgzy)BoF;Y7Ry4=KJ}+5ch^=kGA0gq(ZepMjJ0NW^axS zBohXPx^_zXPpjz7=a^04Q;f0pq=@DlB?F8lwa4}skI7Vk0zma@;RDJBL{I%}^bCIl z?0#A9IWbt^qu%W@)HE#0gVsc)eJjLl05-MB7Ttr0h6Ziy3Ix1oIiQ6F1bqztJ2C1I z5AR@0%_iDJ>@3^o{Ik@v`ojtwG`*;QiqW&q@&L`@93Dt_?|bkL+~#Wm0krt>01AA( zL}kQ#wM_=U`31-G&BZ%O=Capk8Vmx|G#q*hWaz=@>rtF8qbiH|YSm^IL?~t6K1h7` zS)1+VYyMfWW^yGZ&l= zci9twyd~u8RuVHiSDj*8&ZFPcl3vWtcLY5K3h%K%ht^{_n96M>?gW2^p7oH(0F?>9 zyMc@12ESd-1L8XrUf9X~1N+k*cqZY!vhl_05T?+R4?U0;?)6BsaDl@`A&CEOp_yrPKH&GQulg@Sa zAgZdPIoyx3uGEfA-rWC|gjT#Y+sQRR@Yr-J`aUZ@-U~iDK;Y~*9nVU~nNQasD5q&V z+Ow)93HZ=c`F773?4Nrca#v*fOL39?7!S4K>#p^y$9+Nn#TRS66HMqh|M+t;dj;&8b_$m;KL>vT$zAn(~d9SuoAe%%k`xQ8CiF`ZaNfpX4pb)7iKi<-?)MyJ}-QG!K>L-3}0K^0hcTwKe$O%*v-m3}<|ag&|~W=vTRAM|=mB^idU3Lxt(S4u{_7h7{-7oGp6 z$Zh}R`RN!*&KK>2Q_6XWl>;2%2DjZvJ!M%E9|O9UkdxGj)!w4-v9X)*KsKN)G=U)< zQu`tom)F<3YrLx?`6tQB`k*HU{$N7LvYoQvJabr&I!`u2{LUPG3$Zz1t%WG|)1!GI z!^OF3IBe2`dt_cJ%HziykKjm8>aFvWwwruh9$$nJp1LAmKkXF0M*et@jGuW~GH0(* zb_jGqsGEWUNcj;)mde`uBQ{H?=}@h0(CF%^pBa{{59cm>1n=+9u{xXnTD#G90kH^( zxsIoPwtMm6V4$}N@51qVS{cVtm%DO3Q_{YZ#eHWc&qvG*ZXvmi1~Bd)I%>j^|E^t6 zUaaftxp@aZuolyQc;enQJKM*y7ORPG4aWPEMZwdkFw;j#e6{-f17FlBzZ`(OW}U)c zlK_0=8G0L7(te$VOw01O?%%4BhrcL*FjYWnTh&L+Bte%(ng2iP_S?5 zVOWFzVjKVYS@ga?PJdrS0C3?wyk^`9=xOo4cdS46E#P-FK;K69hG_>IjUh@Fg_qLQ z9TW3fE4U1CD+8eh#M-iR`h-a*rrGOVCc~_)M9W`Shg`PJQilng+bZDdLm*hm)PDWK ze^vM2N<%EP^Z8W2+BY#WsKarb3S)gTs#EWF*uZRb5`sk&#>d>y&iIeC+Bl}n%Rtw> z9g#a5{52FBt#WbeZOZp7rp>g$3Cyw9*ahO(DXxO*nqT|b^`;4L%WUl1yRIj4MkX)I zh)bPL$3ey0KvmW*SZ%v+Cl<|GIoya-6qFu^huIqXrxvrQpTF97zWuXRyb&cCx*x=i zi6_&)Nx3TZpPzDU6refM8!yiul0(boh`volepHw)Ql(0K)*vfhwtNd51|x~M>^?bu z0#YK=yzd}&|5Q%^LCntk;JN~vx?1CTQ0t~cy;wSlo$?VD34?@$BsQoca{B=$@I`rL zbly_HXS~ttOQkOzV6`Iuuin=b1pVC!M)h2?NB+5L|Tywlg>PW*VHuOj-CM)oP{0t$x9Z=M|lJ9?S4v zl5t_2zHpvIAXzS(nE0oxQI)xiR|_s2=BfaeJH?8ZnD?ypRy2UZ-4*qUrd6vEOK!NF zDy{%fsAq@2NWS-DIA=r`PK$lk8q7p~tpENENPtL0tm;%sC3O11_q21oFYrN5t>whCQ*xmyi1^r@os1;Mt@kB|2m{x;23&10N>9(?T- zS3$#J_fXfQa&KNOT4Oe*07WAZUjQHlKX{DK)wq71)uHj=X|N4XthMM5OYaOWG;!IT z$}C)Ha+J8g0U866GAU%^TaPgnPKTVvOBKO{3$5~W8Vxi+P_UvP5)dM`!N-&3%@@Zr zYPC@7#`>!D*40S>>R2j;TmLS3c#fz@AE=jEc(8tZ1586|dd&X{`}_*z!20NgCww_U z=4_!5AH2RWX7mCF$Rr~;^HRC? z5rIgZ{m|2u9cKz!iJig`4cv-ewmF>4)qo5t)Ag|~7~MrVhn@KF1ppFod|L@CFS_mJ za%!|7+CO0$uq zNh((uPv9)_=Yd20D5_{Qgj^OP1u2F9#S%LD?z>Wi0MfLKG=J=DcpUx!H__lK2!N++SD(M| zp3VF^K9$Y+3TQPMJ~b-a9Sz0{L57g7bi8po*%|v~)Ae{IDpn*ions9B#-Cb6`^#oj}ciTSf`ca#QPy;H| zMAZIFX`;wt2c9>x=^VKB2yj*2-6Afqw2b3@qTQH2R681qY;LkRM7X4pO5~OBMJAyf zh@lg|`e+65*Fgc;ox{cf6eD4iYcwe?U$dUPx_OTZ zU)d(}dlckd?^@If8^bys95l2vozOfkw>9sV=xDPc6s+Hfp%4$W1hm;=gGMkzW#|dn zs(Y=)Vvc4P!0|S&`(Og}HFGq1X`gYw%u}*86^Xjea3unxhJ-@ zF>&C)G_y(gVTDonJ1Y(rakW8$AgN^vWHLqQ*I3vtB@gx@zOC%ym)`dOqUC&x{eg-E z%&|Cvw9++R&k6my*kI3+`K|+6_EVnrx5nuRR`WV^bRt|PZ=0RAr5dE!AgS$Nwj-BF zvO-XZgCy+VWR_F`UESfFHXncvydm4dfWt(VCXA@4LOyz*Zr@~Tpw(`!W=io6iN8qR zers@fPcoTXzu`^TvE{=1L$CS%gLwJkk-S*n{oT~#2SLaH99bbWU&4})+AA_Fgkx0vU_+Q5}mXA85x~;CJZGn%feLP@P%3oHz`%7xSvX_WU~BON+Y7F8OMMe@xyOzE z|Ju6lc(}GFj!1MOMXwNTw1`CWO* zd&zsh{p=ri|JZxanR{l=neWVeXD$_3zN?otwok&`osvvWhh?p3=SgIqR~lVdabGG# zY8~24nDiEY43lJE%T{UvgQL~-Pw_|?wWH-b?F)h^;-wU| zI}^YyL>gi>Dm{3TJblNQ`vF0B=2m`r^*`dHZ&9~&K3EKV|KxopCDVDkLiWq}S%=J( z!7xJRxMSW(E+Sf=_s#^_#X=&g8e(gH z7XVtu+c0R%Jxk)WP6ohkL2(WA2J8l6x=WvDoP|;rMBTWfBW-&q68Ig~x=R4h$jkM8 z;$B*kF{j?cUY(ked9bT`irUn5Vlxs(HXGo;Ji2euENS})n=@!Z8O8I{)iV@KmfAfW`zDv4WAMns5MQBC zq!Y{8zIrx~PmS*3VejXXo==~B9>l}?>lm4Qvlu2QI8_7EV# zj;EMzC(4B;=H}?9xl&9Jfi$!(V_3(%-w&%{1(@q9MuUGzc3h; z&E*{c-)uCt(R3t(30d^x!icjBv|CG0RayVJ&)aan(kyd2o3|y@k-%{%TLI-J<|6Mh zs?q?ZjZ&IGNk-iARAU_fi|sH>+3cw?-+iUB&EM*nH^rdN0EH7viD9It>|-(|B$08p z^U*mx0fff*uftJQj}*AS8&H8 z>F(C2m_TJKv9qWq3$?xeRUBvS6PlCbwxbWj1@cFz;W!ZJrzX#?wIOqp_AeuYd9$Jb zX;x9`g=<-a&POZiW5Z|1^#`Qw-@E{$vpegnac9Y$$CrqdBft51!FfJ+gxATQ_EI*Z z*QY%!tq&#zk{fjj)FSXDz$iK{e)Vpi^7UnTe74lJ;4BGDA)ZBt#r@(U$1EJy=;IA~ zvTu?KIc#_N<%{1%PFNcVEkNE#lX$P!oeQKoEKBbA@ddp&=ju&oO$S@g+xYr6-?Ln8 z2UX>p*EO4r73t{6#k*_5OIweE2kea&s%4HQ?*{yfjf8G&0wCu=UYmmd4;G~30qR81bQ5-$6WqHkg)bcSg;mGH1> zn~|Kk8I?WXF|r)lwM^o3Po^ry^H1n&k&w=x+v}GwT@0kY@lfL{S>;(#S&6VRRImxC z`(M)pPO3S2XG+QawBlKsE^Ocgsc@i&7i9wR5S{gWToi@(3&Dj{qwI4;Tcpau&ic1o ztfy=bSo9kis>~Fkt<)I1t;<012{1R|qY{tm!ogf;tnb?^28Ys~wmk#>_<;@+rt*Yc zSQ2QmxeCNf{*KeI@CvWP6D2KE2M0p7pyRU>tq}`6n$B~oI<;>fSTL{|7*%t7Zxh|m zJwKZDd=-5InvnW>HJHy#Nw9W1sq?lPpk z_mWT$?>=MPP+{PnxqMd)UOnX~2evJdiGf!I(-(FS2S*||$6`;jHhB+-aZ3{FkP z=axvuf0{xflK+PO4h5B4RX>GOjY1m%gsC%#l-J@dKgcoFA~ z;nA!_7-4J%TA2dSCdy;#8Nuh*_bwz%5291EX`QU-zUnD>voOZeM&6e9B?g zWBAUP3AzDhx6y2tDpbcvwAiu5 zE1MyXCj+oL(R$X{s7#J`NJEkKPUM7%YF)dik&y0xkd+jBK7t+w^4(fdNZLw{x%5f1)FP8W^>3*qdl+ z<5|_#|#?D*17b^;Cw=yS+1)_Q0_D@ttOsaA6m+Rfy1Rp|*wM3|{uFG*x~ zO7{#v&g*l~+0WS*YKa9R!Ttylf>e(`wR-|T5hn4$%qm*oY^k&w(O#N>7o6fJD?#}5 z*QeN-9jT5kjy4>bsgZ=1dvpxlq}y;B-1i7ATkp}*zV+I73cuJq>GA52eO9|(q##Tp5D#NqE^BqvYRFy=8B6SQ8x?x~2 ztLgq&pG|t3x1(b1!j(oavLd{9Xj|0A8}W;O*DchK$r=E1-T~Be_SA}c7l3CwdX_$N z{Ip@LioB#H@2L6!8ZWBqMvvb{~DDlgD+N&odY`ZRbaIX2z z6_f2%c1;i%$yqv^iug-6(h;S3da^%%V(yWo4prEuO^4(zrq zE2`S`I3|r!qVT?`t!b|P`$n1QX+o!y+m+*N*^0=lM4;RRf&&I=p7CA6PIJfuOKb`B zmm4m%xTCM#2uk&va&O^aGpk-BVo%-l@p-TpNU6iNUbZB*Ewi9Al|0L;hlYkJ6l(ey z!~J|n9&FCARLAYD^x5N#aP^dg$OQIxCzOzYns1C^F#k+u6@75W!N`Z=k{uR`o}eis zIr!+q25a*-rdc1#%c4*GpEaa#quFROJ||)f6}t;8v)jc&L;;}TbUsYE?Li=xG_fCj zup9?bhF3HB#k2t7UYuEPlDYfi;v05>ij;PvO)5EpSXrK*6G_p#tOKZ%GZMA&*Fd=n zNtwWUFSeNo3S%1~Kb=bIfPGCfu);$|MvnFfnPq7VLVq_^J}0y`mZuSxX2?Pt6ZvXw zRJDzC66QGPoV|_5pe;#2Do+W`|6F+|XKFde$QNK)w1TG8ckm@@;+k-ZKg9P5re#Z{ zBqDS#mvn5IpKjh1F?@)0y1s#M&=1(km5r5ZIJ-C!DX|-%2=-<3ac!yMKU|9DFzH9q zv&J{7rS5ZyCgXou%iCa1+~*|jHnoAmAHGAy#VL#u2|w9$4cF~?)UK=L)<+HTL7R87 zh5RC^b$s}~OA`^v7~WW$StadBbgY5R8geF$P2XSg>|GrI1!cewWfH@_P~d66Y^+PBpF zZG>fil+jBl-%-gD(?|+9N|lx`m|3%y%$U!zhc`?qs^lJw9oO|Wevp94(r3pWYRN;% zfX~VP}qDFb-Y99<_(hoy{2XIG|u%d=iTMKF;DQ4Xnb>%%C}ptVbE66S!7U0 z3(rq)0*-;KCyjT-;1mI&uT33T=3y3+3!(N~B(PQ|&Un)&#Ol1xJ?z+mC{k@06@ppt zZK}cRTDwJJ(&0DH+viwikZEXdTh2vu_s8Yw1oqKO$jk-ol*u&kl=Mj8*JxTnb<4f3 zK5f%#l%{%k9rhG-yhMKUuvWr+8dhzXZOTm`$=eQF`TD*G^W)%DkfqC(qVTO_&kmYH`rQbcdnYWs#Xf-LT^}9c`WIuliq`T zALR%1E84I_uZOY&em{+SWecD7u9%dpYSgjWX3+wUa9y^`_hhqbJA8_IuZb7#M&mMy zP=C2$XSO>~(H_sdCl%)yh0mXf*Sn7Jzf7b@69db?dy-bHTP=lPzd199Co=w?SaSAi zR$y(SD4mNJV9bFB>V7l}+=U9)z97b=EpKW3a?+97QoRvX`$+IPuQ51G+b7qFmwV6= zS5qm8i&~C|F`}K$m)MD)Ix#Xy(_fN5owS>Q%aY*I#<-ZW@uNPg`OH{i>2$7|yu^`f z$wLmQNHXeUcAL3OL|8FjU+lK1!bKJ2XR2AFEc}!6#_06ca6#-2-oEL^QdbHgLfv4N zD8uY&c!JLC6XM;*5qt5o>paIFsMWMADWw0hXYYuT|3#zdjJG@6hU$XL%!e_Rg>u!! zMEp!bGn2|!pq=eCQKRwe+}vGKYr13%-3RGd+Z6h`z1ft}k)HLDv}`gS{?0>N2fJi? z>4-ZNB97v1mxil!xrS*1CZl0?ECiJx2nY5Y-V7G6z+G!H#Hx{^*b#r6V-o>3s~gY7 z#l^xDp5R&k5Pdl4L*FRQ!j%*K<*9rRf9eROuQ&y_AY>@F(GKUXH~iEhv^d_7L_>@c zQU1WmQe4yRrJh#;+!?Ioh~wUVgdW;VQy{Mp(|;|ON(ib7DRN_9945AcZQHV&ES1{r zabwz6EC#YF?`%hI#B%$JDYM#bIF&3^3Kjk=xXkdA+FWbk3n8JbiqceGR4vY|6ws>W zEIK`?^8})g_8s$HZHn8Cv(C=oE6N9-51Nj6zjPe6H3{*>Yog%Uir;ji480#Z+kJ08 zoQ3QDE!RB)TW$$Ue&fr6_kg>3{(AQ>b%{I6^OE`>0E3LRrCB zan+S7*GKCYdp+civIJgp<~2YBd?mGOFx4e)?d_FMN#;m13J_pnm+dZff2rLmW4h~y zl)yWynXd!$&zS$I!%>*%`58gJJwJ%PL{T1Wml~81&EKW4=Ji3KG;^56`P^QAn?nfa z|A%%z+Y3c~m9Ei)>saLyM?RcJ(n~lH5a4THRy{de38nKL2k(m0&5Iee)y_L}C)>qTzo`rjVWdD4IfdQU@`TI} z)y7XNph!tVPKC_cmCp;G7d-^JBGqIi5C2Y!4;4dw6+wY5MB<5Czj35oZ4uo%nBlF% z4-^IH);jD^l&D_K0llBQ%kgQJx=x)Q0hwNmJjfFvgNhY&Y}mhpAT@njy6Ovs?h%~;vjs7B#0o1J8r|C z-8w*8E`gIKO<6)KZ0U6!^)cOp={(H#)R1=bP&7USh}rF)YyO?M|08%XEH5hLvFtxl zpn(%1NR9gS{30@pM2JV6P_N-tjM$Ac>HMkzC#N%OQX;7W7?^|C`7O>$Ez-AF&Lop2hipD?GIs?T-%lRSh*7S0abRCxLerXdmh1V1>NP$`jS|aIL%|wC>R)elX(UzKbEy!{#-eRs5U{3d-FZA}w=3W{>a2}+P6+oOS4x7|#L7(4^J`}mCGyn>-m_*KNL3ALp?dq)w z{6EIcm*(fOuggM6DDQe4dwVeJHQQS6NQtf^7ws>|pO#aurh!WR|4gys(IN8#(j2e9HKo zA>ED8uZ1f(ROv$G)U6fQdpavaRU>?MOpvWoRPS!~YVm~n{7MeM?Ct`=#4%yqpNx?u0$ z&3Tkx7O)W~&?%Czl)>{SDV|Lfsxeu&uW|b7peaEFa!i>6qY^8vdbKTw3Ugj<49dzS zFm|o5u^Uy{|2`ntZDonbZbrUkAL$~Cwp$>p3;&y;ORM(H*Tsz{`>PtLkWY+it>I7$ z(7w1SWU6invyHn+G)C`tfk#30P*?(NX4pnK+TxuKw)`Dc9!W=#Ra&*D43>JE7hIVb ztC3610EiZ?1b9C8$i1h{FB`;!m}N)1t62U|ny|O7-6dHZa?O_)z5l<^GGu@lI~v z54v71c0Rj~E$-TkebwJg)BD|^0rRm~r4#b-x*ZeaXD?vzNc+RvxJP<&5CAj*z|oYr zgq7+)755M@qS`IG`mg6wYMN&siHrG)h!At+`-Tur)sQNCH`{EA`6Gg$Lc@KspxepoDtNy24zWgCF7+3F7@Judfq;mGCMH2D#m}L4uH6|02ZBID^+S0KXoDIC;xt$yB*p|Hh=gE50TT5g zj`)PYr(sZpQOe%MP*A|7lTobGh{?-Y*sXU@z_SH5yg9wH?(MvezMQsfW!#N6fy9Vg z#*!hcfZg?gWS6~RAa~XA6G|8ued3MY@{v?2u;d7)uMsob>=YBCBs6g*CE`>a z?M|pVH$$@}eIaF+M#Eqn!48$(WO7(&@49SD)gzcnr#Lqm*b-Blm>Q117nZJN<5b9` zR6g!WH*RnxsiYzjv6kJc-oCh+%GoMl7e&Bg8HtN1TF1o0Yto_$Pna7+e(yTAeUp5b zN&Fz$0hZ)h$wbW|x60{J;GG%6j;x48TNycYb(3}x8v7KUw|c3WGYr+lOUuY-oxCkH za3>K9%U;VW;QjUBI6K7bJz^&uTL7PKs3{gmUaRJT5Him~4p+5r7D+y1>|AedZ6J0j zyCWwSCnN~T>fyAqD>D1TdxH8~Obush`=B)f8~vdO>U7<}L;eD6N-L1KVR4GgCHVx5C|<3j}on8tvhfx(HrQ{(%PHg1U_s( zoIW3J3?2%YumH3i!;j#=m=Egj%Y(wcBNc%yzMB!`73}-YI8I!I)eQTQk7(RtA34Hb zobKc7*GN5!6i~(uUA9l!AXgi`wmh03Hi1JM=Jz1WAF})^JGpInpRsWTK@-3vKIRA4 z2+_;&6xk{fQlJuxl=Go}AC#LZ5>dh`L3VJx@XN`@E#RS{?lmK-BGFH}TahggC96>3Y!CGjeIA=9z(D#C6DP(nDKe=& zX*Q`fiN%m=DRoOo8kfHvx$SFc?%a(%7-xq1yR4_>@RX4qv*i6rudA1fYPR zV5TrpeqT&h0y+~s_`M>3R$)vr*i`i!bfmCkA?g&|WV2~*2}KE9Np(q6Nn#19^3#l* z`A>7IdZ~J8^WYix8J>~J%-;0gw0duqt+KS*)zUGQJB7Vs^kUZHyCR>-Y>Rs{LsQEM z(+St2&{?Lr^ui_~hvZ$i5%gNK+7)95WAqUouBS}2GNTIA;(Dc0k)x8?l!hp0-v%*{ z;9Ip5bPjV4ZH@zue2xj!-4DDeW!!S zqqP0L{mKcONgq=_CS8oYPYItKF(N)4e){@}hS8F))kKI+A0r>riuI7m-NsTM+oW|A z(Ca!cv=V3(XEUjL*_mK@Xx2Pmw|L!vIUAvuq}MQY{FUAE)HKsr+su0ftO2<9sUFwu zX9lEhF^IAiy31q{55$?J8Z79t>*gDy>ev4)={?M^|L&A?gLWiyRLK&>lFCxga%ZJ% z8DKd#->}f$z}UDoue`X@K)Up_R9R_ zu`tfQ&@|W-&2Jz?$3jQbtgG3orP7>k`>=nwP2t3S{1}{;ukm%syK$q5#KFzMVh^tQ zsHJx04sho&&K<|?eZ7A-eP!sO;=yyvaK7n2GKIFys{G#;SW4rQf?9S#K@1yMp)laq@2*?=N0OG3X{E^M7L$zG~QU0NT zQHXf|Tz^V`yx^4J5Wz)(jq&X9^6&875#51$)EoHesO`+pdV%6UHbZoF_4b5^OVjT@ zPqNsn8JeIlo6AqX7P(BUPNe0W^`-pm*XPhDuNJSqsXp8C+>+RQ+$!Hn?$Z$;mqPel zN3w}zfP941xBE1*#^OUZKwnH(?BX}zzYLL#W==D#>1vN?gy=C5Yba%}dHK3Mc5Lg+ z>_HWjsF27oc(Gx*$F=8fC)q^A<)RIJW>(^1E`CV2meG;O8@HRPl5{JuPE>@@DgiIG zmhs9%#ARUfvvC+OTtMZiVn1v5J&aD!l}3Y%O;wZB?=$S@ za)nO}C|ZfBgYEGjw_UfDc0E;*TDHY1>?`Q*%ro6qA6p9_ULSa=g=u%FPE-pTEpKZ4 zc7}I6RQM~TLPW~PT+TVJ(p6Nt1aTE3bfLy z(}L1G8eOdyzT{}e=`aA89W5Nl+vX_i)Xa1~aYdu;o5ak3~U zDcmXADAP*nN@l;btqrWWIV8_j{9IXV33u^%lt16f;0E>hRvKA4WM0M0&Ma$gV8Q95 z|E#1_sP;wk&ZyGX=B>ToYws}Q=;+SkWNjLRwf~a{+-Dqs-T0lZMXu3SCP{t4rr>(a z@px@kyw52&wkKc3Oq>19X#nllPoxPRqPlKDW0`ZhOt6kXaqBU2okBGRAww z;iu@bn)Ypu&kS4kL#Tz6BVTYTaa(p>PgIi?zg#)(9hI|cTGu&^omh7qxLplXuW6uL z*IMfwKp!2PMjo_HB~Q=!1bdj=Tko!XxwAiwT+_J$xys)EKG{y6~$#C`O#E6dx$xWmNN1$s~i<(u}+ zD*fY$mNJ*Evv3|$&-uI9i|Q-I<-)=( zNuDj9WFPvc$y?_8qW~MVwf4|?{o8FaUjelAZ!n!lZ6GnoAla)RzHC0`Ntr07=C4_w z&$C?3S2IyaLChaPLbPG{`k6tTmGE<^kh0>y`M@EnTR`Vmwc88!RtGS>1S~&+>PF+s zLB2*xjhy)uKV^NA5^@50oAv>tMgw$dSJZ4I&j;hj990oR4G_(Sn;$Ray>T(8k^fpM{2whK`U21|J`v%ihqKLqSO7Kjgq~ z+=Ql%j891{9oDxFtauX8%>gcbZ-{UlLHT!Q*)(-z+3&J?AAJ4pj_X%r9CBu^MwV(qW>!F{0*A&!PshN-^+!MdD*Eq8f0HUZ7}*Qj zSOF;=dHy>u{~`Y0!haI}(WmNv`($IM``<4Ar{sSqfAPQ}Yi|bZP4AZwdFZ)l|CRTj z`dqZXB>X=T|2>_5JkkiS2^uzvVBi$YC8lhl(zA6&%$Im#d;sL82SrO!j#JfgHgmpfJe zsxbjAG&->r2N5ch3HkZ&g2DF#C(K6SMjeQ&NP`YcUWxlh=X{&UP?I!i0;m*E z^Y`k*pX!NP0M$f|06PQ9KNf*sAOS+27E7XVbX+TxCT#eVJ^IL}wZcTMRyADijbI_p z>Z*_>hU?1Qn#=JWAx>ifJhEa{l54m8udne_^_<=h1+P}eoGvRwj~heL1Cw6p+)1Ry z{Pz0EDSK8?sNP2n*e#Az$B(VjG|LTV%S5$%R54C(R+9$2c9(U}93B1wEA`$kQjdp=vf3``gIf4CX1t0vAd^xv+jrgnh27hs0FKKfZ+XWGiEFk)qC9+ZQqIDZWSaO=o=a}drE21G^Wf;zT;9<2iUNU+2XPezRg%(wnhazD+@^3_K7LD|$f&&3Hdp1L>=^1-FY0RXC zL!qVi)Xzyu16ks$R;ohg=pz&lkma$j(%}PGH?X~IJT|DK+8>j9(5?G3f*3qXlT3{+ z^xU?Z_ky294?&iaUNvGV3%UE)YxZm@`ux(lS5ugl=|c|oQ@1V4!AxY<&h1=&?8CE|w#vhO_79lsKc6Kg z7P1np;Gpr^!%HB^cj(XS8ybW>^sAIQ{g5JnN$R&mlECGoetQmb{UaeGj#N?Itz4S` zGdrRAJ#npg^E%t(n>$-ArpA~AWj+Qex;RwQz|Jz57dEuh35g9?uFn*&H5)alU=J9Q zfk3t7X%%i+ieyJCMFO=}`qx7n>tveX!I{#z&!5>;?TyE*y%A)iRLU{0QBD{}g%MGn2B*~YDD0+{ZTCPN~PQBBH zW^Wbe@&@jy71Z0vGgpdpw)^)1AC3}&Kp0fj&KU|K->_7!gCOCqoG~?y`;=c7eZ)I< zUh9;_-Ci^I_x2C1-8a+$b#G>cttyQ%%Q`%TJjXUmV*~p$q}zL>Ly}3?T?}?Bbi?_}+?t(jW%6Xw z+z;m3QirHxByTt^glD6i_=4&QF|@DjBqo(#2aZiBnoc?tc-C;EG}#~G^DWkvWmUmm z+nwiT!qWz@WGP|25HVY~Lxz=TNt)*?8iK}Z?$fZ#i?k#lnErtW%>;! zUWE+L+pCPv87N=QhjSNPbsF~)XK}pW9^t)}MBL%dUd1Y2 z8&^B=zAw7O#~3e5F_i1b0)%wTQ_EWyw2Be`Ux4@W82(nk6BFdI{2qk}dxEZSI zfY*%UgfUJ!o6S<_*s%5MHtN8`ZE{s~(DJ&k*;b%U<4_)>)UpuiKu^88R^la*c}f)R zwP#MccO|(GPh&^7#Iv3fC{ZfW9h*D|Po^1w=N*aZ8I(vSb|4Wy+I+Cz@26*Xe-1Pp z`KBC(Mou>6{UX@i)8n*+Xh32Xt_@rXoNBkDnVhs!Ca>R@R$4Jh4kpRr<6F++R7S8g z`reMRW@@g_5*Ha%TTS&S*FNiiN-o}O?oEgbl1v`@=EK^*GcGrfO4Pz+0b21GtqgYcwVu&)0vs#bGOI^OA!!$oqZNut9-)-H7`P6fI}_`)}SN@WqURR}?il z*{(5Vm9l2+En0DS_m;;6YpW+XkO|&VqK~6OzOascgvWlZIxc75#85nfiL&F!a=UJ$ zyI~5yVlz)Wvfs2%S=WPuZ**1lu)5_bPGOC|woq3(zkLqdgdk=OuZa*aFM<>R*bq`s z9rE(H1vh-VwNQ{ERC=p?Zjha8vE|mpEA2`dX@2uBp_P3(dT;mKr$e>n>dF!h3F@QW z0?|UdkB&IDoG6Q1`Aw9By!Qu9WziY4wtlDd)d1(^U``wQaW8{P6OSPO56Mh)3)F=A z*beGK32W!(*BXtVMGZ5sMzJJD_WiPhB~Zz>&uI8*Gq4D%D;@H*it0&21kB-v6J})8 z7l=MpEsEr}0KDhslXT_;VGo-9*1^FSEQy7&w9$U3o%YoN0h;0j+T4h@yFAb8&6J90 zbn$zyT$vfL)O@?*W28fSpLz}zXqy{@&Ahw@xpR6j zSYZ=3m z^>@AR=fRzcsFS(QpyZ`x4kD*2@P&KRX|M0hqgL^6Zr7lw{HnlYj^wmknpG%c#J|bT zQ+NPQ^MR~VU%%`^Y~FWDwB1= zY4=-$X^+vPpwagLB}JGq4WHBGjs%5CF>;=m=HA-D^wGo{q+(lg>K2ELGIneV=|p`D zyinSfbctfGJbP=SYTjI}_UfE5OQVY)*hb4o-r-6hjjh^REp-NE@MOej5;t$3P$pDf zr@nL>b{iO#yN#}nLTZDq9+IMv&e8WKr?v5_j-UH&k0vUvy5$Df7~{mjqT_^d?QSJf zYbg{+rJ0cn-`gMaKHb;GHW%G#REo_~sil{>k&!9q0IuCnga_g|lV52fUz}@> zS6g&gC?G0RYtp;oAjwtos<_tj1METDXaaa&B=$D4=A(v~0`*NstF=#B@`b0~Gl-AS z2NJT|Y$%-gn;)W4Yl<~HS{9;o4_)^5U#OFF*KKo6J@jZRmw8BZ` zdeijg;%fEMK`gD^q~TXO?`)J1&iC{f1$~ei>FL4dCKBsVXw2qPB2R93|KaJWhzYwz z*xRkdpNSHyBbdn{;@*-m-$B)@vXu2m4zNj?vJ~uX?%5_!Pg$m^4J+nXmYFCvY%yGM zc$eWLhWDtRV$e>6>&qzA+}wQvD}npD;pIr=IT&0Y-#3}whYVsT98$t;h{=2E5h74Q zw*-xhq=iU_3tudpv&o)OK%;3%3?- ziJ=r0Ro;}`C^zx|vbX{MY?QZ>Wlh!$K#o>rEN+hG%!z&n>8!H#f?yIZBEauVVGpXf z@U+_5@5ZXC#30#E0`XR9ZCY|PeHcTlQ5Xg_A)Ot^2ljGzAV2*3Jm0wscGnmD)YjpZ z0Dqja-A7D*d^DFXRR-V&I%P6Cc<3`X#GL=5O986M`Q+Pbrh-unXNiiEb;dysx8OZP zMJTUS;tM3sox^n^r-_VPvzNx_`sot4LPN1EZF7~%0@SuE^z_`x-O)tBrV?YcCrx1- z@ny$O>R&gSJbN$#+l2_ZiB>kzG2XR6fy0j-g+=acV9Nlyv%I_3fJv9G@22qVMT%17 z!B9UYH=?-Ip}!TZO7(r2V4Q8e7h0!6EUxRG{K|TMfjUgAK3g6J#~E#eDMAsxVnabe zuspI1z06G@5-W*?o%60c;R~8yfVor!($cHelE>m5q@=7DBd;Fx{np}0L>*Vx2?id~ zRzf{4A|ovYtG<{DJgp#&@O#6-q*Z#>xw=N1?^OD)-w=l%7{hc}G&)GEys-+r1uS2> z;7$wV!uF0iY=p^f3(h~GTUT|aYl%gD7+toexRV%OsE5q~^(e8aOvW(tv1Qz{T+X(x zV|U-!fTJNGkRMDd#>+Yp*&%t@n$~ebm)o{pb&Mj5G4cVt06* zr3yL15!f|f)_3riYCT-A((Y@S9rFNg8XgjCU9IQfjHy&3@<`#ubg!Zw(C-|~2hKV9*^+q>|s z5%Dhdm(py;{jMcdJ-eojDvz?X8+)3MmB8@T2_(EISe9$N8_fTKA8T6hpz#RX0fpWf zT#}y`Re3y!a_}Rv&4#ogA6X{?z?mRteMPutQ1EabYIR(+$(pCQEJN;=g%X{PN_0b} z_2#U?TgvU#5Ob?3q>{}Sn&rpMT`MII{W`>At)TBoI0@EXp~ zf!&P?ibknBEfZ&d=$3fDV|yKVMx1O9+561X;xtMY(c*j-e?4g4==>s5SV8fHst}bM zT#UT{rM>hEPDOnI((XVn6HUudzF9E!E~Y-ux*_u%!qrU_HfKfn3VFhebj)O}@|55o^5DGdNnZ#DD13shnJRI!w7FqcsB` zs_KB?&+c|J!Uqw?y;@M2ovv_=Dg-d+B(KsBPFR;!C6wp;XD2` z@{?Rh=gV1H%faV?QEYVD2wNLLI+EJsF!G+;2=z}p-_IJ3$~+QB~V1;@UnJk@d2vK$1if87$KuWjMz_75&v7;`qKjVF1Z&}H|$PRZY1`92H!gT5Znw3f!R zoKZ@?mGo;lD`5FCO%+JDtW+C_TKGHJLsU8Uh>$C{rf5@=HbqV7Y;_}nvnq#}Zn>i* zdm|t6_wb+%WBI#~ByhCodeJgQ!#z|j>OH)xZBK5anN;-#orRtw%Oew9hoKU%K@XJX z^^{lpFe7kH!WYrD%zRSrGuM22yESzA(`k=&gp zrPSn&dwyyCDRR%EmFhxS4lnZ^)QgT%6XVY>SwU%V;))j*Re#P|?SXWZ)IF#ZiB>$+S3p-5#jKD;B!6;Ncssp$NoJPMgMG3ZC)q4oc(eKk7-7U>d1OJl#&0zE4E!3oIdy%QRc}>~ zSf#kJKfXNzRIlhFRCXOzCn|nOxQo$B6VJTX2nx-U3wn8(E3`B&*xeP-qkqsI*7$00 zNK~!*lL;=VFO$z6;GF4Av}?KS)ghf)NF9NB@gU=IIG33LvO$|AvEGGwKP8) zUCb-HBR)dSB7r*!>afX0?nc(tex-IVEIZoeW`G3UD#h6UPe{WCJHQKh}v+WjcN=)XWX zLO-|wT{Q<4m6U8%!IAMYtrHNV+FYFvPC8?zp=h(*SoSjAoTI=i+4s#V%0~3V=X75s z4r&F2zwc(h#76qc7Y?mqv_l};{}#wD(0%i0R*Ga!o(u-<;)~(#eKhvYKVMDZTl%3# zH0npT{K$;0-$=383i#ynQ;cmmtB{Vm+CYtU!y`_b>c+0vcTJBe$54kkGZl?mtmupbf|dw&;ZHr>Z-X z`+pRAg7M2;VuTRy=!j*4{u2bp09%ZJ6pkLu;L8C zcN!nTkjgDRw~rS5pN)dQ2eq2$;o^q*XF&{~E&^0{4b0CHbd16uwf}I|;QLKW^Ht_T zHcG4CDBPj@naKVr|KDB{1UB&NOPIPth*5~0)c+mmue5K&{)AJ!4){MM3xy5l9;LmW z4mTF~FHF8uoesz1K>puQz5)-Zg&RagZt^89$=ILx{$JJjfU89A(sW`A-T$9Wf(7`h zT-#FA?L+*8*irlE82Jzgt-l5bJK%78qyN>~e-ik7P^RJ9Vqzh-p+O)`Ib0wA&WN9q zET5a@duTMNJ?u86H!XaSf0Tm|Ab>;AvazM0wShEc|C1aPX}ls$?smUQH_|vYRsY1H9M4q|w2gPxdp*Q?zL=7O!;z6W~m{$@U_rOub&@ zv`9r628{}#9GCGQVnNCR$`d1kc%xIN)m40VLS>;#!#*vfFdDXqgvDTvF$#R*TX6Ic*t#>)M?bxk6r5{TaF4BIO!$ETbqKxmI&RGoDgHvy=JLbTfm1r@awEEY?AOoluc?mXEii@8_IquDo7kK5CDoF$jRsEn4+E~lCb`SwP| za^KTmGv-P)G%k0B3ZERf$Ivr znF@VH*61Jn<^U(?_tM*d1#WjcX$uyXgVe7@3(_C5Xom95zC14P zX|8fDCUni)CURpV7%wIm&y(+Rdn9*sudHF6->iP9<7ifKqV}C#d}fDkER}ZaGzDmn z=n~K8=a1@QaZK{~KHh~#4lW~~CQq7Z=%dVD{ex6mhEo|W&`p>)a!}}=Zff9vj^vOK#fpuk*snwXiQ2IL-5-n-_&w_2dE;|qvgF`i=_($?bc$93*j6jz zy8NX?`l9$yG--NzdW%ks&eCd2$e^uuXAiralP|qrmMPqbB@<%6ATB-3GpR14ad=Oe zqVAqrRA6m#JMX<&iTq>P}emr0|c z4Ct}Rlg-k8eekGu#-miL$uk^I=|ZtP`r6qQ5M0NZZh=@v%51T`^KIniGvWETpjFu# zZJCU%B$aYaVBZ8bySoyL<-BPk?==wIHZl?-F<(~J@_r>Bl!&ryHGH}nbGtOId^=E= zdk+5iroiLMJJ^N}fzjs+AH2`8o0VzPN>Q#+pCAwfqn^ar3gC1uFz_s z;a+nWZ81n=shZ`!vqUE^KU`i5>_Dl|6XO>^?>WtnN6NA7Vy?5GT zp?(uD+5PGSrLuMXnJri%kwRhM3cNpw_vwzeoExx@`Eamj<_~ElafvV2p{+$aG~>zK zH=9P4($P=xb*5B(hGN!R3L3y7P2W5 zYC_n*)b?2h9~>UBZvP?rC`8^MeKpMI+#By?7bBTyedJ-<(o6dcaL4@&W;FZ-=Kaqmi#uy_`BuPsP*<%M zr}$_(yOS1RQ%`25;e^wXd;3eJcW~>YJ$xgg0)6FSWk>Rm&mf1>@xC3q-DTb@?nYPp zV}^?u7W3}U$WQaZ1q)9c$rKi|RFlP9iZUnFwT1^eH3D9ubTWWvKQ}kj^LKrgPyK@a z$QP7K{^6AbLM{_E@5VJKv!Hc&zN5cRfDDK-gTmsJU40p@cc7jec4q&`nDQ3I_9Wgb6T%A%Q2jH<~ai==la&TVhi4N}IH*(>QJXmI|ssu)2l<=ZC`?PpY`Rp98(Vz@XC@o}8_9tVzr%cHsC7@#mL) z@*@QLNNXp}2K8%$oYu|*2v5UB`79qzwEkL3DbV}6R7LNJiCG*t^iMf%X4ssM0aM~Y zx6HWNS~8AiuwMXAO^HC))8&<(ilZdBEhg7Ca#s&E_-q33tQWf6b15@1Vvdkn_q$6> z)=3b>^&Srche{r&8FOyLoj*Yf-SJ^Z!34ZGxi;6HLcp)qdPiDQ^XsMBpY9Q9wYe*+ zA?3~z1srYpzMiR_CbLDGQGo4;;=$LJIX~(`-@~Iwli2_*+=5ws(vl=t#|$ z=jCO>x+@ud;H`tQJi-7V5+aU9eY`eavi zG29qF^(EG`1XsMD)oONbT;7QZ<-k$ycfV@u#L)KGqNYrLA=weJKvz|)R>9PkN%59u zUu^i2q@BCoRX;^$VB5Ho%X4Ztlw@^jyX34gp~0=wI9c^$G4WY1%QJ7UBo!vD(K2zb znO)nNj~<8JKH}QDF_}E7K{!teK!CLaHpp3ll|)Df76eVp>6u8n$W0P3t?&+k?2xwO zTA;3=)_A1h@|-iG)bp*!u$0`p_SVAJ=`!MnaxBxyiWNKsx)G6ZcrUGe;Q{1nLjdG$ zW7&_~zKCQbCW)0N@)<3 zhe-RQJ|KUa03KfMtmCfYCOfhfI`%YFtYr{A%ZI{Mw?5b-IGo7;2L`+SeUbR1)l;GR z5G?#Y0vV|@F}xdFH0e^KWSwceoLCY~W}z0m-bHZ zVJDJP*(fnh;Myi4EYac@HWX>mRRdLhJ%;&8F1q9#&1>%Ll&5OZCkQq>VA3K?E|PL* zG^;5Xzmer-RxgAJ7B>$uXVSk8UtR`{Ov7;;#heT# zR*KFyIW#JxI;>_VG{wu{aH=j;z$R-zP{fM7?8%tV7M;>8*|@2)bc+R(E~zDP#V5}% z4RSD;{xl741MV$5*0AAtxH4K09noQlgBlAJNgAb{f?!u?5p~u$`SS#o&L0Q-vU^8ng`n9q8LZ=sNW%C}c6*Ypx^aV8WPt z=6Ns3(P?>8Xt6{mG%3!FriEd+&bstL!plfIG@q~rl4-M|w9OWW8=K4s$8aN&(JWd# z%FGPb1jt(pZ`)=ItzUjFZr)r?AE+<`WSr~OoGME}q?`w0cmllUXn{c?IhyKQ_G6bU zA=)-=)^=UklRB0i5H=^Oe}(WN_<#}YgTdD*-EP89Iav=a)S65;yPaxLaN~T8#f`)W zk6&oCIpG&YaH4OB883g*%pD^uRrainmh7>n&z-c&V#YXqN9e z34r=O(a*})YE(#Rxo8Zx9X)yT4xyq|B=qoLZlcijE6dXWuf#1Cj#xq?O#GJT8DS^x z0jUfkUrtwWhXqN{cv+y2J3PU(tlt znZxevP*LZy{4Wd+ptc@AG+vWLV!3l7CQmIo+4Ogz4-oQ{M-%~q=okW z=Q}G))V7}BDAj=e49>>y1+jhiDaoF7^^Fj2R9_Fymmw+) zKMNc*+Gugzhbv|8H-jieWyZas%qEXJTnqGB998~fKgqIga4A0iC-)z$m%YhEn@$OK zTOIWn-QCRA$6`Y{1{@77k=^=xC&Y^F&+ttKTgf%v>e#aZ~YGqqkyHsFegJkZTQ=FHz0&U9cvt5{YJLS)X|IGHaC>LYJBe z0PK2h+zzL8uG6KSfATyy0^&6)oNWIS4hP)Bo+a>qa2d)Eg!6tGcIfUYPfhz;->#4R z3`$f*DLhxf-eR>N8Uljte9<_R*mefU)3XBx^*HlYk*L}yQmNIb3ij0ZJhR&PuSwoo zF0?A!QKWssH0?E945&%rdO};nDZAP`LwLM307ypTGSYmD3vRMWd2mHlk9?&z%Ar<(89;vj~ z(mLge3Y5Q2;y~hTYIoN(*$a5kr)JwVPevKY%MfX%DI{XaqTc)0$$&0_pP4}GV@d_l z-v%RSWl(BUD3Kzu?B>LIKIi>UH&y6s)ZUx}5xPQ37K`#!=gfwx?s>dnX(2I}o9d`6 z=w|w@IknJ|eZA2YvKuYtOUt=YbD0%N88rQ}mHSq8xUTqht`=^*o!MW2gY_O~j+cB| zDG3TYIJTd_j!YCzxIHnI%CL{0z%tH|BJMInWDexr2=Iz)u0}oalPY3D2Y6` zIi;|r%RMS2=V)MsnWm3Ixh8MsgLMs59?IMeNO_bd(*0@2bZ$%iaJL5q9qei1|44uc z0R<5;_BbIhkaH#QY{42);2esI00FB@!-uHj4H)ZfXmfkA1QCv=(W08o)+7#550{F_ zm9Ag$jkC#Vsqw)Y5?*-Z!C_8T^XjWE~mqA*GAp}fS_t}npMl?EfW1W$U!xG z)dIxd>a)f}S0u!1HAXW}76-%!!Vm7zX*6T3S9EGhnndR7Upknm>yZI2mmE`1p>!hu|OB1y4f3QYB{Ue*mk3{ zyhoRKxILEE#gnw0q;)(qw)+w8w`Tl?n6_K?*NK533C3T=(q%Q31rJw^Ey$VcCm&8Z0i(S*`Y}M;>E1Fkrq1=+-v3&Tm z%(_*Z7mY^Y=nB;xujgF0+>PfI&coB04_6eE#VlE)1UQr(Dj*P-&32rbQ{|~DQ2!$f z5gr^i($NmGl*SX9JT*P-K>rK1MoQk2RlT`#d9bchN~tC|vLx`Gfg{JFsw&&U7hpVb zjj$T&3UrxYW$R-B+^WC*98}urBK}zWboZQ2blkX{3A)TPZu_%)-VFAj68R2XI*R{O zu2(7uRj_W}ih-3hLsx^_<#v+Gs`u0(9?axaMzj0NX%8`4l7bHS-dy9|l8W-Mu;pw{ zB$ZBk_n?C`zP-7nj!36Dr>QRQTm|4SY&?b!T;P0Mx-`@0p#7<%u}sWsA5#L;-?Ot9 z3BIffZk_))MSbW)xQO6H8mmi#t~Qn?^a+iO&Fy2BLX5M-%cB!98<{Gl~69KbQS4UQ!Vw7K7? zn=Q81!%c(jhNOpjuqQDu0L*GDSY2b(tCkyHzcM z1yi*>dE>j{2dsa`I}+PKj>p&S`NsTaPK@Bx7nN4TTXB+2N7&DApO$6vGgP>;<554Q z^-?{78O%ro)O;E69e?vP71ZfA^i7O8mA5IQ`>^Xv^<2=*_^?&&ULQ&1gA88ln#LnM zMp;@{oOyRw%dJ79LUYo>9ewf;)Gp@(k}xuSr^v)oom+T=`yvtHx7X*kkI>K)L+?Ew z5_|mLLkv|Ix^b??0#C0nyU5m1`RmS$t1+I~xwZZL(g1dCb3lBBR%R>^0B@m`sN*8* zaV^$=d+ByJb9s^O@6vtUKUSOCiPy{0fMJLVcFQIqH1Uk)bsYyOR=6*_WDoaMKMLs#uT02d~ z^i<`9n_xQeZ^}Ofn^=E(FdmyT?B$g_o+)>Hyl!V~_#{k{4bl^LLe4;)&~>pTB7WwA zGnn1hMk{rE^AhW=R9j7@byI;VKKRpP-jpXhd%$o;4b!KWh#6I;B7)arKk%wJa5^y*NFH3D>d5llP;A zr*704TlOo?%&%UT zvEQEJr?lv={(_BvCpP);!D$>Mlc^*c2p+d=Wh~>Qpjy`&8}T`IE$ch4ZgDuvjSzIZ z1Ovs(sP8-*D>grYGNgXU>iL^9)(=Gz2tlue9EY&GJFZDp&(W*FaREIE?gvm*5TH$N zR|T4F&eHZk2MAT)5dU8S{zF*V2vC0h!MaqAOCJ&>zj=dP)>5O*Q!ef8zul5CAD~Qyqi0(UZHd|b<@7yA z1|4#WSK;PGG-CbRg#5ai{s6Db>C>eW_e6Dd{nPIJ^VP9)BA_qSP7Q(=$>_`fLFm6; zgNcSl;R+ajK=-m@B&%hS@6%b_9su`Qa~4f_czgSZ6qCN z+|0kt_b-EA=#L11J<@N-U;kMa2kMut(P$0LQ@2kXP})WC-%fw~L45I`RR14eZy6O= zwsj2$hlHSk1PN{-!QI_8xVuAeE!^GR-5r8^2=4Cg?hyPtx&3tCZu-98815S2#p}p&q2K`@Df3QvwnEfjSNJU@P3{D`tB>ZpYhzI6+q-N@Y#~0*9E!CW(~a zRKi)+de?~uE+5zhmqM^MENey|#!yLfW#(wD4m?UFP(vm7?Mhw2#&{*cA})p9VD00^*Myioym5ow<);s3!z0QdI@YlN$l z5L|{&3GSzRp>PE#EZ?(WqH$-&#FjK6(>VS)^W3XQ0P!w{UF8ydC+l4NMT2FSfTa!w zMgc0k4{om}{ac%WxdB)cJPGOV%h1Jd&?|{8CF2eMx;g$_&7M-+s+YWz^KaCIs7|RE zNB((!3FFxzN#i8*coCyB3sKprS*8)cY#b`Am)Co2Z1G@?RZY`0{1+dS<7cQdWgd>% z(Z#A+rIEb&wEZ`w5TX+D!EPJwg*G*Z0AQ_TGf<(aTcwfz>uVKiOvY1hewhxTz7WI; z6aR566mFVa(7#Ym%0PK$==Oxc#VKXHT$ZokAfY`ohE!`sl#~)i?dYf}$wvOg3h}Z( zTr8vj!T0|7U+fFu>&bN{rZ^NJPb(fL^p|@_OJX=%AY2pr<(`Cv2l^Qt5U`5f(q5m& z{^sT95g9sNLH(twbw21EZdflSUl@-X7II0w+OKxIqeuu?Ri~1#kWFrm7pO?3(t@JV z*f0Ch=4zb7)tVj0?md-6|8bO^;UUSDnxHMEnC^9X>k!bpJ_P3H3ZGToO`Ij}psWS- zJtMh4u*~R;mux|p!-TkWe(M|8r?s1hH(lA(b=J(@9)IrauwLV}g@X4Ca!X=WpZTPm z7ey~^XSygW6%PnP>gpV6VY-3QUSQjSrd682; z7YnG^dpUPc83HOS0F{{9{K6Vre%f!AuQdmrBd?Ees*xUATzq5Qb~9m!)EjN5IZ*%@ z-RpZ}o3G3<|v=>>3%z-BInt%g6BX4PW!dV;_sQ=(eY)9+R8J>eSq64hOM3@x)D_ z255a3;^2Gl{RC0-BM>3Oto2S5u~4b9*~edK_Zk2s>+WhvId3oNoYv2Ta=ASpuFd|b z&2A?J)*>G@y320s9%?mzIsIdN;$1?56x(TSZ+T!bOgqj8s=ed6HbRA(Bib0=3+q2cRt7ZP zDP|tqt71qU%y||lM{FlWdve9%H*1(cPI{K^1L)(&XSIzFyOp}Mm(e47M{Ng?ujQu5 zV{?_ONzSdqkK@Ln>bey*4hq}cso0-Wuob5VK5^?9t}dR817>!i4uYpL$Nm zWz|`(p^yq#oJHj-G{MX-TI5P(0SPJijJ`{i!4ScStreLAP}&-krw%t?%?OvU!{D-y z@klJM(%B+c{_a>P?|Sxw1^i88Iql`d8tubG!N&c3*wsJwA>L1=^MXy{5h{pxL}VNh zaTLjLSvgO%x_S0nK4SSx>(#b5PJsQ+f%23a@hPh^Q-z9l@ zz4QmBOKAaw<(hnc3F(_+nHojgPzni?JT=P9)6v`h*w4idnGu}lM$V-%N$0>h^_o-K z&0y%4@<%%U5rIx-yt2pj=Cg)_GPYdNEzvxz{BPNQH_G=mv0E42p;%Fzt{|S#ce;Dt z#HIG7DheD9fxn@}xy(#O+xdEV9T-s)vl#a8a}`!}j4Gh!U(F+;INiafeooG*Y#bC* zMe+?q&fOqG*LU^0EbUTUyS`r(gbM#u;KcC;*%1o1Vb8X^}4s}jKED6Gzu zF43qK%(vO>#ivlEk7sgjCDCoYRS|T1Y>>BjbjONGUdQN*p^0vOoW`1lu{)CCRqn%k zgodw;X>KZ7`E+u*Us&o*=6!zc{hD%Jay97oECMmsSx=(a@py5!tT>Naw>#wAXu*G| z?4fCx#t(w!26-dICYgMFaYjT`oSqYst)1dzr(8%Je-BOF%bg%ZOB4Kdd)OJSF9{p<-_ELM@SFP`cgoWOTl4S+Z zzwVHMUfx{upEvqUy8lJ>x(=bSN^ee60hKKLIA>;|1qxS@=Hfw%h9Qc|0w?;?$@$QS zkd*{;vv0%sp6$3GPhA>$57oTfrkSjf6OkkgE&iCTT=m*QLuUEgru6#8EL!s4a|eLB zJupO~1+na}j)zm5HYc>x-^5uu9^c06J$VV_CGmqElVWt-xve!iW2 zy|mW(RkuhsKkka4!+dJK(XMGKyovuMZVsuH43<46T$ zR!aTtruTIGooopeYp}zTXvvnK8bV&o4yrLm`yb(wSM&!jJyw@37s;D$R+6SwIh@e6 zfQH)6K_hi`EF~7YLg5j=Idrb~GOsLQ7`z&61XpSIsd(szgm9dsTc5RqG{CiQxjtX2 z30xx9NlINvX}|T2rDG-&4thsHV9D0i%tP2Uw!|cfXT_a0ba|lGnDAukz9PoQ9bEmHYl-o?5jKT15v}8S zy3~*T#9xe8B(OiTSo2e$Y9S(3n?JheB_7rdIngPI6jP_c@vqR2H(78++a_fj=?jvO z7dAKoXVGN8M&fvGN(`WXlyB72lNjUCLn@_b)Tz@7!{m@ez-7Tq-u}&p1O%+^6 zWA(NOds7(&&C*Q~l--NX{kL>t7uE<{r6P&g=b%S|^OZ4a^(UDnf^)8|{<-{0zQokF zgOn!oM4`V$UJ?9|m)I>ttc-{UzU_=?HP)JX)QE%CbT%`i{21C>t$stc6{!4mKEb5# zVt@5_ON8yFNiQF_Hu=^1B;GpbS$ruU6`|nMdKZ3k_asFyIgU-jOFWO>tI7SDOeqa) zhg#!PL`6ym@ucv#8uV1It>Ywy)Ud!-ZR5*#r4#YGJMtI%S`@xf&`wXj@mDE8P3R=b zY_7^gY(YW45KthM?Cp?CB-4+Nu_7D48!vG(b^0o>QX<`&VsGfXaCCdI({-F@d;;NV zaCdX?nW_b4tJ|1LD!^7el9}*yOBMx1ndVzX=MmEnpL6j5o_{WKCDc(jlZsudk1a~o zVx!RR{FLBf-gqbm%gs)yVg69(5bX`e;wyxAB!;n+07y~ zBul>&Vh4RzIZ#Y>V_Cf0p>I3d?l!(wIIKbgt@y>q{5@HA+B=R(=M0I@7!`8+J%90_1AAnBss)Li7~@3S*c}t2dukdE z)gnw~bhIeU6D2WxGmD}fP?+ft5r>329<%&=G`0)&qg zov@+p`Gr?Bh<^fEb-apL-AQR;pjur3f;19%ZGctS zV6*f6Ae+NOR80~lZk+5QQRqJve03KK%FNKhnh<6!7_-*QWkm(@+$#r)$P9GS&$0Ai@mx11|t7 zOb`=zk>Ue6g77V*SH>znI3We-)3eSw{6Atyfb8<>xA-K6gBmFl<9Lf~IQiyU(x)Yqksn|vf*o%{Ro3;b(HbO2J&4utyO zx(}}bga5xAd9@ZU7zd*2bl^{b;jj3|lZX4>>_51fmYQ_hztAV683~okUjqM4rv8X0 zJ=^h-Y!9X>I{eXF+8YYkQU7*r0)GK$P1=JR`&j;8@CSgHNs<6>Pa;AyP?oN#V#x3|9t1$)T#b(^qwJH^3-}N(7WEI&O?E#P-Ll_V6DTaiBImkr=E+-nm{1 zFNYiq7xs|Lan`gHPwCRA@1j4z_pdqpzc&$Cut4`enf%25^3O2?U`!81@M*6-C9&{- zK}|#v=Wt2@IQg+9#+}9q`sI(l0#>AVlu$5E8`8^x@c?4W(~KS0J9DLgV+Klms{A|J6YIS;0N zbpPtU#BYht9@GSjQ1}Y$%i#m?8XoD>dLxjQn)tsLv4;mjHwrQ`&y0i{?!UGp_iu0) zV$;PD^JV`c_5q0pl|&MKAr2(izZOge5&(BKH1lSt$)v&jbG*4te%C^fD9a<}+hEw; z|Jhj2R|FXVE4GsR-)GV9URch-zj=e&Xb%0qHBQr`-U8uZ%D?nqjt_v-X1FqH4`u%~ z8~>D60jC%R=z-v0-B?9}ZL~XxTjdMZ=x;0lQruXvcuLa#j5@Og{FSHE>ZAb-oFhk} z@Q*Y40D2Xs&<+1*cRYOvJ$C9&Pj}suQI7)-6Cs81h>>ACv}k^#%uy@)&W}eoIdXmL z=lj7U0$7X5C)d$p@qGH{KO@Kb4>15SZ499I5c56PKb)%+wODMHe@bYQPIJ8E5lL2X z*Dty52}_^UXDCvPez?6*x&2)<`jy@;aAj?{ej}^5aIJ3r^h2O8=2JFc7$thwdI1W7 z=@d%@aD1^b0$-hyf!`@!U-B!rkVv+yJne}sG^GCFXorKqNz*1Q z404?p53)lkV^e^iA9g%ulW%o$uR014Ak{&DF4v~5kLK;_^sfiI09&9*jJ7_hXu*Z* zL=xcU(1tuknl2vkkHU8a6}n2j?TaRjS8H?Qqtv_}s^S7Y+}wr0G~d|2X0t(v2UwGm ztMfIcUhyq^Q!THkv~0HeKRNCt4PO&5Qo7$eg;&TLBte3Ea|c*0Y^s1h9e5otS8JLt z)@#27Z67vNInG(L*j%T?e3Iu)b81ZeqIO8x&Zs_w36x5#)in&-sS*RB7% zrvBW@=UDmEs+cbt;u`LIP6GsWx-&SpZvD1%?yC`-1Ieni`h!Lvdt||TFzD7`SX{S5 z-hEc#znYN%bTy<9e(>?z5}3lt_sPl>Zr50X(l9h;8!3$v-~MW!v_lG*UhT`&StB zyZE!j82!Zi(;gCNvI3&{y)7Mk$m6dIs(IpKz9yl|WH+Vz(`~L6nOeN9{ur6pS|YKc z*|^^=ZTtpiyh~O4dA9Cols~ye3}j}~8tv{>nciqL)M-!@%4IemvRO*UJKe*G>Idow zs_@S*x_hM|1PxXkVpfD_k9ugEl&%qYfYcVwhx@|7TkAxk*~lDeAu6Qy=AiR zK33^mwW;9$L|$4VT;20sIVhwvEage%aMlRJVat4~^$*N9L@cI71vavXB)3%kI*^~W zA)H~huMr~PK9b_N3M)^%R&|vxl;fe)Xw0$Lq*^F3Y#T|WLK}#W)v&l6wL9Zxa_B($ z7-85|Mgk^Zw@JHB0W4YnavaU zzD6H4mhD++(OL*wYMfuNX#V1`q%5CrK~CjmhsAhs3D`Rt7ymHr2WhqqbFh|6J%?|m z$C~DOs}rZojpu4R2=l2IiTU#lj|&#*C*iMLQX5+c08_kplD8*z&f(1NPhK;b zj-cz)`TqnBfuevA*pR@2WIxi0x(&IYaCs042F5tuwO%Ss{x~^pbG=LKZVlcOyY&N$ zqTS zqU4PYq8;%Q5S^{^;}KaO1BNM1(R};4Bk%Nc@15?xT*W;{*{=bfZ+XrgZ3j%dd1yzT zDP~L%sE}ErxdqNpU+$2Uz(QiE6uV{4BW9Y7`5tMFcgkAkAF)04lNijkihgsUS0TWf zCm%t-w44f^-#>!GQpT3IJ+{uoNgp#>ER}(?KIUjHub|3Ribro&vj0RhybA} zKM|7NBI6O_exRcZPCp_f(vkIU`%UbEo`78pjjRf+pVf25o#(} zs=OzS%Kj<@Mq}IZ{QW_oba=}B3hYv=59@3WX)8!sVq}boN^6m!LrrNgxhG1*a-kV? zm9*G+^mKDn)?%t*md2sBU=4)6cvi4RnwVvo@yr#d=VXpeH_OkUqFzWwN-E>4%Vz94VJgEhdP zW)G$rRC98ji!}|LegQ-t@2!af38;HdPmSt`mjmeFh*NR8gKp{$&`Oy7d`>1E}-hcjkO#T8_ zk+aj*5GP8EAe+5%%lrv)9idGo5(vd&1Sf5t`uBjG0YGn6Y2`lgvbGbECLCT6Nr|?- z=hiT#Wf$O;i5o-tRjo`NFbt{@M~eFa^%2o0IPR&`8-LZa#AGXI-gRR~(@pl`)Wm3D z!PDD+%Tr+}7gR$&fAuEvlJ&c3akdSG3JMx?hnt!+CSojNtqHzkboi}H0vT|Ln=GmG zeR4#FM9jLGEGgSTnqBy9LyJV`S(cg>(`tf%{iBHMP8#cx+TZR9;Ui}j&LWQNS37T8 z>ReP(DLBpqXWe)&@>eJX20CRp+XG#;R36qh8zXdjv+*m!>I|AU0W#Fu6vD}jrN`H; zAUj*U_w~UJ`=|9}f^5n_IW(}Qg8I{r)9O+e7rz+Qay zbHS(gH7BiNZAM9TmVpdNz&I-q|7KW6#dy?&;go>nennlX)N?T7%(h}OEEmGZvEA3O zT3^;{Ab?#Q;?-wvbiA?Fe4JB^k(TYvZk#9an117dXjkwn#uVhPeZZxQMVh=Mss2?m`721M%^5%maAM?pF+2lRjqfhdcd#) zNiz2#oR+colPjoCaV2ENR5uA{6=&(G(tk??&FcMu)*1yzOyzoifB2Sc$f^YAJObvO zZxt+h#E8G!?v+M_s`B&wm7DBG)7q-jlPR&!t0$1WO?;N=o>6}B?6`=}Dm!bLXQeY5 zlg2g{qimGVF|s>euf9mjNzB^ElP>~NGho-Yb-qom-6yNddz~k2>zGw~Wwv^3!PRWK zO`%3!JSm3vpkSjna=h8NcZ@T({j`0zb<~6lKYas$Yzk5CGZvHnSJ#Ky-Ccln1ot?K zFdaZ>T>uJ^U!yn5NsokenD6G_V&%rDoKUE5E^K}%B2_t)$W=R%w>IzjZ@sF-R?ZqgYC} z|IL+ii}C2#A$aA=4vl5P?jxtg4fq7pJm=IEaZ4>p3_s!N>kgeEK;(MP(u;Bjy6#Go zDKq}QsQ=tc5;^5e^FRAu?t^1txdS7q*v9Z?5A-rAYlM)Dy z%64fe`l(N~4ML!dUl0NoU?cUy098!FO-5fYbK;1c>EfdAr=f=0q zf0qT%WYZ)DbFPD;bgUNJ%wZB*>MDxd-OQ!*aq%%SpinaoKw6kl+bxEcPCoKTBH;lv z^_!id&CIeUXD}St9;u|PI1aK*O_UA-#B$HP&|{l@9IC(&)dX43jtDA4*hbT#p!mIX`|%NUdYg8$(og@tfCPZ;cnMDaix5Hoe}fBvO+r2oQ_}wfUEs0IghND} zu^|cgw}lAa7Ai1Cyu7^3h6KK91E-zOBC~nQD6JO0i>%c`<}0wFjrO4VH`{Fq(O=Nm?S&3~jBr6wPgk=6gtr3dKZA1@aYB=C3%emPxk^z=kxkuFukn}He@2x7Af3(;pQGH&V7 zFT@fDQi3$JTakPWSCv?a(<1K$`pJU|-8QwwT|?IFH#4yx1&>#~FdM&7FhYLc4u@WQ1|j#+8tW*W!#DfLGb(-8y@N$RE9NgQ3-$qV@w zocCTwUSZFtx0uS}Udhd0TI3QAd|WCxPuLg2p{nBSMlQVB!~Sl+n?_#qEw8tfI`W?K8%i>h2p*&h7aMRpQHBl)>a0Y>el}RRi{K`(2p8hHu ziFs;9UM|esv=~=jJ(fjs!31Yj`G||9-8GwIuH`D**v~ zftwQv<5}h37)Sv#aw30X_L0gA^?sHe2gvq+JMOGD8mE&AFpEg7#wBIjyLLJDNXR5^ zU%KzR6_(o0&N$76HwLnvON)eR&IoYiT!j&0-AAG=&dj{EP411cab1ch6svQ<<~CHi zBD@f9C|qZTc`V2D)HQ1iEm|!IHYd1{2ixC$>_zU)OP31*P8Fp0;Jz+!={HCq-YyHS0U?h*)i9!R3}oO@!yFbYMm?GN(S_ zg|f$FBJ5{Lh@W4b<6HNT-s(+q@#z-r%e5Z&in2J}Cd4v1AILS_6kDGkB_S)|{7x|g zrGOJpO#}a|qsR7V1%-PNIYMv(qfe%1C*F2N5R14*BtW*a7>=Wn3;v#`97it{9_IcP zx+#gVX75W&{=FSG)A{Z+v$PMR(Yn$0Zl{&)XRKIT-wy{u_PGbe{gFf1OM6wlZi8Ug zgG`@(dzI^mtgh7_>0O`HmlGixFBRop0+pjraur(VACQE2z(4uC+TO%)7(xzz%t2$9 z;`9IE&x-V&N7aJXe#_AMXDl3-b=^I~S)en>T24Xb_Y!3>2RoR)snbr7=(ghae@*mqI=e{ zxf^sNePh`@dY#=8luPCKWe&+XP$p zGcC%t-;VsPS5G#jcFmX*yn9j}Z5Ne?#X;i1Xf;zxf7t|%cK zQ>rG1lSprWgg&m%9}!dYTIw#E0ETt*$_ZbgMs^q{XZK2(t565cC!&ZXSiIBMkY$O| zo9umt19t}mlQiZjd8JK^#fVS2vCYSJ%Q4l8l6{SxpHqrD(5gEThjPz*8gho;6YFns z;SMD6xew^BFvgs!u7TRt0)lAGr*^EL_Ax$UZy!!g(CUpfjT`Cd1D3jz`xa-%EMARR zVP%o9HO(mdlh_*kqHo2i5JQS7n9+TKZTbZ1b=vdZy`(ai2p7C=_~ZCA<2S2d`b^_D z7=F9du`Jd#7>Cb?sZbvBz++z!v24lk)n&3i1dQYB;|19U5!mB%H-Y zY<@w3J_tk(^5=zWA>`(ZWlN{?y`3D%)HnLv&u&$=bF@zPsoHnd^51v&$Yl$y1q#*g zT|Q})B*ai@N*au$eg3TYl;u>tGdRJTGJ|M`;QkEp+gl2o*^*mD9h3`5-QVrau3>&s zEK7mMxNBrT+pJcZt|?bM!P1*OMa)sE%tA?JQ@L2&%T?5fWm<7loL8Sx0E`sK7iz!7 z19j5k%)NfnnKneBu(%t)&r@+2kY)Z<*NI1SvKscD}P0lUNUecb=0*Y zn?|2+yfa@Z^mao?htBv3loc7}Ix5Bd`u1*v`c~scMAHhIX<4-*-+wSJU1pIocxI6= zif2|$l5Y^d?mA>}&$SUb11FYKFZ{8UV?PIysRFj4vtv0WbhYy{C4=D1iNlFqa7`an3f`U{R<81ab*Hwic zD=IU(^DO2HwK>Y%Di~aapH>DT9GEppm^{rlWan$K0(O2g48sLgSy7@a8P~wpO^uOy z+0bi99x3LcJq|BI^X+03rUUuX2~7R8fQB#EDw1w3Q=3S7G;Q%Ud9Np*%@K#*8Y~r#cYYCn{Q-&6yA8RB{+eNg zS<(4*Hi9;<#lcedV{<574o|MZc-x$A(vF_GvIIPH*Uyh}74i>ScWpZ@J$bmaYDz~$NW2=k=(FAATVQm~!v3Phy zF*Mq~rm^tGV*g~NATx-?w{wVktPw4#_mnc-Byu)eXfs>DLhPZ^F|ZeHZSoYL4O?PE zUXu1w`gk%~`VI2FvVYsGSz&2e`IVoZI8qyd@9lF+Gp<0TcT#8xvM5dxd}TA7 zq~)Te?A92lD5ey|UMk-ftzh*a?a7&{M=emp7_l$(;M9hq&DSJ{f^#9s{XPc?*4Z>WiV$cpC zY5vwBxI8jp*zf9%D+giI-twq+7BOS_$mV#O0Xo^ADL#m=Zd-Uz6%@u3LiNywf}k4h zweiz5X>XVAJQe$(e@8c)l`G zw-e^pkRGL%QmS6UW?fXe^{E~THg~fifH*nr9Y(qM`aW>w9kuqt9)pUGA$%-hc9XFi zzrY6A;cX>Oz@1Y}v7Ldd#g1lXLmvr=M|C^pR94+Ss}?4+dFF%G{fN;eA5WPYE*q#i?~$kPe< zVX)M@t1aH1J`iVGgd=^8RVvi0^!<*bNb~S*N+#@z!i}L-Y4=})m&Yz24H8Ix7~cl% zGnD3QbQgGAG1)x6yS2V@{7CScYI#lRz6t6siy-@|z^a?2aqQmsHaNEivmeN-A&~=q zFf}lr!X&IjK#%pcs~-Hc#-Tmf@X8jOSR=pS<)&Y|b((`4nLvjpBW_4Wr0!`cf?95x z-Qy#2%ceP&Bjb^Q`i_zeoqCqMGZ0C$L{y~%5ok6prM0=n4SFbPM2#iKTzNpzpK>N^XqHU z1%Fqw?6}0JRp0P8cs4#Ym~JVc5MB z9on1*{eyi6A2UP~qB3O6TLkx$75rJ8%%QoDTl>{bcXOz5?s#0~_ZsgF3gx~R<&7}; z=?&~F-qCs@!`HyS-;c2%>w2AnpZ-iMnfLG%d)d0nh}PB2=|j8CnzQ7Oxf2LP4Ue$9 zqY}-{q#vO6@>7z+(mmWxzJ*vk8k%1QTP~VnE5=sb3@iG%JX~zz>uw#Q5fhLz#kd$G zHh)h&PG59==N9h112Tn+xXumt)=J{ez-wn0>NwluG$ zI%p9xg`1(e;4jMlScZ8CX8goe&Qg1vQJcvQ0k>%hK1-0#cW=)ckMO48p+VdGi%K(p zw<|kOpB4|=VB5X%K0ROnm{sH9A$yT1V^sKYAFU*_QK+3HyzG~BX zsb#HmC0)7N`iVT?bBWyf7tW?P%gOguC5x>;Psl@Bw4`uo@gbBU6%{O+Cw#VWO-eMQ z{ikNVJN!3}Nf3=$YbA^uP6TaJmD!xOYTh>tE-|YsoG6v; zb>!o`UnWa0zf)3NIW%8~O+cJ2uzo|qq<6P*zECDlYuHJT!Du0DX|)V&1Z)^j*e~7S zgox267_^9BSE^1pU)0RrAs_5nFH?U1VAWFRE2pp(xxW`sv?zSOavF#e**)v6?eMEp za=(vG2M+YD<0oFkcJBQg*ik#R)CXrPU1y_)-tI@D8whvNm+uTjNDA-Z$`bnA%kn!FHbib(=}IXISW6noE)=lM*5$`H#?p8&eyaRuLblE1?kK~ zrvcXpQhkM*>ryttW6MUgc_1(+(A4L6-lN6C6kb&w9i_F()tgR%Rh0D3YiRwl{G1w$ zyb=DsN~@2Z-3O;QVVa!0TiFCzTVdTdScFIKKc2H_&%qcV$L6?~G|e0rpUVfO6A$wR z_{5jv;2S3T>T9Il#(a0XaoOW+tZ}I{Y3@Jg|IaaR?fP)m({p#ZN0@M!mc&&{s<3nx zuc6o4$5E{V)%R^XO)t-qh*4qMV)2XJP}J5Q#&xq>A@-74Yaw0RXKlQW@U0LMwWF3t zfu!9Ar}KGqRDaL-{H<5jtD<}otc}`b*fgE=R#!2_ZlvL#FSW0Rb`2hh4dfK*a%|Ez z8_c~h(&o4kIOJ*8Y;=mH>gz&d$>>s0yK#6QwxLkCcI;RT%6bKb7d05Zs{6&4%al2h zX}@AzbKe6j|km#U45FHtng6 z#5gFu`FOvn-2_$FNV2`DU7vTcsmkXnM_^gFdJkwR831X{fU=)8W4 z){O@BY@Klgotbq3)1La8fP9j!M~UHbeWz9XE$3%+={EVS9UoLsVH7hAX03*m29OE! zB6++Yc3StU&dx@~a_hMLwA5)?qE;v)szXYQt08RmN;6x~u4DUnw!A!x#(+wEhiXnz zbfYi^QW6~OgZXJ$D9!y+M~01{x~2T-CWmvbx*0L^iQ}=D^Toc`fR5b|DqPojJQ6lM zaMA1uaX;^GY%RI(NpUSr+JZwavNO!G_EgXY!aW^3)-%K*reVP2rEVCETPI>I3Z)u1 zJ5oR=6<@7)i8~AEOZ`h z`5J!5hY8US2fkIUJ_#a?gW=bp7lr4!v=cm9F{fgD{@?*uLPp^4_OOI=KRw*qg}0HW zffU$Qs=A2JH&Mg)i!xZkp`FFS<6glt4>sNFb&=7H92qY8V6y;8%$ssNs!2=jc%l>XNgXUpKpdogNnvSKRDj_QlGLLmj^^k zjq0B>NSWH1pqBMsVj?T|m6SE~!FST*E3xvFm%{Goc4q|N*XJ`_VlEwFxtJVcAf`iq z#+fBdF4^1OJg@m!3p?_=-ND=k3KWnq+tC{iZ=W@`N_Iw;{YYQ&g>|brat`8qrikP9 zx1?Nz8*JZwPzp~oj<(Xi#o@TB$2dvGQ;PHa}9=-aIWa-G7x)Qix@6q7(gfLwRb(GOJli*wH(r2m1mIo1JEN z>5!sP7(y(=kXB*cLxEKz$M~PPEM#ZFg3N5g2k$R4X~=?-*1D=Ggt+#`Wa-%>xxXUHU`%=bvZgIi;UezR0LSe2a@iVxI)#)$G!#~(!!lHQnZ@op5x?)0zGBj9sFl_vy zK$jum0~nkdpo+|6G&;Y?v8*)K1yl+I-9EU4^T^oH_+hiOV|aEzoW;4H#mP|G-OGl! z^tC$kZY)$iwB+hgyV@4p9W^&dE?UmNydwC$i%s)A^_WZn++T z2A4n)aL5U|`*Gx?P^BYOrJ6hiV@N@9a5awb<5XmS@|?pM2eLe&VIsjom_Pb&)zv%WfQW)j+1=Z~K;#Qk)`eYF-+p8Z&V} zAFIIKYSLW5QR#y`Ul2jD!Im_@f-8SfEv^wIx{1O83#d@0#d`RZ28Zqekv=CR05qO* z=HvW*GG%qFx+6K*UzISv>9%FRiw}oUGQ6u5)E)g^3wd5g5NDZhXUw|;CO?&~UB?i! z({h5n+G3f5H3ik?m)36ANENguN_d*Wt6T++m|IP1M?3tU^z8iDY`1cj{iTck^S_EH zfADgV;yg~q-hA!|fydWsQ5$ykHD9a4%ChH;{CxP5H0+tKv?Yi29|WeJr~TDgvD zAg_k=qrE9+)EKADhI|a336vS_c_xGooK^A13_ONg;+iitH|lpThc&(Sh3lK)It1h1N)4`q_1*{hQrWS zX=CF3{8=qj5!N>^ZDviK9^08)Pyu;X^BmoXLSQvcErr4|k&$!6HfuoK`ZSwUAJ{E< zF|pI%g=@g-754LJ(`NOvunzXs6HZp==Bh3Tiiy~n{bQ8`Y+?j(IOU--?dSujM2dy*J>dQV=f#rC>;pLel* zMqeqnjFKw${h#E<|0DiVLlQ(t5>mmZ!iy_#rGV<#-9M}k(`|QMqFXsmPohC%kj5fi zOma(KF!Ttt6gSo6a?nU|&h`e=*<7TgtVrfhexg<6KPnC7NnKvxACjnD@;t|MfGY_3 z_lmsQ)!vf8bY4T!7YBLW^#4qWAGC>vTF$cTc(Z5Z_M^|C3W`iL0Mvg7Wk}UQKF#9n znZ|Cq$zm)utnKR{VbNO8QLGbMuKe=`okJlY78cl=2ub+2=UteNrD+iCWrXSSC}>kp>!a5jbiE> zq?tzge$*H1iWV~KH0tB~_wlDcQbVY#B|my{pTs6P!R14a#MAvs5!hjn8Zc3N(_v-c zjq7=~HLfM=#009eDk;No6>&%NdQX)?I#M%%&S0pjHUK=N^hQJ>b`h|Z=#BbgOUy7S(JDbwvPe$4_LG&BM^?4C^u+ zswE59{(>0A*$G6~qQR|1=NHO(Pdzvw1$DeM+9e+N1VPI&ld#iQg~LSO>C}xRkaraX z#mUvXj{9_f9>BN!2JEZUd>J(n1t=HZx$H6qq(IHB5geyMNYcf4{*a1~=KwCHnagg14%s+nuRjbaPCShm5{#LVt(J7H3?!~*4{-)$-@g!^_t$%2xzjg}T{T`IlOi4m5P#{`V8FT!TYOD=y7kbBwB7`TGW_q*~U4Y0(LP+&V?vW9VmqjxQq)7Z`@ zPMxO@;OY28C^->3u{WDzZd^r9Y0U~*q^jI+R3wB1u|}5jZcPpa7>+Eiob|^(6icCI zXb@oCMDOC@5)MG7wAjxUd z4A)sn%Y@7kYx}k7>AD73eu~8QW{80+?3&i{1*Bs)dBPeMc>6>8BbNR|n78b!s`%^4~BGZy0>kaI?WL*Jpp9 zK$>^{!7DK0*-whd;Q|a3F@}rQHGuL5N*kQD0?lLrxlMOU3xJ*#cH{?=M~Nx!gqY}r zaLLZm=x%ml=$`Bz&d9s-Z#0EESfuP)O3Lfi;L9%TT_#t#H6bf5DUkD^+`K&X`j7*7 zNotj}dd(o&XV98e8d9*{K%+EkRd@`#+c{u#k{9ev!|aF?N-g(t(;Dm#kiR9Qa=385 z^00E)+))hSEM_wIW`Ncuz_J2pgvDIaFl8 z(f70ZF&kV&J^jJ+jofhRsDj~PhpPiTbeetdHaBJb%=0S|#T3OCw+s>_0kth9Bcp=< zkZ-S{3^ej-C~i%QB~0-E&i)>6Q?u|d77%&NDu(Q>n#tsm`}dLt1W%7m0G|K!>!+s4 zW#O$KYYjP8Wld3mZZPVPKfM6b%uKCC0$ARN zV4ZAMvoeBhh9QM8V?;VM=&9L;dfKa9Lm>I`U-0;0>>r#@*Vo#SBpq*8hrA>GS)A)} z7HWUGb*%0&F&X99&s@JM^`r^l#4}lk!|2s}p@IO8cz^SvuiDEw#)rOmF<(Wf9UmIM z4bJmXyRhGn&_zUG89h6?(P(;-8svoJJf0W}ibN{W*-rGe&jt(5hh&nt8WG$Eh`uFi zRCaeyAPHgp(&}}G!pYWfSRt{o6im;@N*J2y4{^5v+H+0>V=#a(ggJbUmege|;UQ)3=<+TVCL4L7To(J6;cxOLp*4j*AB*`FN~aUI94{cZiiD~ zD6U6Xz{_#Kn?X)0vxElo1C8@}bnPhYpy_02Ld_$_k!Zi9|Bth;46CYJyA~v*6{JH# zLTV$8bV_%}ra`);TR@~+Y9po6-J6y!=`QJ#*mQo2_nh+_AD;L9^IexemX~f=YtFUj z9QU}#9HR`CHrTmssr^$5K^9?D5us}6_-Z(NN$$iK_I$4!2~e-Z=L-*8I6Q*TDPt_S z3?8O}8&;HeAxP$1d8||$nzcmyukQ(iKmUke|Lo8_X!AbaRBCNwL{I+USLVX!)WzP- zR;U}`s#ekU!vPJaCs~-FJd{eI0KphbVll>|#7&f4??n;iVz;YDy7|Dz*1!$wRMa%S z-qhMStd9-qVyY}ikZDVbHXTD8Br-nF&)FL@TQzNJ(UQ$Y?KJMxX=x1I3=cq)B>Wra z(ScF4SFJz7DINj)&GZcC$K)l?rrjbP$cXz-sOk4ne)kTFywHCn;T^grHOqR#f(d9Y&||0wv>(tRZ6y ztNyQn{8Y`4)U98RtrQ8)yq}-g&TJi-bRzzYj0J+!s_!6yl#hQy_#p z3(jG@<3+aUQp^w4*R=XUkN;Og7Qm?iRVTPJIC!jTf#9Gdlu zB~k|-R!jHWUtI!M*#NvK4aK9YPC~wgarf3VURhW=hiS@QpJ#wP*#f)y)mF5e3KE3h ze0TX%kVfe*8WE$$CiOT&1}6{0DZ^Pr^Cd$yd0%5^wRlakls(_n$XZ+&)hQU~CeB8o zt*G|^pf3M}nNJ}?ABf+-r2_Hgp!fLG4ycB=ccjq{m}*94Bq+XCm?;J)e-Y9cN2d$N zW;s6<)b4aUE_4VP=Ro6YQgcjYIJP8Iv%K-t4%=pNg7u3q01SvhB(Pt!w(zokP5lwM zSM0ef%&AD$0iR!US@fX@?&70+z(*Z-xsLQ(G&*>ThroyhVJti8K>3Blr=D*RKNlbO z6YZ!ZSk486Wru83#|oQ=XM>`mBmH&8l9JPW&zfC!G*DQ--{&*lyjo3? z1))vy^~D$tOJeFtE+G~2Zzki_DISlH+7+0iXYAWr5|*VvvU?dvbRk)s!O?Cd*OO#} z<1D(d_I6k2cE0pxSckJZV}k^20r6{kNbLJirxesOt~NN?Cn7C=3B00x#0-0W9pl6PyG49X4`l& zLtyE*PP4_}o3o%AnBEpf6)E2nYKlAiMBQy=ky_xcPOeF&{BQ?aMiFaiX*XiL?R)R0 zwVoydUzY{TJ2dsy<0fuStNR|(w?Nq;Q;GrOca`ssQ(==ICEt*_=uNA&d~F&j>no1Q z2bSlOc}o<|N8k^D^%VA%Wwb&(hy9F1F4}>v2-?r&QAj~CZxhL?z3Gf`cGXm3@DlJ* z9^M2n1pFR7-7E}`pNKs#cv&|wbZB|XrvpKj#gUu4XwZelx;1&Z3;q(@<7k0>dylKE zRzgbh$uO0hQU*eO*x! zefW@6i4;Ou-+XN%06(0tO?}=o)@bUb-AM%F*Q0@7>4(@{EvJurrW%@#2cRV$Ul#Pr zq9}k>XI_4R_oC0_RIE?TLkDYmS{8 ziv%&$M0SgRJn^%i5ik~OoOUjt>El1QQOyCVkQ{o3$E8-SGw2f^h404 zj>0zV!lG7<-=nh!bty|J)#gMb3Tgb^K40tVTI04_l3E&hl;?HLU7>P!c9A+B#_QK5 z{6w%dC$;7|&QS9QkkSOGPmrmiu7EmhE8cv)S3~TGv##T^0w{QEtHuu3e#h+a8Ga2y zA>(J*483@h<|_+yOzWf=&As0pWar@z6o~E|BBb-Z-1AkK!7JUf7g^uVQlIM0Kea!a z;Uo`v)SF60sk{pPE%^|FN&5Q{dBnuT9B<}6qNgf{>D~H?rPO(BFDRF2_z#&>Ed|KeHp!VLd4#2nUN)}HfbaL6rJx4 zvx9mK2p1RCA3kEUhM~V?eX#%J2nk{EcmK>z0wRFB2NN3no^Kunm$`&yl-8i) ziwsT#z@dLTpa${!Pg%h9n{cw-!wnKe~T4zPLNRE zT$jRD%8B1sb$YfKx6UESZ+sAvZ2svne&dOkNv(K5Bc&xGpTmI55uCDmIv&Rn1k7X^ zq?X<5`Kc&ma1_g3Bcan8Ew=Y6s0do!DXI5U#<9vrd*AILEk+7=a?fcbpSkXf^SZ3j zxuBwmY1q&QT`45Z;h!AvnRfQ&Ldq2(?5W=_wqFG*^m}wJ0fz5HWnlIlITaTl$oMC( zZYq!>Fb>X$)sK&!$S=_QaTY9&n!#f73E_^aOKJMH5~wF}K~lwdQRE2^=>`mhEEW?S z9Y%ZMM0Ul#N5dZjsQXz4C#mgV4b<<~lCaMTm3H)(Q9g!CWSq ziz&F1p5}AB?hLDF2uT_k{)@;2aE&LU)>Lg1#tc=a&|2S67JW{Goe#=YFDH|eB#SMR zD8nB7{w3}wVy*Y<+VLhSaw9q&wpLcYST$4w0r?+Ej33Cqh;l6tXJ_IEV8;Dz2JaaJ zH0%S7`ThVK^SB2^5AZ)lo+^q)EkK`|e15Rk2*GQ``w2RaE_N}7z5g%(oC$t_tV@CJ z$;v6}HTQ$JHCpJD;!7|YP?J9R0PxptGN2kXVFRi`uChTgJtNRR?$sRUW6OOV<{+Gy zb|Y-C|KN_xvEWE6P)f+~je7*J68ImmVBORI61VVNiMHJLrT@G$6A=8f!^6XXK(fZ& z6NBjoNv!^9_ZZ#ChiqeWZ4L|0Q~vKbB)aj*rV%5{Q6w3EN~1^T!k<6*{#po=8km6B z)^VO&Yd;kpHT>BW0Psxo-u=f(s+0F147?AXqE&5z6Lil;o;2ZvO*Z-dfn+_C0z%y($VkBtm ziFSW-yyY2IS(opP{g_15y2Nr)%C_lb(Ama1M1DR;DGqNdKd$$|1F{DDVa|Ve8x;)h zzUn2wfi&eFdVB|ezTZUlsD zH7+(`ov9Cx;P+%5Go41uXZ()CNeBDq{8M=av)PfWC1YWpce&KIC14nhO)h3nt%@e8V8->UHt9 z#qQ>?p3?=pS$zD_*=c!ugv+4TRXFXGvoBYZC+oTLERDyiS|9T4?{AcUI2EvJG`bU> zJ!%`*t+pn#06gktZ;zeQMNxRrD@X+$Vs&Tg6XF435*`znve9Fa91(RjDTIuG@vxJP z*I>y&4Q2WQ4bSqnboqs3nUT2ZNeTz6{ZHU9wgiX!W^1c*z4I#``=u|vC0Y&YiHthM zhmVmlB@1Lq;(=5GN>W~3s(omSluzWaJz z5_<;i!~3Rw8npe|8ON#l-GS+D`;+2E&&ff@F1?!p#R2M(FFtytoj`Dm;7E}bEv~ok z56OGqw{XG}e}lC#?W#fb{e=u-PRT9hT-C2m-!PB*N26q7+Ja24KPa&8t*2f}kJFo5 z@{Mi5KuxhXS6JPjqa-8&ZyGfOC!~<5b44U9q9yzblV6$^BegLLcR*Oh(JeC7+RseU zSdhMee(=LVR#6b*_m~4Oj|D2oMI`CJ&->(kGR}2s2{3!5R@1+*8}Dw;1as^&+m3#y z3~e9uhsFtvAG_>K?BLS6?HjC8u)ih~iSNo{7-~NMv^!TPGa9Ji>$dh<;b%}V#s0&`=LV+Ya)Q4ri}b4V9)%NkoM<4NM$@(pED$&<#Qfv5g`(B zcCI7~Lc_;q%vUbb9*<6Mwg35|=}P*Ii#6z8R7=EZ!7P(Bvz+3OxRfADr})J$Ll>}i zig7VPUNWa&wXNX*ZtRdrwA4;6 z&qaiYJ**J>Wys+@H(Rs2F5Hu06dd366+YpEXi6Fnt5pj%g_-l6G8cbVYk)I57grPn zvXK@`tR{MYNX4z~H@jW|YBQ@J7Q`hcF0^>_`x(3%@`FnJ*^6IX+XuHV%=4}H>>uW-EKjz79Loa z13ENN@#wzK@_dLheqfW-l1E)?KaHBF{0i#*JV*`O;b*q1B@b43M;17a~q+z$XXTOy55IBsYMM4IyNr>o1>LaWXB|+cc2yV5jCI0X8G*6SqwQ zYUQ-_$NRo_ag&QTLZ^F+zFGMrjn|6}cQH1zu3rll1i5SzGwm>d^^Vwx^ZO#CxIWI) zmNpyo?)tn(zc(wFLFAOG4jPU4`L8(pdn}XpM9e@3abvtsmC4xH(MC{(oa4}5A1mnFgfnsjE3AWmJQ%bJneEv`+rBY9A)1Do z7Fda7Svk6gBDnwQkrn+4MNC{mB0sZhoQrJ|HeKr;cFpcxtvhw2cc3@R zoIXbvT*_IRNfR4m|bG%P?=Awch-*CuBJz zV4TB#v%zE#+d51p)nKazA}aSp5&;sb#s*jAsFg9o;P$zoPQL+aIiiWU#3c5_ zdzIv8l(-0C0uTVI0Hasw9zbcYJDFWE_FcWhZo~gE@>-Rv#O6)TP;+ca)0NWi`Zc7` z@K5otM$LLDM~uJbc*QSs^Hzk?3G`&_NC`$I;khob#&Y{z|SJKNeX zhij$Q!~DH13%Lq4-g>;>`ZCR;DoDbn^#1py4v;ZOb9G9MUMI&qw1o*RzVS{MnB`da zkRR9{sdrb&Q_n5mWvSQaD%9q%1I~$-{*=?Xl|D{>GS zY{cQ{0DPlp%p{< zw&87~Ig2*l5w9o6l>}x+8b>)Srwne1)}J@=UsG|s2fO_e<{|P`ZDK=`HV}GY7~Rj& zNemy3jE+_0a;jyy8f3{EEH8qY>A7Kr07C%Ysc#ZnPEms7N$$anBd&L_lHS(tz}HhX zu3Q|y3`z&tJ72X4-ras{SFlp$RUspBt0D4QygRN~ufqx71tw~9FPACB;%1XGG7kvz*gPv<&`{SsTJyzSm3u9Agz78_G^ zMS`Z!Nj$#8ta7g2t@y0QG+y)rshsf?Ljp975yC0FZ^|6>=iE^2pv583pS>q<{{yID8oo>nWzhIl2s(P#hnVN2q`9EA19*`rw2n`Z z;$ha@LB+tX+!a**Ak^p4?^Z78ZJ=^b2B{FRbfs4E0+VcZe<-*(B<^)SY74tt^xaQ< z@l~E{p*s6(#Dvgj+xoq!IVsW`tKVLAV+5isorC#c@skf$yuIr^aXS1iAKPbxuMEwe z5xH#<5h@tl`{9=^h*x=o<~uqcznOLGOmoE{s|mBrDCscJwVSG>jzQ%^n=~h=|F}P2 zqrhpiK<~QX)fms9q8+vWRd&>Tw5okvn+#kmlk$@DTqJGNm8BFG*iG5a|?V%^GIjLWQg#uVrjNzNG!N zl7kHXq=S&ENwGDci3I9=kY)IeT*O0gUpKa|gv>_li8U2es}-(uy08vyOs1}l@ukyQ z5!ZLg+G^t|GXpwB@@Br9ZgSGZi-9whajPdoU;}P!Vk>A;jE}O3iR#pa=lWX;HMn;E zXDq9uh-1&Jwxy$<+R~l)HP|XCPz2B49*jDl3?gEN+#JomFwIY%orY>r@fbm^m`ON- zIYpEk>t5FJ#iNj5hYz8LzyI)L<(Y)N_3{83rhi8065rp5jWj;^%dZkt`>SvQ-~obL zr2SbiTNLUnz5%Wn)Fi`}kLDzN1M}j5nMXlQ*!X~4j3~KL0SyWQfsz9LDbI`#c6zy_uJR! zYYilD1m)lun zjxpK|h{uX>=wjEo`D{%i9QZrj8d@yJORQXQ2asIiJe~(87~8&pul5zvy1ve(5wcA> zjBay6vjhE}ysLYqG(2wQlSFT>9$!%Mu4ri9G?5dm?Pk2J*P*Cr-D=2R-W9I#+KUV? zY-{Sb^xbz4GirySQ(88`XHHU?I2i*l%W>!NAZS)ehWAOjhoLAcOUxfsC;9x7@4WDf z-J?@7Twk}co^(!@Vs&jtzoGk}D>Eq8G4tSoL^ zJK3-qfB=Wn{wa@2A}Wa&S%8rxs}%w6rhcz;;b`zGdo`0*|EU+=k%!acxW3UgVOsQr z4$IQ>YcGo?Mxjk>ycwl^v*@?%(X{KJ+jrrj{jEQqYW-Ox`NzE_pR9FQiJW&^iCABI zork=!s+RhGAS|&YnvFqSviw|Zh9lPw1szS-j&r1VXW&p;f6t68?QpOog~Fk=6K&gH z0|RvTISKb%B*HL?g+{jpHKIGDi;<()UuBIYC-V<2}pJwZqwO7zVnLD9Qx z;$KNAj`B3RvwBSpZ7dRk@FB|ee6DJG>qsz+Q3gMXZRU6Dpf^$PEM3~eP-*;!m^n-j zlRtLjQV>)V(Jx)RU`(>s6piPQu|D2-yhST z8u(6%XPIcO22Y6oR|4)S+~a+>brjQ^;tJ&duDSoF?)dLjaf}^9nW@t-xQd72S3FUE zdY=3nC#n1o8DxKJ8GxSifR*pTOuHVIHso;g=oq40b&VqH9+xmY<`{+MOZn4O@8AEG zo=cJ!Jfj1+6zAG)R13u#d3CEdvoi400RX`;2d04W%MiG`E;u);7Ai8sI3k(;+g$K} z{=|9)s{ivQkd+`Fqy*cb8>Gt2b{kNF6P_AW>B^@XfPXkSM{)8*{ zkJ0iBka+;T|54{Zzl#6)q{2P(Jw6s+LetUNX+ey~sQa8QmafToLp}k>@i5ME{yQz+0%)kh%Iv4s^V+<( zcX*sPqr=JA&=Sh+|L?EN*$b%k4D+`eI|B!Qi6|{RzhBUJ9li2 zvA+yhQ+8^0@56Jy?a){)v6)q-`rQ{!%(eUhy>Ua|O`N&5w5i2DEG%rClTo*FYVrli zh1Cvc!gQsDjD4bS21M5@_wP~;zqjP58U!Bfr{#<0MnIP4NW)Nsa^*Xv3*exy>Ci%B z&-h{1$ZyX~DtD)^F#ZyDYc!^3qrxeckS$2`e} z_KoEOYq4B*WUo}}E17kjvup;Lb>-t9_x+29H(`d45`>i(f?+!45!-Xi^jjm#+a{); z?@fex?%M*kYXkkmFRLl55CAqc_G^vfq8gw< z#{^2EA0LXbDrr!eg)~@~)=Awk2!G8rK^3eUA$+ zHZpwImfu36XIzNBzddR+q`HQl2@>R;oTJc;WKW(PEq4#6R9e8ylG*Hh4Bls*``+Eq zK1SyMev&nhL*pGwCwRW@R*SH+^q*w094`L~D|H2>wGt~I1*PD7=$0HP^Z~Z&5D8v) zBe$>+??7EMU43gjrnAwD@#3{IDlR=8P%CHB@nV!T)UM zU`i&1BY`=cxA&N^LL~IUqN}|F)c@q)YeCve_>Hl`m@G552DCizFysUwhJnzr}KWb)6=wG+b$@MPtx~N$KXcCzq#%! z!Ny4b!7?`3*)4i*@{612=6G~`YQFi-&zW7e-gS>L5a~3@R*yFiT|R=CEB-~(jR+EE z?OXmd$y5$=W@g&w)wVY>O*g-h>#hc8SBtoUdu?hKUhYFLW>B_F4FAnibw7b;IgVvp zjZPvmW}%uHd;_c?u>gCj$g?pnlQIzBFZ;!8pkme9$qTl3Hj-!Td2!g4kz>#bKXM)W zm9}bHQ_XR%3uiTQ)(+sV(MUD)oYwo}0KRe#qyyDd;@CAP++zXPza{fjhH+X?(KWc< z8S}kIS*Tl>T+F$-zMTc-$|jG{Yvd`5*DVFWa_{_FS$$hY>ekkY*U~DiE-$kqLPmr5 z+>a#Z!$7ea{YGqo`wf%SFD6~)F9oaSI`AiXijNro(^yLmeYC!4=w^1H%TM5zmYS3d zc|I!w{|X0?sAOw^Of{30vdo8Ux0T)i=kC1@*Ct1*oM`((mDr7n06m5)zkc-Uqi0%7vP*Nt=L>O*}z<{U$HRyDxC%Mq45l6P2OAO*hPu z#FjcBfYF3%k#dKEcypA`rdm< zXpt>_A4?tA=+m*Z#tA&8-Y+*A?)Pnd!+lmcP&BdC3!%gR26&kKtHsByhA{V3zVJs6 zMe4UtZ+0mBkEx%+?IVd!(D)^gJu7`8#huMRmY)yw*WxT?X{6+yY09Rqf{5qXb@I5OE|`Yq*YO=5>d4=UO3C(0`6Qn_fk+v_9GO4&0ro zl7X-V>#lrdT5AgD)SQvmHkLRzu(iy=!QDdjSvOERy2UXG*w5^Ocyt_c<8Fedk z^dw7I8IN07i~Q_vv;#20^;JU(8sjx5zCsIxm%8=a=<0aJ>pxn*_W`GE?I#@OzkL(v zUv8&lOz39|aY&f)b411>ImWj@VGiNn2US)8m zp|gndp9}EQAQ0Vv+1CFgg?9HN$ah@Hn*A1>m4K&>YiToO$dS%HIE`t_Yg36!j)2CY z(9!P5?~ChpQ>? zL7LDYwSk1S#FJ`GAYC!-io#&%0TwIAzdyq=$IkD`uX_40ZowP}fPaAYVbg5zmb~=r z0o0xj@oU~TJKa(~-IQt#Kr|U$FPhF~+x;unLMW2T?~DLCbT2iUvd>}znG9SLI4%|hu@1ff^CgF5sADAVNXTIXTI2ywzmE? zX8*acpl;d29gz+{dT@6yqkB-qNcg-yL!h#^(NlbX?|%S?+|c|#iXfs&>guLp&dbUO z_x@$<_}3Vk$iqLI62(gW>f{4n_Y$(keF&~|68r!;q6j1RA63AAJKKtI&xIepVE((Jz+tV{ zpV?(e-emNi57Zpd6@a>JLw%utnr`YpUy{Fm!o7YbjTVc+?r+uRzXs668{TsM9%tN< zPd|P*`t}Hvr9}a-?K&~=gBS81p)kYEzr||j+#2tz$BJQkpdBFh7lN;Egm3ilmn8Vd zKNZRW{bZ8*Anq;rscYgX#xV zcPvMn!z;-DkYto21C6wwxE{ylU5`!wDJ+6#uw4sALHb% zAOX&H$rWa_J+lBZWw&#$(;Y8XiG{AneFW;6H~7rjUQl|?$UitLV4l$7*Z|$h(rdsh zzW<~jlZ2a`31mY>%w-d6p5ZRC@Zz*ucl;E!C!KfbmE9%>X??ebzAth0LgUqG&!r%j zWdHJKF;*N}@BFP5S})3m_c!Tuc2}o+DQ8nF3OgGh7T7$nao%^N0Yw4=4cmimWVAH= zGnNCO^RP86LtUyueLAT>YjSt{c%;HpV{3Nfjqz$#46j|YTJg^Os9hVR(bM$j4VKhA zl3eclbflx7?NNQp?IAbUOWpAqU-Oa*rB9s3c)9IvMfC3r&3nCs8a`hLfT7~n7}R^^ zYUVQc+-@Rja`mp5j}AXb`6RDWzJC3h)o_HC^__t)?$yzbUF=7Ez%mP?UP17xZD`xRpNuz? zBPL$4ZT6x0gvYOEO0QN-S7ns}>IlOfy^5Dt`6gErY&m2*0+b4byzjkYDb3Z38C@6M zQ~7RJ*#bDpq1U}ujtg~Fm4Z^JZYZ7+{=D~CdG}L+>EN8Za=q#+f8@&XT#eo{LD}K* zKQt|zX+%iamcG>WEo#%g=%eRwo&mdyW4rA~5xhG15^=9+kvA*SHZO3+YNy%& zY34W`+*_*DeVtbe?M-CRQJ3&xmna7Ct-b=KKMNNQjgJv}C(XU-&DL01IvIP*F%N6$3_DCl^)uI>4|%^keb0Pr2ka}-Y6WSp7QJ}1e9~Cez-*$l ziyl|}E3GLYL9eSIgU^(0fcELS&Kf9aYnGni8W7+yt7<~rdOd0}Ny|m~CW~}H+)uYB zONjH|rHtO*de#u7ftt??4W5_-wTUtnY*e9HG0N~u8{n8E)!bm4L{ZXIY`QdHHJ&e? zkIvuS22^qFJEG}ts=QAyh{xjWny-Ybt>@{1I{tX{nG{2_SkT|P+Q9sz0W!=uFd*m1 zS@O1W>M%Xp)5ws0&`;6?rr?DSL~HHAW7d`A z{{V!kjvJIEwJ`x@Ivpi6OLgtzvH2it}Mlu)-w4XHN{V#8e)kG4}o0)C5q*d-!e4Wh2Jqo7bVtpPdGI-cM2S znVI%Zbx0F&S&~nlmWRc>oD2hOkkG27+&2A%^BEMYy)GO*8l1NrEliGsP%SPfmsSpO z#=|D>APrt>2Xq3bKSo)N*R3r8F_Iu@%zYAd4vMkK#-QHzfJ}UHZz}3qU%_g=TJtB^ zHWRp9b+k9Wst{f+H$mS(tMhML8+iqeV${71wObbfh|zwf$$`D_dRHMNNO{3yho7fm zT}!#-w|Kn)iuzZtjrrvxpvdT5AJ8$m4A)}qK!=IZsg`~Lm(lgcP`yQfotEO0;R*P+ zhU}ry$fsBbd;CshU~ZN*jX~C9IiI_IFaGKIgkh4PTsk1lV~i8L)%;ezEN>MK?#JC- zD5|JrA(L=DZd~>l4}2pU^i_^%CyTXfWgxJL)5iJ*#Oso$waMp21W^InIJ@nf;s#1v zT^TXl+Swp+XvbGK*=?M^rj3++vyw|Jpm1TLCoGMEho zJScmACh04lY$B_lU;n$b$?XOe*<|tk4MqXXbRCTX#H-MJ2y%OLnw;n0Z=+?h{x#hK zJ!uYNPQwDCT6r5D1NB)k%d@H`<0gcYIQL+q#gfoz^16ssg?sG1QLN|qa{Z%$o0)-M z*~iBck!YX$s>gSSH73w+`ZENZWll?2P+$9EF?b>cPfc;dOogD+rTl=c(ATi8j*hKg z42WpY&FV*nBZtOA2=kU%prCk>tdAf$x`Uq0;^2NHDx%}f6L=CN}5cllncKv>?| zbDugg$n|m@d|P5{biJTpOa5&9WRrxye`tlIkp$L1t@H;@^=A|!kB>=0Oc|gt!~WN4 zGd8KzsqjbeWoC~Lihy|77^*V3yyfinw~+}|%_Uf%=vJOgbysn1?UCUi#UqQo8CMmb z#5^{$Z&jL!ae{6K(brAPTQ&a0RJ3grbwjiN7CzNmj;s;kIEjIM&mK=VQB^J+#x=)_ z%V^}t=)HR7kTDBn@Aa|@-k_v)Z%kF0-Dc$;t)i9mhLtp>??O*}@2)a@FwgcDOT^=@ zcqsdNH^DvWD7vA3IVmvkMt!X#MX=u9DpnriW&+i_>w&U z_^>^l%UBZV{L#@jqldg&S{IDg`i2~tpO$!h_}sYM#!far17+3R<~-vEnOuGBP3u(l z$kobtx$Rl2{k$wEDOr6>I|`M}#){n9ucIJ6?2?yDfF=zB$k|}YCMn&kpr)9HeNQon z`5Cb>#Zn!I@2DU%ns%24s=RNOnu@_ZI*x_rlNC8ACNvrS^ zGVvJ?dJ$eu*oOj9xT)oiCn;k3NI606Lx3|TIyZjo6*Pi`S1H(=yEF7_A8wdL(ZwFt zh5k?T?pJpm$2PD;AlD-Yd?k2L>w|fijL8Rav+b5D;;QNm%y6>oGgYgr^okTcd8VK5 z&2AeTPp>7y3|)enyscYu#T5wo?W*o5h@81CEu($l#5e5oD=d`44l{1w=bDFU;J{R2 zVli~d2kCC%h&VbjW1uSN@}$8DI9jmS+u1i{;IyQZXUEc<67%+}>{^^?2T~=Uw~)?39bS z6tv@VvKvlcD3LmG{g#TK+}-PNT%5G{J!rBlU~P$7}2Qs7tVXfYvN8p?|0MtPMz8`EbFK_F>mRYNbHKsogs&%tt$LiW@WTATZ zOGRrBWqce+C*rv(w2TGhCF5-4Ud6qM%+%&;C9!6W8D6&$@pS5{($7JOM$=7=4YWJB zQcA)!_-^l(<}Y)*gXMI_glexQh;sn-niPc3omIR~VU@@H6K2{k3G3;jq=~7ElxoLI z3vqdez2yR#{f&Rj2 z%y-i3yy+Bt|KkOqldBuUceI>kGXmY-var;UK#ST^l3~t^{ke{fm~A@q0tIPjn-m$L zbJ_-@uO}`^Ehb_1tWR{YD9M#~BK~)k3@Un}FD4Bs;PtFk`!t3@cku9Ab`$452!}7q zqGlo{g&M7U(ED|{nMN<9Ry!B9d*t?Hb#4SPsu|9Lj?jA5d;Sdm)x~)~`@1ji-qSt} zvg=OQ0F1dg8BVasm_7hHzbSYOY=w1)%KUU@=h6%r57c5q>?F(3u_^MW@9qeltEnz zh%wBy3Mp`LTL<(oau>QIIfnce7U4ZmVbDsRAu5$y?+_beJMzBou9k)7K4o3~KyD{* z^`Je3+N%E~EoD5{1@=|BNP10deje(Q3g!38;q%fL{Ga^uXkXVK@7zre`02Tf#@tSr z*ZYz*W^`vnGR99y8&2nh4eNcPKhP1`%T_Q*U>dOu4jXmm4;IQX7dG| zoixaO!sXX%y4x}zpRN_wyV#z6b#xy1cy+*#3USD%y>p=4xdSv(p!0UT#%j`*kl&}A zXc)*?kK6HZP9z$~Mi+Mbxxi|=ymw=8jBry}SABOmyZ`2TOM?v|Up6n+ak9u8ki?6u zhkep=JhuxY7D%Rc+i;~C!djqG5bCPPN( zQK#of*?fXy*~LvzX2-#!m5s;E`?^nV-G7f36!fPx2$>}>db_Qk>`c5Cw38F@IrO7& zKd<}nJ7v5;`rD}uVzYt>V)qg(wo_8{*-nnD0|9x`j3_fo=>r*h)Iuytzr( z(1bOh>znX%A26%=o2w6B57uvgnrP}(9D0_#>;qPTd7`f!RxFHNGylL>k9-YPE$GMB z@)v9;Ky9=?WDR9&hJmZ(4kJBMAZT>Bm~G03|Q%^qISHf?iJubt7UV+wyx`o@A=Y%*DvD+#7^SpAO2S>5~l^pLWOHk-g4$ z3(N)YcawHN%uEWOPwi%LvcrE4EyM0&g$Ed!7>vgDio=ijrK7NzBWmCa*P1ZwoA2zHq4Nx~b0r ze@!38SseEyY={ip8Db0%4xxmG?}>< zY>Onncx>2jJPz|h5WrbZL)D#g-3~ZvLu^qPoJjI=-aKg5T;Z>v??9SR)i{SBc{ibF zW+_R_j;6icaK_{}H$%-S6VnHbCJ-F3$WP?6k-(&q6ps89fw}BAhA)wj_-4uUiickk zq|v2d zmLn!lqLUy#nwKd<+q>>z$Kqt|(TDKhZ>K;CSo@hpgI>b{FPelDoH0SmrnRTLOcL(V zClFm5e?jdO_X*?v!cB=!Q@v}wL^I>m<>YB}y|VO&;ecwadp+^0Awer02Ihg07q4kb zWn)$Xdea$ZT?>JGF%wH#E0I3ghbzVpD|p*HAy?i{r@r#l!M+P0A5-0#@AEBX(=~D5 zKFJJT@Z2}Z)DV6u{=Ag@GyoOvIj)it<42?YPir8}QgU%IA))8ODddf33pr;Hp<9?| z4@s)=nPXBX^)*-^X?8X}J^f;EcNgkzXOx8Qv>?owvChAN@t z&M2IISTAqE_AUsHz8ikjEVK9*IB1FZF}gf8*453v`P?@_Lh;9e914PmrBaLPMLJJ* zp3muLU=ZX43fLu|ZXYL)cB(nVvPlNmplfO&qS=VoFsBDL)!>Mk__*bkDR($(cL9go z@@%M(x)f;@6q)%HNBK2 zJ@8yv+sKI^d|9Yiyvs9$Qgd1FxeuOhz9VPOEuWp!IGFRR9e1zsdNa!e`uY*{6NdcB z5?~2e+qtf!&ye@kYIM_#5r;&^+Es>!o35D4I9v933|88?Abo?URPpuPON%y+b~o4~ zy_!b`dH zU)~uaaM06-Z2ib^>FG{nDyW1OhC+~Y5z?=IAYqwxFwmLGByqZTGrPl9IWI0~g*hF? z*W!t1Y7%0yyZW%qo)f8yXp%ohVYJk!d}kJ)_A6x~_{6fn1r_gwCf3)6{xY=SS8vek zva`kpDr?JhDH_8P8AqXDR~zD2wzcy=i;Lbr&5TE4u+QZ4`Sk&vgkAHCra?SWV!}XY zK0-my3tzcsbaI>MSt`GtYvST3yC-YP8l22vj7({A8w`BtKpO_OVq>!PIk^~*llC*iIZCJa95tkRga?*A~N@W`woP=Jt@>Qg_(1q4v?wI_TqO_ zq@HH{yeVbbpA_z-*CKJbDf|D-Ib)1Pg zHzH`immYCkdb64Zl|YsA&{+7XS8p;qH{zCG8^YS~C#{!lbVc|*{l8Dtl7H}3ST%nl zzAiHixB$}ka->)La3*^0%xvSbIxiEacdy(JjZZQ1Peie1a}C*El6bit z2)5k}tS{%{V(aYRq-JINxqs|gveG}RxdFFrRcU5KC#aYYG2ptS{BdS;W4-uEgK4%y zoPMt%4v_!#P+@OIU+H9VNXK&0UW7SE$jKErsAU=?EXj1&+56Gmus#~i*!Hw+f5(VJ z6&~5;hjhaQK?n%1R~%m>WOwwbM3VVoU~RB(f^(c?p$V78gu`kXT|Cn7PNkpT`Vohb z<0O5FSg9Cw(T`H<7qtVDV{z#dE&AfP`Yxqbl9ueZ4n-AHP(bnEgSx} zzjGk$Lrq)1zdIoK;A@NKUHb!RPo$^33yWD~u)dP6O$Yl6v0r4mN zt+{mswPm@qa4f!|uMw{0v4Iyvl0LiQfI`)$@cd~O;rldy$@#K{8Jq^qE2CG%vWz(l z^le7ss=89?smZ?Ho!2epf*EP0i;|#FnO=2fSkya=;8}@{5reX*jVDQ=`uhSJy_nFR z^3uu%)Rsnn_2-qJq^O{_P}f_;4y{1gZ{()4PDsOUH_i*;p&ssssr>7-J6fk#w5Hlr z(c^gmUKfxmOEv-{R7G#coxclr1q~=f^U3`-H_JtC?Y$;KX)RJbqqy-@7O!Dfj^>2T ze4|;y=)FLLZ7(T2?8GP~9_y2A7_lYD8Lv|Up;I%A%oDlYe4$O4TQO15x4|65`vwtW zjXGSte=4r(0tw^0b9vk{0hoNZ=_N48xONj6&n??=J&=RR5inN8Htrl8!Vwp9tfd<| zy7piPUPq|`R1f)Sa{^Ln6Wz7L@ra@^W;&XZ=(23*l}zQBGtjxXD$)fV^r%(Fk8t#| zp)4BSeq>HZ0PTF0Z@7d3AN(LrFb1C98*D1C3YHsM@D5K-_505U#Ct5rk_2?HiRb|` zc`2Ly>B39_D1*&fK~wapkhb9{8zk24S6QAnPGyhX3o8iqLz~cqbfCghx1~Gjs|rs> zjmmlZ{y_T)91 zm6$(V5x5X?8n?_~H#3fN(7gg3Y|FCpqkywZf3oNl%7qx)G$-lhcv3udj=65*^;`U~D=Q$L4WzamqVbX5e-ve?Opg%TB<+pnRe zC+Z%(#WAe1*dS*G!I&|}z6U>=58d@ol7k0sYCXqwuz%|tgTMB<7qccI}Amk zhYV=%^_t86Qil2S%o=wtgJO5x?aflRvchBNE%=bCucV3Be&LXiQrdna>@(yNt;jUv zaJ=pQPWFqpIdX>_@$7WhUe!q{aFUoRHQ$A(pu_H|H0hYH>6GTow&5*V&sPrMZ>yqb zK~uesjY@G6!~EYbnXN{&oiZA)bj+>_DN4Vt@bH7EQ{smxiKUiGR0Kga%jqrhxK^fm zB~cA%blDZ7sH~Qyi75!Gv*E_e1e$Ej?PbCvLPb*BV=j)*M)OA?_n&hXJDYC1ZfaS& zL0geCY1_#vCF_Vr$h-a;1u1NFF{)128EqnS>LG;opNccPkU}gP_FYG;E+X!?ifIt| zEG5#tesUUXk2_p+h`o~yY0+C^ooo4?^)FstJm6^sPJ+j8O5oS;+g3)*r1;TU08YiU~R z;!cOBcgQsYl^+pJjp#mr>~oJ(h(Fm^*y_oUzz~L84Qm!12RxL-T(l;BUcK=`-J5wA zvM?NPqU|oNHKt2ZOD9IqgFiVyceh%@rK^KjO#;7Iy6S^`TIy_?-U)f&mc^A3sr~;L=9j*V;qLrfv1Se8h0MD8#j|BwWDB z8r3^`i6d~c1cF*aGKJlBZx~uSyX`oJDc=$B@IkIf=x80PE?K`5YEw)@VT#y8&*=wN z5~VzUD@@2EsBxfVF|fxe-Lo>|NT`4ax#$L2Giu`YyX`ebEX6jITExn|%xqb-x9RHP z;+my>gB}LTvKuxBxod=Ekrlh*NspI`+W1z**Usv2jiHC63cP(qfrQf)5jN?Ko-20F zawgL}XdD%dIavdFy#!BTQ&Nd3_z;p6WfZ2J{>=!Gpss9 zxV`T{)Fd_KcfNXd+p5-xWe4@RwV+|vPj5`5ofEM!8MJZi^o?|65UgmlufA~=1gk@G zX!bIGKXejaa_+D;q|guRel7ggsNj{YY0!IQ;;Y7wDjU>HYu;REKl_!ryvF^#&){jP zHFe8NwZ(NzzZf+5w`Yc8v_Vjnw>VidFw4Cw1_`^iSxh_ixwZW1XVI^+cp?jQb0g$0 ze4-Gs3J~B-_mfq7&9ob)H*tX-}6Vq9z2^B0NiKf{sI#L~YQe7wZAGH(bG|1F*5D={- zlKI2evwDJ0t(R2b-r87;*&)$o%q(HvwY-P>b;I8=q!AM>5pH;TKety2=r|2T)b9&FZ)dgEd#af}K1ZFEvZ)g1k78eKS zig~T`QR4~hcZBH;OkQ_t_TlrzT9n^ULp*1y!rRL`aCwM!Z(GouVHM`nOc9lIQY}jD z2*7T66ZlRQ3zl1WJBzU`@8&6Z$Q~AI1;!9_QTz0IY~38!8Z^>m=`ubJ;FbixXRK`W z6<7S`)3oM}2E(<|&H#s$g4w4_@2jw0j^f%A#_0k-0_kBET7?IMljeh4*nO5n7J^TO zK$3VKaE)+RfLzewhjmKA9~IsyWMZGyq|eozqvb=srFJX@UEiJ1VZKqQQkh!snH#JP z9!+z24$B=(6h7A|huvyThn)W(Zuv>F=T!90rHCr%`M;2(0EJe`>PQ&aC}1_g6*X zdq$Y$hWzMN;a_}k-mz~np2IRy)9&Qi3*r3>D**`5V*u4~nFkXNtVUm0fbRTJ2lwaC z_bV{=;Y2w4SzmFzld8c3j0U|!FV54s0qOcb3FUG*pc-vO2Eq;(BsSmxLF?U^g3(A~ z&sT2((1>LwoTq45S{ScJ7q}#bwxy@`qFY8`B?Pc})z7=iFS0gy=WDBD=@n@nF#BHq zO`jt`3iGSb{t@0iWj&ZEwq<$SBN3Z6R+1cc&Bb}?F6``%n^Lt%dYYOG;c0%t2&u4qlZ5VJXFz+4RgFT6;l46 zl^%bA9u@q*(73vn3JrD`()|x+4gd*apaEc`Dtth>(S8XfU|sjsUw8fYg5(zXKpkQT z5w77!KB?Z{aD{(-)tZ2S7Kh$QjtJxHU|-XJj5Ue(CRX5AAF&YaGeMT$OB1~>KI+Z| zEBlO{VHaN#G=2m4N~XVQi?G_ChY?;hPo-&Hy4|2dU!*|9Nm3C%q;uMdo_KeOU5{8Z z(By~xhMXbELqxeZszHGm4RcPYZ;cUE45mMhSYaYKLEUxPt6y}rCMNRzHUogUv#NBa z+qrLV;8wf2#-%dhiy4Ss;sK~X%fgV#cjf?GHW#~7K7MLc|1(mN6NvBQS`sq61`Af_ z+=Wl8iK$%W9;nD8(-A)WifG}p+BS?%Ny;LcsQ-?XQ21{^}Y}wS(kdyr`vr~DMj}81dJ5e!>B-xfC=W!X<$^}*A$i4gpR|H z&}x7oWld@^c!9(4-F8g{YCHAsp;*m-uQ{p}`~4$au)HWnaRup^_t#=Gxa@9&H5q}G z923=Ll4dhQ23dIEQtt1WQf6DF4d)eEl%tAm#x#1&kf#sPg7#((Yt_LVtz-j zTd!euJaBVt!QZoVEw*gN(`_HvENk0RpFPx&X3i5XXNmnUUn56x`a;`<)F4guOckz_ zwmHbnk_pU&f|x1`^}@N-r*pq~(>`HmjQ5`=2GOdX+LSYY$I zS!P!7h(fIikO25iZuDTHQr9)P*HXXXp;En|X8f=uv_tW>;_KP=sj{<`zz zk2|4|{&UyM-|za0{=DS_4;hUM$w7_!`lGkpW(!PkX6=K~hy8rjwnqL(tiVt<9A1X+ z(ND!TzsBYfyhUlHrc-)Euet#VZ8^bVn=>J5{WPUe@K#+5#^F3k16^unqLI=8(s+w_=-gQ{to|G zz>!agJHUfoVbw1tz4TcARrLJ~>cuvND<&3JH>?_n_+NX1FNR!*_V!IezDXnxGr{kz z{&j6Fh{Z&dVsn1}UhLSX41V~3A%BqqaHJS72q5aP!&5n5(Y-Yrvwu~(ti_Pz|7KQ% zNWOTY+_CO{bObR`YLe< z%(MfR3h)1a3RLzci-i!;{}KDgTJ48l=6?Q<*#Y^A(gq0>owh@x_r}C@`W1%x%KcdpfQDIT%21+>a-^ z2UCC-_NS@;?}hh;EJ;^c-N);Z3!TK_f7S7P`J#TIKf(h9ss8yqfnE{}?^zm9v374i zrrrOd>Vav7`_3EToRnAj;?s}j3R)<;f0PzQ+8}%o=*&@O+;~Z4_pc@RBC0pL&kqE8 z@vnEbfe{$UY+mU~ z^cabY{=0v6X4U7dF3-D-ZLm%FGOQMQqRaoj9B-5lBrI3M_-PpdF0Qf22^|v#edIJI zqc35ZoSsP4TI?G&XOBKpgGjuBdk=BuPO&HrcgAuq#_0*U#lv57F8bu{wL!z955}6Z zvadKWw1W12w0-crf0QlMsjt)2EOsr@=BAD+aKNXa2P+or`g^;G)IsGL)@IKK9( zP`kDY>|zN&WAT%!FCt_7d=&}hcBlHe?fUnRVb^5~mbTpVBG+k5v&8rJAHu4;Yb{1Y zvai=^t%kzWn%Pj{(TJi;7a%b~G5Le-b^s>oaYcIK!T*)o`&fA@Q%6ZgZP;q_9-4t< z_F|<%Ah`*BeC&0nR&SpcySwcX6N0xTx8wnic|v{DF)C2ok8K@ z@y|2bXm8K9e=MaPw}?!+-5N=oSD-w$+JP-IqOV0)mVt5(#79)4`YVdsQMctO4gAJD zr{=;O4;?Srv+V(TXnr@HBpiAL(0pyHf=nvUuHw@uxB1(@cGWL1qpZ(?1vA1umWQ#q zWu{af{VluRy=N~|-woV7rZiwSS&_~&Q(8>pRuPZFTo%zD`il0k{YL%ObTK_=6_6cT z3#c-?CQ^QQE0szo7ETmX6h}LV6=APzc47hzR~Q|D%nvzBd0RGo)~VrPw6<Me3Ye?316yJdJna!p#im+{Dp z27`BIlX65Y#|*q)n>#jVeL9Mpt6AOK^96ZAja8GE%iMYHjV!J_iC!C!MDm*hertij z1bTxquNPa9+H zXBGxzlT4CIp6jCod8_shuv3?xCF$mUvETAp~8PucF_ zY#%Kom}g8I%%!vb>S?w)9>eMj8f!VLXhEzKPwey z>p{l}4`BB6&@P3S*u?y8RJ-B@$c?wN6vJfru-hu=DW&liC;f*KzXW|1VPy8++WlF% z@v206KfY*l4SulwP?=tNqWc(|c2+!1k}*0gkpnq-NJbIs|#qjJDFy`Of`%JcmoU+;0Ny-7>2kuOJJRir2SLNvI8cb>_=T zrR;KNR|iX!oOatxE`jmv`|tW?yTv4q3y7W4*Bf~s5}5bOK0}v)YDHDbv}q}2(@+xM zEs}{7@Kv~~cV6XEPbr%&RoGN7m9Dw-4~qgX^a3oOL*9OUirW;{XbA8Zp1}HwAT3&> ziXY&=R|z@mYg-ac`r4uVqJ71+z5S_|pK4_aa;xgqSIJq1L=l@@q)d}%ihqk~^e%ri zk%Av!J8ahV(`fe0p?l}zpUtt;r^jO1rQ=HHRHj*FagRo*yEE}9ID3&@@}d_B@52W} z1)2D{ftZ4eiqh)QJO8s=n;ph8^$Zh=N?U|jOE(YCzg+Q1f%jN}0;()5EYT9$?-LZ< z=QDR;6*jF=^e|(51JG`LUeYLa)Q6$&I|f;RQd6OZ7AlV0WABd}rJaO7Qmf|2UU(fl z=v0jHyGr__+zIW+TA4ibMy}Ze>jNm#trSMS*c8h^MG3u$PJJd7Ce@SfdY!1w75B39 z`wFkdqy$)(IuoZ`%Z@&louP=WrP=!(J}M2lNK7nHq-f}!v@d&+j@Xh^JMmAQ`5MbN zo%yJg{FgV~gPo(W&;hg>>~Tglqts6*sFE zIvuZ5@0W}!N^w7V8nZR0+;Wn*Khrn&bKkUGi|T;4M(6yo?N2x|1_Rb#1U4Wxxgm&+floCLN{9dJ_1_#5fFfkFY*=1BB z>Gm8v_568*hR`ZzgJ<{Kf!Fx;H%M0^$rjCc$e!G=$T0#8tYwLfQYJ)$QE`ya{p`4d zxhh0Wa1{V{NQ00z-AlEQ2Hb+YQk3b})RAB(kX{CSH@rS--75>Wo^|?EEJ06a0ZL>2 zS+lk{X#4_Wk##E+3f6lIwLR^&*Kv_@4Jpztte7I#IP7!NU}5dW?kEQ2N0FLzMH5v? znoH<9meJYizEwMIN?h^GXLC@H!c@G!(dMw|(md|IY{N^Z-5JHzJLKgVt{~qGJdW7{ zxAyFK^#^URd_g373tDe5fsWg-XLlYhK>9h<6BoCX0pfJdTSy=K?a&6CU85?#X4*wq z+2>NN$v%s3HY)E?YcT%|t#)UQcdzwL_xa(2ki3Q&-D}6E*Wto8)jqdYmOd^9D!M^K zCMAlU2xagC_>g(u*PK=NGTbgSqg$i(-A2$3HDEi&`$b`4fDq*nE{*Qp|N9UmPz8|XD!tCxR62|9VV0J?a#}-~F`7ye zZ+1q+>F#*ViNJNc;?Dn}p4o)P=}5Eb5Mp)M6xOC?6tA(l1t^mol*DWo9#6ce@AYt}s9cr`&R53gEH|yMY#3F|XfF@x z(_I0mXLCVO)muv&6Y!fGPWQKb6|t^)9HdW#E-IWgvj~^miMG~~PTywrod2HQ?{#48 ze@G8&Ws4lUV+&4}A#+GKbn6`{RxqTD(mHUI%YK1HpcQlUs40kLFIVlDymZEX28g6U z<+i&sTSrRWxix`AN<-BICq{Rxk-uE*UWcn2rh9E8LZ-HgXx00jd;yKZ=`ROFR zl0~$c__52q#OW;VuZaUg$de$9jScy|UwW*Ycux;FE3x0v%BTwxRgi*>tMv`_eK@@^ zKvyRWf^_N|u~5B-@8}2nU8K!@&wp|9X3GmW9nTd6$j?;t&R02?jhWdFh}2FW;v(O) zTpYwe!;20PE2>2CLRx zR|ohWiR45BYy!7li2b?imzl}EGvg*=T9Wl9YXXnEQ_H5YQZ!M+;FK6_y~SW;Tn4I< zjg`ZIxYt=PJEULe!_!!P@(QDIlXEVaEPB2U;kDF8lyB5`d4z?P0OKX!Wq{^~QP)F7 z>n&Valj4ZqTyexo(qipl}>!ft)j^ez}- znj3{hfarLpr-dl1WXAUv8F%QQ5qX%F5$$fRt}c&mP7_}+da>-lR) zDvr>BOv!7gyoDF^9Dh6EB<6^QcSp^~`pu4qG<_Sm76`MkqiPM}G>H@UC8vb<)*r#t z8%GVJRP?By`x-a>B%6djirL$TIwnpaI;C9CgDZzYyaX!GyhMkhGhLV+*s*iP0letWE!q3yp9vh+~<}tE}?ET z0LXDbIwg#9oC7Dk($v@Iytg^y(+P3tP+l6u`DFDCrvr_8+=773Epc}-YnAa(QL*bC zarbcz4H?AD;LYm>ttK_gh}WDn&7lNlmem62+q;}Y)3mKBK~BZxPqSBdgi@R^67{Mr zi@!OUrh>Y4YMbTRr=jPQ5u}w=yj&`yqsr>!p|c3YP@tvBGLj@v(Rk%3g9$d7i8H7Q zQ}GOgXb`1D?IX4(*|M6H$5|;sAk4quqnRefo@Y>pUdCPGup2M6uw*5xZ1j)+GW8VOX=F6j! z2p(&z-Z6K)t;j75QNPaIzc$-kB=3F@-FJPyCp(bB*5^<*EllTymcW!~78oXugUW#B zPlhtHov}e_l`xWDwlL_Z{mK3e1c;XdzA@=%8kgPLo5Z6FsSY4kJLb}lU~0l?_*KD> z=&$AafVjiunVJKR@N55jn*BGH@`yR^u*$51K>U9M3hpR%wPkUxEg71u@*!P@Xn%d- ze=h(Tlk9*5X~lp3{g?CYjZpGnQtFCNCOP~U)ytom2q2b1IudfBG~ufpfuwVzMagl2UCC_OqE_41-G6)E_7i+7Nq93V$L%EUr=L1QUp#B?q5bEhY`P=#Z zBmRQX285i3U-L5bVz$A4kNrD+@ke_EzQMRNN`c)jghcxOeQ)|-@dx~L*zZdJ$Ia8( z@Dvd^t#T90{|E^_L;OnlD+ZxmED)mYjDw*l@;?j)Kr^#21DP1dVt@k_Lq8@Br~ki* zN|-4A8;3xjVq;PJXU7Df-eCM0lVpVXjPg6R@PE3lCq+W~XCUJLj35c9-$oh8 zhLL3!Tc*ELY5n>0XKY9ua~_qq75pQKbaE}AdxDqxsipcUjozy5F+G*bVUYcxu5{t@ zCSO`ZGoqj`t-S5ZzvXnBJ9-I49dJ)&+wMIprVCd-Jl&eixD1W*#e|E5B#<{eg#jhy z(u`(tx+}L2%+4orG_K(4XU-OXH$z+mDk_j0@F`SUmA`DgLM>*%h>f1MX_pm6oup%4Vw7rI)&uc z@;z~EGVW{~L1@pXtJFqBmMSlZr^{Z_vTMs0w(8LM8b9Uxqf6+rwClwMqcLoicz7gdCmCNVH$7u(Ve*V9qBNjp998DGhcbi;F)Xc=Ik!^ttdDJR%p2SW%lcZGPUaC7wl>dPwg zIV4nHFY1Ato70WYg{=o?w6#307Y7u5;XPZ#eRr)_@tF@%UYmVLcpgtZU+jL)Z|F`x zHKnjcP;qP$=P(#aunR!SQ$C=~u2bup>AnaZF@( zB=&joWMwEGrv!}(72^`o9*rLow$$opr<3tFjRkh9_#B=-i=O)H2b4EKv zE;<96hgx8f*_VfVX&x5O85>6heY0)0ejKtLvYRO-;Ebf;Q|tuxUY?Le45+T4L`yQX zi8HjfG@?LmaT_bAETEk95nhr}QA4-isi@amQaF5`jeoA=LB_hi#1eu{TeKG0J73E< zA$zpg$mT&QlR9p&;(p)y05Ip|e*Q6NYXxpLys+9Z9Go`&RhP@#rn{!E*7&*Ba%1Im zgYv?C_|caHwSVE9v4t*)j71U%QyKzHlL{rD8B(h@irFte){U*H zwrs`2yRq$3HShLG|kt#6E_6+j-KArp88=$i3O>UGH9YeNCYSq;{NcXtcM4y)l3xq_`ZOBCtR!AiR>W?ATEI z+F7*wms(K-0dme$cu>&9%JKV2md_VfO=BPdcBul5qtMp24f-}SbI372FQ0Qi)6#5- z$o@|Tbo+BcojP|vA`YaQBjHyVa6GM>K}52BGY#Luk5588v?r?04w(q*muzGYlr6Y- z%3_TdA5SR_7)z(9a2$H6&1TA`T6mU<>+R|-DSNNH1Bia`BzlveLXHnOU(GgM?t3__ z0)4&gx$lznxO~3{zq#5ee7B$marYka=Vt{oTmBuGd4>q{_8B30q-U<(h1AQ>6C2GJ z3Nqd@L5Xi6ydq1Gc}*9;ror0QJDS?z2VSEhP16#MVwLiVA)p4b@YptK^C0B7l=e*t zt>xKDIN{k9H!=D9X>i`Mek}BoYQ3e!O6A)yf}$;JK*C9(O;c?tgV*id%ISJf@NV5i zpZonm@BGcpEB4R2PP^9toamxi&)2o>@pA9S#9^)3Y_SLezwPGxW)^cmm{1qRS9`sdIFvNBIupuJk^C;>qp2}L@Ww`AhegOLAC^zS&$@xn0lmPsn)`1 zr{abFONCmdW!E9;ruQTMmo}j(>=x_E(E{dS*>pgv??q1Feq)8bkX(9Q3mNI?OudjF z(yq-Ahiv*HFlv<1-BM&5{C}Gr67NieZ`lEyu61@e(`qQOZ(;mV!ct^sTeg%D%Q(z$ z5R@;%6K^drO5W|h4G1-(Bv&nKK&$skRP6P$x($v)bQD(eE~X%-p&4|dvs!Lx@*r)i zKIX>w?(Z-)oI)wtfrN$Nn;JAbtPJVuO<~SAPd5V1ds7HI_)0j|^8w zNm2rj!urVv*0Pi5I*)CmxXhfsJK%|g*nL{ZmG|1GsXLsAQ!2c7Y>F0?`Nc%N1x=TT zh#Vl2X|tlEQf#!PcqH6w-(*3)bVd2?c#q5CEk0b^39rIS#i;2hC)efq5ol1;;xMr1(@oEjV@quf9#__swLp`F`5RmbwYGY~p=h1T9w-)7=Imku7*taGR*Wh!_lUQswcV3t-ev6_Z1%1jh9Keib zH9>P3qq~cyRgGoiK(5P;wQnr1E)x$@CR=;EXZRJ!XQ(I-xA18hop(GzpZWS`slGaq zz&u%Qa!4^>s*~;wyXO@gw>8>W)DVlnrv-%2;$6`=fI<+{UatpEd0qUTE?#4zynKoj zHFsF#&P+7-$3rK7GY0Q_Ivf%2ViSEICS!(z%*BdGbWNp%WI@09g!*w7i34}YMiBEk z`q;|v=iZM1Px&Z8EKl>G-ek^t67|PtlG8a;M@nZHUZu(GN}R9WJ>b^vc%07liO&6` zaZ35YF#<(m8)ZXL1C`L+$?r~Po%Ed+2P5CG1$)Hb=AJ>PEcM~|T-I>6%4qU*dtocd zBqKp0j%EPr~8pm(RiLB(a3i~xmPS>wvs&s=BE z729gH&M6eOouX7@Y?YRDy^anm`?hb~*YB74o=%w;Du6MTLO}oB_xdVDG8OqoSfAVJ zsN}e*im)ou;G-|rcH;GbGLz*ewGA+GUMGcb)Az!iPiplx)oe^dI~k1L3-s}IjOw|8 z1x7f>Q{9@pRH~gwI6R%}w2j%e_{B<#LIj=Z``DJVWlKIHT&d?sQJ!=t&>jTqPluSmDQ%#_( zE&dKQ{Q5+Pp8yFIP$c&M!3F3o&9R6&CjLuxl;rt}8vqC}F#2cy-8)o}1VA9+7*yI_ zvWV9G`_2Yy#2Y$STn3+$5zbiadqj%3>h0kK)#W?6<);%?EmM|QJ4M=qFIHZ$amBNF z;ulXd;7{l4XTS2uiUrwP8-0>Zt>Mk54h!H{Heb>mHB{I^SuZP6%B06)7tf^5HjeDSGmi#%m)^%D<}aAai%qf#ztJ}D&L5eC z3|Wm8LgTS%)!Ej5PsH|&A-lgKj*Mu(xoe59R3(auVRS2FJu>JEAKI(kKg?o-I4(<$ zUa`m#I{8Z$!*G}52PVZ>e9p7z51e2zdCHy+*4~gVbffxpZ(0XXVZmWaQ!EJWn3$>{qjcha4Clr zLPV(w2j@0TA^k_ZZXTvufQ%U+N;h=PT}U8~-T+9iiRa)ke=gyluLwt?QBTkffy6~wv)Yuvl~{%UtXFASo#sHvpaW>y>gsuUZUMB zqf+`2zvmtGY(1FV?;gnE8+ESdy$gN`5pA`eu>fD4M71Z$=r~tY<6pNI{3^>%J2`|L z)(9$G5(IBqwaY4vA!{NGp58yU$DVpg$^6)d3+Aca7tb`KbTt2!jPEVs41$%MIeolG zAFRSI9+kg%XSMY95po??0&0Ald-FII8cqR+b>h+Xoi>6xipXS9(Rer-osV$Ut?rhe zTVdT*+vaBF&w)P==FYq3F5ev+cA=-#0DD3#AY5QCp7CRfe5(qVp&0?eXb-x=>*!W% z{oC{76_{Ud;_x#1jBqFUV^9P*@(aN)SQ@iymnvPu8?N^IqsG>lUpRz!mh+@K9{eAI zU(%2#=*;|NmDi{?I2Buy^}YIs-)rZp>$88aON-!Nd$NLcq-7{3;%N z`!i#axU$m3UEX}LMdWQVoAydsnC47F)@vU7{?IRd)aH2dUdJ(vVG2$Pu9rK;FIPyb z93Mq*&-RH8SDp9=$h3}6dwjzmoP<5&Ewx6E&Iva~gR!V0`7>G`7Gqu=XT%f?0+Hmc z+XCXLm0$SX4nbeVhvb2vaY(w*k}DTPSRvbaV)FyRMWbA3pUjP9nWaZ#-Gp_uR~a~G zpsn3kMt}>s!Tgry7QE63=`cA{30J zmGEAzi;Z@OT)j6^iEJXVDMqLSCLNmwmzLlp* zl&X%is8-Nhne_Z4<{!mM(J7XnD0_xE`B4b<=saIk+09zcd98l&uch|Yzc-VrXEi)n~&KOEO8xh6vxwOhfHUMMJbzL$_j}SKQC)m8A%ybR;@Yd*{ywEOqmO? z=lnVoJ-&=UZ&_}rd#pDoux|xB0(s(^qf+J8qWtUYAg|)u37V`p+IU=$DGr_X+gipl zeB$m#9cw^W;f89i%Az^GuhnUpG>#@#QN~L)g<4Xzgzf%(C?>-GM~u_qJlP65{u@9d zCO(xDNM>IFfR7?<-6H&+be0XBIRmcK%RNofddC)-t0b12oAdG-U#{7P9$-#^=5_4y zXv!h4oHVWX>^x@|+4@G?y&E6Nsa&cncO=MTIc&~U<++^!|;6pd$V8ij_2 zOVPBHs^>XvN;F$%V#nCj^x6R64XJ9KIUqPVDwdJ5qP&${tWGTplI7NRDxK!I^`@Pv z=SPddP50Cs>cOX8HVNcH9!R6D|Ha$yxnQk*;8RNbt@+6aO2)dtp}4&PS0;lm$F!3- z4sgNf8SP<8322X~r`-_Nt6Wmdx+2(dIATR|?i?;WUABWPtDJX{=VoX#-g3}C5nUXB5_R32$dzAe!A;J7K{aAy0qmr;{3~U_bhW}=V!%_ z)gIa$*CM$cu~U2IcVnM+pFnPrU`jOVERu!9CnvlldGxqY;jAkn_idw}5Z z`pZH!S&Si)^NK5Pw~s|e>NVyheu;B!ac7M@z(MC%mo=-kAj$|od$JPN3;|$BQ4xIi z5{^k=sPwF@q4@YdDJ@$*0~;TsE8F9A*EZY*0AG{h=F-7=DmZXjZs&c3#dF?vtCu*F zw5LpK)|`ubbsu0-tl{SUV+q1!@p4{=2l;eyvFVV1_fg4d%p~btd(d!RgNHyPr775C z<1K5Z#WDQJ(_ZtNJ;4|t$HgTo8kUx6!MbkY~;xlzG%5Cm;ndv=p~y$4H?xUQL8qL0tljV3!JrBE3eA^U2t-=zU(uvGlEFkhm*N= zuCtb!yKCCDw~lo(%;#^@m=Ql@lKF~3+g3NnSx&p^ZMyMCxicI**t&$>*DFr5rTN|W&139}(9RFV#<40?uM>xS;K7Tq zA?{^L`%+@WP$J){6MAWFHR_K~4*kzU{B0ujKF5iz2=>8kQ*4f;i1E2sm+!)?6dzS4 zLg4FjfQtFe!Xxyg-sT)b4s-$pF7+S9DlABySVaO4d^S}_0hlbq4OGi6Lt#GfmqIzZ zLf#R~=t+<8Xvr*GWB}|-u1cUraw`pGsl~O>auFG4d4U=URAQpA8GWbC)kK}hAqqNR|0sYt|2bVzf2Ho6BW1Z zSwHaBT}Ny13P0ZJ?J)X8on7l38|;}-9zML^xM-5a=%v*e30>F7QODj2s`@-pQn@{H z=vjT5Sq8xM1j@{RXvXo>*C7nP&_tSW5dy!2HnQ|-3b6D3(2%7i;tEbWvYF#6EIPx-OAt~75pCZazN_lFV=f08#e$~f=i_wM}e7UiMm zU|^4^n6;S94is5GTRw4i zz5fB;a+z|}QOZef*c!`!v10j1a3JQg2?&H{)F&i5+H5AS)VA84Iqt)+YSLQnb~4vY z0Rh$7POunp!z}p4x`TB2nSkaeRma0+S`NogW_MEccw_mdu8cXQ4Ot!6Ufa4k4OJCGc^jHZAWbV`jB}rIHjXVp~(=@ zyB2K=ZU|lUZgCHTt58PGkWS7SLvIuRa@XI{Lix7ax7o&*Yre2Yd`rlH{cBaII|&b0 zo-_gFlEY|-7L!BIj0=S2W64vK7M9A{*J~yDoC}J&bn&ec_?~5*yXNp6xh&GiEaq8 ze(o-I8RsYx2Yfa|xN!QmDfcWPm6+Yx{wyEqh(O=UKTSw=j1_yXwTZa{0Hq>rgin1w z*!6!bKi=hRH8N?{L&)bY`UyTc#(3wCL&75BMLR=irHIrvfA0imxXQajwM$5UrDUaI~+>v?_(v zR(7*^h8BkdDXeMPsgrxZJV*2ZCz0l~eJZz~xRerH-s9zra z6=Gj@Qn8n`tFV}aOPv*^k2d*p%F0n$ywa=vqOkGSF?W$h5y7`*!&l}yVdWu{Oamw} zoSI5V5qXh%lvrn=ou!G-YYEBnKDNEKIE%7D=d`4Yu$-LX*}-5GO{}~@E=hLA5GaA# zbtJmtw4#qi)Z{StJOy}Y{G_Bh=&I#?-ry1T1X@ex++?uCcj$_2Fc~5E5d-Ea)n?B6 z#c6OQy;o>O*Sw!?ifKug+<&ms%A{*7LGX-p(bR7cf5OVE9_VvF8DUC1I%u=X5$Wr% z({W7n4q_&49JIdJd0lTHx9Zk<(NsDAi`d54CiA`DGJT01F`OHTwO6eVOK^BS)ttxG zg3HRB$4y(6GV<*l%3CdcE)LMiE(>eJGw(|r%O!y0f>pv}5lY;Zq~ELVso@7}LvUBJ z{~b$bgL|j?YE7)4ZHDs}@&F12QF$GLWnJ&%R;ng^(-EilNVr`0!uw1^4a7QWF%PF1 z2I9h{~_ll`g0W1MAjO zS3bJLa~{L<+yksT!tgn5H+OEV6*iT+>LRv1E~qA&mXFU+Qb9J75e^d$%Wm&l&KF#O z&Dz@EY2k`pG2dB;+N-{yfzbeCT$_w$<^R$36;N?(OV@!Q0RkjwkU(&U;LZ>r5InfM zyE_8`g1b8e*TG!_1b26LcelTD?|tvxci;D~)oWHSnx5(IQ>VI4)!w`6*=@Rdw1ss(FBv2Ti0R1JDSDUZm$+JN%9unlDa zR)=j@1=QyrDr<<(KE;BvHuCoh#OsgBPamIQNDQZN6F^#gUc~;9yaS*)!v&U6V_nPv zQDIRZ1EeVqPcPfRD(xqqR4aFl4yz1!5W@AoNhP zw+j~9n8Lgr#uVA*iFmJ+w3V%Ncnb_>!rt*pElR98!f-~^{jG4+V*<&t# zO1|;-jj{%X;Ig+lajB<%Wzc!s0seklqUp^QbPr>PFT+=Mqgp;+x1CbdvBq%(YmfHK zVn=E7I_sX&jM6aU6)ngb$4>$O5TSVB%W#qdUbf44*WR58U2?#*ipU8b7R&d~+&b`b zWy?irt26ZD9vMC`MLZ?dmXG8ISE91V=ygc*Y*2B9U)N3xwT$t8dPb`7zO(cHsD-=+ znmZPE55RjeL9uUWra(6vkHj9B{Z#*R{$(0rLVvK*;EW^sxv-APXE$8R@HX}FqT*3a zn4tMYrCK8q+oSnka}?Xv<)L0Ib?SOjiJtGTQTL}xh(na#pMjpKnd`i5fAYgOIef@h zs*C4Jtj~0=nTKM-x64Itg}~_IQSt#vB!~1LR$eR_ha&IW`=%4P%}rY+y*=Pf8Aiyn zG}_PKoxe3oD1cKGaEY6>OIZ$J|3f3E*+&(a-n;3bZO)mi$^k1ar!xkhc~l- zL`5Hl=E1gphC?eodu1Q?T+Y84Uf(v=x%|xYG^G3+HYJSAUXYv_QC^YkVXKE}#oZn> zDq36<=t6h$sXOzPmdAP41rxpP8~Yp0+D-mm*Df4%_tZJTatKpB_`}A-+l?uC7Ah#Gi$JgoHqhmCtT9V$4@@m zQiNQd#`#1$5;{bPuV}5Tdwuu|pkFG7e=wFfW-PIuB7?Sj;=|+ka@TwwNg(prMM=F? z<$|y!uA_s+4uw>w#s6bMeLgqVF`#^JyR=pEt2iM+fa58S5q=F%S*f2*`gb>YVN0Sf z*aWhhkHsObBM;n83-b1`!j#zIe3#x0E^rM_jLV4hkd^GCz^+ZKH3k2&mA=y4g}bJw zw4uR@TRe*xl`j;P3E}S(&2=%rb*Oqzs4!DUj8EH;5|>H;Tb6<8N3EbTBoZyvL|9Xg78it zJde5{|jhs;XdKmUqA3`vg zA9|B<#;hThb?%wpX1{a&xt^C>px!FgMu)rns@Jd90rUK;!%APB`2DmE-js)1b&;k+ z58v>?t>eeDZ#WkKpIYfdf*M@>{86q(cO^YQ%wek=imWy{KV-r4nt=-%ZXJSckS1WW z>jDwpq-u|n@uXLF4>vmHl6-aZf=Yc97X2k3Zf=PCN_oZvT3M1~q*CITtkwU=xyQ}+ zvWxfaaUEZb&VZcH&Gzt+RgDQSTR7GyKGw+2ps%$q-a!q0(A;g)RWJsX@uR~KeDW&6 zvA@S2?gG`9p}59^nlx9~!dpOdW@26B5hgtmMCE`YNIDKOpRHvMQdZM20E|@vU({Zt z9Fw*~^iy{q*gx8pkE#Ah5uEjEb=NJT)ZzQdht4)c$TzfxCE;ol$}BwE{&EIUxN5ZK zXEkZW&k9(lI6GYC@Mspzan(D};o?-P&H>ncL)F;I}w`GAuu<*PeJ? zwdq39Kw+5WeM8@RU!SvxGgKeytj#KzNJ^%mZ99;1tll<^(`tv;$5ev7X~cO^C^&;! zj+i|~c>cqWb%xqy=%%?QQaGUU$=Mg#!1G6g?)oWpwDx{!C`F7_(*gKw!qZ;oMGE{; zzFUHkkqTT8YARt&BpySZ%_kx|bhWTDc{QXTYIWHMg3VqAZLOhz$KuR6S-ie;lpcPwqa0>3;&Ggx z;;c0)@O(Ppyyn>v0Y|?sht|!k-z6gZ%?ZypZBv2pfyXQ&V+I;33v( z(e@(KaQ#Vn=C|KGY3uM{J=8~Vc;6+UeKO}o@e(-n!373Q?!vwfJxlgaP^8xg!h)`P zpi-%Zk)rM(2|G^wp6*tv^1=8 zyivt?E%_VUiA@hR@Z9eICoR^R-U~>jC;9f9?rtw+EdYG>h$I;ME)H`2vBLPI1f0Jk z&i+86X1@nWgg36fRWFBV{$4QrUAN;mMgRJlVP?`(mYXpo{lBn-zrnD-^(@L>n^(Df zexbo0jT+7P_j2wZ=W_s%wtENd-~GM+Au;ghzmleZYp`qwn9-VNI{zhV@h2%89=e6o zwQ9##(B>oZ-^=m8_aoe)xkOOUFN{aU|36w9bgpGvqnX$!ooy`tb75x)KsV{HXD4I! z|0e?ZM@h2v{6^#dm(c(9Y^SET?@yrb-#&5tUu^Ffq*Ulj{Szz9k06v16oysY5cprr z_xRN9hzEDv|K_(ac@daew1F?}qY!S2$QTQU55LJ1Ki%vTcS6C)6~|Capx~VBMK0*Qfn`0 zFYnWL{{bIn<9Y!dOU1lMFFpggZdzxX_`~6BRcIVWgotkxUOfYe%=<-{b$7WGBm{r2 z#RgE60cgD>hIDQI%3+(E#L~% z$wHU{ZlKfoid?nnB&o_Xnot)ZFtAj@AE2>#8!U6*Neln0OEK_goVXXXE}CdN3Dcav zar+UjFvNgt!GDb_zb;G|A?OH)bcAs@+WEJAPQJR)Oc=V}$-&hVmiP}08poSoLL$V7 z5BmK%PaynnAZ+Nj<4Z*MaLqzS!(abnXt^)|W;_b8(IngL&VLRp@EZVXYQ|(#oV6s^-!?k09pK3{{K~+w(Ig|A zljOhM%g^8!SSROE{M}7Ms~&&{njl%RTg+BqxctCu_%DM4dLX@mvEArdO$_Dl=8;|l zX0Vq$$&VlcY&}udmcKt5rq^C*WMa-+WPcl{{KxmD%0K?=E&#{?&{r)2u#?`a!}-mb zay?uYqoEXNG6v752QR5jM&Jin$N`Oi6<;aS%BfVS<=fiGNggTp8M-^{_zI`uJFZ!Qp`TJb! zjJE-0aXbLKq;}`Hb=z_G>EscB^iR0F%=iP`J>-_J(_b z^zrXHGQS7g9RZ*K_NQ<%)48sy37bS!u$oQxmaUTL1HEQ-YilhRw_Fdm;E4*w zjcx&FSUxmdP~6&X-Djk2A%$Oj07p-STpuF&hyLm#WgU0kn9xaVIFkN^D-iq3SxS{z zYX4)2PHngdA<`w&f1s)nVF-UXZs7g5E-T@c&7jdB(EwVKi*5QGjJ1E|7mA1ei^uax zp#Jiz(O~foc?^JjZ(MP6_m^liqJI|+Bm`h-F;~-0QATd9l-!O-F}u$LF#s>nbfPVr zx!#1s{p`oZ?W4`D!>%@`wR^f{xZ3GC=jah%gPy3BhGXg7eV2v(7Z_zyKB|3nn5{jY{xyB5cF*zJLx)!V{{6Lf ze6gF{YcU3;&d`U?x?S97TUx_74u?Q0^fkzQwU)`F^UHP#%sfSAct6FsX8f>WQ>^y$ z?ZYZ)GPhk^KS>%K>bNa&V`lRhFg~G-h6tX}N zh%pUB_b&hPN`64})?*2~;ZVVmNF%}P-^M(K3=pAQ&5PZ(=@vJ<5hU5XGCv2K;{Wag zVm@23=NQ@U3qCDbF8efB)2NxmYDWBrQXRWG1;BZY7&nr-Z_l3S0&w&Uzd13U&xyo9 zgILKo7P`9D*`%R(9xsVF@!c?*OP?{*`8F*j z*`TAoQ1-?ET5L-8x%$7nl$X6QKb>pUR!*g?xbFrQ6$DCy6szKX{-d zNKJl9eNL12s$*EJOcU-=B*7eIM=iXrW9z$gMo9Ilv z&ao-)eiAObOIm0XsYtKjFJC*%Xj{N*X_6$oj76IMnnRUPR`9;7RidO|REB}m@m8gu zPF-UaZNBC%lqxQTa2xdvr3)&ni4wb z^I?1TQ*s2uFZ6#q^)WI4Zc7fh^NI&q+EJk2aBPEv86H{b4-6VrA>4^lircfz^UiQs zw+{&<+hnMG3mU%}Ujr$uYDZ1?d{nBLDZd#`*!Shz53IXZ%jGolRpK9~j{y=Imxy(D zSSs{ql=G7ln+AXKI4QT(<*sL{+NJX!0|}hnM~J(PqV@ebvQ3zIn!CBO<=U9Mge57~ zl^xshouD2T=5W+`PY3~xX9+Gz+3VYW8uT>z{^hK}G)ZgY>B#2|;AEutg}5nK$5ubQANcnrpe&+D51`C`bZ^%kQ>`-BxN|;<+-pW{23qO zqGq&L9(q58JKaK&eV6RQ`kn;K(~5ye`oT5)_yOLplS;6~$53y3_0V-N%aDF%72V(6 zgkQC|=);-O_~|X^m_z#7;<-|%!uA^tt#Z?uh;$$)dhL$%$6X;ILJ618!=LeckQNwG z(`Jqv{p>ngC8)8AsbRB%0^~+J@FlaMroO(S^|(ga{ZZ23gxVrZebJwLt6J$+&up6N zG<{Z?q-yx3J9L?aeY1+cV_@ba9tHnr-yV6}2J5@D$zXNb!8LfILaYKZ$^KgVM*Qo4 zuW9wQ|I~GSt=|60kdB&KtSc19WPzkX!_A2r1 zXpYT8r;LNTyHFQeAWKQXx+Cihc1yPE>&DM z6QbWNLAhM1af=6!1|_TIO*HX5RClZcAt1Xw=^#TRD@1P~zkJRhS-!)~c59g9=l3{V(Dd>hz`e zg@La>(ubG5<6YdFv@526d~#OhOSvml*W5MT9p3^gWCG=>P==?ebS+Zp&=xIE5Z@WS z$)yV2Bke3f?N=$tTJ>fPmqvC|`L9oj9Vsk%_*^z$ubrL>nqRZUkt-*xWX`Qm51Bd$ z%+OG471?OdQ^(HKjOoc6HE-4UBpbBVc!GgZM@i-Q(G~&c{v+FRsdXuB@7~YWZvPsx z+0)xGcD)y#?U9(vWIg47_N%9nRpR6B!}jw*Dy%!kGAdk!Jl;;z!&zer%mQm4o51$^3UQ^`#k}`!D^>BNr@+KFX*ambe zTj@uX>6g4c-8fS2)kC38-!2f5!*&0wp(Os9Wdpk}l^c67 zfi3VRwLfoxxnHSRIJwq53rj50e5n`#tk6ndeLN8>OKlKwuOk}sMN_VsP#lf7!SP4s zHiK-W04!~RrOkUsAAMiroM}Q`s6F|HaKuceKwHXSt>iT=yvq(O$WkA1msyMH7Q{-v zt0biuA7a@WKcm}IaX7~1y0cBP+x>)^tyM!FTEZ)SHq*djd;g;0WQAqZj!G!6#f={y zx$6Avd30=wo3hnRry!n5G=MDbxL-u9IxK?3)sKQF?2)%LAXtkG6E+GHvj)p{z5zDr zOJ%g_VG`A6E6s7%Ur?aEK?V{t%x#w2mAeFLQCySxY6%dh^fLS0#vA1fgW2)*%sRXp zhFPBmh_S@}W`|@9z&l*pjk!>8M#qxv`WHFdd zGTSz9@a<0*k%$rGfl6gUrBXR0P*6}V9y*b@JXeXE<&P2%xgB$A4!MgU=v~&V4Ufxg zD8(Z=5{ceu++5U~^pV-OTqa}LvJ6a~Q54d`Ib!bQSbaTJl~wfq#ibjk_3}pXk^q?w z%W-|fICOn~5J^MGt;7P|NlLO8Nn^E46|bv(ioWLIv<*s2*^(EzJikI9o>-K+SG-`T zAUZd;<0!i4(VDqvlnH#Oy_ZeYH#`56eauS8bH=vw+90QEv`vQa<+cj7QLLJtM|^wc zhKYqKB@IS@;ypz*Eff0?7c6f7UF#>j#=xTe13~nFTC7)eTWO+!#haaDHKz-RITLBb zifemV#-lf>eJOQ-VCs7aSB3(YDT zB?QZI%b?u9KV3@JXg)h8pJV$Of;b703+A!i7%7GDwnZ`rOAchCMo;gSs;@{rNSm6~)G3gU3-%zaX|0pwzO~ByBm|%J=E+ zNl&rNUY6h=po`vtPuzGJYS52ka%3w7Os{o)12!c`%*3K7g+|%ghwQ0mddjVidvHY+ z&t}dzRUor!%cpN_M$oVnAKKl>)h(X`c@<=^+UT&S3q7!Gu@r_iM26dZtH&z_l0<@impm@?(RTdu43-rZfzAR2|)kL7+=5)ym^yOTC;ZwWib4j3IpeD zPr_*I+18+7i*y?9roYo_VU3lx_>bo1_pGKfADT=VlZK)6Z~Q|NFi>X7f6Q|2l~wUs z9NC66O(YeivpM7)YNZ40r;gdmkVkfXjnyA}I*XWx&vvj)M{b`9aZ4k)?VdR{9Z_sp zHyu1_@p;Qr5wL}tGh#_+yz}Z)g&n^fnIf;2&%^7dW^Iwzub;u~l9wWqu4O^DC=)lq zRTz}h+a9zu#ByjOTHSv<0tFY=8)aT+;*`A3V{C!JuoS*7aq_P`7oXSC`Q)>y@8qnYm zC%hN?5m$eXH8STwq_sC#9cn%sG>IoaF=%;ld<2fPFsT3P(oS=?;Tm_LK>9t-qp!W%dxpCQOSAh{m_~z0TJ|$=FP* zaJ3=CpAkYwG49w$<)+?D-0n&)Jjd;6wN3@&LYv7n{3|Noy7Yg33{KrYuLJ?d~PnDUVoLtBdsajD@M}jU16^f4Jywr`i{*3QpQ zyr)pXX_uhla87|GN^qO^=Zop6oQt!ZR-vtwZ0~aGH<;o%g7<7_I(7$j2rSM!A59b? zrUrYXiyQ%f0Zli!@3%U5Ivp*=-~ZZ3*HB_FVs#-xYzynhD{wfq6kfbmo0jpeWO**m zl4)7({C;=7TLimla#M4xuklXASl{VWIyPakQj@65Jek8za_nF>m0F`%y%Oo5X;0!D z+*aJl+6Nk1wZ=3ISTU<2R|LA;yYov=N;TLMj*{n#seA;h_vQC$dr=9l6 zxLj14!K67<^;sdfq2%Vr7pwv05L`^l^Hmqs8wrWi7(A5|3VpC+gizk1XHRs6(fx{} z#V0#?sDF9LGF#|$TCEnII*a+5i@iyjB7!{`%t1zf+ebSIj0(RVRXDsK(6j1tt$y*e zsvN@p7dyS^yTd9L4%!y7HSU;6OfEdJl$x|+f_h4fR@H~zZd0^q_GDtILL&h$Uu(3u zrk)j2rXSGbDz)z)bNuoks?}ZVGdgNHxN|!1W!3flrTzjF<)n@1*#(lAdy%kztrvIN z;)qBqy+r!LXA9QIr6_Wpy%R1T!z9i6nKR*4+DI329WIuhotg@S z)FwM241=`f4A`k3NogB&bk5)mvmjJ6u1kSf=i4h-m%>Ze*$G^Uu(>-%04`iR(GaaF zK9|Wj3Aw!Oeg}Po0R2IG6NZ4t`2*+(V2XKocw}4b>4h#E5OWhwz(bjluDFZ^^Gu*t zukMPVh4{h~;O!?CzkSt(0fv6ITowwWW-^rb&9dIQ=y^N2g;l+tp9*`nS)Okxp}1D9 zIu{4?_Od?`r<$K=Yp+5e1G31hG>qG)Tt9|U+!N+M``IbYJQArnUPnJIkW7!Q)^fNE z%vOChlEOhIC8}TtHYpJ+jyvUx-eKYz7Voc3rk7r_=zj%?#Sh)_z^@@04ZQs8Ex?Bb z1z$XPue@WU1-v)ah(G4ErPr`5yy{M3wIjc?*eiWIB?$ZPH|jj;hv0aQ6Yqi*q#91L z5ZwQ~O8yK|(b%A5E~=-VWU6n^S&9qAamdD-{7ly>^b$WUF`lJo4;5+3e7Gxi>shb;}Pd=g|+Th?ns zI$R$2+I5c%oQ&ahQszC8$!;bKC2bdn4Og}(xd|FmCnuZWInPHe*RwsFx(-jA6%lx= zgD6hni(B?3CGj>Y;^vd~B*A-P}m^K6}1~KmA0e0=MhUNu*5bj=K4LjZe$7%@_NIfXJFBhDU=Z zpgcg)itQ2g(}GK417G|g0&a9@E+F}JaU18OK!$P z8G*S$q~WdkQcK(^Qp?;}mZ=H!&e#uONwkGxG)*3;wfpI{S2<94TynM|c^@6N2+~Nk zDqb$bey6Iu46$kSAAugGs^JS&#(Q4eX8-M~ciKCcSC@b|Ytdx=7IQUDr1~33BotdA zLlRpN{duI~X2yJsMGfTTe`<%! z{#61fGB`L`+gd6;j7i@*&K_<%f>}$w)yAi#_#6|Kx>k}RZ{wmB?vl!4uIl3G5g<0E zKN+7pIZ8?IVxnTjzsAvZ4=SNzmb=?{wsEp0o5n~a28SQUPY26lXbO7pp*uZGq}5*e zE0J}bW8)`^g=^l81Tf?!AKa%5i>mHk!iN?xC!@`B`xP+P?o!WP4su2t=unf8Xuf?{ zS59Lfo*b=;wU3r}?uxl1UCiMgc}?ST{bbpk+H?mZZImX}Onl(RP8}Yd0F!+7dT5z5 zZn$VBtfrod^#F1C#HFg{51((-fsK0u>o35UjP^Psc5_RE!El~@pBPY619t2%8d~Ty zD=#Z0uBe$Vz|??yOlG&+u1>J8^IZ&GLde$n^}nW+w2D=mrOvPzlB6e1Co)|f%;W;sI!PH?9z|m)BPpHf>2WB5l}qMK zL!J9qS3T2~L|KE3?7%2dC!7?fsN{wkhg0xnfbj7k1`b64^#a#VLr zS}&tFccVDb2_wFL);_L2{MEg8<+h7{sioeByxecwsCtXn*=K=GkVuYrFue))<=I68 zu`lsF8Owx$e(rZ%sCxS(q7{G0VBo^!F6RE7;w?C=-OPyQ_Q49Fu|cs%Gjs-X;rP&w zI=;D(@8Ra=IFFB$^tZ41;P+~0o`%0Sm?)ENPEuG2n_96rpOT|Qtc^+~lOsneRW%*C zbX|Y-(rvXDSgscc4{~j+#f9?NV*j{9P8#Wr))byRUTl=sXt<29E$Jxv0W8d!3(qfh z<@V;SeoPc7)Iw>rxPN9aQYr)j%&&v0mz#W$dB@CqK0aBGoid7Q({V2p!qe=`&c2c1 z4&kxR;P`y~#Gr{EGR$M%Jxv~uNm!4k@e`X&N5S(rVwa{0l*x^a`U*v=z7>WDMc*|V zY(rJ6p8WuhqwdVantg9E=1!$VPL2n#BFq1h8>KS`*NiGlp8}>_PLP+^Hdh5p5|$3u z-`zmp-ht$&{62`Dvl2c*G2{>)Qz&gFF}Ob*?KvFroX4HLk7t+d+;!1UT|j+y7pxa1 zi+4NWN*!T3KGE-EBxZzwYH95wM=#4D%d$bg3i3s6KMCK?brz0$j(y&YW6yYUrxPDK zjGu}wKXJY>zMRGu-sCBrvlH)oSAkNQCmX#O*sV`_aMoL5qspm<%*yGp9dXew@!I9g znV4iC+Od{26PRhQ?uz8g2u|d3M&70H5XFg7?V*ZpZqkM$cm&{k;Zw()othELhm~_J^ zuFv;}((~6VN;kwgKnw&gTLu00_h$?e77uUgF;XLB(x6Itk?9`N&Ko#t@-c^Hhw?e> z3DuR*Yw*wSZAaYL2l-e&8BIBgT0nwQZZ(W6v*VhUA0FxkFP~$$`O?o3Zk>Xj!J~X4 zP{&JR^8tJ!!t6{oZDM`n(=Dc&201aHO7mtt&gY-On(!^en(=+-g=vi?8zL7JO~a97 z#}wiI8b!A*r>C6D|#*Il_(F?$EH58o3Mh@n3DOkghX*oj^cbL)3Y0>=y2iqX?hsrlcWK4G*VDJW9tYxp;#u6? zGU}dmG`VzE8n`73k}Nxtd0p$T363Ij%GsHU^m7_8Jf( zTKOHhq|15rJEv_+YT3Fs5Vh9G5^6G5Ky~I~@f)G>W+Cf^#j@taN|9@yYJD8adp=zj z2vu~~{@&2#zNIsjdoY`` zv%mw_wvZ_FYa}bWJW`bys%{oCgC5R6K+2;KLW`~tTaf{#+PV~(Q*Dtbs2IywV&92; ze!0d_PKWK8(Q=`gDeOBRAZ}0_E4gF5JTHt@FUamBuJr(0rs9regaW;!}EwQB2`sokmj2$DFl-9fsmtpGO zP%VeCTK$0QyD0WGUChU%#g@>Z)5~}Ja&6Eq(X6p`ANTa2vF5$PphEB%DYDJzBsWXs zD_6oVyh^pCjyTD8t(_PbQoQ$WBE3)OZq00-I>!x}Z!v+T13CMRPg?U?&f;_prNN!x z*Hq?f=|0tu1ZGY-Zz=`4EPYz1QfVGTW~S1Wdv&inQ+ChCZZrfZ8cLF?YP-o;{b{P! z&p@&adVRDkhTYe{Ed5=WFtT&RcJUP4a%Itd3V`IE=m@IgTXWSa-bb)5pT<`)-<w(h^kDFAToSLZ=v|q;&TjJl zR!GI#&y#a7pSFpwO3cb`Pclb6McDBd2@2R$&ybVS`icsm(c1vROj!j0Xk9?J%Td(K zXZ_)f2UtnOHez#5VD8(dn>Wt;dadaXSxSZ3CL7B%Pa(isltglt+q=)ONa7NyX5?c8 z*|W!9Y~=5}mDhJMZJ_wm)*D482hvxqbxz~Ke7Nb2UcvV8P;@v+2utC>Tt6YWyMsH| zk<6Uhg?%oyIbV5=v*@!wVfN1bwod`G!`ESUiHloDe(NyxTc6{l zW}^g19)(mAHJHU}mQ9%|EDGe(XWzRXOcBJoe1A{qw_}0zd|A6eC9ZdpJE%s+>-5yV zA|6jK-k_B3(f0K86vgN9pno#wfJX}CNSni{#tr-GE?y&{izOmo@i@wc?icvd(U#Vn z_ie4vw$8wA<0sN8gAtv=0i-U=A}z4zxcR#ADhAB24rMj3tBQ?=d~x9H<; znqgB%2w899-1@X8X-V}X+7VRL*A8?a51xNC@WTO5RUy+eElqx;;W*xjX*0-khPl53 zG4*XDVOD*9cLJ~@wiR}ijCz^6<*4BN2HPcb+X__PI;`vIM@7X*%RO2-22I4lX41(#fr+qE>x-l+%qR=8^k|-;KUvf6xPHW*D)@z1&3OnL^Uy5L+& zv!}q>ja|iNyJ|1DH8}5yQ)XZ7($+4Wq(FabxS>)!=U8y5(WiR&#LuqZM=3>>^!9;v z5|t}z>pE>YV+l}NGV-lg_i!G{zdqp;nNuHZPT%uK(SdlZFz(4Ut_(+1H>D4F^xBzzRRdT)20R(~iZaBsRuP^>qTxKk{UEUcFNV+={3 zt5S^wj;&q4al(6YUb`-gwa51=uNOt6AGYE8<_W4SmQ})X`UPmiua6eT?{)UG1c@0H z<)-OVFIwu_+XRVpWME9~y3_=Oj#5f@DQTCF^45B9X;!mrhwszuF>!bA$d&i$1M$ZTrGZijC*P|n= z%W`C*BxZY2WOv%1$LG!yYXj@9Ziqum*@r)>Nmsfp2n?HC^kYZ&imJRNrZKX}UCMuMTVx>qOZibi4i00WRo~shmuoH#!ozL7@ z<(ji-&2@NY_HkneH4~kKUmR_p^IS>@E3)E;%c}ospJ-m-?>P8!$(TP!Nxh+{J{MlX z8~kMXehp=aK9yE7*gm4N0QA5q8c7<9kt1((XqO4ATfSkZf3zr?O1i5 zfx=U7wS#?gI1URO2k9_^I8xTVbN=~5xG3FX9pCNO^TK-~)OtgL*1QW;SCO!eyf8|$xP zGYhlK`ZO?(5cP^1Cn|01Zj{6Mkq6jd;}F||6uxuzJBuxrLYd~m82ADQ536OrVmE|c zsspVs+e9vfo_KnC2kTcdH#h#T3=*T^s#}UhRVwtS@MZ*Y zR{R5!ClNb_CQZ*7`A&73MG%F5wbAa^iabhkSA*D*7(+TMm-*BRRDy85r%0-*FQ27S z##W>Y)qVut$r4abR-GDK2&B8b_G=S9I6M%=^QrIv>l|yk3y5clS_i1X=`4VymwCw*NcMbyb!oKR-Wj1FyZRx#S0AU@-sbQU&*(T~ z?8ob)x?KC{`3qUgj01YE)1u|gy9FOP+o61QFXkNEc>8r?i%D+m%&K$L7sXBGG&$tJ zN^GDxeF6UYgYF)u@#Fa|@J2nbg+NN_*chYvSPXV!E+9n57d(F~$AH2Hy7kJX3%>D7 zvx@;AfdWRa5F8CEt0kU|`;7vbPrI^Yf#K;M?d>0cY{ ziCS&(Si@E_oy*^BlIV4XOyukMe5_U(4gL~EE-p4*>Z>eVcT^y!$zst(EAxiL)T}TC z#GQ0GD(_;xeHyR&wASS|RPIYrRhHQf53g4)*?M{9i@4f@J`@AL+1oczedzXc!J32Xq7o}bjlH{?3#EY)786zrs@fCF?R6iB z$;kog@xLNy_lRmq>6A)dxL3N)yX>U!RJS%N){`3nfu^8u{lYRr9!O>q&e z6WIOg6p+ zB9klJ&laQ?d8y6tR7^^K)F7|$vH~J7A)(LK@0W(dZ_AYLI1!J5IWE=^Pq7J2wGYiX zW~EO?za;&1pzdP-31jFb6MdF?v2+6;({IoQl{_mc|A|Pg+uVg@eL|1_OZs^!gJ%W=~lsLuRfRGwYri` zH3Aw6b-N}GE|m@_?Q4f%Iqy6`ZM8eIt*qZDbxvyxP|+2Oz;s0B^<2$dh|e-pCB~P$ zSbDr?G1z+@*fcBqd42#WpEt`VXSd4gg@vT>dPXKy9}3GECOImFNNCAG?sq-o*uyw_ zGI}OmKim=<&7?P0AQtnU*HV&iyG!+Ai!Dv4N3Zum+wYa+%@x-d!C>QLdb1eM^BFsE z%;|-_6(#Mtg)v7K)2{+`*xC~PJ#@OI%+^DH<1EXLdQX#e&cy(o zR}o5|Ksvm+9`bG#9~>LR4@&xQPu;!@BK%nYh(>2hzUmLcgRG_O9yA<$Zx zw_fjdPtfxPxUSfsg!DT8YC}f%r=+| zZB9%$H(M>{hAq2`r#4=XXVE7Y`t$tGLI;$>{Bnqn<)w5zy?om}&@{7X<7M0XVAd-u z6XaZZA&TB5i&RYz)~RAq;&HKKlf-CO;~}Wo&;Afkbmsu*t(puL8eFVP3mWXhLbQLC z5y@AJkp(Zc?aEQeGGO{velBtxOJTR#zH}`9>UWJ|cI$pLxo*Z~y%HgGv{3`{07Wnv zIg%{pt}cNI`*tG*@f5#r!=nmL87($|DcTz%AwR%4Q$v1-)wk9JB4`hL<6CHZX&sA| zuOXZ=K=D`f5?d@r1m$+PJxKI8$fsI&4T7vZ;~V1n=@@`&Xy%g9^CFhVX)3f<;fb|6 zyeE_WAkxK5HXfVV7WcZQU4@$Ar6#4*FVrc~8fR);v9jE$ld{O;3DROu@0#k2Fcuk!)5bKxY3=A9hFSX$4l{h@Ilinaq8gI2~)6Z5*-;3?ar(EzA z=p8v@)>iV_Dr?9QUcJsXTdK|1A8lvkDi)DW`{FqymQle*rPhKdnaH!W;kS!Fvpsb< zA44jNHY-fTQ!9-5Nls-%Q(QYP|6sMpZS~XO-96nYEv|t~knY(A5nj4Tb?Hvc`Zp5xbWNoa|0A>oB74sRxGqckHdEfDny|2IZM~wl zjHT&GMOZ0evt)r<;C3jE@QF~sLwzri8Xry_p?xRf%T7E@womS*0_EPQ(bC55RU!uB z?QPK$nN?Le^7yNnhM6y}uu5h?!qmfkGET6a3Bn6(A*DMhE=$t{T2Y7Z7ba?;{pM-j zUG=wpi6Rvfdw}JkZnx9HmT**Iz1*BvPd6{$l>DjE#*F>Wk1pFOZIPwkpX8cQBW-w@ z2XmhSgqkLvNX04iY5Vbv$LcU1LRZD=u{zjY7JjlP6f=DPhFs}5WA&~%U@n20{gRVO zfuV_~hN-f>+e~{_6;st2LT=@=y8oPj*Z|HAXJ<+$5nq;G@`*@iXeIFrQr}_pb$X9| zY~*|$Ch;U%TFGL%fPo7#rK~r4EUV!L8uwl_piVrS-F7eb1f{1FnzWEi-Dr?koPPqp zDHDcHqyCy9Qgd=iB6Fcys~G%i65GfOi_&%K-2O(x#@_xR-)y|t-|sL?NbW-F+A~|N zi?7Sv`Q*p*zE7O#dr>Y4U7Rq$bwlGoJ?Vc|kCo{r*0x*fA%7xc zHgt7SM~THZpMoQ7ArABKs5Sb%pmkKQn%=#yZZ+~rW+ZM4H(Ad&6Fb>{l>L=ZIKNO( z+EGLARA7&)a3(uTRgD6)pA4Oa1Ijygnat4m?Uv;5!2fBtq!7_l@Roh2Mx7n-S~;UIyNJ|E=2iyZ-pC8USh4 zO4jV?fYYjZ&_e!ID*bm=F;nDcSaKyRDpvE3myp>%3z=nD&}$6{!N92~|HrA)KaU>o zuYbYQx{mq>68!rs|JwP9`)WsqyAWUO2fM*p0x+|CDNY<~6m z#!s7wE}vYnac6gWK1u>YHEe3#@~cs;@iIX9!lX#H>uC8p1N8LJ-;>$&xSYyj*{+Wh zTyPb)L8lDFnFL$|`C5?oG&bkh^u&sk9ns&uy}-Tef2DeJPq?ZOc=?de6P=G@I@u7) z;i(DQ6nlNx$x228u21Wp0r3HI=5I7odqME z)lySN%OjlZJR9BaG$V}sRKhIU#6{z^1g$mKq&mWXVO;>b z;-`IMt-TMoz^3O_9O{rrBp4vOT^z$LlCx1}?83+ytJcRFk>grTz3RBXv-6IQES%dA zmac(I6#xjf10u~B#t(Y;i6`o^+18oZ3=eC%s&(*x|91R05r>${qdpbb@Kul-EF2Au zeC6`Y7)_N6bq%H-)#ix;IlR!B>1%|+1kU6=c4Gmue)(*mbt+Em{cSUblL-BJkH$B@ z2cDFr7I4vYJ@_6)qs3OCNwdJ1`bYasZYTy-||uTPG=^LCPn5bN8Mw4NF#~E zgc_4hQMjwzrQhGCtTAV*``agwSgW6B9prjYE$R|LrGsBzgWWGoc|Z_UM`>0vpc5+w z3ccm5{_E&GiM$WhHIbcBHnz|Sf-8{vIHe~>GV7*-R2#-67Ln@t?!e*gNGB|5t)6ozstWn-?5Il9b zyEj=hQEFvXepNn}hd{%r(R%brGjDjrY56K6{)xflS5NuI#)i<#mVKH@YNaA7FTR^h z$;Kg7xw-N~Lh2h6sJ>_lc2q^TQpYP5Dyu!Z`Vnx#>GVxOHjgOyR zPLv2@H@Kg&|0Ig|v4(iYEc&mhR3e)%X-m%^(t@-49iEOWO80QiN z+Dw2{=DWq#fq;~B_ym>4wtA24$3tJW{ag%!{m#f+Twcc}7*8BV_xuaOQ4STEhts_D zPTy*&Lx#XusiWx=`1pXdK(<^vZ2Hk;cB|bq)#Dy9S9wy&J^8VL<>y#e!``eh*tx%> zE0o_t!5;>b#qiL$QY&%*jd?vt!eZ*d`@+=nCvrHeC5vvcm^)tCPDgW+&qoWA=UW5W z4GyNFOSk9P3LAYc4Vl{x?a@HzSU?N91}%q4sU#vlEJ?SmkASckzakSmtt_h6Xq&B^ zFOL5I(e)NkS#90-upp8O2$E9L4bmObAl=>F-L29f-67rG-5t{1-QD#ayjNemzyCJ| z!*RyIhjX5@*Is+YoNKCvT^w=>?jiJ=0%O-n2gH(@jirWHKZ3n_C6#o?XK>c731rwW za}Jj@iWUoX1N6d@SX`r$^kX!Par-iZjGy|!W9gPW>jyi605~K4V7_igb|6R^#-=S) zlnjtCF)c6I!c>Ss<+LK6KXv5dgGMSY?(i`(p>MF*hBjTO3?Io7fgw12iJtyH*VUW} z<;w?1FEQM|Ue!5rzC0kZzs#=bM3Ttc zmD;x>NTdZDx*uZMt>cIt=Yk6y$U)3su3-#gHx_MZ#nLH`5C?e{*vgX1M=%>+0+ar6 z?;8z1s!9nXD)TD#2bI-I39?)1$jkjqqBFi=GaAihroYO?A`prCygRZ|77##t{1$0@ ztRY$9<^KM@!OWGUld+ z)3>ozEVZvIx3GR62TzUgC@7|>+1Wl6OWwsm-4TX4_9i@XMzgsw{Sv!*@R>$!qDU%r zxf9_ia!Th>ORne;%mOKF9VRG<42)9UkjV}{J_p2e0LzEahjZCcYQ6}AtKLLztgmpjww? zmJ6A%r^TXw;6>e{UOfz)^cirb%8-M%naU`ZLb~86GK=naHD8dkgT?`1ccPWk+7jv8 z-t3R71_$-8v|5}WR$d*0?~~ULaO>zE6_<>awlUh=icK|tjJiOAhbNW|Clt~$L>znh zlsEkQQ>+DQXY$HpHxr5T0~y*(aWX_-ZFS=!?DrJBrW{)0IGsGY&_*_Qx7+@Z{#GEZe6W{2|#f>b&4wP+%n*p33t zU|?Zk`P$*SOs$D-Z(`MVuxt|LN;=zvF}0?U3_oRmVA#sxcF$;56a$p>VVIO1EmKyA zCF3kL<0tUvhgt&smCjQ;41m>ydZ1ZabrCPDW&2;n@F)g4u!qwNdCa^#h`Xd9RV=p% zgxwtuCmKn%wz0ntZjn58vj;Gt1ef`W1EgR8I9KXt9S+jYA_4dz)~RZVR@d#$@dd6) zP+3M@ox7h z+s@POAA>sn-ux0tmDTiJW5Ct*^>E#zgTknNtizQrbq3hy=F@Z(M;#b-&ahYfCaTL+ zbssV5@Ib6XqNT;tBTPgl7Wrf~{frIn7W8|-v;GOQihOZyNxN;mQ|`cUZd*Jfc42>Yar# z{8cv?AjO?Ap;9|Cplm;;clltn3z`9dPu6wXpR-Ue|4Ua{D= z%%(@nYU+%a+Tnjj_5$RCMwX=qpE#Z;?X%_i6*x~ZfUrIgBzp_T_%j*IO1EwOfl>eK zws15N0B|2fq{dgc=h4|e5Jrt#u!yeAM3Z*|#%DOsx9LCEmEun&Ka)7KTQ~&TKQ{mS zA_#zKmzF|IioSsw{O@NqX2H%}&rF=rQ5)#tnH-L&=WCp!cg7yV#1dI3wr|dNB!KV@ zkG)=hC~3Iy9-^mjH*jxTu0mLsRH?jpL0m%v2UFsb)ozdJRkqC!ujF3W3h3F&!<4QN z*BrjnOeMMWL5u`IwCq|YTY?*~dzthZB_+rG+BfaH+Oa5E;rK$I)W`BQ4NnEfogZ35 z?DpnF;IP><8O;|YvMwk{zJ^Pu-*D+Zf5WpMaFE#*PE9sF6;B0$!7bwK&XUZSs5c~puC)}TI4dCsi#-1 zcJQNAspbWcM5BGoB^t}v0CKvRSRnijBxK5urofc1O^=#mMRqOPF-;b4Rb?(ia_?wN z-igMt@Wfd=b@oq7?vu9KX?KceWROjc?6cbUEVLwXNIr5uKZ{nVo}ePTgzlDKTT$Gx zZB+XEDbn)h2xWUCA|x{s6T$)_dyf{V)Ne*FFj)zVHwWj(a&@iSw1gfXZj)^QAH!m0 z0jJxyft7jZyD6zuVnsiYL?6_ctIqhDS-(GlBUY`!33J^(uHd^5+(Bl!;b`36<9wa{ zSz8E?;Yqq>1fw}txGipPf7E)n?SkG-7#R;DPi6xngUe&7-Hc(?S%Wz*ny6RbT_m z%%{&;vuq%fFBCrSjU+{7pcO9j>g<)a!3Ua}?ZU<;LWGQrR<>^>gH=^kwM2(S_O^(n zA)%d6l%=_wo*SkdKNq=EeFrEQSgHt)yck@rT!Ft$I53z!SK^0C3?(4-@ga&s%^GmL zobAXQm3Jjq*8pu-UH#Gb?byB|E`kjwSS&mwJpVb%Si5nZy#_)WPuwqtp82CYE!HvSBmjWnShmMj6- z9JwZL#F5JPhBN7!sClcH>kn5O`^q`DPf>e6N5SJzAdR3R@>zDBo)1OJbF$r)0LBvV z4QsG~lJ>h{SG zPg`#i3>^)*R#1MY@Oy$B?Hxj#X9M$T~JVz!cj7F*Q$k1QyR8LfAK=oEkl|bj9H#3v3tj;+6WcD9*%UFwtGgg#1~@x^eYl#fOUW8Kg@zhW9BOt1090Dk!$~|(Jd1zreBS0@Z!v>e zGKJx4>Iet^rHujQQr%C0cHtJF{%2(%`SDS9mV7Gih<`J`+maetx>eU?T)9CH^Pc)j z|D-!Ku{V-JJJ;xoqvX9ysWOA|OJzDkt{Q8{p9c*Pxb-Nc&%YP|nSZK4sogomOt1wc z)?IWTZ9Fh|XNo5hcag7iC}uBZmAl<{Dxk3l9IsV4ZBnTOT0LUaf4!}?CBq-d(i8v$ zA=4{JJzkTQ)UUTC)WG<@95fgyR26KF26RuPvV!+JtO_F)oh~lj`AqB1QVZE{^BNbG zXUIRZ!&U>maOoHqoxh$(9MtYEk27EyW$cPswtq((VXAReom4Tky4nmqI1PZuB3vX# z67YOP!RS_r)x?gbQvU%&qY}UfigOc@S)(@&tl$UUs-ir7-OHS#K#}VS+$z&3WxKME z_WF_Y$>+k~s>}IKF#umEEXGKtK!>8Oh3R<+p%v@lt=Hon zhSHZl?COQnoSgR4_#C0V{iDz`*8-Alhc&66Z>xWmzRTl>NK_g1p_ggJC;=$UWJXin z2W=c|M1{sNbIloPI*kb8{_eBPul5u>-`75Ws>BpCUlm1~;2k&UnMi zBv)+P?5IFmLhx$iL+)CabCzk=sa+rM2G`FvK^)JYaOES&G<9N=pf+}c!(D`_fsq-S zs&09XRAzc0>Hb9L z#aGA;3i?6s6}W!KJ!8P&Hwf8m2{H5Ys}d?l=fwzmV}N@VwqeXMMe4fL{2^Dl>1`sj zvzU3CpZ-v?^gX!f)?#9v;p2n1)Mf_^CpxPcE)ua!pm0=>>^-Vq!>j-c>M0GlaLE z2ps{#SLy;nPgUSyAf4V7{q{iPB^+6h?p5wE37ozpvZnMO8N~_)M}b;HjTG_W!s!qBB6Z{GzhWj2u6#uJfFy5k@9N%; zn|X_u@V?-lfOzC+WPpCQj^9dqC=+u5CP@TMXDIXS#kNp9gLwu}K<`bQ8euel_+&Jj zNdTP3!cDj9Wb%fWg#~m5T%711O|sXFRD-b_UsC6sKat$3=3XSe{5?Bpzh z0MwEVu9iIM?AkSilgMKUL?s}eMbkjv<%`G5I+GJ*n0kJ=gZPiF?-JV)Kwx`YeYCX% ztZZ!3ftuNu8tDK%Q3F5~k`4fz#+}aEu-I%ts@A!AZw$s7%Gf{5DYgS_bLh1pqD^?1 zIT%R<$3%_WU{wP3TkG3FRSLsnX7i*3)Mhv+-_^+9e7v=yk>3$2(8tD}{+AoQ2smvN>*@yHiF1>YJIQkz_lz zI}LmlxCD|u)*6{nQHjR~_ zf$36xv4`n$KL69rA+m$yg9F9!5Nx}r!lv~AIq4{e@|BC?7nsQB8&u2JBYzmC;e+k# z^B^-W9689fq3Gy~y?FrvwvZ85Y;2`klMLR4F|$s}Sath-a$&5)w##*tWMjUY>;BlX zl~iV3G)6_cm zMGY9ted#$9t)eVV8p@VXy(_Zp24DLM?Ix_v|0Zigl;>u}33H|@6f$1BOEjg0$46+? zNR~`G z?ao-a-nvvti;YpaIgGi4}fQS z=m)28mj9@!`QohIn2T&${ zmb<2r7h+2zCD%KVYtIAp$&nGC`pb5i%dO{*tN9z0AT_c{fkvA+JP#a?M*GDBo#v%P z&*s@0dt2)m6xHgqu{wHf1|uNViL4e$eQgaVo@!YKF1=LeL9IJHpz$>lNl1F-@}eft zc7K}SZ0{UV$h@|AL`HVa^I4{gPYnvorY?7uvPV!%gdLK#8%IM62z{#PZSAcI7n0C) z?3ipasPYY|T}$CQccC^7CGa5j&}Y1NjiuV_+(sK`Q&f?v?rAZk2pRo5f)(L<$4+rV z2%+og;ZcCt9YG31AR6&GGqi;SuO?@AD#E5G!7rp5S>U!kV(Nn*Fx&<+vAboEJ44&P z(2`wX?)m1!F#=kpB3Kdi*&w`RyLb{b#;=5Rq6NX_aE+PgXEK7$mV#8z+A__zY7cdV zLz$51DQ1$~vN`155fs2CqhKZq(ZU602vE6ZOK)>X36PmLm1C(oy9m{#=Np!eu0$!H z?P@@03e~y)KvE0XIyhC9nJNGqFe;Cr$r{X@Tt4^UG~eclr_3j`YwM3Q%_mm{N5rm>eDPMy;?9U`{ZP(~BIFuXp3AnhCAKJu_pjRze_V z+xrn+tnPKiaI1#oHkL(Kyd%gy;J0cID+zEw5tVP;uC<`|Ybql*Fq1yR-5-peeG@sW z1=w8~)*M9J?q8LL0VeKtmG^3nLFPy;j4r^+d1CnFH1+O^%T9`z_xZh@y+JIRH&)CK zAl6#7fAa%5z<6W<>qGBy-ID#;dV<#4{Tk_c4pYpD&Q%0}LcvQ$vCl|u+?{y~p{S|J zSF+PDPB7p;_}T$b=1ULV<)e5QK8>!L&&m450{I=D2u^`vI4Hjw$c-+R)VP51d_kr` z?(C$3Z)b0!UJ7BWJRCETtjzD78#KZRlfPDA*c9TgOCkcGchUe(!Dv)Ko-JPyfU#gH z?1LK`Hp`$kI#D3;$X^@pS&ZSIOd^=(KJ+$Ny8y9SZZYiLl=4N!j;8={ijNeTMI5G- zwnm%g>9*XbafLrTQmSOk-Ov=ZnX-C(aLD4qvgG-n%@G0i|EISWORi^6<5rv`u09R7 z=+@&|$dOoFt3n5aWr-H@CpoQfIBq-$k*;0D>bNUk>r0+owXz5KRNLM(I;GQpbmqt> z_aHZ6&*yB)PfyM@NFuLFS^#R(1z*VXU&kT961G7UwOQL(q>l-W#^rwdh1dJzC#i*+ zJ(1WH&OeuO>#^Yx~iL=+y_8ibatVD0S~axe1eB5!p|ysk1+jsIQX<+HqQfL#~r20 z(?9 zZyNygHJaWo8aoj$c*IaxVVTw*+pNvj0h`@=C9IXAzw>Zo=Y7NQcxof0&T^>+7hJti}m8sm-t4 zME!+&X%=|$#t;w?CQ%Qe*kESntY93HdHV^8D(l6GlG^Fd%^u3n<7BEl{LQFi5Y{h% z*ZQpt(< ze?Q2@1?dY!zgP?4&)?b8wJ#?a{tjWCS*a`>wECT6F_a^rJ7zMTG8P@lNHA04*hl93 zB8@&&p3>`9^poQ{vis@TY3X0%&|G&4i4tXe2+yJEe%SQT8bsePS9awrLP9;eg(sK* zaD;H4XP-zmVD5mH zjS(&SgQ$>~&Z5VsHi(45zVP8f66jqiU_V4=Cuh)uz1p;9={rdImFS~lJ z&KJjao&PfOd+unMbnzK&O@p+^R?GSAP!XSRH%Cyry~-YB_WU7QIOu~6j)dQ{05U3h zQgkMu&lEF9XqFHZ`y@j@6P&kDG0{Zs3{mCHQDRHnW}Fju`L@egI$;6R;mXGV!oOhQ zrTU}1`6p><|ZV#xPvS&Yzqa(6Dx4B%OJFaPeS zYKZ*C!-<5v(GH>j1wxMx5UdbS6HR~_c6BpXE^LW4?jw8q!SftA>&zqTAGg7szi$Gbo7!nTl`!pfVSJf0_gq^|=-?ZTxAdF0bA+0LR`Bb7Uvz{sc zI77u!7TDbPg45}uHyVgB^%P%@{af1ebP!x>@rHMspx7L%DCKUh&1%tyBHKyESSU>4)U*WK7|XyI)M2`IEjLTBM|McJQmoA ztq9-w`0K^~vs_QU4xSTo>bMd*PL|5;GgR515a!RNa8wnjA^7@%G17cRsBLG$Pt3cT5^CfJG z=m^U7(*^7We^(1$*VbJ|Ux~Z*9LQg<3Wy|1wvH1th6D7)Cpt4%fx4uV>wJ&FSeJMb zLv81)zh1eAhb|bvDpiw^fWH_n3q&z`o@G64RgZB*!0!QPO)D~t++#j9*WZr^0$=R= zbim*(P-7aOk*|Ce{_iW)I0xHPXaNQa`S1!Z4%jZRt574#^V%gmFO5ULDZTrtcaJ7SBR6{GD0_%o~Y}AhB z3CNd9c2!bn9fEKDy%!MR|7o&`aEW6`KL@Nl9j=#PdkanO;x5Il|BqKz>hVCE4Pp-QFDs7m0Mj1E zH3x-)n-_>EWp*F@n(K~v{7;TjC2c&!t;BqRjSCL%}@{}3Mk9R4d&9+>8N zDT?PS7ZcUWF8CJnx0#>&@SH2JnArQF{(5Q?FOR*nF0=UJo$2<|(i?6L*9(=-7(!dp zJZ!T6SpIROhe^?kJT({BdP~ltyKAdHQIxxD#`#+7=!FJn>`U)v%;)(57mg=Tr^ZrY zM7&al_Z}UJqKC0H7)^l1U=h9tzyI7srH1a^kVf{Og%JU4kRI@uANiJs@zj;hCTV)t zLlc=0^cUD_v~rFAYDECoo$Ebq|l10&{EUQYMDnX9K7>aa?s*&e!NH zt`}_c)o3fhij_7{;rI@9Uv1x4eFrQrl0tS)2UF)ilm^}qz(6(0U?S?bJU?$0jAn}R z)L3n#0G$r065Oxd%&siqf(Hvt;&m5TDIdIVzP``z(Bb*-A5r-H9rOK{Yjf0Kbe6Fadwz z%FYb8ncCiSsT{A}LV$z!JbYsWh=@R6aJz3PPjZ2cx$QmrUx{{p!Y{H4I5>g|W5J!! zbn}tiKftiG7v~%W3Kje#K$045#@^jQp&a8KnbF-H33PT^+eyk@yTrl=4sNd`b}JK! zod@q^4)Z$C6#Yuaaz!D+ZPUVg{8d!PA5*Zw!-u>f${&|LuvqRyEa>vCj*)!}_x06h z8c2<3Fq-F&tF!nB;5|Y)N^W_BiEY2|KY!bDz(F(5FrDh-K`wX9X5s|@)MC8*Pm7VL zDiF=^X3US@QA|vXfAXzr1hHD6-F@9xt4(NQORYYcHvWMpd=Q=U1l>(NKRruEzUcy^ zIscexdY}8_y?Cw5H8du3wNI(8HQeaJ98;SNLntsw0}*&Y+oPk8y&rp7(t#Q?g-+UluCLSiD&sf5Gk z2qTRO3@5v};rM|@tKX;KfbqmFNCtN=&Q|QT?*C#qRx1s+&T%90Uh7|e1&{o!puHFP zUn|Yiy!fZa0L;*OT=%NcLD@-i*Ij+PZZLvfZ&xjr${q>2z&k9Gx-6 zVfZ(IhEEcNeoqFFwm#*%<&fEN1lSh9peTF}`-7<@e`FHgrr=~=0^xUQ{z$!} z=oQE%kImR;93qhg_}f%Q6DfQ!n@V(pPngSR{Ey!6Es7D1FwvCT_e!ndWXW|FegL0G ztA0f5 z>J;?;o~l2N{a@@=`>w#fELb-%%}U5s?weAD$;0EtAShREZosOK?)Jd}Fcpaho$nJb zx)3*SEzd`IFd2!rByW*m;6Ws}uf8LsbJx~sZ@;>zdn~J8-lwKzt?Q?(>wDbV%ZqP9 zsXra8+3f8J&ypFoes`kr3Y)Cbbn!!ha)kxQ+7uT128`uxqyJ5s*+C_*^bt{k78d{*6!^zMl)n1|kKm z7)C>)jN$2+7(N!OnU~+^T3KYOJ055hC%IE9^%5!X+AV(62N#+>Rc6Ed06rL$*F1$w z=@Rw!`_n|HC=}siIZ{$RFtpry{}Xic%ogJEE=e(b8rg!fn?3!xk~9;(JBlKYR6@=@ z#e}&}ewD*sC7>sq$ev@*?mae{#KZ9_(Ojk{sCZ)9>2{-WEZ_ufZnxK89x zHx~y#gs~>>@9$+nY8_7r8D2rFCNK%%CzYUg`XLI05sIeXww>s&_sY)5iS)pTsBM;S zk7T^PYsD*S8domxEYZI0nG*lzlLfi)Ts_U#3+#@(N^~#-<<*ebYZC+&dfIgH!z%)D z4c=&s(|)bc08~jto8;In9H>1 zm1^8MyOmt?2|7VOEq}?&QZ0UM7IyKMgIH7VUxV^h)RuBP4CL7tA)^443;yC zULR)b&6-4%pYh<$xY$@daRlLGjwRp53RI;pFq!Zt2k=k-QGooVfQaL{CC&wb#66r= zigGWmXS3DP5rCq5ypr)DPN~u))*|Q)tHDOENG#1)oxupnmnkVf0oq{q-7A<3@g~nO zTs~+L^}_r;1`x4eEOtVwaW`%j`@62FD23+tFxN6TE#GtY-CMqHmLo7OpkYB}ZU;yY%w0Hd8hg3y15q46|CM@So@AZfP{7##A^qkFzB@r zfXR(iCg7d$&;dmOX1-cRGA212n20)BqFLjDeH@(NQ9Pp5Cwq=oe^ZpH*X2xD7@FH1TOYIfHv{U1r!KPqoAQoFg;iT z8fs}Qk~bi${xkW8Y1E8(ilylx8EZdUh1dJK{lc>{RI`#!4vIr`yWH#A=3t+B2M`2b z7O=aw?Je&w%d$sxD!+iGGJ?#R^9|tdwS5bDM{Exd7J7XVFI4M-&|oZ4REdTcvp}5K zwH{aUg;21$#7TUGtyt`T_Hl#+k|+STYNaur*1AcSPwoRYhsZTH@Z%6}7`v1FQ;yg9 zu@LmZJxzx2)}c_Pw{7?@?ZST)0K@QX@T30I{3Tj374g$EHRx-B9ydw<6NL;KA40Ssf5%p!Gd z%bjNW<^R6RKQ8nI$dhQ=aB3Hf*RKWqr3&|t)6fD3anE~SzNLs??Ggqyk*`S9C7$q| zg{pxVnBO~k4p1Eg>m80;=kqIeC;A5B88eI`H&vr7&y76D6{-bEIn{+mGDXu2;e+f} z(n+MMEj}dL%2OLlaaS!WCUDE?QmeDN>+vN252Mlpd1# z=@IasF;4?0iOE7e-zLxNdT05`zDNp0&CSQo!2v7RQ>7Z`<@~EGVKPIddJ@9gsID@r z%N0i`g|e|wLT=Ag1WtX9E(ZBO4iNY{oPk4i#%h8`S|T4jiA0yGn43f<4;t2iP4Xmx zG>LsVbGO`;tUGt*XI5u-F~?l6x%6YHr!VwqFp>4-;1;`g%)H4y7S1$|=A3o9!8xRF zb*jdE(e2viY_rs%ho;I9_oR8HLqzm_Q}m?|Z1kY26Pwg{k8~EkYUf_CdSU&m46}QA z-M$Iakn|uxs4S6#Lf!qefGgG-mOnDiSVwm;2U1yI*$)ro$;XdeiPFs#Pnir zEm*z^j;FqOPsd^-(kTvHMSmU2VE0$F@N@gU`9Uk!w#6SCnxMbe)^ke$(82=Bn+aMU zZW8NIr&j{eMvR-n2t-NI`kerJ3clOjRp^4e0{mow;s+AxOdCbU)Nxq!yFwR+4eg%f z#R~fLHERN$>ycMsjN)d|y1ZwDn%Iq5vY#Jr-a9&XLzv|`mq|lBxoHe$Cz;Nmc;Ywj z>BA%YP((66qs?#l`9lO_Fq3*Ox`|U%0U`+2)9t=M_j@E`)M+&4`t52*K;Ew5D44RJ zDg$u>>)~P}L6?tRv`kTD1P|_sFr|%->7O95WW`!-Vx~N;Uwf_BPzWiW!%cXwN za)HBXw|aCe)*s7rwu7vqKk|UzAAKjZH3CkiKEz$a;Js<=x&zRmHTOLl+*%KSu^=3@ zBU=#%hztw&$?dNl${ME|hRfsC?hr}2@g^bmoiheW9;|R!Fjih%mzLR!VGOT?MHC(M zX(=NA-fUd2ahD)og@k8zrO=`e)P)h*Q|16Hiwj))g9ND(t!n|Nv&p-!BLxEHB(jxZ zW7)C-^KU{hSq}v5ms|PJF2{Lu7E?+xTdr93TdpcN?!mW@Hz;PmFa^3;Xtu+dB@bHN zT|qIM1&6Ps{!)R*+2P)7YDjkn+&k;zp|kPtU?0d7D25EQK#g4OW~pJ^AcSnFNM zZlOvQyT;DIoTId^6KvsLD-BZ0}(icXi9#6;prVU+Vu%sZf2&CPW!cjB*3Cr?k85>y&p z6#I@Y63A66KOw1Bm!}rIf0*Agcqu1`_6qgZ5@Wx;LW{ErZ6qrkfxutLNPAc$nX({w zTqFtLjnWh!cinZ2l%KyZb=vh|Ztl1``e>EJQX4GeVsYPZwlglNst zt_<^BL+oCm{3lhm5-eoq$3C3_n7qZpnXhXSRfJZDPR(t&f$>|{$wWreg4WggFt#6D zV>|#%73e=d;$a@xq&}rSB~I@U97e#FlrDR+muCWj;J**zumLeuNP=Oe(!EWkjC-U= zTpS=Amgg@X6@e>rw<=ee37t;P^ll9`epjN;Ge+0X!+DoWIG`2|gF-2|xWK+P{_V}D zvEk}rvJrr5d~H5SiTHX$$5(sGq0vZ`ME&CwC@=s(QmS_D^u~Df;EgDZz4%&@S-y_J zY-FB1Hi`C5)o8kYksG0)fL`p;I7%3kkkq4!y{ot%v40X9>00wmwiib|Ux&BR5rsiO_E-Qi4ox4!I zsgN>@2_lije)KFTuG}U8k@ybYe6VL{9DoG51E67@lXgodv7IqvVhOnq21K26%POL` z2gYc(*9JKfKN7AwCc3gSpQd@=(VJI-!+lCT-FVnJnXa{-#99@yRKJL^Owf#M5GCym zbu*=#T~?#evA^Fuv)^4hSV|29wbN3dVm_9{7W&>)obGPz(Jq!GTxhDaYAefF`A9~@ ziG?H7D;JueeowevSC4mWz4m4}x=flgJUsbzSi5eXaMWdEM7(ol&oIb-L!md+AGt={ zm}UTP?A`BxkEo1m)ORzW>@}!fk7`4YgCl(ZGt-^H^q9H6422SGS-?@SSz+I6M6Vlp zEN|#Vmsr}Dtwwg|i=9Tvi7cGclOo4Vms8cBKyl_=KOz|3P&|Pt#}E)9K+|&9(9n<= zWP9ZmID(+XxkIMhSbCsbc7Z*hoFZ|YV!b)I+i3fkKj{i^4}Y4H-6yho)|zrmZ2_~_ z@3Utok^w%`mYeacQW6u|90$hZVUsF1t=^zjc^_EXunwU{z{aaf)jGS~#)p@Sc1LtA z;%8So^t<_5-W&aiS+^Sx4+7sytXNKz_Zg5G=Pw8Aunm&FK1qQdo<7(_Xaa*R0xHrL zJzC;A6|8KdWhn<^E!pKCM4~7s={kG2nTR?`4Um3_*l&VCkjWPy$t+**C}CAz9?TZ4 z$A-X6y)G@}q=lvK)+&T(J?Ln{)82?WErxD#EDNE5^Vj@fQ{z{016rFc7xgwUbF z6ga-k7cFy0hM%f7EQ>m|0)_zgDc4v<>hwj)0x9l=jug0b&z+o|(rKzXy7E;;cQGSt=yQ zNS6ZsYWwi4Lde(65TtAZ`9X}4d?9Ve&3%x}ex?upHx6qS0zYFtU*7aKK-@1@n$~4H z4_1>Yc{Njh$7FpBm&!;QJzs8Hi2gK$JZ1~#2+|gS;!UBuI|)%IAeMZbr*!@ua`hPaKJ##po>H}q)50ph!#(01b41&F<`kpRRQCdNU2(tac{&=N&Yx_zxb!cXX z(_VYaQr|GbJ{^$^3+2M^!$CwZK?LH*t~iV!?(Bok`7@0s<)K|n9z}VG<&Bnl%R=5 z=4)-0BN-kcOxqg4pjNcsY6YqS6IX1oA2ez~$}2QH^=+`{I6qKL7UhZDVmo_em+SS% zXPjxee>>aW7s58igeCwh%mC&+SVhQIiJA69(q?Hpk9?uZNR&JXB#`G1ypd_VGxD-* zz}$t@TNS(llP@&C7eI*4CoVx`uWvkf#kRw-m*ZCwP8eNJE7up9ak|!eRwVjm2+K-u zgt&+P*xoOmz-O)r&82`KPfB1##|4#|WIfMRhWkv0A>>c~!3zuGYOO;Z)$KW;gcZUy zS8ZA0Ax*f&52OQhOI^(XKNuUgYlY<-28#`E^p*A;q%Bq*v>rJU{(?76FeWEuj#P$B zfMgNJ{kej|16PTsEOd)PE2#l1*y@Z@mCP zqkK1wJ$VKE$P#}=Xc>i*52kL2C5VCc4^@4dCCZoLM@&sFj;Gb+X2Yo&wM_~oxV2x# z;j9sGeS21USwwG|SNuwxnXT6>6szhIw+G50i@~}WR`(OSOjtHse8BG(u*TH8J_p}8 z*i^q`zop+*=~^|p?GVSQ3c<2?=P5KkOGMvzmQ~INmm%P7$UYN0>SG_aHr4x-aud>8T^7HYKAlBTZSje z=Q9&P=N!o5QY69l)CZDPq!nnP90(=uJhhINk3wkbhSCP@rKx+n3zrs*<7k82? z)$_s+pOg(X(S@QzWV0s8S`DYR^uAIXd>fHrcsgNq@5$FAtgW8JVk_J~MZ@fL7UNn~ zh(f6%xDf-ju>1*1zD+2+X*fqX0TIw3671sw6M@`#wKq}|&fj%+7hvhtQ}K2T;3*Uk zI((+u+@q{2AOVFp0h454wcEjE4a&m@lcZLKy75d#dOIo`SA1YRL4HNx{&UH`BarMJ zaUKu^{5Z%w-{G(+0jSf-OFpMwzHy@Hj54}V=dui&uZ896E)u~&^x#RX2jXneRcXoh zfojdv$v41d*8BU$LLRLMCk#Q2*z8=@eop=-yN{VNb!!I*fI$*!`)DkaG93tdcb>+r3R-5xLHAzqh%t!R%7e zN7irIhE30)3N^z~#(R2t8ol)mW!K5ldhLlmp0_<`=CJJ6psnvX5qKR(ze=>f2oxc0 z{fHAGO+$R6P(@x<)t;<-cLja`Np-^gMDPwFu%i`2Uz#vvvcB-)j^CMpM zZoT!maU=dU^t(u`hFc*i#QTx3pEI5|#aC|U>-t{SdR|kIxO#CoALZVDh$!5af!kDEfN+~P}C$Q5aud>gp-ez#%cO_wb+ z!rR6Xm+0MK$uPJWs__ggg?Ja)lNyMLWI94#RswtwFkB&nx#m6Xjy;m2<(2AK2-tA< zx-z+BX6p%sm#hAH%!7NnUn_%A6v55>`s2}D4VMzm1qHNPNBq|(kxP=pTTU~&*msA(|dGCy1KyF)H z-{FtQIM>kzit2Dv-7Xd-btheG*V3BcYCn`1RUKOv@G*~53Z>Js@xlqkaJ)VgCT+>;%sGGeJEYOf=sLq+!t^}XE8I|-p5GN<;fJF#ymCAp zpQ|&9^#{WZ<}%=BIZPG7np%10V);CWyq`C{wOj`w!$Gee6#N9-WB^Iyijg_91KOL-9- zW}pp+`B>N|Ul{e_rIYbdTFg(P3(tRRW~neB?$rsFPG7gIYNx~y zeAU1-nAxpQEY6JRly_-C6@x@hzEJUB=d&U6{+n{*FR_DQVtfinx@?XKdscaCX7>b& zO?8~zc)$q~%HKR>mGcSp>Fjt`N&FK1BBCB3fqr9TJp~TxtM4Ak>y_J-EI;6OwIu%} zwZO&42#<`lVF!2~aq2pxeMkdpWNcpv#rHA`rWlFKSZg`3>4tJF|Ac=Qp0TdGAo{@^1Ko#n(d_C2TV-S0lHsO zxog%44wr?6(PYYmpLRaYKF*iRRvyj~$QPL>S5jpxao*hVX0{dzB4_-`$;)+__n z@DpFi@qqq-mk0o`ToS}R4l!W3KF#LVZqdNlvA)D+u2^Q{%EGR(-P5t{(UWt=Md%1- zdte;Yp9-G65SH;{FeYo{N1zU;T(y1kqs<39@3VdEQv(W5z?}pb#}*9~Ia)(R4g@VZ zpYF~}0SZi!UfE%^S`(}RX11@!xUw3ZdlY=|%nIkqS9iN6$ObgHtxh)vh($Hpq6)%j zmF4{26NyC_5xon0=@TNHqs8YkQwa18dt6DEICOhk|3t93|6gTq8CA!!bqx~&0YdO# z!3hM1;O-ED1$T$w?(Xiv-QC@t;2PXLxVvoRZO*wjPfpJLetZlDqsC}<@2cvm)vMN; zbFMg#w7{1UR7#V>h*uQyuZKDGoBZ?X5)+25^u>j2m5DlKFTC_MFJ{MR=Aw%u)nYNzt$l? zbiUx|%1YY#PWLyI0kc1Q<#9TDF#$8d`Y9a!ozn zaeW}%2mlFa@nOqe{W-S*m=KftDDuFU24a##xBNLwz&K_LhNFZ3IWb+>;BN8Co)Z*Z z$tVN=8i&XGy$`)Rr`kYXPKUx)N{HUR}xDLC{6{@*O!$y<~kv`&&2`3Hi-MXLZ%`0R@PSTx3n z=5u4nT#oFVNMZDCVNKQcP!#j>0lEFrVg!Xk*?@bKooEHJ?&hE+ii@0J{2)N8j1I+O zhK-gKMWa#r&@CDpmC*L6cNl~`nAIEBA0U-B5Ew<0CEz>@{g1JLy>P#;AT%F$MPbMc zYgfLIZc!jo0?KWdspA+f73KhEFaGrVTM^)%{$R0EZ@_;)hx2(n5nX)RgTE2I8*LFa@ODwL+lzSqIfaQq!vuci9cHOHI}Nrj-}D1YnU5OH0Id2 zRb{<-H#-_()&2As+jyxFqv{ANQZj$JIipmC)9ZHU*l4pqrt)}i?8)FzQ}C8jm5&WL zUHHS}#RB?5BBRR>y4_Fm1IsO-Y&Y+oJLBoh&|>A9o_a#AYDsa>8VQ*~M$pzVkVRd+ zp4;vST1%{XGHBiCm0;P!xji+Y!eXyAS<3CL5Lkl4Vpg~w;eq8l?)Bm*iDW!~yP zFbUluIH=65?2YrEn=Q2Rm#Q`p0zO=nC_=QVOEM3xBAe8wjoh;SY10Lu(A*o0i?9$J zX7wIdMk%Ao!YosN-AOazYUKBDHy(k+@@<-Hs!e7s-gtXP3y*Mf?yKoB3|->`+hI`1 z@6Ca%Lbdqn-Jv}<%K#V%-n==dH<8Jl_#B1@S+gloo^ZTbgA-kizjFGX{H1fqXzB zgR?k1E*lY!x;e>AV$uwd1?#B&*$V-CH2hg%bo{9BiNu_;0x# zc%)%ZW{cSi3gSr?&C|h`UoR7DA_-ibYVi5z3Y4lEn>h_Uehx*b`86}kKBu&vi#Y+c z-G)`lHD8#@ctODYoUhqe9sz0xUd(3quNb7(pRNlpOqYD!$Q749_ibcrMTD_CS|oms zDr-pG$`>k>k#`59M)k|&0)iG3_gCD2{-g{svPdj(+i)rcyWJ6hs8A{O*8}boQ&#J(V%3&+_$3Rr z--3a+?SePd=hOA>5HDv&f!m0h3KRE_+Xxzc#QRNgk%X900`gPE{=XUBb|{E@+7d6_ zsdHXO%1$AOkyOqiV%`o5lBm|lPY5OI4YDy=TrG{Ft>A)Rfdpb9zVfY|*+TwnoZ7hf z3bS%aIJ$ueXZ}}%fMVI^$RT@U*hb!HvXmhF{=YpPul_u0ltKqOFqRy;m?_iqWV|j&LzV9=INU zJwU5-ipAmHh6d^`)S=Va$4r>04KU%h6<=1e;Hgc}RgbDQ-!wUM+7(+XNOk=6Mgtmz z@gD96vlX^RkcyZ2CxRajKfc8SaFgP$8$JB?eA@?rKOm*sQR&g~PCmnhRjKAKL-)0# zW=$25^OcF!ny1{*{I+3(&8`)hRAxMX|9SNE1TCpbyUKPQ&KP}1L8d?#fUH*eeFRw_cm;%c_;EVWrOu*bk3kWbkDicG+n(e zpYW-iMT)i{>^=*(SPNM9fFnm<&0+u9&f*cPUh*m+Mf|hOv1&>gdXq$D_ISM%f0}K+aMo&tVE{bq#djp>R&BYG z?}cC@#9!}*G;HBpXP{_7+HzACh@hfb%BM#G)2 zG#-M#Cs?r<>|-(oAU+e@VcwR9#KdlU^Z`&_m8Do7yxf0HsHOc5a)=#@7?ziRd1qGL z7-m?+TcF}W+utBUqgYckRCkj~qqX=sz7mvBp(B}}$Y@-wGq8@a3FQ?K!)Po!14bRc z2POhLuB;uSZ>n?alJi=+#7K8{xhnjvb7?UU>{cvIf^G*VMtk6G``GQ7rt#T&Wx@Nd zs2e4Mk+!AF%Qske2gDEYLa~$La(`y57z3oQv|Rr3{F?XHyU7snA`*2v%)(gY0VU89 z6cHxy8K0i_8m-M|bMfJF!lskiIniVaO3Qd`sxfnepBg|0UA@v7(u^tCxUY`@JqR8~ zE>w2meU63ehQeZjt!%oZn0u>}PVrp^<2VyGB>a~}dU3Btb8TaiLBCtt)Q_Hu^m;?k zMgYFJzL!Z*9>i=iN6s3WLvrMePaGj^CtTFnZ{nuSJ%U033QEAJ@4Kd5<`bV z4OlZCA>T%kh~{z^73Wun824=HN?>vff08vqU-&)3f*8qD{**E&L`*}3VFrofQ3*LS zP_QCCp-EyB)9Y^|A*e&uBTbG()Uf5gao$xJ5zTivrSFjiZsB;f%@>5I}EK9y*h z(vB<`s0=|kXi9H%nOO3>SAQbF12wn0nIe)(BF6CwT=vWX=O0H;o(p_U4yK18pV@1h z5cLZKIu+sH%+BA_xfP3`tcOwx6|BTCRqRv@Lyqc!-Lc>SPf0c{=Do! zm>z@+Uh%&VuW}a#!@-Rt^oS_NX&l7%M-ZPrzc*j3Cv(2Wvx#;EV7Cc(-)%7OJ3cGb zX+`O{%WAON{LFV@-Bk(2-CvXk(JGb!`pgve!}YQXRwH8TZfBF23jVmxE8U`To53(E zpFI-7f26Et1)uxJ?dzS{RKu9s6VI40ev`>l!?UM`y;Yl9D^xYVZlD-dughb&vbkbA zbUfIND!CO=A4OK!oK5pB4Fegam5pXK*)6rY3Z)e| zJT@RN)?qQ3+S&&EwI^2#@K-ICY_2OWWhDbLQ<534C3dH;aWJn=(Z^e!5HYzoozv2)V<1M2$uTt2RuY%-^b@#)be%`*;CAKY$<|?DfeBErb8w3<3+eRXWxtt5f;dJ9` zO=gj^J6z5a?--1F=ssJ()9=eJ;1>8yf1259Jj&HEp2AbH0~+ynx&g}nobApAj&C1k z(AiAtk58$>iaym1L|pb&Y|wq3B^lR0k-XLXsedMa+)=67Zw2Kou44arTiqMiG2)Q* zgtG&-wCravj7;{^w>5&dQlzi)dmBr0ALv9EDqXja5T{x>ZK7?CnFRol6RP%8qWk02 z1;y|s3~ytadkPkzxPbWqw}T=Y)k9h|rIeV}W*@orlPXb~3oUJCk!`g5`lO*!iNLa@0ZAMljtR+0)EOG99O0E{#$KQ$>wskU=#MYmsDabh>HztG4Ot z40VNak*D)xy@}HL%KKwR>3q#c#Ho#&<8yT3D22UUHel^gN+-2ouYuvbddS`#gq9Q2fMKdV#*l4Ki4rYh`MB1G@HNm&=yQZ zby-@`QdgzVl^{`LubH~S;c`-Svfa(!OlGxTj;0lEY#pQa;RE)>>zcyFW?NC@u5cQ- z{Ta0VZu=hd^RL5q?lq}4x$btB_HQ)YND|!am=BXKK`wIHKzVWUq*}AM*iW>#qvcJu z`?XrK`0VGvT7`zixgh9-mxR~rM!HE)u0VM=<17f>Zrf=i2}BKqWYiV*;rOGawte@U zS{Ii+O$BnLy;f)$z_*MW@FWtMl<6GeC4?vVla0C|{58tJ)A1N8ccoQ!!pGx&VQVu0h6)gZF)%E~nelst@+6G1bx_Ya%E_L^4 zBrC60dDF?sZyh&HhXe1Vnf%`51w}A*cnXW5AMVhP?YCS*5D@kDQ9^zvi~I!SKVLn+ z-vune-EM?nX^w1`LX`E%+oXP+jQi250j8SwajALAGE8&MJJM&v8)P?8)@ZTc#oDFV zTK2&`Z(yqL8mhkqbRFV6N_U98hz#&NNO6>z@sY@iQd|xGPYb2sDTe3D}cO zMPbaU`jiqkQ18&9fK;-fR8a_>?TTVma>HGqCk}0LC(7*c73~!_|$U*2cBKeCRLEU zxLn|O*pmUdj#3|VYIW&2f@*WgG_%5!4pU_CxS1Kajc{%kmHD>m$&U-^G`RAhW;OXz zMfpg~#|Qs6^fcSt{up?#>?FTY5|5HsIgIJcv9`mO5KF28CHFiluh?n$_i4Duc>>MH z>NBk6<&4^|{CC^>V-MMLYNU8dD%u7g>*njZ(Wc@o6ffJqQ|Am-P$tmrv9N?_B)2&< zFc@D{($(a_nm(jU&1Pt#Q>jY6N&scr4I3pw&TuZi09_swPg^!OZ}^^+I!3hF+y*%+ zwdITORw-!24)-jf&U__1KU2?CBzUOzFn-D1%)&S3n;vR$yT8y9#lURJX?a$i+=k(T zm(paxyX4E5aceyi9qxqBf?yYRbd>UXYqN#tu^Allh3)s4dABmYemrBQQ1b}L7b z48q!&#;K?`Kh_I0L}SY$ftq9e`5E52CO~q0JKUU4U zO7CK-5VL8`nbz(RW)KMD+96QechkELv{$t-;O~xp(m@+>`|<9}6YiFdz{!I-j=j3y zHLex4|H5B6tQeU1@Pvv>indE>v=}T9Lk-;aON~#b+A*`F?{8i|jpb>uA$A3B&^Yk+ z%q+0cO#X;-b_wmiVY~NsA5rW>qgErZKh}Qp-K{2bRj_^}cuFq9JJLUnzbTtmM4dy2 zwNn(P__HLTkz7%+&g=;|{NS5n${R0J^yX%M-Y(HIc=|8!15r7Y1Zt;*zSUnyEiD*d zLqkjEklPl%t<;`+=c?s{+7qLqs+R?Z&-3POsp1y5BFhN^TPsmkC~>GLVe6I3wAkeK zE=HINxZNuBex&kn2;?~RO{4l+Fr_8t?+roz&kLhP`qTqODM^7rwG4=2!9{ zzPP>(#t90_LR=6rcof?6t?LF1fbV%r_L9Gb<0-uc;j7y46|? zNESUKaDyQBdR#G3LB6;qs;e z0uR;FbVI#Y=;LCNFz!7T)b)5;=;qiR0hp4*F+mX*^)oISpAAuRh4kJ#H0@#YBOAk` zp~3sN823y`Wj)ZyUSQZG$b&SoN1dW%#pK__wsNMG`J{ZXkh{1;jw}R2DX@CTO4P5* zOy(=qdNps^8`#$H#35`vv5?f?atcD%Xy`~1uF1;|k$T-gHEK6V&wm2pDUz*{E7ne0 zZ*_03c{r1nyM4m6LyJD%jkk7^SSY_+;}0MPIGIg2ZTjW|$L>_pb#3H5F=rz$kK{2k zs7_<%M$k)>bcce;+$@sdaO-ZpTJt+gP^m2>hp6Vhdg<{b^uX4uokYS@?Ef@(uRMmY zz>R(M>$}m+s)kXfn^0uagsJ`M-b0K+cet%lqUKbp72zW|k6e$J6>b4{FtZ_UY#$$c z1HJ0vy0M9_y%KKyn&y>$hd+cl%G(^NwTGL&bq~w6-<{NbHaVP(K(5xDin_|Xs+>Z_I@9B~ zn6NYUAbK>j3%d^2Krlf^>+O$is#b@}Cs26K?~Iq!YimZ8o!InpDoTAB3S{>DxeuT; zTr8ZE_18AI5Q?v~3~8??<(-}EMw5&(dv-tEiWFt< zo_wciE9gcsT$P6{5-KqoRS{&5?VHFDx7PKmE+uMyu#LXtk*J&`PUfzL(U=u-zbM^+ z5`FDe$pT9mx50&zyAhupu7y?VSdOU7olM^pO(v(Bm(cF$l|IjuX<*q^Fvy zwbt(D!s38UCc6p|)y1rEgLxBriHl;RbI*E%uQTeX?BIIZtjn7!SXD>M z2j=3Z$XrjzAJj(!pWfN`p1gqWO)hiZp9=$lk7|$}m!GXWIV9_6)Q!F@GI#j2j(bj& zI&U<(eT13FZ2v`^$^DeBh52Aib4*_qsvcc)N`PT=mDY*Z$gr!S+|6PF;h58htFsDx zV)?IF5q=@cNiX-Oo3TvvnlGq5XJUzWS<2i$=Em6_hnMFF@_HysYTfBuh zbSRK#OkljGc_5%!3`c~1+41@W74L;KzC(o_F*JvEoXDmqY-{<}P%5L3aahc&4X0J6 znVQiBBjF${l5EC)k?rO#?ty^ufH+-EQGt46`2Ow zOB1x%{`mN>AdWIIM!m>hxA#%A_~BC>hhts+pyxe$J z*Zt|ZKzqiROxbOzG6%iU2+%R`p2!gUSP*6+7_hz|6tBlR2Sf;{O>GwpN}HFPB2p+7QCtS%J&}pbj zEsR_2Dw~ibqUdXkYh{RZk0g2kS;x|LXN5y=cB#@^jVcI>`W8acQ?x)$6?m~~c~5XQ z(;!N{y@u&r$dics^zvfW$*)}(`PwY}@wku?8_85HCbT;BC`G!5@2*ZN8q`8BR+4>X zjJ^F1$*}{8y5ZZW4?B^{)ObuX*9-ffPB2`mI~W7OSTXdsC`T^W8{r6;&TSRv5%gjm zCg3SbYHaLrEt@NE!F)Z~EsDAvB$8nnCT>%WCz>ll?p&HfFgU+pwr?)Rz%s=1dU_gv z;2=8~RaDit;Pgd*3DKL*@*Y2exLiI9C;lCjSGdW@WxbP|%B>m>e>)BYfusFR9-AJf zVTsI(8533Ohfoj)M9}GpJ(R;G<>Z^K@bju43)?TEKh&dp7s!>#5Q=Ua*@!wqyuN^C}y=3_lN|@ zLU@u0<4*(lL@(t!Gt<^sp~Es6tXdOPffwF`VzS8fb=V)}|+&V7CI+FJ8x6m(bT+e|5)u6P((dT$)OTw@_S6)rPOhAaaRXmf_*zd$d> zY0=u-a;Z)2?=JJYQxcD}mMw4hIK3!pS>l{xO>te&_SE;zbDolExjHMyO}%nnfOl4t z$5q%y8Wp+dbz3fJ9=XOYrmIhDc6_zIY;_q@bHpxzy=M6Wc&9xa?cN^lV%&K>@~hS? zXnR{4j*JfUI-)s&INBMH_gIVJ?Cv%SO613Xq-F%fzpgEXh_wI-Nhuf>yRJ3(ucEFU z;F`zu6908j{or}o6HFFI+f_diKGeqDAp-URw`Tf%m1prF{R?LdCk3*UC7col2U>x0 zB!zX6TZCXYe7;ZjIwRv6UG^p4u!F)4|jxK#rP1dB$j!r_z0BoM_m)N&bZAC zkPC|k&UmE@-WD8-`;Krlc1J7=8h6Fg=`Qs$JbW^%?Y$`Pi{Q=U)^^M4bcH^#se(p= zkVY&Gu)mMj>h_F#8w3NYV01E82NT7DCV0Fjok?^@-^1xMVh(qgEsug*C|gFqBSOD& zY|&jSPoHE7llw2PO5+Jxglmq;)7=@rZtP;v!DFGfa0wBKKY_=HUa!Yt@%p*~>pIgRS$?*?V z)U%ufKEsUojrZ~G7`7Ituw z&IKVj&EW58!)KJ6XCFyA8Yk%IaKsA4^yh!4J4C@BROb$gQPu@c={I$kpBN$NB61nEx+mUG-*CJOIYdWmw z;Rhrv=QL_7wpzhh{>r~N2)E zB-CQ7s|vvKr|oRy(%GUEn!}|3`t3F90Bh|bMO>L`1VBEC*b>JQ>SIK~oFTa@HyA_i zk9gk%DEg_)SZ@yy1EL@`_LqTWpu&{z-0z5$s`O|_1DqmREHg=#X_)?t7tN%5(d)CD zEJQ<|mK$J>l{>TZqp=|b?>r*p9UIF!g^MHrsa?p{+SsCVKH_LVaS-Yac2Z$|n-2hf zVb$~N60OSJc22a+t3X6cLrQJ^`4T<#RIsMWbeGPz2j?_3uDxMt7D>}fo&ZVWa|Zw` z=dB#4RC(kUj-zc#=CbaYN8Lj)Y`t&Bs$yVd65$>62U;V5#1Qa&hahhl75G{iZ zT=faXVvP26AC7_9=;e|Z-yYTYhUcDmMEa8E7}0o_WmOAO#}W$8O@Rq3hovxRDs8ma zg-|9>ELy&-=3CnqO|)NVqVtl%NlzJ{<4i0^(J^rv1;I1S5P-r|+1=V;V$S5*E&+A$ zl%lS0$nZsh0dOsN3qq-~T}(=YlgC9rLI`?CZ``OYq= z(p*2Jbp@j7Tb`jA%SPSUdh2qe0@yL(z(FnEbEZRqU{qSTCjGK-~b z2QY0V&*a7>%!!;}Wjyxw&bY&76pWhyx?ncaU)F;FCO^|(t$N27;+(;>M6FG@@!DNs z>%QXSc+*3O+)V}APMx!cK} z4_;_MnnlC`RjX55K*ovBSjh({c(!p($fKO&)~5{FVpV?k&sCah>xhN`1K>Cxs`vXI z-(EpVKJ-R}<`f7(-=h4!tQt$ z{S25*=zOqhGEL6pd_bDW?Ge|AI^qQNsnL&&$2?QN?bFyCmE$ZF4o`Yi!YU)sb=sRz z>q|2wrp?c{N~o(c5pdXT$DAx47)+N%wrCWy&9VXUH8fT35ijGzbDExAGxJgjqI<_X zv6A=A)Y(%-auEk}m4+!(h4K-_N|ifoj}C0d@|izIFh@3+dr+sT`IoT@&B~^^6tzj* zA3`S!)ilaNXO!Eh>uV3z3sSCZGDk}HLV4em40C+>&t{SE^1vfBTZbI9N^n9B z)l89yZLis%S!(?%WHTt8CsH8Ca|>NW1XPxMOk`eAe7_+)5KX4Lyr{u1@XeR+#OnKp zO8sNE+pm*C(iMD;a(wcSEh0rg<*jIP6G?`TsYa_Ft%U~{2UDYCZ<}SOohnjI=Bovl z4<>ops?Cc$bw*O0XP2XLlNH`E%0O1w7R5T<1JFzyU7uQHW%h_R>F(FkKv~7xuNV5r zh!%$tgbHQq6vHaD5kMKUzMp{`M3#|V(s}Cqa@r9$w}p&3F5QKR2rsBa;+)mpP3Kz( z013QtrsMeZBf)8$B@vD_>B``vGw%v70^El9wCX&!F2Z&hkbo zK#ZkfBl+rZNd|Rtf9st!TC`e|*-JU-R|p5k)0MS$hit>j03y^><5>V80n>l_4*`I( zGA&gKfY}$l=SSiNrq*zmkBYUOt-ZPDq!t2*r}emTDW7c(zu!SQ`>xDvGb?1ZKTRc6 z2c!i>b4TNKqrVY0(p2wH4BQ;ICH+jqG_EsUurpSOkF~I_*-K_v6RqG%O-Gd2UMeK2 zwyrgt&|`HY{5dE-e8y)HQfY_9gm$n!HQ*N+W%glC4@AKq3sX36G_m;5bN;TXc=EICajZ0%Jn2{`C8~ zs$9{A${a>fpkU>86XG0h6^@qLj`Ved+s+*3}Yz7ECn&a8O5LE5_5hzLmVRQc+^Q4 z#o@G0HY+Y~5w8W_cmje0mi1C!o*WZ(IHG8by<=dX0cb)MI(ZU0m#zNp8-&)EUoEGZH$?UeA#x$U@5V~nm;~a7IRQ)%;>~fnme#aDvSC1 zt-k~#pp=)p-S1);E*Do+94yHPlSJ>7a|vbS3ryOeWTe;^X=J3(Q=}Aa=0cU0S)lq+ zFhI!U@O(+-AZwMsurQTlI{IF&$sdNjNOii=J7fF!3l-$>`PuCx5qF37F^=F*H&4U8 z%j9qzkaa9FMo?-p>V7}ayHN`vBC4fx>s8Z*T)Ys2O=@T-_!5m8S~bDmWTjv~hCFtL z_>pJM60MntL@fSC1!yHS$%fOpwm8f+RleCUF9vVXEs0YhhQfFS(2BA}oo1>ZQSxft z8rV%?BzA9Yez$~tl*HL+AMukca~Q%4cK9mDZ8$zmUpGsvo?NMJ9rF>+ijH zX^m{!+E6gqv^~CxZS2)vZUtR?SMMpP7aSLT5HMl|CT?3(?WP_~lm%jj1_EuAQi*P# z?XlWys&jvTG@?H^W=yB&o$)OsCf9+h4kT4h>4N%K9pwKU037z9^Y=eIBIWIG$=DyI z8Td~m6(DKCbp{hGB4uF9m7Fz8EcgUgqSL77qLeS7zBH!@)al9L1(;^kIifMLn`H`V zkBxxnG^o+$5d{MyU#Ca1uFlpkC&j|H3$~h*6jo7>UPSj`)(t*RY}-x?>(DdurxC|j zz!}$F$d_Qmx(lMC?Zu`{Txx7Bh?3pF@9D{K6Ga4jrRzuRWK@|gtlM0XIn7v_1PHHu z<92@%uhbvaLoFD*&>KKdxKIB!lE5zU5qHGuTJ3uD)o|2kecGLfCh`65_Ac&{IW6bQ zk)^z>wvT2xr;yairP1={^AN^GMUPHV%+(C3BhChnme{ZFQB@e!>+{X#DyOsxoJ$2P zsXln$u4*+vILnwhOx$z0`YETZk&FCVaTXHo2>uuW-JI!pYoF;hdK4-hkRG}j*XB2R z0{3ToDgvSxdiY+#9K%-T)iRpTDZPrx=j%zZ^a-d8 zgbra3b;gI#8KtaHC1EyOq&!r2mnm`MU%}JHfv;Gs(l0Xs_#aeC)1KwEC}_<3yOXE3 za1eBcXUuGVa1VlS1xN+$$V_?`h7-=4&UmsVvilSRL_(3S$z>USk zr?x?Ti7ouACoF-(hJHgS8ws1k$v50Khttdr$^DtceWxTl9NiSl4S{HBf$lDWOS|2< zl3;ZmC^1avE)?9``H+U8XvRAAq_zHIaa?=ArEUgP(;@|fz8Mm=t(jG_h&q;_+5sNJL0J>k9NoL(<44 zwTiX`??`gF;y;qHq{D>yPk$+TV+^ApMXH8aq#B~NKa-c|i1Z};G37;Wq++Xf4kieL zj%}?xTfErOF*;4Lm@ zgjAib6|PPGv8Y9y%JE6uZf+G9(8Ue(c~ALf4&ot|`f2ZfsIitaJaXyhhGCj$5*9L< z&wWy(1WHKUmKXX(zFNMSE0LbIq=bUU&Fsw>Qt`3|za9fXpfI`8Jkio(YMz!McAkO= z)3Wu5Y-!fcY!ds>A`q-!gSB_bTphw1*pEpEag2*_hjarfN-ovSh*l&(Qmqeqk$^%m zhd?V$8-^+6S_zKIBGxrP2}G$1s8W5>5hRK3Lz)Vk&ex0VI>zlc zdc@&|*0BvB$M}&jzHVLM@d;SLi7o;5nRWu{o2bG4s~tc{DYp%Qq%KDKBwzsQ>%8`|1Ll+eQ2GDs8oshx>D~iSkAB=v#-6OzZ

b16>X`Y@U+ zPHepNyj>xX+{?JZW3qmwU0M(5^Z2Xu^Jm0ol{=gUq=DUAj<`Clpg=O4ZF&71nTzRt7Tpt8@ggR`#&1Qu{E*$n5@01|k4L6ou!jy z`N4-dg}xRFj^v1!Wye-Z_=|cB!K?UuavqBUfx`(Se(a57F37 zR8GzKzdy$3Hoo5THMI;u8ogx6e^Zg~5iQS;mYR}a^N&seV#h3*W>z7~6Rrg1*MAI>)*sN9=CubNDEj{w zpZz(l(BE*8x?bd=_QyU7kb(d-)RvfZCRug${}@fG6*!<65`-Jml6NnndHu&;(0&6< zZgF1{ZLY!r^glN)7z{@@pt~)K+q=Wrt?;7hk5!MD1;_=2Tkmw|TMvxl*&PW43!A+J@gKTlf^=|9L=X>iC=d0SHA_G>387@|6bMDz^cyL*BfHZ_|wRM z!2t3b+P@zDuSNhX1U5>p4mIaLRY0D*%X2}p8n5no4%nBdf7=%@z{!Im4oBluNBmd! z>49thr9U#!>A#RV|FN}rz}*7s9j}knMzVU1|GmtiJ)d5_2wkn98D^;l1Ac@BzX+7_ HX?p!XRQQG> literal 0 HcmV?d00001 diff --git a/latest/ug/images/dashboard-token-auth.png b/latest/ug/images/dashboard-token-auth.png new file mode 100644 index 0000000000000000000000000000000000000000..f41fcd758ad0cdb078e05779fb85689a1fa13069 GIT binary patch literal 36789 zcmeFZcTkgS`!4FTp<+isq$!9XRltDsr3g`~lu!dGy+|jt08tT9kX}MZL`niA5NaS0 z3%$3{i*yLRgg_v0!dm+M*7u!#&YAtknfdM6I|IW@hBxn1uKT*nbKQJ+rUATg?#8)e z$Btci`sA_pv14>B$BrF8cIG(kovv-AHrkIr+_iy^j-lGw7HGemw0Wrh@Yu1U2>SgO zr)a;Qb$Mdwe(V?%&(ZfEPqlBa9Xl4G^7QdTU2oIn(J(I%A$8|)93NeZ!SpqXIRM0r z7T=o%v&8CI8x22P_9L7UFTNIU$HepM%_m2{Mn1-GDq0_cLaz6i^V`L}7SVp35!cNh zZcw88Q0luSiv%e|zJN%m4YK|5cWt^(UC9s)%sy_&|-)dc4pe(%x8* z%wfdL!Wj1EPMYgO%{%|t+6uwX31IsUW4lDI=BSAzynC*HFRQ|k%+>(+MA6F46M%&x z1#aVB39-I@|Mk=#3t5X?J(^bk0S^^{Y<{@(;ot$o54Rb`n6z*+%D2eMrV7A+coQzYFfpfHtWJ4Cq%-!F z4tDI}F62jRC%nP>(xN`o!*t5f3;@7VBt{0>&LhC$p z`WCv0bgU2PTjn1rm4gal=j2>smAc`7HCN+qh*egae9}T>`p{wTRG66kgTuiZ$&Qcb zk@OP4`u0>7zuCc^-nD|^4!o7xAVF$mzXi4X?WEL7{w15f4FvW)+8oBZu#v;YabtHU za8ru4_TyVH^30+AWLMv78O2OoPGd)=AllnD_^L+|tt zDmU=b_DGV$BxKaMO^?`)!^(g$oXe`P1qf@kiE;xa=1w1L(fGLD`f~a*$Fjhs^Dxny z3Vs1&3H3(I=*vaI)7oeMVfezK2_s;8BC}2X^rs>Qy2)rghUTnnY2k~_oPw?qFH#RD zzc$^H8}lfF&No4Hm*L_ z>%|l|0(fch_RpU={)7B1%ps;rEjUQUVca+gzvh-B*=&%@m$O^C()ox^VWB6eai@dI z0>I5}9sngh-rp*Bns=1X8+x%c;M_WGy#n3eMDNB>c`ZkQ(BSgwk%bG)IvlOJOGI1r zB9phiFu;I{XKU>9JJ67GDYTfk>3}X8l%h6Yz%qW=P})KbsLKzw`!g4;#z1+?hhv@O z_;ysde}%pT=6os#>0|1_Jg(n&Q5t@K8xdJB+OBe=3{I@!tv9IcwO?J^GEQ|EVXVHTn7tDc{~jDfE4>yrRW} zFU&(Qr+J&=RCJ1oy=k4h%EPCZ!Uhl`7!F*a{Pl!lXo;Sj)SABG*4p4R8{5NmSHiRZ zn7hm!UN~igbANbE>x1Mq~D3UaELuQnBC`Zw>6nJSWo`3D)l4%bU(9~0#CArS;EWO)YaS; z0}F~}33P`c+0aPgs;}5TV+bv2Q5I~k*1DNqYhBtyH9g_dO6p9p8`x!H&iNf-=7Z>h z7CvpTHZNT@3>zZ;BEuK;@&bwUMRf4%r<5Y@syDBt+z_V-BY11~Ldc)vVW!V2+!0dz zEUco&J$PR)kLgC|D#g`^b4n{)xhTanY%elZ(PXTm$O5mWSZUOI=Vho*VEp?p1xz80 zOq%l?l?Iz!eK({3V~Aq3A?hxelY`3lnO9SMc{fhO7)1vq*-y=C8r1fT9e)r{Jy8E68f{0-4J6k>*IE;3#{D{ zwSa-P`Eifcu*Q$64y*x-&wZ7^Ltfo9&qO)o0#XFxFfs$`@1yNtaIH-w6rKBr1i~rS3FBs-2sFn&A=QxKi;IWK&a17IA?(oumN$ z{IosG2r&)*=r-w&2qKJxZf8}|DXf&bC1oZ?UAnkkA&y)D+qZ6Nx0Q#S4Wtn;zlSNH z`(wlwZlmdmk(HqTLSKeWT4`nNmlQld!b2~(*WRAd zCdhrpHyFcQzGY!twBz8BH7ByJqoSPf8gUEKbrXm*Ycv?H7MbPk^JFJNvKL zyp!Bhq*3q<{|Fcr$S;#R4&5g)MJ$}(y!5u*`w=+-Z#Gv;zo`2UXL$MXLapw!b{Jib zuRi?^&896ghHLGt);SSP#tXqkr+*Z$nu*0E3`#ZvIS4~F8!odgn(ZPN&Lw^U+Y@3= zz(Axk{m=5Xyfz1;G7o#KzC^prG2A>%+HcHP*v4GXL+}}e>PVsq( z<5v}--{w}Wo+-Q{YLt(z0Xtu;Lw(XYFIsy@N zTIzSWFT4NUV(4R_)#aDL>kbao_g1Y}UJR==o$xMEMXS)IA$!6&S z6S)zbFE#NS53^MjJOI)8=OqSr1{NaP6)Lk9>5MBmM!hDAZvmd&OV{WuSVfb|(bpdw zeppHO|0J21sF?mt7!)hJJxJ%DC+VSEun1lsdS$x4-o;(jdfy{boPBi{cc>*=WD@qR zql1-sY`aGMW^jl!rv`dkuW%0W<3~W?nM8PCE94RR42PhM{20u04Y7RW{iHa6E8Pez;a)6?@$3X_I*WCD91{N*??kB0TQ(NY^#j@u1!t|U=4HS>A+!&Y{qT;iD07r^Ti!5ipDy+Cc~*A0ZDqa- zH_j@+Z#a0&Pa5OH1#Uruva^;qKjIq3eYHS@p1FvHed~ee4WE3ZmLIzzmJ=@(OO520 zDGWwLuW^w^at3c_BMz6os$|~anqB?47?WwinWn|s_k@XeR=e&I%vISmz+v%FHWM@d zAI@7k`ySlhlw%+OC+V$7*=O#+_ee|UY6o*$n56z_LuZ?d#RUkH3gAQV6^{K1=u3lm zKoSdeGUfpAO(`|Q`-{ymU81`pWptf67}$}@vOlo4P)x)(2o z`}vhP8>(Fx*5|ms@+>CoBXwOJ`cfVM&tU4Go0F`IHS-f&t1Zr$J5j3y7KYrPa(q+1 zzxZNmDk@E1o@GH>m5qIoF?k7YvKcsh7-$oLH0USQPSEm$t?jElWG|bsp?-^ME|@vC zSDdP+{#b|h&WNM@lW!llv+!&Wh8D>84a2|;9k8<1w&(QWA5&$-OB|s>yA6d!k0;<^NMt_}^~{8V)5d z(kfv`FPB^Jqf*+@%V}EskH4?JhJpG2zB*PBrFv8}J9=@W7bjO zjrMxQiq-x5>X-}nf13}LNW}Jbb*+bwMfFFV&mZjD90khM6yXYxm7slr04Bv+7g0U6 z6TimIW8>zAU05 zkQf_Qpe%9+j{AR^T5K7r!J_;L9nb)O%bz`cp@Bav%#W|5cMQ*8`B7&e8kV4~CNg_< z^Vh=t`IL`Vrjd|HQ;9ez$#O2k&29lj$Oo%)EONr(*9Ee#=!7iPfz3_3e=onvBQ0$2 zSb#_rg$yVdhn7r{#xD^wgw0h%s}odP1yni}f9>P*)5+e#q{+q|bj11g_z%7QFph4; zP3~-F_YXcwXJuu6ZQ|Ef$#pQ1IhFfp@Y!_3n|Ln5ZQA%ku0EFXeTHEmNyhS2WE{Lr zyC-S*Sf1hcemlPTYiZMQ@dp%48E5rK9v#cr?)>+VcPrRSDS1dI#>0^Gy32CyH)k1n z-n%`vbE@X7>ALPsS;=c|Mpf?FQMJ6Mek6pvjrjVzoMqIZ_SZF=T|v(_?%&8rrYfEN%%+uekb+Jz>{1(kO&La4 ze;$FpwXciYWO9^^?Y4N^2~M0Mxwo`5&-Jlya_&fbyUlg`=DdlmztzwhMPF5S(^=FZj`_r-`jo9m5W zdn+rex|HEQC;O3-?J_AwE329Em-0dlzjml%}A%!_nP6>YWmG% zW{xzFwAYe%@}T%;h~%}Cv=L@@i#i|kAj$L8pa?0#^8>9@^fJl ziTec1tf!JVH^DZa8CIP!jbJg)PiyD>8?|$Ob$7%xopFQE@|yJ(L~9gbeKqZB?_v(h z(EqV|!5EKKO_+)r#%8fSCU67zn`^)751({Luvc?S$_*T}L6#5qu)=;{Pl3y~8H+=jSp zvFZn^VGjMx@oR)5c+Su7Xqu|R{0)aAOvAAP2dNRl`L^?V=+9SaR;*aQEnsf?7ijc8 zrF>{@MPv`1>NnLgy`u}3a_*{EtcPSrVa4_wa9a!C3n*a+2t`)rwkpi`WbA$jy3M$f zq_9RCC%dzSW^dn=>`@3~p=E9emB5>0V1#1qp|Hqd!yrKitVQ%fHCI zWqMjW?tj8%iMjv2)dkD--^TC$BSKK&hx>j$c!%*0O(xxjKgnMHTCcQ;%8!ggRBTXA zmC9&dB)Y~Fl+UC!V?t!imI>)O-xtCpLm9C?Q+Cu{v0E~o7f8HY4J=k`)9rtuZiVz| zL!d^2hPxAvEOMx~sRjz=xc$mX3yOvArg_o#p29<;;j!vVJRsF@al|r&FRP*BLDae7 z4O{BMkczAD42HK~P5$74njIm>jb5{%-%2AxoXIC87v?Xfd4Ww`Qrs6jR?2tqCnGl` z_h5UGfKBwWFS7)S7HEC1TH|qPG7fEvyX}s&Tfm{4+%;A^J%(fUM4GhRj9Nbyzi<2_ zT&E#%PE6YN%XU5iud65MuX8EcFgq8TVrPd&I#J8xZ&9(=Z7P{{%Y_F3ptGs(ThoLb zK`qkBbX#*xB>3$1AYd+SUl&$ud6#CGZFx7i$EstW;#=1#*hyQEE9p&DzmxsTT(f{- zw$<8dH`mQrKgI1DUmGREIPaNo(u4 zk_J96k7&qqsAkUbc=Lg;X*0v5Dt4&}^qqG>$B2X&`QEbzNlf;y=L%n>N5#{HI6J51 zpQy@QuvU&}sbZ?*%;gF%s8YVBBRW?Gl`C)C8^X&{KX3r9@Zjjpj>B=K17Iv^rQ(N7 zQ+^VxyxeA_`X>cV{iGC8dA{vq@fkyU4R)Kdmf26Y^dI|?g^wjdyH@UKrltP_z?? zV@)otz}`M=7l2VKCQf$^WW}q+(anyGzY*V36)T>rF`O8w(&#ixYStJHXA<(M)F?eS zvi+10vS5`s1sMw&#rRmK6(-#2{n=9*m;EVN&BR97;I+TYou~P}Me4Ht)p^fEt9);n z->_aYNcDP-&L32`JE#lnY5T|_S!AT9f_{LZATgLcJ+`EL{8J6bK&HV_>lC~BfF^a% zvwL{(R;w)XDa}WQP(~{u^`=*)uy_BtDawWHGokPE#r$&EV?N7|E zs_n!shGIjk-())hL*r#>pgHBV_r<<$TMYZ716RWc$T*#jD!6}2&XOqY{_WgSp!idB zLa5{9!lFq~$S7fxdHfzNj%aDQvv5{AJUf|1&dIzqA=XrM(8R%>wWM)HVoFVstm=eO z9XOo%Y%{B+Uintt{jS>f>*wa?P=TCq@s=5kjoN|lHJDoH(lMPbxiQ!b7zBa-NE}ll z6!Zg9`V}{ogc%uJcc-;y8uRoxyEx@GM9?!d{u#GAtw}4$r`s91&fv0U8Po|Et09^N zY%oRYVT>f!7{;#)s}I{fWeaP|$6yS-06d5Ol0BZE4m?TI(HjD&>gqA?>(<^A4av-* zO-xRbXuCML{=DL|>3MGbR@hRMNm*p!w1JyH4g_~#Bij^A&&-&xItvU$oC}fKF&4;^ zzn^N41d&yIJ3t0iK&DTWcehZ<^Bb4ghbrdlKfT#rj-Rzq{ZU;@d}Q8ts#HDa>W~lGq~S)j)lyulV@okL_L`>67b{tqIs`|MA0n@NYKGyc7U6DdkXS%L&npa z{Xx}J_gJ>kZ2k5;(D41oOv#02-a^-8OCNMU_8iAl#sTG})!O;zWJ>_DuOGIv** zqlPTPMB_=qX&>zHBkCzQ4^>Oh$4Z~j2-#=C#%1}G48^gex%q9qiCt$AsjRzvV<4$O z{@dE3klW%KB5si9LN7kpFT1UkBHzhsOGJL07Bwo!VaV5DuP8KG9Cqjr(o}m=(+r z;+R?CQ1ZZYC97$sc+|t6z5cEN!B}QpP=-AP51x^NXw7x611nulS+xWu5Am5gmfaD3 zjpzTS*NBV?56uv=>9qxKRp{EefV{w57_`6suxGg5{yb^OJR>AA}x_y87uht z2#&~N$I__ReY4{NAOV*~DQWK$|7@octA$dAq<@}`s;_mh$+{XfK*kuZJx##^X zj~|B>sxCVi0bmAT$kn0rZDp!ezf|>2cInrwy$xRLJ%I>g{n9q3p5BttEnTwAXgz-z z*gGd{vyTyT(mg-F%rJoT!nqKf8&}!pkv_iGi*@ex?s?xl-rqf*)liFq?)e{fn0h^d zcR>&vrcm)j`_!FW#R@-*y{@RU0idF$Lf~W5^#gW8ZiEruQ9DESc2J5{6`w4C-0EEAK&)b#8<&DQ%j)} zC>PGR@>CwPZ)ko%3!#auH;C}ub0^D6lu=>gJQf!F)l`x5Uh0;P!j%+EQlu+7vtPNY1_Lm@7{fOE?KNle@tblFaf2#1jP z;e|a`>V?76POY-i#V)?VPDl`<4Ks<9` zA`qVWP%Wo1+;fSoonvl9yGiDiS&h$h6Mpk{sHaQDt8KV(r+01oQWEC-cK@H>GqS#d zTuZGy!rl<4VFz60+4`K-uQ1J0?)-%I%f+Wr(oOsyxWdp$6&K;|<85fD8g7qq(9&(P zmMT|t{2L~AS|>FhJT8NZD^>rF^*{m0{CtZ!oTGP*+ntD?7FnV1eo89mTFLh9D{bdZ zJI##cpGxh-_VHwo)nnMqvLp;qMKmh~0)3kPvQe;?D799T-6VA=<*9n|Dk9TefY&(z zybmg?^7QUME1|uy?c$*eyuctCR!}G;5D^w7H&P_*8hYlM|7ZA=ix6|t8Y8%KWu}Qu z)kJ^Pw}F+pwqxN0dvP_}=R`I2=Bxl$F6z**oa!nw=P+!`lTw;_!n9pymH}-%=-EbH zZt)`3ln9h|CVyIfO{SXnED+-gKrQW~<$3z8HQS;h3%jW%(i432&dJ3XlCdU4j_lcC zq3Ody7>ppNT-o#=BM%KPaLUc97kZQ%cpNeh8omJ&8@p2H9>129kM~_!-cqfS#+T-o z+FRL#w$_Ibd}bTQmc~c>xI?a5IHRsu=+G$RI>pE;_$^CJfj# zBzx5gdd|$rCigAq&Q<=?DQQ&J~_w6&0DTb|` znbDX+eQ3EMTec1z)6!n6iSBcf^Q&)tpE~BJiiOPB&o&YrFqgQ)gk@9iW3&u3XUOk1}EM{#yw}npwFp1l*`&wisRT&Pg2kD!{Q7`FH@_65Opm3&0 z@nC=drWNr)p?KUkFofV}&UPibMW?{tY2sub(gCTcJ66s+tTa^SE6KHYfvNS2rekX{ z4{)wGj(*kSq1V~F6~WV`6Yh>G_MY7&4~1204nz6>B-@&pi5m zVXF9@jC5h8!vre(`3GWKr0*+>xk&ov(Ww#R=Askx+xH`6gFMqxKC|O~ZbvY239#w% z02g=7OoIwSs``Qbji~UXn_h~D0=r(I3&RZ*P3&n*LtWSj$%@-9!6XF~Wma`6K6Quo4ic zj(Twm`gp=vBHK)cqUUktg?*?c^c8e5xXCKPg7l~ug3)|_Zn*kw6jh`I1oFatHhrVe zxn~9_D3;tJ)@JhFh4a^qPl;IX@-=cc&lR)m5N(a|YiE1&fuBfx!-j-4iT(L)_;XAf@@`BKZ;gEjS;0#*nhsbq8(WNv> z)@`>*7pqDM9*u|AuGrZ;0wF;Wm%_=0eNuM&1+rz|V)i6X^;6)W*0aL8@Q7Ds>GGd2 ze^#y~1P#MhRL5f9%rn!V&wMLXyK(|kb>rOpNygjo70VLKh5@T zNbLmQ;2qM=keWUz6*1Mm!JWT)arZ^v_w-YS?P`_FG;3OCj#f5Ms%t4>_s<%`Lv!+R zMCd`fGyAY8cF>}4s8ptc$PX`=rCEzma&p~elM`6x)1mZ2vPKy9WFwlf+^Z5F$TCum zYrEp>3)IF(PHl}tc}V@e8%XHB0<92k5Np!k_?>-*r_|u_NK#$tE2CG!ppM&z=S<|w z+hsRB3mnvDCXqh{%7V|hy?gFa@~3KR&Ao#LA@Ue>HC}EWay#c@2-{M26edp%D(|;u}vlkx_#Ssd4mY zB|nPvyR;c0DdH;^1h!AZ(%F};vSQR7`)!vCKpzdwiW?YlSts*Wx;E%nWTom}COjHe zFnVtiH{B=T0vd5#7%=dCv(qgnN)LB87(C&?Ws~|D6kR;+e=Q_3l&t#Eq2PO^S(JKw zUfurHRK`e!IWHuGIpA$WHRjIX?xTkJCRup6#`Ey_nc(fa4yX0kw=uGHB!MabyK02P zf^E?8@b0UZzPctqb?Vs>mos$gMp(R_Ig5FM-|i~)xDRcuoMY;Fx1v#Clk^plnHRwW z6Q8}NlTT4BR%lK6^mF-^O?%$rwKCu}oK>a((FmT<#%f-W@^g&x!i{CNasE-LeL$jY zfiM4)G-Pd7x)Di@cHpYucHhKg)QFUC^kiJj;X~Ti!9}0-Y;v(l1+Rydt(!1O*S(4l zxni;VuxicPV(t>_-q04%n9nCEMU{%#lcA+$)txrWq9?}Ot!)$pWDpjkQ4pVMs7m%h zZyGOb>(DpD`eP=2s7y%iRNjcqOhmY@{mqzzaasi$@Q!jR6SMY!;(Y~rCdP*g@@XsJ zKC_dC2&^n3=X8Jc4=#j`+->O3W(%Jti$DdTy;g4Lou49&iTm|M@=yN4v7UxYoQT92 zV!ThJTQm3EPNsN+lv7Yjzhxof|4_;kF{?d8 zhIl(>5}Ko@9x>{|gh{ZfD4p7~vnu%xmJ{I{SB(V)t=p#e2L+@6KIYjux_Po*sQ$z@ z{9AeyBn$yoV?6G*G2d*g6CCQ{yaQI%u~6i7D66Gb6vl-n8ktr8R7dmQ;4QnaUwoUb zfGt@q?N%_7MW6Hv>GOSO&k9(YEX=niq8+eIqe-41_Iw_T%Jt zq1b`f4LZ;*IrSe<+ zEs|`!RWu>xyZgfY$ywW7$;D@RM&cDA<#3)x7W2A%+_Tz#rwm>X6y&M&v6iz_Z*OSE z!~`qTNZuzFzGZdAP*uOUAs^}#)lFFPS^CBx4e@Y-*E-jyOzIf|VuS}$zG^Am+9l)O z-auN_7bO{lmQ+Kx*Fq}$crfqJ|e6uz@9H&&!h+BEhF6$DiN@#^#nS=7?K#r7KJ$`Q`Vr%^P1?H|u~X@))zW2$w}OCuWJ{hM9Ov z*iD1Rj4Gt6_oe34FQ9mWbBjkFd`nN;FfiR1cxj|3FumVFxfwJY$uRw(^&DzrruhAI zvGX={H-FB{;ow$Dts15H2f9}TZ*21FB{<}IG*Ii}#wrF<`O#B!NmNAWUc)js_3C&5>WWZ%l-LBZT3}2Hn(q87Nbw@ zT2E=M?tbZxoz})5SoS+O=O|{RX-d;%o9(mU2wwJi<1!2_Oy3)duTe;;?o6uetnAQ8 zn~hQhTx~mt?fp>E>V`N-?6|cG8C5`NQh zHhsHe@N15UPBypWRmWm7{jk^q8K#c~wxg-H5DiYi8kH~8pI>6jv^}lZj{JY7!}18b zTR(x9T+B+83?*!-ZtLy7qgadP4c^WO0;+mC_1u$^#+Wq*SdMR5d!4S*bwF%*&3201 z>9V&PJhk_c!Mx$LdmjMf0;F>(Nf2^sn>6~9^uh$0^7OzuC(YMNmO2WF{D1(18U5Vc z94tNTiyQYP{7_j7pi9g28&Z24AA3tVnakWnb@H6JW3cU`-SH!WAAos&;k+4BMqt7T z&*bT@)JLr#*8tVWl26T(ho{aBoBCRM`jYh%ghuX#_?z&QsGPzixDqomExyvRNgs^+Y(=rc7b- zCbQ=?{tD=|furD8KXk_ROY@#CZ>{|qO^z0^#&%|DWzAWvhsSYukJg7xY2QG&YQc<8 z0WHw!rIQVfz(!Vn*f4KPmI^%!%(?-==zsqm)&P%gV?)e|90*4wg-{hX|Oz}R1;1O zhlA<6t3KHQ7&nYNf_s5y(q@kXrW1wjt$^-}^M(`2=B3pWVJ1GUPfFiK=QLq;X(zGs z6FG=9nTiIy3*4B-p=!Qukp4Jh-~&irC6!X%n^qvBNtBOXu&#kTv-mOaRoaFqL$zMkSRVd_-8U%7}nD>9N~8t+(;;A>QzR99pf`f@aZ zqzj*;^zY0T;ZiI>m_9$#nwsi5m}!kP%YD>0P)E-tJ&D~4fkq1`>W8CjKfWkrMja(+VmM40}}I2O}A#8 zBa#g%{*tbNQj0enW2P_uv=>z^alxNzwQ0r*+%{qf3WD_8I<%s<8^@7rXU{EQjxeac zB{)*szH-eRkho}U{s_8QTc+=^Cxid~(#_R#BCvsoGt0q^;U|OB9p4{*e!lY$R*Qw}{(+iRqVRQ<;j%8uiUDXEdF?3}cNqxn%CZrI2KAai%+t{Y;vf^AHWCzpQh zb}2OYz~Hv0D=7#BfIX!NGAtCST&s8Q#Cg>W@i)xMhBTTOviXGNt3O8Wa;#!K81+Re zpv!mAOFZ-_rXaXJEfFv6hJ_;&+><3A9*H^3Pp?XixWU@7E_N!6CN?uzOuq%HV!dnzW7Rk2 zndznDRHuGGFGEY!ijGpXBAMLr=gsJ98=W89RH=i;yriLh0I5EN60%2T60K=1 z#SK{s#b~m}w7B~jUK?2w6-qP)FSKj0Cm~+x0Q>bcM($zt)xyu(3&u-zEILSerPlIG zOWT`Y2->HW{>xv28E%sc2HG41HXe)2y0Dwr{?X>l;_avIK-lO#NEn`&QC}o`Ay$LM zol81UPSvv+?HBgCJC>Kge99o>1&v+PgTCbQEnLYVjvT;iBQKhYG95Gm^^~pcuE57M z@FjVh#w|v9dY%$3TRGxzezcHd>gMBqRiOoimRs9`+;ruoAI^>M7!aj0*O*Gz#7D;w zQK13Zo539r;cZkdiObm7C(4e{9Ns`Cl{B6Yuw6*(usr)$oswKy4(*elrD=UCdEiOq zS6j2{i!NRlBQd*Yz=)m7hdc{ofuG<`R2>&(_#Ph@Jkfo|{o!<3P_=`Q~9$B;rq)XE&apAjax69RXm5hcVO<7U|D2Hd`hLbwuLAX`QU{p(YO}F zQ;44&(IW|6$GOEE>4?t#d!}`S?IL58Vf#@^7^5?eSs!rjBbIHb+)p-qG9u(SD4&Pi zuJrm4qQ#QQ=lrJg4;}>c+~A3#{OR(} zYGJYzAD`TIu-ra&Sv2R(ABL)`BU>M4eAE**TR#7^j<9PQaf@|g=3MEGO5Bi#v^opS z4IG(Qn9n?<$N?c8d`TtBFs3Y+4PKmihw!Y)D}v9vW!Co1TS!x>k9u9|{Mm^g5RZ&g z0NBkxU=JZvhRmm_eolS@EfjSmsK z(+oXS!)#{VeQZeFjG|5r6+2k-y)~giVpId94^D0r<^dZY$L->fH z-m!%1Zio-lJ*llw=&@s8d7|x+2vH|uyI*BjRc9Tk`RuVjO~o1(S4Eu(>?7`GRvcdQ ze~7=TJk39GYnG{MfZea{Xf7 z*`w_Ae^$#X_)`d()~b}T_Tkk^Z%*%_^Q zmR>IK{IO>rX^P9A58sbjoLh9qvmN7OIeMtXZwcK0q}&9N?vl2B=2DVKjwY+y3`-O8IrQ^CR zP68l3N3uEnyi?%n=gS;ra<6}Ug&vnnAWA@5HH(GD#o(N`5})-(LZV^dW@w4kF6J=!}k@CWecPrSow(64u|45_) z;%J}Sdup(4y>~l^rVFKsJrlde*u7$dl_f_3dHGB6ZNwSvF6e$67|D;@sFC{yK_!+I zeD*lJp(jT=(u4|V5sp(Qf2rtVE3})ltdp3b3oVS$j-9)0-%!Oi9c5Y7`?f7|<|E&i z#axjjCo=;*i9BmO*}ZjsUBL-UtK^pNYaOJdsK&XE&zg~o(Xk+Ow zfgqn_775qen`X2+=Ck@b%PiSzc&H#aFdx|*R3CL#LyCeV0DEgiueu}LEO+IE+`RwH zwx=5YOAQP!zX~PC-lLtL`qP#Nn(TW)w@!U=#&J)~eb;N8s%24IHAeX2wx!U^4(F+L zozo_rLK*&s#Vd5=RocY59c?<&mYZvm6x?wEs6(}GS}DUSDtYIED|x2{uF<5M#|=l$ zUR2ogfVBy(tkeCy_%-}0ci~75xIIpu-`%#3ww3PvFs=Z-RbM1{gbhb+g5Lhxm&yxT z0fkGL;n3r}GYTh3G_enZ8zNDT+=dyK%Nlzb*A^H3TR1K3%tKna3t_karT@G@3dPwR zMP=xoIK*sS+@w2UpQnDlS;ou}l&Pt3=(uj!fkSu(#HAX?=_kgUK|8YFE$_{cay&in z^Wi*WisqM=!ol`OLDF^5Fa7^BdzB?0M52y*DLtzCGfs^UKRI-&^Z=5hLhP(pB1$1Q zmUUIj51J}eAhJh_8JccxJ|vHOa|Kb|B~Y=Som0IC&K%Urb19n7*7*iN(Yhd8%pJSJQqgKNo<%m9@wIyEhp8L+JP~Wc~ls3NdU+^CF?1H&OT{jY&^WSR+#YT ze>G6h`XM;$z~IdP628W%va_--E-peh+a&c-U_*WV{@z}X+1CHpo`%=2UrUbrxf76} z#eTGc?^Z4ck&D)85sIzFeLg97?bpPt3qQIj`x+v9K2TVjo12*=7bA?2KCV`VhBK4dWgj`BlLaT zrmPjtr+!I=sVR#B{~|F5wOc&jk;P%?4>BAC30$0sV?O=&?f1g&B&f>yZp|Y>d7euH z848-Qd=Fz|R&|aqf$d+zzo>}I!iR7V{6>X-?Qh}>+M#`_jFt-l`z z)3Bb_7I#!Hf`3sij?$y(`sd2fgk1EfzK+|egCPR}_HCE#RZ2_Gubu3_FHq7*Dcf7tZq4isK(n=CYPtOqgETDM_jku=M&oWgmA}At&w*aDd zuwD)9=HL1Zq{u?a_-hJzJ_4)54B*@(yJ3Fo_B)DJGuESoYqy<1ukAfGE4KAU3AO$C z@>d1r+;Qy=mwyLAUwdgC1`wL5JM^OnoFUvtgSkW-3@8_jg9O4SKbj^aX$k|N89BGj zcD61-8miNOcT%XPP<&~l5l99Vo9$m0_uP*#UZI(_5bT;lQ_;jeN^r#NQ>GiOr%+Hq zmu&mt7bLSEpEZRe#dC?#&o;TVI%t)4GpCxmbfD19a7m-^YJ1WZfN=twae!v%L2i>; zzF7uMEUyeG{uc-Ke7TlJaLt}CU4Mci_%xMD%75QSr z4Wai`{$KOFpGfPZh{iXVbHf$i z^tx~wfnJawjtn^`r}*l3N5eh!|B*p(tMsJDD7hh~rf6Le-spDy)$h!f-`A5M4ZS&y zi|LkUMOV`{=ANy3iNzF~hsYUwrNyqsL|YVK347VPZ^Vn|t(RU&^kdp?Sfh5`|jn0&>c^&wk|4eL!m{co<82bYOJdv^LcvJAI-z{V$mQ zCE!juCklK3=htmB(;n}9hPMm=@p&PIA)qN%r7NMhtNg2erJ!)Rqf$vjh*T&pD%rjo z8#ZEp4{cDPkeBEyBn;<|ui0hNGKS62DwI6`gzx{DoF3cJI=TkH_AWlN7cQ}HqRzCX z*c(Z&sw6%tsBjzWPDLwNPIFtGEq^JyePs95-&-F0#@tUmhuVtO4wew^=7}|1FZKD` z&jbE;^N?MAkz4{ipOWu`HhJa{XYx{*0G9g8*2|Pte)*JpJhUxg)JF8iXv))^0eqF6 zA|VP-(5IPISKzbU0kYPwfHC1XL&uTZs-Za^8o7h<0aQ9pzfZxlz`uIt{_08NW7Ad# z0P17F;^|IXE4!EQE597i*J}yh!l3KduX`W49h$=npi=&$7lfCTCPXdlOK2$iy;#yp zGe>@vLZOWLZMM-oN*{p$004OKAu9jX7UEpSuQUwI*2vVd* z1VK6ip%(?Ip=glaY=D6D-g^lUkWL5zy`_a-Lk+!`P(tYC{IEUG`_7r~n{VdK`JOX} zKb#SMN%r2^d#$zCx~^-fDf$YyLM`Fmy#=08kVR|w?}MWF459Vn|GT%m`=R zYh7Hl;*1_adAI;&cEFA^01j6Of|1yp`~aNzpG-P_!yn^uljHnl$9n|;F$!~ATkd34 zMoITK3!TZoY^ipkF4GAmD2U0l`c_*--mj4=_5cyYuVtQu0to3}zyA*kv7!OIahzJuHe?R#WCz*V}_Z{Q_YWd#Z zBIutC2*JwHV{DOn7*?m@!WKa;!pz((&Nt;l8Jj3*R=&`Td2G0aF?D3!C-!>L{&{`Jv}WcrNIbr-?8MqSPy<9On7vbI^a_4N zT&R1H!ysIyeDcnH_8)Pc{ML7?7v;DARy3xVzxQ)Wq zoEYi4%`76)c|rqeDjlo`Q|oQ?QwYN9KZpx&!_KfsZsZdE$JCMy(o{pk8K5WTJGRyZ z`k3J)6U)7}B1iDRf^bp~BOe)SoD#|noLQXijecK%Do$x_?BFm-8uMr2^9mLrJ#dfS4#dZWLm-R{+tK#haVIskY*4A`40obcdYR46| zi62ph3kVJ(cJS17r78!U*tAXyKqGVU@My%66rGNcK~pa*yfcF^@w!1u5YR)#KTCEM zShCI^OV%qzD~J}l5sb*IOMh{A!bj+iH;*9eXE{&ny=vZV?^%d1i2=Zf8bOQ^j8$34 zZHmS=07+%sK$g04H1%L@!Z3OyQ@-Qwn&c^48T$07Ratpk^?b4t+}^;=R+dbFbo)dn zIO#dyLOK%l3u2sByR9EyhQeYK#H9SLNyS$tyL51#(G62R?{04G3wN_Q`p$k6hZVM5 zh;*ywvrw_vvydzuIiz=OWE#F0G|vwIWGApRD&iblOTku_857d7!>v0VB4k!+e=QO@ z%9OEq?K;PEn%zFMq1L9jzVXf7CQsn<%FgMrf;m!!;O}RT+U78t5epL}$9i7&RR{U1 z^w|r%FoE-ZRuD~~fXCq;KET|GwU%5-jme1{UNd?N@F6?qFR=N}q$T>de0!|{EX`%w zk^KD86Ub>;N$2;DF4yynt{~oY;dAFvLHPy+DXYn~v#U|Ar<8o)s>$?^Bo8brA7Dvj z#X*S}Mv`18tPG-W2}%sXoww8czpzjR-CLuH;= zRLv=O`;|$1Liwbf;QxHyv0tot-zk8uD?jD8lRBF?dQByyHz%9J!r6oR z`Ie4sjBYUwbouUM1rxq=0ijipo0Qv*tzhWNlS( z-hR`QVXr%*_E2q^mv#akI6UvI;^AVD$84(P`+Dko!tPn5Ghzy9pD59Sd{jcZ)!5p2 zZOjAYhNu2eEHV`)ln)sx#0;B+H~iDsGIU-mWNnFGUnnQjqia?`Y}#Rk8O}X7UK2pe z^H`N$;ykx^?$t{4--mzEVsm_P&coB@N_1kgDw9=F1s`B!2D|;OH;;%S4F+Q%Gy5+I zP=<(zW;P5)4!dzNp8E4|P}?ZQGwS-nc0igfJ!_>CqYvm&9`9 zC~>+~x@GmuMZlc~gC4%In#rJb8gMY&#?M&1-m)%$zJOL-vkNXyZnW}SJjY}KK)*k7 z(N;~nFDEw}Z-ingb%HpvKP$ExarNI(aB3}iO}yk}IdN&uBj;DO1GsYM_OZCvg+Y@KXK!Vi2}d%OX8|m0#r1SsmGS&1BOpP9eQ!hG$!s7+ zPjUo}p?3S7L8cnv04xVrYA>@db$9XKrD47Xr%@~2w~anDWZ&J|xaJzHm?%(lVGZ#9qO|XtBvW*lB0W zabhCoWGqR@t&okj;ghZ7oDecczjQxtkm3|$3KG!C8KhoSbhz&b^KZ1UflC!iJ>6*{ z7A{x*uv~-gHkeo@GPbsJl0W>AvJ-q+T-Y-TYujU(Kg@#)2sQb%zW88hE=)}XMU{GS#u_*qRN+s2_YuzsIu)jh}kotU-oDmE5`)3k#g{t)c zg7J5)PJDt&`RFNS@S@9D-+G|*);XX2B7U_U&3H|gcuq#5?90_OlI55bt9wKgCCp+= z5H?Nt1S83C5BXvIL;%V$XB3AzT>454Wr1-J7)bhFhCxi&dsp|^RldZ+Jw!b3!O25q0%o1sLIWtp;-e9&kg{zf0G@6o8C zaLs-oOAq0);#a@?dV> zKz3Kd<()a}IvYYq_@$iBiwg!!&pS+P>lJa@ogE3MF34tpdqEJ6iFU=@H04$3(Ai(> zaPQ43!fhrBmKRvkc0UWxsL|B;u+W!i2%OvEI%_ZPER)--JKN$4&Q09{k+IW@#r%m) zw~Stq-K-E+ZMZof8+?2JnzAuc>+4s_%g0r=^j zau)#eG7+CLUwn+{-}Xp$%tvieudlknvy~*jRD3necdvXULP@Z+Wg%rFRd!fr|P3`-wY;nQbDG}GsU|CD(W^%`W=B!7#Y}y zo5R6e;s$Rh>C8YQ11XM$?#6a1qyN}tc)5!lZI20=8ZoT*5PhF5(UYmCw&NN_ESK>1 zbRJ5@9&-T2;@k0(F5)dQ6v21+dMfy&qPyN(P4r4V1nMCNc&TRvjFN0pl|0yF@3plP zzEvWLQo$1XCo*K zIcmTs{nWo^W;yZ}k0!7CBWMrP)^^z{z+4#Vqeac+(@e6XPu#^(`!QQ*1kQ`ieSp-$ zw4sg(YnldlerRSqHRpqEjD)LYJ!d8}dCNJAfMpbwH!Z8qy}L-ZWrLOjeSrDkWq%K( zYoY~XTjxhaS1d!idOo2^Sq3wXVuDjIJs@MypX&Hht!LLx2M;?wW;XQj$V6wy@{Oe! z8G!c<4VV#vkT=p;^)4G;;pT+>(cO*jrOQ zE$s&^MUdM%I%ZYiYHXTRVF}Mf5*&+5M9Hr3LtZ)%gHr*ZJJhC3YFTXoG5A&Q9`^6~ zCXTE@L>+~>Z-*o8z}vYAZ)5t(oLcm3Ly-};%f*)hLRQKSdOAj|*9=dd4KmO(Q`>1{ z5v5e%p4*4MH&Vm}>qofBaXLkgJk70WuREvf&doK-|{LblCT_i5rT(i(#>2SxEm7G;H98URQqi9!vhF^J>GAT^hMGq z(FHQ06o}F6EP7(lCSrBxwR7qf1kL;q9eq1Uow_s}kF<6NC>ea&71=^9UyUS6u}c4F zGsci|^jU(*Zr>JjBb{*~T_7|+73lBGZf!SGY335cv*%r|q>56qGl1UrP%)i9?x*8d zimVgXUL2X=N7fMPuU$BA%i_fqTcs^IP@t&H_({1Cvlzd6SS^t1R?)i>CsB!72%+&< zZ64n~Al2D&A94`B=+a+Mh(i!k(Q0TjnSQ^P@tI;qKjhZX6UpbEvtz~%1FKE#5j;ym z$mLt1KKcFyJMk##@-83+rKs-xHQ`Z=g?&YOXsusF8(|0wc5a(X?ie0eD<-Fh^`|%) z014o{z(mYN7c$+;J%C3|N7uRO)WtCk!qU8Iqf#w+j)qSU)Ydz)Mmtj^M_D~|q@NTZ zKRM`@?0%lWUq;F**p)t)SHKXXDE>GxeRjMO!NJwXoi$( z0@2+Vi%{M#{%v|4jbek`+*;Lq!{q*rlM97CEw6mXtRs7Zo2<$#ET8Zt zv7Vasrqay(Tf`&_A!EQ&`FHw^OkM}M0Y~k_UAeM`LhK%6)fiAQFgRiNjxg)+ke4hi z^>#`c6_j`5cZIlR|^&6RJcQmWy73mmmy=3aN{N9Mz5Yy$cx6Qp!YFIHh6+iVh1>-~>UMl4^B zpLXLk=8 zGT`$`pxTTOrvU5N`=SBQNGx{)0M$)$Bfc^Q01sh|=;uS$YtkbYjK;4NPpHqfI*CDH zrAOUuA%%f+(Mla`s~;r|8p5uv*c~l*9^XMhG|_#lW!L&iR*w7gU*#iE`89By+3~ZQ z4U0_gtBv*9&VDwSVeUu#6Er|u|5~qmiMEuvur}v$-Tus z5;LN?VwBF;$@C*B1dtTzJik{f3g|qg_nK)TnjPv!d|-tNl5uUkN;OQrFS-DBT+j|A zY6n#*{MgpZe5p_dQLz|09+Ix%`_RJIC8?&~JYt;G$zN%B@Nd#&#q+HOiJ)Rs>P(CEbSKVCUsP#;ue`b;*doHwU-eSitnLi4 z<&%^fhe~hk`!)a?#>`@vdB=6mcC+A6ZsTj8A~TO8gj2Y=_QRqighPtt|JjWRlfbYg zvX5SJvn>l#KgS_k^lX+1XQ>p6&S0n_JY? zuMjLkddn{>U5CPO)UGh$%Q9f`+wjDe ztihBT&4Xt&mE4wy&{yGR!AMSKW_kRVmJ85FTT@b&PXEj%jnj)?b{-dMtD{F(+&TPU zkpyq)LC`**iP>K(`e6lJAE=pePn8lv1)dgZ#gsB7-h*1Z60@ff#cU= zlr?pzO$4<;z74w*&ncqw>O-L6E7Qzo!DoO8H`TeDs7#nA!E#4AkhCezj-O+J%yN#o zy^Z*>tsQY;k&#L&V^(aURbIz&(jmcy{`cMLX_`|o`VT%5<8^0Pf@05afyP+vCG@nn zm^j=DGZ{qds>*?YwltvBF05IYgoyHbU*3)ddsaXsEk`+fGc8qvqPAZodP@gEYTj#&YrQdTy!1Ts@9QDxSmHZ7QIa{ z_M~<<8D7?xFRphp3EWbW*qz{eIV?AT*9C-`oiF*kco;~=bH*$gEjG+$M=PbS8s=L< z0Uar&Eu4(_BzDSv9M51NQ(*cU5+=Fkq9q%`n;|Zm$PPH95p43~n@VM%Rt3D2@$JXv ziqJUYFGAxb6uTT1_e%ha%?zJU`C+k%)EHz`BjCPAy4{1N`5zErE$(`RS6ag{hgi+6 z{Y3f8wdG05`fhyYrOL*?`r{67qdko=2}jsW{P*Mo z>C0O*;A7eMw_}u!=kcg1Z7<}yY)IBl`x`wV#8+_%SaM9+N0S?_aC$+`HSrJyy0_+v zd5Z;BKEY*Zsa?~!7he?7PDukYzUNKfwV#WrM*cl(R(zc400a@*lT%U%u@_KPC;Lo? zJ^qvrQMJHsWK%7G~x02+Frf>i1#z|~)4|b7Xg#vDuHbmLe$2aCJd(>5Zt|X1hdG*Y!Qs5pw zBASYBnc2H;gOAhhBA3wv!3jDgSesB|KA*%GGw2Z&lS;nWFC76b6j z@J8x4)sD8cvqcdS!U%?d34@T57gN_J$1Rwq{x%#f4`Xv)wF?Qh=KEnt&FJX~<*mGr z#yrU(j*dwcIR2pf&CNVKBhFI0=f0IZl>8Yu{M>{l-63lSyaCoc1g=WOLp85RQT=wK zb3!uv(;c)9M1F4MQGE6``i2ZkL6-`cK6=KO$4!~s3YnH^yGgvHQ)EA<>u#td&lMGI zI5K;T%Z$BySa(p->>2e+nG_z_2$$X|p8$t5BQ>GqL{mhoJpkPx!Z3kQk~R~~Q6$*` zu57x;*VtncbdW4^x7P-@|D8+!XtyG%APKWYR5wk01K7zxa&GQZ>(7F(dSzc_{TkA4|vwV18|pGIz_Y-pMHu8O%paZ zRrIyif=pzycmG`stDrC>uM25e&zI;AcIfD(Cb<_%8c7;$=j;?(?;i08vw!(Bfw%;k zynMSfba&OQafqrfSt&ZU;ecEhHC={tki%{AJ&ASVbuyG}8}=p`*>nMrD)YP;b4a-$PVolZcjh;VJ}YcN z=WxPxN+{%$a+qhe3&7<`&`eG;KUL(Z_x;>#fd1qJfY1j1T5V=-&g9cjrq zaaZa0nUopiLz&=x4CGwxy=+?iC=iLsQTLMi{#{ipAuZywavPwT+=4{i$^Am|DXdn6_O*DrJLE}-FC~)sy-w!VN)fV2N`^bnH}X)=N}L$&D}GJ=@k3YOtJ*!TwCS#r#tK71#7ciMp zy$Er^2~|#qP8T^`*YOW83@~&GjIR$fUO3?r(|u#c`Ra*F&AS23uh(K#kX4-r zpfspuR0m+_+}5&Eg*4p^PA|&7cV~SDXhnI~EhJfXtcdvUuB-Ua;NzaT-6*Jghs~PU z%9^OZJHcyCnK#a!t?||EbHzjoXsaiE+@%K9B>)<#oK>&1F!DeJ`NpCaj*}#Wl`T*J z+*JP}9;q@?Y;frLL!l#^=404zTM>Sx>= zJ%iO;jy4~zIwFbh>gA&s@qiLl*E+&X*P}U*XUdL%EDbH7?dYcV3Ra6B(B@agW~pnR zDXsY;7Ydrsn^RwJH$cKlN?vQilhU?QsE!*`wcdO>Ni+oTf=yX-j)N=uY%vu2>1lbR z7z@apWUmqKV*GK%xIEarK5bPbM8b)q;Ap4DPo-mgW{`!Myt?yVM1dIzJfKcqc2G5W zE-yg@ps02fASTs#7kH>&vIzC_J)`};C!jJ;hbA?1VDwS4Byp*DzasGzp2X|ZH?q;{ zE2>x~Pu)#QGEuiBWnR32L>V;{SLwZWQ#JNplT4(kT<>y11d8E_PQ%9s7CHHE3hICH z(XSw-Krz2Ra*|DgB*3)N!>CkOEz{T7St)U1j~dsyi)Lh`>G^A%l4(1f5B42`SamgN z@A-eLp$#@q5f`h3Im$nye;U2cDA0bJj-I<_@9{O4&ftZIcjsKb1{U}a6n+!ls;`P@ z_Io1s7Lw@eOY+LT@9%`6o~M`$x(U7_3yxRvL90t=f_Yuo)_2t`vfu0&I2vp|#XT7s zZKxO=O1gYu;n~GbM-1`lQ+%SnR(j>H~tByL!8=5u?635g79iNu#RCQ)9WWiAwq z9l6+kWT5qreZ&{;@1IZpX<48HKs8#A>Y>RQ)!Id0&SKq%*ZjXNN~i`rCTNG&ZHgph z7PJW|ivi(6Rvu2v)`4^5=`uS{c}e5}xSBx^s{EzZw9+l(9F&nJGB#q&WQ`tVg{}1l zf?fM73r9U{anFOyDZMzg7Wqtk=_DkUPHGsdw82#;nqD^F>wXks=f2B1*e{X@e2DL= zsn_h&uUH-P0uq@XNXs=dJMA0*JCg6cR>xbPtpxtsl7JSe)T#1b$;I-au=t?|Ys>rT zLvVo!drB14-|+Huye zjwy@oFxF#B(YpysluRP!gP%o$qJ>Jcoq2^ud8pUhg+p}3E0(jTpu`_F?YkmEsQo14S1>#7KZkWs6U@R$TBLj;hL>ywmZlikLP8GL)q za5wAPz=VDOQPp@hC+5N>dF${Iie6F@Y@PA2$g&*rj1S|#EaMZRx(17$X>)KF+YSui zCde-@qTU4r^S-22;W@G#hf8YPoo_7ulvb2Rij7$0Nb@B>&@0z@O61#iN%6-?LyN!6 zV>z)d(4DhN_T)Dhtmv_guRKqvS{WqQGNhMU9bVxL3B>TOjpc;UKf!<*HD~2OgRV-!-dnr-*u2Rl!(Jir)F~$Ax~M^kiKVUm7T`3DpyD`N6AK&LM9Tg97jQ ze3r^_?!jCjF zXL2-m?QfQGx1F8DkR8lj99>16ck~c^Yq;>DSJl0upfJ~mSM5G!X=Xe{fde-aDE(*s zR92Uvr1ZJRXiAO@amopxz<{1+=h1M*c~ipu)y}vlo5`@m2K%ldp_XBf$io83Vq2`| z+3nN*3WxQ{5L?{Spxc2`lnJdSMbY8usNy%Cj=r%?H(z@hE%>o~NWUCpG13cJ>GG0c z;|Da_yiJsRc4*o&9AS?K<*}!mX|XQ~^)b#X_$Ac1*QT5XAGUsq1GViSF;p_;+I2JY z2*9b`_XKp`v@0}(>`rre3B4wnI@uv~!$n132U6{}TANo{3#dVoaWziSg)db`>rcw% zjdYil7{s^s)BAS^hy$sN2RHY6(pRYzb{+Pu4+(8A!HvuQ^C}FG6|tCu!MX9MiP5#H zO8&#uxrMrVo@2L81PemT3;oJc$(c$#mQ!5L&L~ka-Pk1dU?7~=(ZFA%qvg?u)+%15 zwaD`sh<;Xwl&VUC{4gB2785&HN$fHfZ?hI++qEiXmi$@xgDgqq0O_X0cC8E$h|-zngm>Bo-=7MQEC^>GW?#wP#_QIp59_JjdH9{Npk z7u;m>mz!urSI~oXstY+X`LLX(>Ucr?lHB_HThN2Q-d?Y}e?Nd%#U+Al>$497KSE0x z)^3Syb2d+n5S1FMf@Zr&FG?TZHX#Mz>dNN`pYyuE=R&0(tZr@2;rt1aQJj#Sd)UOk zmBk1Ry&LC|P*4}~UmKK-)R)+LSeI4rrJRlj@6PUF-y3q~^qM4~ngjCvgX=I6XSJc| zUDJX%>L*iB07(8ds->L%N=o637Wo6I9eBX*w8Doy)BnmZ zoQsdFS4z9#@>FO3GUg)k5}~=*>A!Px-u?|h#DoSMMTg&P5>W@dbTH8JbaxL(TxB{}n?7)}Co9trl%Yb^bpzxrL z%d$>Npwg{G{s>~+z`(Lv&e3MydyiX~@d$7N`nDYyy z$EyiU=okQjZ5ewX^T$4h!dMvBY*N=Gy@Uv3qf4>QPTmkbz)O0_9PaIX{aRPmSA3jd z)P54$wOza8e6ULo4f)|m2TC1x*OtB3)>0}$-HN{+bQYb9)`|)O1OfUEf-jH8N(~Z5 zVo%N+Lq@3V$$htfIMjvhZ>^Z+g@6r$| zd2DZHHq+-~0zjgj@tm78w2V9Meg05b{ss`MRwVuiRRJ0D)Y9xWm?iMgZ}jV3L(!j; zofOc40)sxX{_lOpe@6MoudtiI=t)HY87$-@z9!K2(N!Vn?l- zaIg@4eUxL%lPVrjSEj@lo)f&UJYSxYUQhG%H30L-5ehis-Lg0u{S~JiFAWT{g z`aat&_sA9t%;8VCpsxod2k@J3RqHJ-@s{WCz9B16%TdOg@_8Uk*Khl{eJ}#3MRrPU zH5Fqla=c@_#T)|wjC;E;p5Ltbw0aH@yTWeC@0YQ}a$42{O4Y#lsB^?{y4h|i=`z8W;{eyk>~tLT`>~w&n*XjW1AwK9MPA?SXEp_3(JYLp zp4VnSD2AP0r~5dO_qBFfHfnGe2h^@$Z*d3GZVmHYS{r;%X2x|%S#$?rS8X>u17sog z9rq=j8^QV7U1qBA-~B?q>a@-QGWY2d^+0`i@okM^c^Z)Zx{Kcr*!D|x@jjJapUN#; zU$-SH5)W?6_C7`z4K_@#s;g-N|8o~OFXQ8iJp5)k;-HUX1v{J>6SIs<$dg)!z7Y=x zO^0{+fILhM+?egbSw7U}v+Hg-!y$lrHz#^MdjV*`)pC6B+XTKX1Q=)`x$d|;`{ZLS zhle*fG?M^`8BFcstcJh8fhP6HF>>9v=sQq`HzRd~Biox$IXFE+Oa%_|ErhoKT3XUzZ*K_D(1gU^012VWoO-35(-)sr%?*CE7W zcv$;4w0)153ud_NYSBf-cSFys#TB6`EDj@&(SEF1cd(Rdf(HH_8xI+lcGsE*7ke~S zD+*#ga>HZjeTpB5m)yg*k!EaEE`M*DQSI~Mqo<>b0LcM04#WkeYv#G@BP&Km$W_T> zekBm^fGbLKzB>?TvN2zD+HjaQ&I?9Vi?TK=z2 zLT7TzKFgrQ|r0>mi~Dq{K{uMflQ+Q#t@BDNHV@}ucP*H^5=Z+C3IsnMt0 z^W0T(2qJ#t4T+CSE7RkZN>J)h<>TCNK0w&5jhAWaIOB*)k$MMW{QwC5_g%M3l_wQB zuJ$}9fm$c<92g&aYliDzaCv!2{8mOZ{IL%GlUcztT+UsfxtU=9lqEDC~#y zc|mP1YqNRTFMo#SssJJ;f%4tx5Qm}-jSS|Z;+3&ivL;mdA8#haSHAi8Smw|T_FZ0I z%t1(T6gpPBIN;&f58}bg4dhc#lPsO^fb8mxuO*>s*DwnnppEtYP;@qN(>Azm#Qxa2 zOB_3Y2v`2^Y`TL|O_LvNI_dl^!Y?-6FO>bjP+-A#e9lh)_#&mDcVC|Xkc|$}_YE=^ zNp2PX$QA2udTjW6r&Sk5KmUX7&Y}P96aSO?^8D|k&HYEVCHfDaeidLcPj;&6jlw^q zWKc-(E|Fh>~De#IltGZgt^586ylw#aU{2Ws5!K=f0y9{*w&e3gv`strRW zW(ST_3_eGjXw;{QiV84=u6ild9SZZ<#YwtuJZFo%;WS!lH##{vS?6^)?sMuTN%QL% zzH7;*GH;sKFmau__^bq6ppEr8Juc8GrUH@FAIvLKa z2L;H3q@<)QEG(w|L40-WeE|va9Y=dJp^R>`H~7_+Ps>t|3#+PhLN`b}SKw7zVj5%w zbVR8vp?^b}4IgB3G<|ZoPJO=db8v8Q{W@cboHo!t#L~IxP92dl;ArN|AT75nz z`wPovTH6e#0JkuZiP3v6{X{~_dt*|XUslW5Yg+&&5bM4=RMK4weC&0Zc8J!5*RB!& zY)d%Hv}FZ1ze89IB_+8`yH=q!uq{lnU8$f`;M)j72f7LWx;wn>ZOfLMm;pU}n8$Xd zH|m^IeD2A0bT)3dOy2Wo#pE;}q(lZf+5lD-?j1sP>t;uG5x{!A2igxfnIt#AG?yn( zzc)?7pB>jzOYjChB%}Pf(*=M#n^Br=qbIGZO~ixUu0K7j=Op6#B&XDJSXD2^3^P*ppxC?Jo z$5@G(|1Hxx4@DG+v*lfad7#scOm9Mg2`p4TgpMehjZVV#ekA%6(5Cy>7ZTe&w}Io3 zHfpoZ;fMyNf_mu#EGy7fsfZ?{mBMjtv`Q@s-><0_5c(}~JM*F(93U(MJI8c~{GRHk z&}AD<{;ZOcXB0!--FJuu`zq1}0J7ct3nlqq@|s2?;xs%d<~}|96Uiy%Z9`!t`UVD# z7t#f@ueWBWfP7BQzOKgWc<>>x@Z&6@63jt*n?q)yUK`&oyUThb`horMim*IjI*#(# z&1W*@0Ib9Agirk~b~zzo;eEr=nMJ-hd?icxoUY`!w z!(S8rn*I2XYyICyoZ^Z%Tvq#KUDK|MRXtRw{{Leb|2d8Q{=+@!|B=lS|JSW)6+me; zdzzI<^vjUZm3XXXTk0=s`^isZNege`gDw31nCv;= zv8O24&1ql|A*st`=2rtgUhiO~;i(=@{p|zPp~P+3#!+2Q>1k-(UwP=T8$G@I(Tcan zYIzv;$Hr+y>F_!!6Z0xc`kY8~J>_ASbqtUr;Z*^z!Ds>PoU@-t94#WT`Su%KF9kk) z_<%y8(hZrWuJ%}EEVbw6EI0ku>mX(Wq*t>w(q(`A@y`eJf^~VFTwSZ{>+4Y{$td=_ zNlY{yiN%~iuC6s)q7jA zRe=QJuh}S$uy$s5o^`{0z;b*W5!X|4f@?Q8?UMw>JvSO8_c#=BSih2!+P|oaA3aGu zE#*R1!>;~ojL0ZN|Gv2Yh&+MW&%epSCk}px^38nCWJP5bNm;Hh zCbwJm7P~is)a2w;r2l>F?b$o2VZNzD4%hmLFnGq?;CHby|Ml-Fr|RSVsbb?0sgi9B zsS#+Xm+*mf>o)9g?t@mJ%puq$X7>LiAoWn;ETss79BpKa?kPU_%`LZHGkUEzGwn^dYUV$bmPCxukOU` z_+$TxBXuQe>^A;do;t6S(FA||9EG319Jo@e6bj4C=m(bkTS*Xf%oT`}hmd<_jI%T1GyE=x1bzChBZ&oTr`> zT&XdZ$`puj<{j|)Yvm}FtfIAt5l0{qWRZ#$+d}Hhv6ig3@8mZlyuGEw|Lcf>0?-U* zZDB$z(*eEvImF8~P01wFW=;dC{}R{d9+jW)wKJQB?D>F97V3;4`l+0yJyO*ZM^J*I&JNpRe$gUDSpQxnb)g774`UyZd&G+dC zUHP}2^b*l8ZX$Ksx_)3X+y^ltAb7oAel^Ib+l%_Wb>GHM_0DNbgctkKbR3x`i`L?G z?4aSCxz=+U1j!R^(|wfC7SItL68j=o$C;mBb3EZfTG95-^0a%7v;@$k ztn&!`^Uew`9I3GfsfQ1a1&lbZk_GP+K$M$N)SIWeMuh-?pa4Ut8{o>_$YG@2Sz!Hr z&YtHRO}nUdoE@I};5Vcz7fH#2&$?S%zZ&!bV#w*GZ3B2FXOP(0#^V1YQgol5_cd?D zr0$^9#9kg_&4|dhnb~Cfznv*AxS>r~-FQho0}cW9@)SG1>^8i#0mECoce40b9zF}m z*E@|qPpn<@7JPsaSp@MpJ;Vp)vS@bJ{>u=Q-$XV~c+@S&hfD8E0sC|a@!&(31lPn8 zXy(K3xvTdouDQWjY5%p){vYiH&HpMRRsJ`S4`gAP)wl=rtOpAMwXI+KXO<#HspF-< z`Sa)3*49qT6W-XIV@gmGOt2E`dHZLO8iD|#P+q?In9uoRudnRmPxCkb7{_d`iL+dj z0CaP@@!Pj=ot>Q%^pfO?)HjL#yidk$u*bhy^ev!7W_GfY>*wcJgG8PJH*`B6e2{um z*eB8+^$dh;WR2N%r$qQANOXIg@F|=1;5YkJt7#XMk892gJ@k_{53YlY^Cdzq<*K1wUC) z^*qc7kd?V8vR5FRpO*MbOW;ue;F>t|?oKW)E&?7IxWJB%j)D$X%R;3N7J+;~{ps=g zgs=3!ULP=jGgyxK*Q?o$fSl~bXeCO4cx4|SAI|85tv0^1S8L{~dJ%uHy57T`@miKV zzz?|BjRed7_7oY!o!Ok6$zp9>^EhNtqL#2!>cOM?W1P{UayEuHrkV zK^aX>7hRlD=AP?tR9fP%MR-J%@RS#64R)}$Bd}6g;02+DqHmU H`TPF?9owt@ literal 0 HcmV?d00001 diff --git a/latest/ug/images/eks-iam.png b/latest/ug/images/eks-iam.png new file mode 100644 index 0000000000000000000000000000000000000000..99d6256cb366ffdc9c7d6df2270cece6f883cdc6 GIT binary patch literal 38644 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

Z_5s;H@>g96yKJ4T~n1HA=-8@k}1*gM)7NN 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 literal 0 HcmV?d00001 diff --git a/latest/ug/images/hybrid-prereq-diagram.png b/latest/ug/images/hybrid-prereq-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..808065fdec63d95eafb211c3493718094dc62491 GIT binary patch literal 275111 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

%Z~lU_f^ZCsk7b*@!#92415ZzgO#oiN5>Lq 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 r7_w=< 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 ap%HEK|JV}yXDrkI{~7;xr5)mL{r?7J&!NWv literal 0 HcmV?d00001 diff --git a/latest/ug/images/SNAT-enabled.jpg b/latest/ug/images/SNAT-enabled.jpg new file mode 100644 index 0000000000000000000000000000000000000000..929ba2d8df19fd79edb3b6752c8c849db604c04e GIT binary patch literal 40917 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 W@3$>5kSgGm{nb8lzh2r;K^O-3 zgv)9i9|FOiF%uP4k`@((E7@5an^_n^AW}imv6yO+?bp1QE(b+Ly!~NPSRb(lu;6q* z`rL@3!=Z#SfmpuO-#IdE#!RqTRb#;O`(%`1jY!G@peg|DG6RzE6A-SwO$a5_vp zoOXR+a(AY>+P*X4T>>8@T$J0;_F5h)qJmL_kYu)7N=nXf76XFY2O*h7N&FNYtVuvX z1$nb_T)2C|=1u=yTb-!>;{5QE*_^*V>Ix((#D-b1qg$d1?M7jhp)?yLizaZ|M!LYo z*P2Ey5{^a9&)u}5dS>LS%5Wq9t{D;0qF)gK#D(xBjWnkBQ@`aKu9FTecuc4UHwhFO zMO-+WZ|R`Ce91vb+ST6E^KRC_zZ>7}4&*6WbJvj2vE1dWOSJ$mT!zO@s*dv5(;AE< zCbqkmz4^y85s7s1VFtceBM^kw1G*fZUTzwFhu(e^MRrZFTV(pfIqj9FKE;Dw(I>R> z_g;UynfEB3ec?=qd|tC|!diYHT~Dym=w2x*@pCiXGDAx?J8qL<3C05sKO*8g-HoJ2 zKKKitAjOTi+%%ss#8AUK_2T%HLlncf^{C}Y7w$f43;lL)l)7M_{6%7DA}fUG(0Ns= zE;Oz#7XN%Ggw2HAE^3CxIm1CBRtp#Li~vH0XY3$R3rQhH?Hg#1mfp>9SPo*p3P;7> zok_uR@S);BQPfea2#s{3(fyd8gqZtvO)-zG5!et?V!+> zy%x!qN*Ng$3>h|=H!>pWUuB|YB%|1v_nADXv)`~t34VAQ5mFXZmOLa}qxf8wK2p9- zcY)T9&6TJ+$vx)G|4jK^jzxZ#`gf*6l>&7u<@)TiV3CyTs*j=qqEKbf7q2h!8a)a~ zF-)6(->j^et&(r2ldfT;7M)|BOI8qB>HpS&awQ#MSscPdHK8H{Xw3wc`!85-}MpU5;Oo zTyb7WHd*O1?4Iu(=g74k?$)HdZ~V-~Y@0KfGw%MTsr&F#(-Sje^BD6AbHQPeXPTzs z=B)kW>5jV3T(~SNCM-7B=f@;Xg!*2TvzEOti!~cD)BAesYyVfQK7zINKAzlrd9ow> z1KoYBBLeAsA0)r-^%1Q`uO$wu%)v0o${ovvtcYR`AkM9xhHiZ+kenD3+uGD<_=_bTy_e! z1-6?;18)hsLc3nET_?4UeaOb3BUsH_{k`Uvd*KaZ15_;YyurI)qRGy^x@#;qx-P5|H(k{&#d7^n5(_GVpTgF>>f(3%N-Fe-W z>rv`I*H3wxdlq{>^i({3Uyj^xT}U-RnH+9h@BO7{C~u8m!E~!{SFL@ij<&T_khFOT+QR z`OC|$?XL58-!ykL<;RZJqt?Gsb1G*n>x5bL3?$qtPOp+;(Oa)^nV2V#E_#|w9KjY| zu{aPev69mzcaWIJ-b+)+yY(%iimo*#hmC~wW1RJy2C7R}AFn3G&c4p7PTtrxcD>R% zYxHNIlcM`NhN2U5uWFDKkUgR(I%y=EkL%(b86MAL)jqX)d{%QHlGyw;;Cu$%eMISl z4lUE_DD~{fb}aQX1SM5mI;6*%3RH-mw1O zz}cR-z;Nn*S|Awec~X=-ak=ZfvZaTCo%|;GA^(V*u8`>i7sEEM9>b`CmJ5t}dVrqJb69TKoXbfZikS>0v8tyC%Menag8J*U>b3r$7->sHO zk5=&mrz^kU#qd>#4iiLAwzai&^-F8RFjc!CG=;`1r!W~mTC`0z7z@3STN0Lw;7(;fo3Mu+@CkyfGI2J?@YsXcOdBrnJN z#M+Y0;HkBt5u1yp4RRg`zY8yTYiZIs65@l996aSvARMQfwMBTyi zgm{(y@d$o;2*C{+m8=57ovli9ic^6to-McUrH5lP`^R-l>jpTzCk5w8_6MGxYnqN1 zk0L^#C@=&B72g{Ig+u=M7QuowB+QN9X`4Ct|8exs=_Da@5K`3tH1Y2N8OR($3KOFg4)K{MMBG=>sgKs-Yxa@3_4owiPh$faQ2fz$ z$eo|#_&g%oPV>1Yzc!X)^{h1xJ+U_d@v1KRP!1!`N(6#x9Eeecy-Ve71E+i*74XLd1n&YV&EM6b z2nQ9P@j8ka8oKC>iC~cBoR(L({}h)~=CR=9Sw~bEejwGRp%nOt;3K$|V8KHuf3lJ{ z;yM@x`seCvH5Zw3~{f*aPh!lM&J`V9!IuceIZyRq}ls^xYp#$@)NXB>yBV#QN zNc*ow9sSY7{bj%Y8C*m~Lz;a`<}+=<8T*iDjAPt)MTKGVV@*^25x->J2S+hmiml*5 z4do#Hh!D&M=wnH4CDgY2|G}u5FgQ8m6(=&V*4Xl3WNMI#-d*62?P8-Z|G4}qDqv(* z)SC~K_y9)f~J{TE5FXOQSCXjxr#-KHq=HmR;d z<^H#@^^Y^AFoOAs(QikCog6^#ZJN?2md&mWT%&|e!t+mC1OiP%1_3n*Y(6UdCtzoQBnf)V+TiefUqY*1j3GK+EDCm;6c?9@5%q{2nGxw&aBh; zd;IM|_(%_eVWLO=8Ll(J!2IYgPgO%ofeaTbWCe+xl~w4`spM z?`%}gjPLadZLRWtfBPiQ^Zdl>G=NmM=-oXNty1IeJfqGSbhB47!HU2ZJ2wXZ1N&J7 zc_f8@(u@QZ|B*yWRGQE6-qHl;h|ZHIUqZ6qTry=Q7*g;#l|A2I{ra}BBGS74IKy#s za?B|5k$yMlh{J?Qg6)fs`@`B!>&30($4kk2+MMVDLI%xH?JAp8POHgLu5r`%zQd1K zqN&KUeh_4M{b>b#j*u%qQ=GYk&&cPa5{yxQG=F7nygax2?VV5iZc~mU<-_^f@zgks z^2vfzw_FzpD)ULjVO6ufR|rq5E&P?aZ5mN9M-zDL*Awh}iis5Y@5EYtuDIIlGm0xf z@yA%H#t+<;M5x69A9aovEQU8M!Q)`;;AE|k?>Z)>d(mT;xqyn@j@ueOdth}Yq!|*Q z&UhRq@=X`&2~9kCEs(R&Zj3pH;3{iQCY?hZwZg9aIUBSgMsEg`4%M{E7>U-C5^PP^dyvXo!#qL zwuAo|8}k~=quChQEbU6Gj+00{Hr=|>`tt*AZL{>~JYheK_RJ~I3H6_ORIdXa=UZ0shaXB_q}eOL(4{Q z6t1Uj;bn`?leUtoNnl4*^N(R;E|fJaM98i$C3`81eR(5!YbA|}rQvKhXwR-MSFWaP zDanmjS$L-2W20Y^GCxM18jH0zB}(yN}BW&}(P z!^bWVLrkIc;5_6xPun76FP;2bj;0>oH5Ltr*vC%An^U#g?$Glqq8fM4 zB+P6Dg-%?uYQ3aWZax5n1wMjC`(A;io++1ap%qh36V-H3Vgp1oRGc~-Us#qbuVUOh z#`>}j=Ou;H+gDHF-*pjlAz9v})VOMm@B#EcM^P29@xuwPU;s zfBL;79^c9G`_j$0v};lh9FD7Mm0e9m2A_~|FX*|0Zs|p9$c=Adp|=Fac@|0uaDQx0 zO$6bU`Fo4O*78afqEFasmZ@*@Ipq<-LdZBfSn>M6hIIq?uOrAx0=M;6B*a@UAJMfs z9DVY-97NR_OIcHRQxnfp!nYWvz9x|$iiVitPr|)ZRfqshpwK+|4-}&rr2u4?lq_fm z6PZ%$w97XfzP+w{k0}dlH)~q1o?GzdYhJ!2w+p;&w~`(^P9RCHoL`l2LP*buLw3K- zY21vVQ;mDOmD1}`XAJA(u|WksR)Vocibn@`Je0=pGB@laj zxOm|Q*jEz^?U9y)@((z_=0?eID+OLGc5sb-=h&hlhwUxv-~4lqKL$HI98aJFAQDbO z#!6Gf7xct=yE;nX=$zvTt4}%1eG+!!ElQ-zE%ZE(jYO1eju&I&MGj1u$=`B5izzo7 z{PH#12)|;?INp5!^2eZJ&?0`p#{;bilVlHz$|)!NV`A~9SJ!e#UYx-3LS#k1 z#7(+#bwFY<%Apwo!kjY#0`jdC{?$ z6(1)nV>|2G)rk)Z9TL48{Ws=9v>|i(n72MIlsN!#T@1}Io8t_*n;-d6oj#jqkvwU* zJhzTb7k!C)u-nN#@l``_+lGvErT*4l9X)EwL6no*GaB8qMFL8Nm!S;=J3 zc;|Fk(#cku=sZ1!D|BWPyEOlbz2bcsFSF&vY>-;B4*`t?ahX@s0khf7IRsrOy@wAn z|N9gXY>W8#y#G#h6*e&o00t5_5&I)rxpHfs^HS9P_y~_y!TR?KVM~G3jbfle0)-bv zAs&gLdGe1}T3Zih$d|srxfw@|F_f=8k}Pvvkd9N<;xmw2SZ~f=f0XvvuAR=x>&J5c zaEdTmC55}|<@w>phe!pxmmpRxQp28-+0K5#6Ds@mT4*|2U^&Il0t8Gv^~aXAu6y4r znz3)w#wad>WSi)|+x~So9l2K9%~#mLEoG1A`#%BeWI()v_G_JjyjxHSu^H(k3ARhQ z&O_w8hkpcV#wS6yeg;~6dQ@E~L%e$nx#ewhg`6!Ok5+S(gsrljLW3>G$Am=9(uI=_4{<)F$yzWs){>}eBgyXq`ShnkaoRV(cvptwT`k z`Y&214(G60P$`~FF-qf^fxdzLPr}zB57w+&())l)Nf_G9NQOTRa>#TT|E|<2Kt+~F z=%Q`?@hjN_E1l4~9zB~TbR@Q@wLd@EFBLc#{q(&j@!9Em>1)22p5nqqRN_!X=XGSj zQrC4|42fk{`iul29$>)=&Z=y`SyV5^*l!%iV%~CTeEK?KRnH{RadHpNm4T0^(^ z`Tj*h(1T~gETsF0B?WTjd(7R@LGa+Usw59dll>r8v{E-mn3%k#@J!jD6{21U0G@ zVs>y)QOHuj?ZBZnk=L>0UJv&tOA|6%#5>85>joNn9_6<)cTe`_QG!s}KqO~y4-ap; z0&}PXfTJK}z26R7>&0BGo@X)eg5e<(I!YAb3EdPpmH+GTly3p+$*Z|7{x&IulF@=7 zw*w}^1f#uzF_e)&leeRTeNy&|cpEUJNI_w+W-#oJGEvr0FYTT;6Ab}|4QiUdA1{o%u({C`_W`v7N((OoF%V?E=I+%`|gO} zxz6uWbZj>U!}Pp7cShy{%lVd|oQ`1~d-)0T+q`ni znO54$ShV=un^oV|>-Ku~#w`2O=nSwiaY_JWW3cVAE_*i8!z!ObhwUrvixxzp#>SKA zIIQW^jK!d)**rVtJX0>q{_%dlmpBXe%7;juevy6lu`ro2z~Y%`q=kO%OkyapQOc9c zv7ik6tF%f*zg3g0H;58%eWl9sJn_L3&X_sc{}D=&t4PJDf(bR0ft#nH2+7%1c!6DX z@R?L^6hxONH!X^MEJ5aqS&uqA_S^D0+j;p4HAVA$#_RIqE8e~j(vf0OKKj!-m0l++ z45!QQUnkgmg>nuTu~v*Wb4}WOBFl|j)<5~NQlJN7OOj>X&X;S%cc53;0SFhoJhRs} z2q4j!0SQ+4N^=Bm6)-pR8bv`FkQi%7FZYi9Uf# zj{hSN?f^**p7c$jkSd%MNII@_?`_18!pU-@0oPBPMTK}@hGt>ByPz<>|ZkAKE^C21(V!s%y>us9Q- z(b`QJvVNB#dwlXMiyOdGw#LKGP54xQ@MoyTKgI47bA_Y zPlYr6G(zdnc>kqCDY+oUnBFKdDkWv0AF2)647}rq9bw+%me}={QvP`*S=Uj8`y0V_ zEbg)U9Ku5JYiBd!zvbQ_T^sePxJR;sAeOj#^KXucxDPN-;1_NKIw*i~{RqvXK~pKP zxUiK*{cFD#Hv!TU96^&Q{3`+=I8g(Sa;WD1aWQX167Z)5tnhjKEHxl6F*`n8(I`NE zBok)$%VK8GGiU01a8^R^nxc61WXrg5KhycdU9%ijP!qb z=WCzMZ)1uz@-YI5*0gVh`R7^v;~>2@A_Dx^|B2SrNag3liz`p4l-yBm>*mf5CagD* zU}rH#yGN_iD$)CFK$czeaC2(vVzl@P&DN2EL!Q{p8TY-=a?6R~@&hD>rjNIXuPOle%83*QsJrL zf)=&`hF?pJTv{JOBzs3n%syH8fw@oaC)(&Y`Jx|yfLlE`XyMALiRefGF5ad2hUk~m z<2#{FQ&I5|^aps975&->^HPmMgH)@H5i`t#p2YykR(I;pmxCla6%`#Kv zaXOTRwnB}?_!-JgpoV~SxW;7Q<($fxU1#T~$qq8L(VK@6lM_<{#Y-D|WuMYJd9@I%TVO^p_L@n5*%ntbfs758uSJ z+m@x}M8*DCP90DbI=L)HIgn~d^f&WMq?7`1?Epor>RH#lUI$c6tgBIRT$ZZ|mw?uk zSI&4&U|hXEOFoChm(l84?Th`d$QMB3OGa`pWcH&Cvj)1|aJnq%v#&W1=ihQ|He7nT zeSc@NUg&k6o9HqhG~D3j<+lG-gUG`iAd%Z6d77oni*{o?fQ8B_oB|<-uK5&mjpuOE zegp7PN2kD`0dPr%TlJ>}6b^mD!ylxH+|G7dE!Rhjds5lwyj`5vhFR0^T>$=64A5*} z=o@aUhVz38V6gG})6Hj+lpbZddizY~eu^E3jc9mPM%4UniGxR!wk-rbPVCJ{nQ#65 zYr&Em_l&FNYmyu&bnLr1d(`zZznlV7mA6MSFs#Q=ZTz>~U9vGC; zZfTFNn7m?;{@41!6`*Gx&l29_LcJ=Z?AKL8ee|fy5}dLvJ$s|wpr(|+cY`i6>+o?s z!tjY8+J5l1dK%GI&1Pa#L;Lc;wv}Q@VFrj+TsE_arKiId_U!jz*qF4CDj*0Y5OF_D z1k3$lf4Tot%+LHkqU+YpGfRZ2Vj)Eg$GimQ%#)AjVzPT{@7wTWKz8_}o3pd7!jG@& z+TE6&(^uH*`gkr>uj$%tFGMO<6g;k_S8(I9O9IG(dk(7j^ic_w$&tX}K!b$C|dRE^Mi>g zr<_=z>`i`+T-C{F-95i-E2G%`2|yswW{E~2Z<7~VqY@ZyzmxextfQ@UZb=H*D|^7V z8ih2nc+JyiWR0{}@>9hB3RBHUzI$B~Jsz$^k9vVY4+PXcgPAn(D-R;|?wyhtUaaO8 zD!|ZmUFOh9Po}S6x@%O9o8SJaE|hk2*_Td~cQyH7-da}ZG+>qdX#A}=foD*h_WB(| zf4)p9j1$!X6%1yY)_UWQotiA*`;ktjf*Y$cc4BJ@X&CN6%Ak*@HB@>I1Z*9DpU?-> zqrM6|DK`3jDZ&{->5&S&?cF)CkvgUG)-@~i@pp}a`7(Jwi?m>Pp1v;KIFA7Aj|L(oYvO%4;y``~K)Zom1$dO5?^Wt+wmF~^OdiuZj z0XoP^TwLBg0(c%JrIEY~R~^@z&Wo0Omb zN1tfL@%MO!4i>GlwlF}$Tkhh5-Cz{^*cjyBgmSB?ajW{{?_xJBr7Tj?Z%36Sd;&7U zW(6IBXEp2nWJTIti`tC}t5Xne?VE8}NvZmMsqv)zXCuFeIx(X9L9uoD=X*`|lGZLI zxh%tfL4G(s7pmuX!+=I^TvZOORBrjbx!+On;ml5y_cRFet_WqCz3= z`0vt%KeB$d9flJloU#Bt!;!0KMiEEhUI-UW__$(R-D!IPq#fS=MqRfJBXApSZ)g%{ z8=W78t;Vow*E|j=69S6pS$50m(atw{SxUxs%{&-d@O}7_8;BVenTbwzTlL;O?NkMA zXze}67XD~RAzy@L8<3tF7*;*brROJ{2XDz&WD4s~a)`vB0cfBi;boB?t-d=pRSP9~ z&A%H+B*KU)BFIEJ=j~4hGF$Gvdn_xZ`?j#5rr%BLy8eSndqrfmgxtP-DS%YCHreAq zvldiUrczUE5U7#Ko+s_%L`q^l`q&b9;aP}z)O3etpOi-n!`jy6K=B=?{Je!H=BsZuaCQdZ*curm`}k*p=5>4AxK#0W`wzw>=y3B zep7q|3V_Uv5V0I@L^^)k*E?h(jD4Akl&Vml@d#2}Mngo&dw%X*z0{>jq^|k3eJ4)} zDg$D;rJ*L;MsKpv487c2eQ?Fu9w59P01=U=wXy|G<`{;Ffp^OSStJO>^$a)|*}W=L zQmp)5A}A0|%V`dze!C@K_Be6&R%hm0P44e3mT1VsA)+E73$#u^QIjsRT~2)&2ZhUM zSs`RuXc@4eK>ORm#SB0bOpXy&BK89@I-dHzX@c69OgVovP^Pn$rOgV7QGWC+zubMN z<9lF#wDuehGYT-X>ig@F?$w>JF}XgpKhrfYuiBard*!FLk+#+Ueup zCUi92H|ikf1EnFqm*$h|%ctOw$wg&iNI>5qwT~M59s#b72%RebAL*#rYI>LTk_+c3hM0jBl?r|Iv3V^Dm|f0(OorPztLUi1mqsf9qY>Kq`bo*-=B@OGtleI(i^1~# zblF&DS=}l>X?8+xsf2LZj{QrT*b2tq6>}IGlJ8zew*V<5O`&l{QtTt;Vwq3@)#0AO zt))fmf%9IHHQwF4$kyB1bBK!G`G^VGX+@LR-OqOj#qUyX+(ylb(X$-R(===!0(@tX z)vxAY{8>EpbK?l&V~5cq1GcrDR!ZyK{0c4l&uxF5ln$IUmHb+WFTij|@wpb(>crR= z00=orIB$$|7H_ywW!e|&ezX7tU^qkm<^%1I^mE>xHm5h%SBx7kf!|{-l^TbS6za|N zaDTgs6n+!-j+!tj%fLpRil3b(QPF#V4)&^Vnzx3o>t`e(O~=^);`yg9VH9g&4HqYC z>XlYgB{0nU^klE~;{d9%pIm#yJcj@>y!?7ZWE#}e6_t+FC}okxY06Qfa;Er+?{+g3 zMy8NjR3~d?Lbg|RhR&sso#pFaoEzd}M>JboI7x#z1@a{w{&sSDbYHC9LFyxg8M}k* zx0aZRU&aK#F=aeX&*Gc9)G01Vg|F#f;^RWi{Ou=%B-O;akyWi5W53H@lY8&gdRtZY z#d;I&6G*lTUCKnWM?L|Z*P*kJc`J->(=@lB#vCjJ5g}@bo)iY^JwPJsK%{KDLK#4% zr1{h3A4E54uGg-Y$d>o*uz&m!;kY$D)wDX((C`Yb6lsIFk-mBk^5o?DHYg7BWLk$; zc($yy)(vDSzqbI{U)q0QB;>i!m8n?GB7L7L@r4{mU?I%y)sUiD_gf7HqJpRBWBg$cRjLFKL@&QH!qF+q8^~`jJ ze7te+CWqaEl(y&bqMvwzs9s&vS*R)pv%ghi1jR9u14(nFLgeEnuapA|6DbMu0q8)^ zBF+Giq2(t`+*bpH`ey@ab5MZKr~t^KzW?YgHc-8`A83H;^3&MicO!QpGC)DBW>WDU z0Hk4ky|h;v=xt^PSsftMGCw=Vjrk$su^_Ckg6ncT# zuzN&@T6PW&dY6V%cX@F-?r5;%*Lf8hs}&A6c*R;_bL{JjDUPp{bw^xLY4i?H7s;+} zGo-s-W1t$Tt0z5QWvcXQrEnhY;oDlTuqVMa{c-^?&oi*AbemH*ne*nv4SiBYU)GQl zVw(n`FzF(@STr#6X(%R5M>8Xhx5XJ|9jt-Bw!?rS(17alT zi?(!vqdcP-Kdsod(}!T2*}KO7H{K;fWl_bCOKrr5A>i}Ss@HAS5P^mbF3qQrLYysV znzLfuN+j2seS}<#)S6VTUGNwxaRZbtR27&VY*7Ouz$I4xi+m9Y^2Qw`Gm4k)y&ojPO?#>W^BW`PrvNJE$;Pr}EMAYge@lyW z6OcNGNu$!E+pcro(5tQF_Hxm@H#yB0V%{nVM)#|b%x4{3?7a5k?hov7y*93{UGt)1 z(oQxW2s#vipJN?_-hANnz*#G%=}>#b*PmRAi+Usqu#W;u72IF!Lx~NkgNfIFcVckg zeT8%VJW~Gcg=}<)$yP($#8!#d*Yuj4r-qoI;qVH|Ce7}r&EwEotA}e&trp0o3R!cm zZZM8emgerumY@4n-@s$}28WE3y_%a;2N2rMjXhKPjD}^BanI$V4t+`yxTwa*mF08YQaLjf#Dosial1+_4C=qMP zQ>!Fqt8g7;*U?`KdS<6KsOCsI|A_0rsF{6mXOOUt?25ptT=`WisuKwcBuuhH3PBon zQGN(?La=RtJNSzVUE{oY4rG=*5y>9??gMp3*JJ<-*U78xb}>vYPxqdWy#5TX++&kT(QqpJRlr`cviB4S@Sw>wlg@ATDnb{QjY9B z61amllHyqd(yw#iVjO!sk@66O#kbH0POgH-3q&R_NxhGJL8T}2nP?|AsEXih8q2h* zH4K2wq+^7IEnZ~`6ePY($_Y@wx+`7=qsO}HK*NY4QWO7H|01qp@BA_=+p6bp83A6< z^P(u!Z(W+Qr&7xFwtq~Jm-w$$(~>6Qs-78 zzpXMtW<2LjZE~?BbZHyrDE?_kEOFt3iK$kFTBPV^%^I7k1B6b1Xy6{Z5LSEaU@50K zp1fy9G}v5N_ufmsu8@B)H6&2G>$v=w=tbFjM$!$Lw<#v>pmQTPo_3Mu$w|9iNVk!@IWoawxt5^~F;C>3>Q49OS7}OWd^>eZ%Gp&t z--RSw400AMbqJcx56``%+^l+jCs?SJ58zi&tpIW`?rIs9Pxwz)#m026q=ol&d3LkS zfMuJ?yKs+61N~j9^DpCB2iNEGqiyuc3)jO^Y2N?W__=@{U?>6D{F3)Ai^f%Dt`UR*Oin%{$2;5j6S)wPg!>ZF_(o zjmqhdZndIX2b^D_>9Z|2u;|Jx%xj2s1l3&^ejKE|P&4`=r=X*Pbw6UyO_$KHt$#~Z zi90;sBS)0zwTe91AdkT5pnc=4*zF*RAw{|d+JXtq1L}z%EDxorU+Z@a*IOKY~$D!!&ZmuH6co44+Be!Rf)q&xVKiGdpBA+SnmdzbP@ceP;M3 z?b%7X*y89uu1WM^*fx+0hQ%4b7K2c(S!%2q&t>T_E)J<$PJ5*Tm7^HxI-I?m53EX! zlO>og%U0cjb?ZKpBvBkON~5HN(tT9<@PVh-#aGmbA?Zk(BwseB?}sy)_q!8H>+9(wrtz9788xdr5HKHA?#Qe{d zs87->u|bqm-^zN&+Uyf|Onk}$I!>`V4cIX220#rgS1jU3m`A`iflmSuxZ~ zGGWXqPwXl>%~&$4o%>d+oc%}W$-}u3sfW?Go-b2PfKJG%3SDAX)kTsWRUljK&h zVcNxE#!|rUc4%;i=X#9o%0BQ6R?pp0#ty4IAQ2bslw%xk(KJbn#{aTR{?p5OkO~i` z!(sdzsy(lM+WG8v)*Wvcd_m2WW%Whb#34#HU4EceRS441N3Tk237J2F&WE&cEC!MOK0S90?N2@ zBb704ae^7nTz@|95)}blP-P&473QA+)S=)(9HX|EAD(_^s(WX}JYN3H1iM-yN5T8@ z^{O2Auj+ratoPQ(`PY`&NT(G+gvDP>sY&~7)dI0iL4ITRZTpg$E5XE-@ z%s*}tDpYkCC?D49Bvq_Ksy7PoRJ30Hy^wq$46sFbrx6{|VxG-h96TUp(|dza#)8Ob z=i8a6u#Cr-IV!0hePI7xZmloXFLxd(IRHv}vP!rm*ev#!ZF%Rsc^BT_KI+MC00MHn zwz?r`nr)M+o9o=gMTUa6NR26y%~2F?h$P$zR*W=UVsEu2P|v)g2n6MSm3`Z>wm)j{ zFDzcW`eF5*7?i~zJosuWJX{FrtWTDYztWN`T?xcgu|N3btUR1=1}Mb2!ztH5AL$?l zF8MOEE9gPBSd7-F02v4=%Nhd^Ux5t&GHBTLg>>k|2Jpun;@tRG?|1>}msSkg#AV!@ zWC^;?Quv68ai!`~=y0Ff+YP8(nH~mOBq$UWqo85XYD7Be5un_E|CstJt80qTjBZh% z=jnz?@MIAXelYPeCl7#7=8utlhxC+~PUH6Ss6&6s7 zxTlm}xQP|9$w7}UVS}dnSAI%&#PN_Bw*UtBwdLgXP({yTtU)g(_eJy^0u*5%gbEH6 z6?(*v)7WM(xR)!>osvU$Zf z?Qk>b#)Uaum6|tsmsXGd=|*K`DA#yf(A9;y*l*m(N)~RwiN^Bf!Ve(LRl|~aHv`bL zP-p##6l|0+9CYSZ%89eZ@UZs_-(8fbG7-%+0?53c(9M(^w-ml4aI>b%FvI0X<=7hKlhBL@^`{4PM54%WNcDSwuPSyY<{Q3~) zz2Ey;z8MAi*U*+~z@M+OJUiN9D|sR0JRr@W31qG_wx5lgpmk&p**d}qZ3Yc2I-gfw zTs+jtgZ%zm0Cy8;d>$ImHeO2ptkoe~98w-ZkEU;vYhqzwgd}NKVaqBJq52XcGJ;0& zXZP+mq#m3BoiU591?{1$o2Tvbo^Pi*(PAryU`O|!fj;3%Ce@6$#-AylFQ;O?Tm?Fn z9-Uf)vuWqMg78Do)%ra8%VL5j=ux*L#6>oAAS=Z+CqEn1WfknalL6t_EF#5ilivEY zo$NgA>NIKF`jCmsLX=NkSf zSd_G|QNvfPISa|4l{tQcoyuoGRZ+kQaHG5k2G>@51rl30@Kakvm|Z%O&0~p1Oc3+& zj0|F70!(0%n^z(eZAciyC=&px1`CFIY{($i;?|SEqtI2n^W~;S@gb;L+Zo~~;vJOA z&^sYToc5b<=ac~K39!$PCTli{45;9>K2zMttV z8@By1meR~4L-B1rhn=s_f-VhQioRJ8TEft{WOmTyOUK_J7l6k6%4Js3H%TucY41qz zQaY7i8-}^N#Af0I^im!1xWr3jylX>yFzxarx`PBAp`fv-%y^`)1;jXQ353F|4mEC8 z!NJDFM48!Of~tnWcVzpTJ`t$lx0Zo>guaJMb*1dD`>lYYz5N>u2NoibqXfcTM5INq z#SNqsrrQewF-o2ce2~UU^^1`;9m-OUrUtB_0ttIJNBdGmErD=UU?=FBNk4~RI{+mE zMXX{3h@QxlmpAYsVFTIQ`06f!Lze8-KG3Tht0BvQth5E$HQnW14nV6OjlI$UDnm_v zm=hGvlXC^B;4zDyAU;9~_AwYTr(wQHCN;t3(T7y|E2!r(t_0yFMGs`j*E&gTk(j zszB%UEdfFxlFfp;xzqVz#rhSmlw6tfwLRi1h}9g9h;@$$h<282sxoql-^<# zF{i<25)Frm6eL4Kk*o`&1(mjhsrm}HTi-9;N8j@z@Fcgy@3 z#w5)G&n!|z_JL_X@ca^TV>8_Nbj>v}qNlyO4m`eK#6k}GaD;Rik4N;proK|~{m4`3 zgt!BRIfIVyN5Mh>8nTxR+3!||W9R^v{Ozr>sII_(V@KD zyWge7>cs|@MhN2(J_V|K()S1INqTI}DCOkNJKjsAnM?fjy~mGTk7Fgc!-Yh@;wNN# zG-EMTy*q8^>?{@n?KZ01NBRS$Jl$F|pje;Nr8~mn#;OfBsZOW}hNWnp$Y^mjCLfmW zIO_B`iSsG7UFr|mbMeG3vZy}?!c|wH!DTx`@>}CrApHwGY7v*~TR#Ef{{+s1$=QVO z!D+Lx`Yu55$YrVK_&-#=byQYc_x=ssASs=KbT_DU+$bR_Af-$&J28y@Q4! zffn(fO#8_=(0Izk-zw4g_`!bo$w;NQBII=#YQfn2Dk4RGd8V@Z))L~uYXD?CBeiuj z*F(t?Ib|ltIOXr_U&V-a`nFOgid0(bi23M3^BxqV>-Qay(<3_TXuQGWue~)_!%6iU zTk(Hf6aTXpkg{T({p8gWPYmr~GMEcA|GWOL)p5WHF_Tq4+&I_aV-+2SUGD`4gT%F# zW$=2(0wB9@-(j%UzngAM(tpSAoZEdoV0VKyl!FwH4yhRFN&AHi=K}A>RC=~-M-Dw^ zoLTa}WTX=pWWvCh^K0{bDP*UHIaq-opJw!>-uY7p$1vu7x4k z5mMP*l5eh<9_@~rPpx?=aXlD&_xhzRquUza+8KC)ey+xCk8vrnX&Xm8cykl8%jrQu zeGc~td`p56zhEBh0G-i}M_M`CfuI;t(7&83t8Xt*P2jBge%Aq~lFCuq_?Z1{!`9%g z9S7H%b^t=IHLMi8%&<0%yOWS`;0M&%pAB%$u5NKGt5*M=;H7R(@3?iHT%aVIyAn?9 z2zo*#ChcZbM7(W7Bk++jCOtDL`M*zAnd#bG3yJ)R#Zg>obqnQm6u`viOe^EgoU%c> z(#fQxc}#?TKmd-D&H4ykE7uJuE39GlRUsn{d8F}%PK|exJr2mYRgWAB{r|nrVj2G02NOC$&uTQ|?o5AV){9nWTU4E?uwRj_~=KBF9NU2$7xA%i9mXkP~M_G&TNWz*f5s zUD=z|p3^$Bk@Sr}o2L}h?^`Rj$e@ao-^(;_YQwxkrhw(U|vLW z0bCHS{6(%-7MS;3kzeKyS+*ZuNElMt%wNp^zIW;BgIGeEpK-j{W5}d;{YP~rQhzbk zkjNdhc<-&*xmJOfcIshiIWj}qCh$oLf9$*183(jT|2P=iOzRNKRq5;eYprEKg(k98 zRS70L`U0A0Dj`BO3B3hk4!Tl0L`|e$@EF>Krn4i5`yalq>i!ZfwdJI*Ix~dgLVq$J zv5#g3oE<9qbaM&bEkpkmlHwTo^OH(x4l#0;46mPQ zf+lx`o4ffM)7K1bXt9_tw_-L1B_r7>|1DsA$rm&iLAJT$yHWx#h0i?oGeG zYTwu0EDYR~s;l7$WbVS~cLeQVVkA_Hu5pE?cpo@ zPnt8vUrBpBIppAt-JUFj#g(oAPT>#ItwBN*z9~CAIozSp_!yOzaBiiiu=mp-K?bh{X@Pg zL)(0b&gi{%RhijCrFF?$a--3IAIrH@=75-WT|4hZEycGh>aq>Pk8jFWa{MzuKyM<= zpq%yHK(q~l4scItYyF=^_KWBLW0BQ(ar9q%LC>p&sl?ksErSn>GE<~70@ zLL!r&c_}Go-d)wNKOxOAV7dLhW#@3jYHE3hUq}p=e^8y#iWmjMo-r4mBZ|QC0h7Fc zUaE-k=>c=4dr`0@HVV|o}R!YNIFa=2EQI&P5;+|P zA7{!4(QW(neaQ6ff#NrXdFfv#0yi!!+@)--m!x<+P}fl<(W^-=UUTpV%Xwe8JP^z! zu!e%m`g&C50hadAU^!e8CIJ_b@2nr`` zoV!x3g(ePR+_CHV0)P0N)l<%;KeKQWcV7n0qLtW>P zAolf}(0eN_J=3jRLo_dyEg&AN*^Uw%+breNSL}Y`Aj{zeW!8g92oT=mccArl3{&TzT4|8XUtlue?`_A4=bm zV4k}UZsV!Cf854)t>8A!!MhLBR)?s&G>4>BCAhW}1wvKg$&JUu6kvR=(6#iZ>G+|?%|3UgSIl=Lgu!3wFjNrTQ)o+9<%@P5bj9-b zdNv!60Y@|V9uvdDVzn4vi~0GH)9tK{52ek8qR0)ow-j9Cx#yuU`e2c^C}TMt^W$74 z^^S6HO|3+-^Q_`}ce@!LWeS=j;P2<9#~*9qqqAQ=E_CKE=E=b3J>0IMY=_5#k30Na zjhe*MU&pKOc9=u=ejTa%(rsMGR{5nv{m*Cs8TBE-CxTnHj^abOwxyRw#qse;$r4@O zsZCbFA<}(u3A$5_Dl%3;5^e_t0V$nQO8@~`b#y?k0N zpifG9chdWJDWcsJII8Jfu!%VmvuMFc`9g^6rWJ=554L(6*0txa&;>IomVZ@h_U2l; zl4%cFw9~M2_8No}bi#fwdviLr#XkR=B^-q%M)?%Y;h#zU^me@zJP88a;V1bK|5+%i z9+zz(@LBSu=;u!3hjZx2g59^Df2wnZX`UR=yp(X#$$9y-zSLGA{j6^I{yaAQzl38u z;uNDb#X6MXUSQFZ5v2UTZ41=(lYv|nV+gT$b8#4;(??vd+~TFDOALj?t>tN5n8D?( zUGxuW1fO9^bs^pbg1>)5QLRfj;KZ=!%Jj6V7Hvh*J5|LY^~oRY3g`d&uU{p!SU{gh zLS0%j)#&wj0wNWrHbJ|&n}a69Ohj@o5MT4;lMN2;XWzC+?{Xr*xs6Am)~jHpNwKyd z`$$4=Fh6sCDT581Za(MV+TdBkXFxxUJF`&{E<^?PP*`KmO->(l|fI=TxkDw z{$TVIY~Gdas|}enoFA4A9p?hymMS7OUDC2lXsx|(7NL%zoO|L83Fi0cLa~wpN*p2v z$^Hw`>C5$$N^>nj%_mlf6+rgB!$eK#%HbV`_?#^J`MwMEjlr{bc6AS+IpI-+b z_vlfS5?F479^z1WzrO~4{qF)w#$i$pB{%wGcOAW;>(P=CDlH{iX3>6#1v6JVOOu*L zI?@+*0m~dSRB|k=+w7hsh=V9k=k-LWNems=^-weRp8BOnWjU@l=qPcxhnqcWaaB~+ z33h-szr5w;N=2-ZDKn0cp{w=lH4|@Pgx6Xy`Q-fU)alo^*Z6aR#F;Q;7lQ-|uB+c- zCV@24+&YNVZ&MV7^bZZo^7ZQUms7T3?iLNUqcY9)GPfz` z-)#8_Dw-Y+>!{74HG_jJm>NBqzXJ13{7Tp|_=*n@SylRmrXx;>9jFFkW9ru3`WJ)! zN)y*19b+5?Bs3Bf0oDQ2*K6N_8d+#(5EY!#tq2vKl=m3M7HLj&WLYgOChj*+Xl3-> zXicwhCC0L4VUBBQvCR>tBaISFh*oIjzD7>X%-#9SY-veJLfgwa{g)044k}zN#c5XY zCZ{glG4!Ln;)#$kQVo$gUs`W1-)ugZkJKE%tBPtxm_H~$`n-yRB_IDxW!O+_<-nN? z;t(RF=6?r2;Wz)Y!)0FhouoWhiwjL^kdjPn#`m##`^SKdR^0HL*r2U^T!&Nok0-nu zT&jy`9n9e@01J^AndPk`nkkK6Dy8v94UmCSyAGdF_gkh}a@(tbU}XZOV(%maBgXFy z9*+$F&bB^vf;o%x#2Ky(87>2{8LJ}37u|bLLs48;v=)N_0}uQ0w~cwf*0=09e+d+A z`ZfR0PTQxqU2a@zAXYluzDo3T=@7w1?DP5q%od|6UpQ0O$k{`UTS z-!7MYacJgx(kaaT){AmqxQ)x3qoTIgOty5F9{ z$4KuINzN=1n5<>w@|kL?4yNm~uJ}^r@InUaJMt&s?;}7CK6MVbV?=D1nld8kqFH6|(^~bsCl4k``Yf7m$5;O9u=&@*` zAa4K6XZU5yhH7(xN9H_83$51gwe|4~y694_nXP;n+g>f3t{b-6KGM&SlM8XztW@O? z)RxTGm5vJT|3*rDaya=S40SI8jMW3I#(uja6a#m+PvuKXPmsPoy|y5%3_fjtr*TP= zpd6rTm)|swSp~UW-XOzQJAD<~$M}KF_fsC^W?xm98;A z@6MM<{&aT$Bk`(w6VUy8(AhSm9ZG$#b+I1$>e<|3AlHU@Y9Rv=UF7SfbwAVpvBUlS zxSw&wwC{W|3{{~(ycdMRwI5O<9D`C`V{R0P!OI>RLLa8ROV$DA3-^xHAPuj9 z;)SmOhclS-ezb>En95Z*gGp@sYuXhGb;{0XbDy3!|PC_w!S4fMc z+01WO-_T_D+N0^o-8(&$+$&=smRmv$MfJoeq&{F1h+Wspo}5Wz`I7M7OTt-HSxFfn zfAp|FO{VV`4|Rs+q-Eh0quI4nLyuAI5>9od+54^vJVzP29Lj97(^nGs0%a^&Nvr#Z zgx@C!WSSR;qU;;Ukcb>t*WU`UUaw|^Rh3$l(!Rm#q2@XQs9R@wI z?*?+FAJ1wfkm=EjQ1d^-StTp74}8Sbslv+7PV$N^=n=7Gz@(C{$HHs;s?VOI;Ro}1 zR!=!E>4}rBrPHR&+`jZ{J(~4{kAFDEclW&%7h0-L)s$T<)xcVj8|s;w(Dmm^Y$$he zVwyv@tH?R_kuc6H9tUrMFw^jQIA#gx= z{HdRoZ?;F4|LLwF7f~%ts!w0HH{?)o+qZVmKgy6Oh=xJV%Mcu^--j2j6vdFURe{@C z={{a&WZM(HbNQT>8a=UR>(Z5ar-Dk-zUL{yqE6`SD(sw{kA|u_nD{t}?9`pg+}cAU zum3iyMJl)KYiY9e)x9GN8(g*<8|z~1FJ}PNmdPC{BdV8Wtg;-o{v%`LyS}9ytXUM% zT-w<88_*a4Yw}*hwWd)UYcZ^lOZ2Lbb;%^s)m3hK_hu0=WbfJ-j^Q#T2ArYUwdCLO&rB%Nsg zt){xiQQjV6C?Be<$$o0q&-AEniMqu2L)jFlOa|pIriET&M+An1LwtG$D~>XJ48b`KW;uRso}RzQcifX z^YxZVRmLh1m2na!_tU)Z6)wllzsk6JxB?Q1Tb#)*zk$^S&A`F)Y|HI|7@z>`ULC^1p5esJznw{k&7K} z2tmHh2bi*t!D>j9C};}%4L|emq zMhQ(-CJ%+Z80(eA!G0Y)guCw`(xojvn z7q}KxfgIiQk25vO;}(6J`n$fUf6VHBt;;>3i;rnvB27^kpgE7)R3CZBQrCUw4_71h z@5`b#VJ{o!Ls72$h24dsT?vnTv9%@Zma=!_u3ig=PG-@~fPN)j5x08*2P>U6Z%H?a zUE*e@tUS075)#Z+Usz`S?9X~cW9Iq#BTRM9w39q!4HIve#c6TmXm7P)I;kth$PDhc)J4i)sY|G@;l z{uWKBzb&atU~9~a>;L6!X0&$C{f%hXX;E*Jo}XG7Tb5sF3JS^ zEBBWeQcz~@cFIlny7=t&e4Z0uo_taU{zJ3^D}Hars3NoE(&<)#J>qIurnKGp8*tw6 zl4u7JsiDCs__P-jaPldfd{XP85Lh0A5Jp(F#3A#6!I%n3D*S7xwX_7iE0AU8v=* zPV?YE{rYV;0$+!Gl7ttI^&Hf( z-j~bMw#_-O)kw)qf~(XDT3#e`$6DVd8WCbrQnosz8mG@cD?IuW8Gkxfp9lqQtU1084H5f-5|DT7Cdc5m_hcgz zBz%7XYl#iWp2M;GgRc30=Jy7dxtA2sr1=AF20%WL?*0AvF0#Fi5;j){DPC5r9O6Z( zwnRRvpmzb8$q_fo);;|#Nr{U{bSVD)f-`pUSRTGHz_b$GZ)ECAPaZ6$@}ql$YP#Gd22L%KM{$x6Sb8a_lu zWYg{2=hm=mL1~bWgt-W&-w1VY7cR=HoE?;cI-l;tyC zC2nO;KDr%0RWZXgzRZTb^LJ+E$&8_wBdgv6U*8ZcB}P)i_2VV> ziry?W31(vQ;F~rs5OL;NN%42S@JV8y%(ey%$MuP6evz`VVR8uH*g1>&@ds2K6Q9TT54qyJ{RK zZc!5#`HH;KEq?M++khb@8f!hsa*C5DhOFg00reV8w?5tyJn*SELQukx^<@uV6} zTWy6DxN0)$Tvy?Hss+N8qKBaI|NN8|R~{PA9k~nYw+HF%m1t|8mV8Ig24<`xhB4Es zVDL|+o&~EDdoDM&{rZbAn|V1xoprA=5Le%SpiPF4xiU#?CuhfhKfHWc-<9OG-78+A z$AkHlsafyJ-bW|iyqj1c#~J1{N}NK0eMLa}^-UCnYu?Q0;RpZ);X1aE4W8M3{Y!T$ z7H|j@-iIy^fNjQJ{aR5Y(>Z9e-s9y&SmfRp8LpKpzc=96snVOFPioC8$1!2$bN%z-@ZX;O zj8&R`LifF9Cs+T7`V(a|oUAKfvZyQBNcZ}O*1T^YO=g;>hM;mtss779bQwDEs`$8O zn(Phr?%Y}uR=sch=85g2$ll)*ed^OQCe$nz-^f*N3v}PrBTs$W!f*If#0xI5H<>FQQvC(&k zqPEBzdz9Qy`6buN9dn^r$|d!#=g^ z3SP`x;z7tFW1scvsba@%E<)Vk>+yP{uOFHFWkT8pg)kAVaLZ*tM)hP8G3Npc4aff` z)m&9@%1v5rcvmBuAtaAXoS0De6&L_1{^i2TPQi29)EvY!(u-d4xfw~?iM*V;N#IlD1pFLe0+HtiZHUSboD zSAa&jk<*X3i+e5|*rN2lKcDrW;`ccO+o(q6FNhk&MI6z;hl__QCe>#MI2bmPc*$E} z%)SoUC+`q~++}AOvV8gI#T-*dif?~ma#g3biJyrv{=ccOn>r;oYoM+a%jfyek*_S! zUhP^v7TjKQXkJFC7-uvkuk>O6-|j!QyVD~(uMA|xRsKON=u}$eE$D>3AJUcLnGfON zb>UhhtgF)$Gwh&K@rnqE@umAx(ojHuh&ujZ@OjOmu4VzM4S&3kSWRwes|Qj&8E( z*=eoctc#uQE!>7~Se9op0^ZAn-=OUX!qll6REis<&o1Xfe zHqs=+x!$(*wMZ<3iOy0K8#~Q~*G4b^MNvrKeSIspteX>gxE(2fziv4T8J57KSIT_C zqWubaxDf&jvD)aBHI4!8FkbD`ADutLXnLAAyM)9nkA%i4dwGTSU)-5veH@M-0>h_v zZdd!hZNd^~^eck@VM2?9Wky<&Zp6oWSb=UeI8ME`Z`D>}d22kg6Wf9SIQ{{h?!pGs zlQGLD$V~8gn-g#dp9>yf6BG-zwgB?EmV@U8newj;!%pB-5!2Bk{*9#Sl8Ma_;zIl> z)ew++Pzf_KMDXu93ez8vU{mWkbZ>e{|`x>s-Pg3=eCUxK+sf9P*dN>{Zeeh z5>O|jG(V^Z%)3;R9+EuQ0S$OaKNt9kv?oQ^U->zm^ZTafpC*@!emrx|4q9Xu6`_Bkfpvs6ESXNm>)vnkhksx4l2z<>71S z%vBY`n=PWuuieP^(P#kgsy~#=A3UGkzJk5QO!~8bNTy!DA_oqMP*gCP!T**yO)&$t zfS5Tiv4&hq|Jixv{^eOS%FzjHRFsb18V*(a(H$~Jqi@*{-YT4aQM1A%WK~#Gg{+<; zZr-tm@K7UGowx0Z3SpO`JF;o7@mi@;<_3b+-g4*X2ak!hKKL)wE7RvgZ-(S{-^slv z%Z-okb^osXoLKz$M|kHAhA=hMQ;IF-DcryHp6X`$w0Sw5C}!;_M)BLLVxB3VC!BJ> z<+!zdhWW{7_`o==i#pa3Sq1BOge~>Q8;ptvN|JpF3>ZOyZJ;IyAtB~o_=d;MA~D(I z#9*LeGyLPRHm1`e4B4B7Js;O?+iL<883K>JX=e*HUvjGAb$+zjgEuEw|DaHb}WZbV?j5K3)IyRTAK zk-)FeHfw7I$EvR255i6k#R5+lY}rT$iHB&4jVnInU}38{wVuad8F*`*=6AJ268n;n z*h`O6RyoP5W|qG2*uM2(3tbQie|cpzK0b=$B>Zs?Tdbb9CyOT z?ER>~2#j+%y{l`lwo~m$jLkW=5B@szzMpPlo87AY@F)B)<+GHJ1eDL-y~Bt)Oep9j zFR1zBv)iUm_`4m87Ly*Yb~5V+ce!0!NY?Lm%)|+$EsVL*JTFGx%9WZTJ|Pfs3XCN* zGg`yvKYK}s4N+a7r``R8`7BQYOHo3wtZU@C^HFi7h>c^ARJ2jiO4UG#H+RlAZF)cN0sL_H0Fp^Fir0!GQEsxoQudPo?m zb{`n@Znqr<+owTkSf&$O5`n(RskAx!ltec<2f8(^%nLVTpfHO7j>TAR29{4dxT*OO z3;{Fcc+3hD(;LW|`oVSiRXf;t3E%N1NMM)(9!7v!PJ;IhWh`Yef$OM)w#Ax5wUb~^ z9Vqhagrize(`=buKk0ZVJRRS)UZ^;GuZfBE#}vi`SZ0LW!Y+Za5BfyPNW{Z2j;u*> z(B!|yb7>`sk65G9RIsiT7xG4S2=6jxHH2bN;PQXRrI%j|Bt&6hm0!OaBjndY=~X9Q zPNnXKiR?70DP{*ocWsmOO|*;ME+6b$(zr5SG2YCl+AoOWDIGj*w89F?+U>Y|92r=$ zz}OKPl)J3OzO0mTWOSC<8JRuqRxpkE@KPg#Po%K%HU3^wtg^krXA$>JiRPA3E*KWI z%8bk>=~w%2*w#!-+!hTJjmlf0F5{w5=3*tZxyGH=N%2k5i{oYxzvs!s%$b3S+kjH* zF5s=q(T7!~Eig3XxHzp4Qj-9I*>{mcXp7q56hN3iTMT9MmMx!sscTSS1i}ZOvbFx~ zjYvR@Wi}|{88K(uy;?L@b%^~Sdr<^e7w3K83m^X-eBuk zbSa4i#&ef5F8RaotHW$<`6*_+hP`aWGT0%gKbRz>G;n=K+{VI_(Qov&eo$}T&1@BZ zaon;A&KSHfj6C_MO=hx|&&`(t`QZP2m|NV>-<0%mJRYRR9b*iv!OO0Kh0$QrOJbtW zzi|TF2gxdl844*|(xMhGGJqQ#9P3-tke6X|8h;-M1s5WR#aaVi*72O;t@SBtz_ zd@z5Ez*skLQEZ>m2-?U{Ok&EQotQS1i#BI0*|#SH&m<3`1B;uk65y0wM-1RKgSud=ZMG0{#lYBXVJ#Q`}46?coWMzPz+Rmu0c#7 z7qQ%d#mumHj?lSWR0}On`?H>v&M28$eCy=;!Ww~;K1MWIF>3-YtL5Cws6Z-glgsPgfDL%hT<+z zU&L%HSKXG;`zRdo%vw+(G>`b`B*;PgDejd%xoJViL2Of3go`Y1Ume6RH`r za^*P0BIJ+dxbsKCNa=+WIdWyeCfrq_nsXh}QbSj5nbjm}1Oh#O0f4``+MYlRkC2qdABIj`uUYul zRAA4wkzNp&A!-E1-&J3}k=Vi|ZoM9#QeEN@zWjD@=J2TEe!CBmV&p~gv-DJM3o2bL zvYv0zFBLwv@?F>pSw_(ahYzLwolt3^whP2V)pTOHbdK@fnik>Jy4CcE7~V+gCtYF7 z7UtATIi3}_P;V29b})zXNV+L+9&E~Br%HV5n3dU+4ZmN2zw z-7PJkIlP^diL0?fmjCk6zVPT65RJuqKVLo)G#&r+5(~?qnaO=v$8|)?WFMIlxlZfI zEe1qku+36oDd8K=wbhTsq_dM!?rKqVM3(n5x3mXgNr+lzV|XSfR4A}8we0ASpBZ&= z^~UIp`4IYKI8}6U&KJs`7E3^Q>EiU=xsUyj7%E%mLAAFRY%JK=`3NGwbHIJr+GIRO z{>hzYuK~G2rX6NFEbo};=B;nl0DWnu+zfu_JVHJbA|^SL`r#h{(X|7L+cw`0Ho-jfPdichIv= z&?eQ1ckOJnedc-Zs$>1;M7zX@8__sNb+0*h&pqr(_OElt4zs`LlJrP?*ls?*ynDs& z2mfYdpZv}LhQF6+D{#*=3XM{#?N{C7vN5-9gv<+i?+ z@lfYkLT#;Gy3*3iWX=^YvaLWn)A*g8xp4@U(Z;Qor%A--5~s`QWT7g$<5Pvd>J|9n&<&}m zLg|9!(};NQJg^&n?vh2c$m=o-F(=dzU~g|>L1K7uk6C)No#HdxF~J}Mqr5^aSG4ov zX?&u;NFqjKJq$CIU`o0qNwj%j6xdS%Zm;JFsudWS$i*as&bP?ic0b9vAeX7wh$cjB zkTLOsAXJQ`#I}R>LFLc?jQBFIZIzGq0=?#m-`LweQNySo{Lf!F(!P4JGCE#+{JWqj zWusg7)%PzhbeMkFCJg%~tAEGnTPMYqE~RCv+8#B#Ygsa3(j4DD&KFBT%`Nk}VBFMG z{rBW0{&3xOm!Zjg$9rp7(&}q%+IqVp-E~le=HCV3DW^${uZ!M(I9B8^MO78zK7Q=X zCoJK01QXkENW9aW1S|bKbar+F@1cfuZ9>9$9qRgNkTs5r#i@$Yu@N=Y`F5FUzMG5@ zwJ^VV>Pl)cA9$fpP*cyYs8?r#)B;PP<{p|!SWHf|!cN|Vu1G^4pdjtSJ+JW5fhjrCIKU`wQ8Qn0a2wmTTlR3h`~ zDAA?&LXN2RPnqt1)sAJ|fcRAa+2GL&T8Jkbd?-8XZ|*wMeOx3R&H$u zh6J0UO}GAqZrbEeAwj~d1EXVtl$kf=Pd0A6huGc-IHqK`pA-#{9}2Ry;ORvN@}TNV z{UWl+7T_)ndYNOeuzrR*nIGX$F@sxbT^1H27Gw%Y%!pj#XWolFskCd}(@M-yY;PmZ}b+Dnh=N0IBO)P?oy16hvDMrx5cBMp1wNxulT$=a>UPq}q2xAl9>V-VcI z`QM{`=SasfAGNB}ktH#8bF}E{PSguk(TY4S$@(wspJD|Z-Q5=tU?Icv3ku|Ugc3V; zo~TW2X<6Qy==k7xsKF4Xkin@Ep%v90wmd<_)`A`Uiy%8DhSN{`O?wakU^n?cO!}fI zO~T;PIrU(7$is{POF{i*XDBU6KRqW&*`L$2$c+{wM-qojs!3Q|AoXEHFgpD{**x0p zbXI>B2Jea9rzgwuG)PJvniPZ13N)52x;^9EmUc|>eeZ&!&GiRu!n3YvC9FgtB6b8p z%#IjD3oWDYW5<$U(##NQMl;!+UO2jSo6$s=b7ys0XXnrNt^hxTH!R865|%GGlg z^FFB^N}X#{&y-BKOZ*qMmXD(X1(4_Flr-|pq^+E|9dq`!*#DjzqZ8c+O>*4qD@0r` zcYiVGOrCsMQnIbS)33q6oOsxYCyW(^=EHJX&~kXYSRzH+s~L;y_`KM1M z@tTiD$``3|kg0p49J1j;(azOB5`aYLAtA|)`XLgrD)NpE8}Qjiu-tft%^Sr04hSRF z_;!#Zc@PkPmhKgFN8zYp>Ig=WK4J#h+#*`8p#)3zE^ghVdH21omI*4okv9@E^=z|0 zd|r3?^G8c$e=oHoPcE6p`z1|lE3QiYjgCT-4A;{{+gLcOAu!P4w3smU*Dv(JNT@_$ zMauuPtzLm@HcxzKz3!fhi0A0%mE@bO#ACcnwwd=x?RDwdG!Fjrr0&k7;=GoMy-<{) z%6=sx!R;*twd#`FDIEoF;w4@wI-IANSd)URzck`Iu}^LhVro3pOc(R8b<_Efqrsd? zDC=i(ZN)Y#3jir3m{bX< zP_jiRWq72%Q-7USb4|fV&0&p_1&EP`I;54;VP3(j-7|YoaX!dGT=ZaY|2fYiZ2fpV zZSWDB;V=u?6JkyFlc!3=;&8lJV8bfgEo`#9c`y<#5h%qSDT6+^W|#TA+r-^CM%4e; zDm5ocPnF?jH@%T~akTzajYNQQAel2R=9IteTd!dwvKI>z?m8MBMC;@$?q9?ie7~oJ zqqgnKe<@PZXO^7PIbWtON39OO+^NV?WI*(cb~r7#gVtx7@r;LK|IGquHc83~5hYrO ze0$2V9E`cd+gfB0v-%)q5jo-EvcH7=N^;zLeHlDQd+U5dq%O=c{z$N7Hc1V~!58^6 z79dmjGkyL@ZbD2gcK>WB;*%iWmyIM-_)86Sa(!R*n!f|e=ZSH}IoMW-NyLn$~#kH7XVWYOPVwp7;* zue8LrBD?vU#+stfhxE_F(ERb1O!R|fgBSJl@dgi5GOxH~mx@JbWF9+SbuMN}9}MOE zv{gUqD1{j!XOaHTV?O|J^fR0mLNCGB{)fkZGt#`u;f=Z9Zc?h4Q+gw~$x9-YsP8Cx zUv9bRcsmdZ$T|4iDJ7>a@(~h<4Z{V(%xl=62AzYEJbph6KJRAmH+9lDsi_c%tkDCq0&&>!{%HdqaO2$4pu-_}qr>g>s^g6HFFF)`H8u63;)PZlov6Uz zK!?AfoL@-biQ)(zYKA)`uw!-7i}t^~+~@w(t{kg#<|pkh@5{gE`#0$@ueVg6CGKo3 z!BUNbrTR|u-^!`1KAMJuxW!o%L_%W&Q%*W-NBX;iL^hiC*7_d=7SEwb>Jm_K@dwR4 zLeB4K_Ug5kWA2|E2)N_|L{NT*kTh0J5Ujno88PjR?6}G;w%8Fb#NGdh4|POUdE1tw z?C{3@rakA;1Ne{W6SSU`G@cELC>YqBuW>fW6ttH0JvBI>iB)7kn|P9>ida8uAvggC zkS;$Ij{>ZEjj0 zj?!Szo=~0M&N+QN?W>tzX~!>;Z*3;2H1mAxrvvZh=9skW@k_#3+hoowAHVG!ST^(r zHjU}_4kurr4e)mVo7zQ>xz(|U!t?4H-ZpME$-yX#bX3UhR+kc2Wq7b9Zc5&9^7az8 z$?B~V1!zt~%uT~l=r5fAo=9~@J$#u`LN3g_uij|t9y)%198cCMW~U$^pVhAfyZt0N zZIC_L%~guZ2g%<@@5jw~XDG1Alix1r>&m}JvC)O2p&EYa76Z4a)LqbXBd$^r8*7ECdWlnXOEmQ6TsDu#$VH~sUtx5Jn)|>TN}4H zkUGf*iSSi|?A{y9w_-1I%fJ~o4>D40N*+ouEE^Pi=`grWAvQ;Rbqrdp6#~IQ@t5C~ zRLoxCqbwPGOWBZ3IKG@NXdbWj>YubfFC8gx+kV{$z&4)73*)y4=EjhD6=Rs-!>EvD5R5mmy}( z?4?Rqt-s=eF3orCOM?i$z6?S((&uR1EZP+1k24`Il1^WBH}SHzYsr=KCVwka;6`Ym zMeMRCpQUqsU_H(jbI%FC(8x(-GF&hihC(n235bzx2PMuX9+b7aZ!7zxtUxkvrN-G% zMlM2)TuOe~@I`Eph*8GKnB^D6v4E42Oa$oe_U=7wS>$QMVj&+^t`@ zZKy_kX7qlq*o1~JMBLFNaNSCtrgCNy?0IMS<2s>0h`I~pQboc<|5oP03}7y-aK{L# ziTGSzcr(e+?p>S7Yo+ScUN#aU?;kx*J~4?{ur{4?Tbz^|<6yW$qug>I+vL)|#=fd8 z1-NzsE0|MR$%-nrGp!qMaDOU6$G_l&mX#ugQ1!ufr6}@n1u7>CwpdRzy0#TwbalD@ zpSJbpw-gB0dB%FaiI~q)1{Ut!yIXBnv0ijwYkDVAl$mJS{f|yk>#{dq3mZ394MQ}6 zOM4LD@_PL5TClJfRdTOS8sMY`n80O;Pe1GG*sU;boq?Sb=|cIJ1y}rkkP()j9nYM1 z<7kYnUgM=4e}nNj5Aq4$PbRx>ey+QyJlC`Tl{vQhR#cBbS#wO}-|bUYGhD~`Ip2;d zqA7Y!25u`O=n&|7D~%YHOwy4ThivN#i035<&E4{r;|b^2eh&($UTH&U3O;09+mS zeZjs*hREbSZ~PR43o+h~eKELT-?E2;K%Wx3!?%~5k|YA@A!7gLM$}*_=x2l40l>V4 zg;Q`vWSy?vpNElr-WS#we{P427mTVb{$225qF}>XG73$JB^d2f@Fj*f9L4*+;KNmI z+rn45GhgdZ71H@{_iKK?5<^&EAG(x^Zpl9zR`lvlRyas{^=RZUEj@(=URuee6#m28 zX_f8ObX?uSiFwAgFWm4@_L6O`!}q=Vw`sd_y0gRs42N1j{em`?4K7o=A^E6q75`Bt zG9$tvT0~facfzKC&eX<;Ym z3y1)H4(V>~VEg*%$g;PB}v*j z#HA~y`HQ~ztwhBrCe_7&K4j&HiVO@>t(;w5uaT9V*xP52@K%19WSXY^)ijU+e+AXi zp`uLeo}rHQ{SQ)%+R5M&dX!dwC+91z(#^@V7-a2*5i`$sxT4@a+~#?+A2lY3!J@&? z@)2(BR&LS&V*Pk9vK2yM1n)F@CR4iY9z&ghgNJz#+ZuU-)H7&DBL$igZ_~Jx3(#uL0gn^mTAv?72 zyyP_0=@GVY!KV_8;K*sWblv{en5bKqo(8I)+F7IbYqJX`BJI57(CW5jcSpGwv_X%` z#G0QkNa9m7xSO80tVCo};I2AY8F3$Rne3n=8sC3=-uT4I{~@@Yi1dQz7^Wd?P%p6b zy5-n27Dmhq0sQkpWHP+SI7d{FXdaK(1p^!V?avqjgc+}e{Ec8q8CGKEhbB^!U*{Hi-5>K>zB>33fW5WX&+RolHhYOxc<)PSrtHp#3ch*wz;!*B zYnJ=|*5N26u2$1mjujIoCkbXYTgBmvq?dMTZ`4eDH;2h~oFc=!m(uF}kucrcVigxR z9dP+z^k@8bgJ{$9u19tu7g%Yt^9ociSejPk-g)?y^Tosx>({z#7cmVxWa$^4^ZEJd zz7$np#n8ccy()kg-(4)nx3yl-{rWK@4IaLnL3AMBsojW#^VvA5@RXTGPme)_y|qqS z$q4HY3Ccp_#2{J0hsmyKS2gN#RFYj&F5idHBrCXwQq-8X@O=cM!pE53pd!f`U5-(b z^gG^5dgkxBHwkpgl2vBb$s$)Pb>W6?JscOE60z>%wkZlxJ92170+H2xyL-{9~gH9^4eqmfv5 zX(8s9d)TX?fqV;QwJ}$MDhT~PYDtDM?3uh&sa74DHw-`*{023>+sXUwoC^!SlfMBc zmhE1lF#9Rov69@ud~MNh6C(&rZ9+Nq#4H_M6rM-S_9r5Pc=?rU7;*Zp7*Tu7)hOuP+rxl8Sr70L)p{k^6ntWr!{KFlhUEzGliAUs`>?#Qlej z1RKg=$Ucs|K_Z(N-^oUF@{Np38yP!Y2!o@p@uGA*Zt>|HRg?#uInawPIqprpBM=5R8 zw*-+12chG2WHtS7!!(!UuP3?ETlG(ASu`ry@7se|FW7PtQ$F&vRh{+zej{C;dv~Lo z-uU!p*pD~Nc=^3|2kBTf;F9sr6il3x>L)6*_WWup6;_z-y79 zAkOmL3LgXAad92k95rtdjQ3HUSc*^Z3XkF9DSZoe;`dMVAB}x+1K@P>R+6H!rd~;R~MYP;4-k-%BXW3t$ru(M@uBKmMALj~A zA*&I6!x5S`9yOJ~0H)8(LZW}DdnA4AhdTDwBtLX$h!RwHXf%mRKBKyPE8*I;{b8H5 zUc1lnw3zZ_&bE`4BK`-HhV0Q~8VnE4jkoK{CQ_dLJ%~Wlo$~B;bTAGW-HCWN>Dtpp zl?6k)K-ugrbf|+TUJK)dQgCEDrYJKg=q|0|9&w@uao^p1L*TPfTQL&3jzUJE|i&-+dLvMY>C>}8jqj451qheT*~n)CmU zsjm)-@_XNA$wg`bNr|O91w^D9X^{>|5d>rjrC9{&ZUq4W=~ihF=}=HYxCvn1<(6h9=N;2gYL{WCdma#_ZrepYyi&7P#C6lhw4k zs#T0yVVyc|Gz=hmbtD|5VA@xMVN4iQ`v4h-RYHYHV>R~~B5GJ}VfYYt-1C-2Zv{FT zBPfdgzWVYPv-xH;%aV;aL4P~qZ;*tiSbiMAvR=Xtb9FUhnd z1S9m9NN=;VvNQ!l%H}N2lnYn!spt^*rqf0pXwWtC?;Zo=0N1(ru0erO3joA zKC>2wRLD+`%T&EHqwe6lK6t(0Z@WKjiG{Id8@mVVS)+^>b9ht8h|^fLEU|Wn8HJqa z>tuuG+(W@B%j~T#O4Bl&=s4+f)!#xf`gw3chA&<2a{zy9?qw^y4LyVEKeMvmC?os7 zV+LO>hzZLMG0;yFo_v^|kqOM?GR@xtxMMXfZM9}%{%fo-p))9# zTnBu=>6w0Q0LDpuJqvz7A`m;v`|rE8M*Z)*B{HdrW-YWVrw6=M+Vu{BeR_zRc*9PN z)Yj+F$4eWWlwEn?T*VIt8kYl22YgYdP_X`FtE%nn}dEKQpsKl*PhnNSsopnuk z%d~`UU=a0W`^E#4KW~1akm_esT;HE#NmxE|S*U5lBv4f1@*DbhBwb;~XfaH|1r2Zi zT2=yNwc}xrC#eGE@K$L3Rlz$B%njO~dUqJJmy&q?g29|I6qK?AOvDm-u0S*ub1#A< z_oo~lJ!@U0+~>$^z!sr$`9t>|#0ETk#s#UWMXE|Wp};CrFeB#QL0*7PfgiZ+a_)9) z5!R}J0||^EbO-MH-`6-#EX0V$;bfH0w8u)htO9e+0lphg2CzKUar=W~CxC~DI)6gi zo^;hxBu^~@uL`FFKy`d-RN;zqgq$rtA@(6aNhT)=hD*bF9Wo%5W8n`3H%m!RY}N%w zpXMLKS!qT`ZanH-$YP&9Jji#Woz;FZD`4UI2i6} zmOj1CDQoVl!6aq@_5Njw-baDKZ1>}2F~Xfm_h&K1w6AJn6|AD2sk_>}KRWJo>l-xB zd{6yki9Ms-_6jv*@YyCWj<-~7Oo%zNa97#w7Pcq@ReO0zWvOi2^T7M1lDcBTglsA9 zz=vT;An+{8V=Y>$NMGT`aT5bDABPNzFiBnC`h&S-Bp5DoOx&R*IY8h+6Z(xtS_iA> zmw%jq%MUqHXd4uXa#@@B$M|8@j{V78U!3#rLDhqWc#orAG7gH=mBfdIn5NnFQK8?2 zHR5-zoKxHV3D9**O!xxo4@1JKT)~DV^w!!pHuDYr+ zoF8p*RLL_cKQ&qWJO24vKM^N>|GNT7$`$_7mntn-2xk5lvD<;C9gHUDc9935dxyto z0ivn5n#F?%EEPIb2s%NEZnPW&#KR#kl+D4@dI*R#rjgxZ1d56}2lDffRri1?QvEXD z*%v$ICR(Tv81p!ic@s0=g5QLbb7&=B@j2_~Bu-a-8YI`2WLgGPR^bT=7y~Z)PPfq1 z8x>{8ixa>hxZzZe!3=8$npTb;9PclGse>}%D?3m9x9%nN8;6MNgsdB|&S#FzuG@lJ z`R3dBg+9E%fZIwOw=xXIFXcA0rypw$KyT%lkbuPRUqg3&@27=hZQd}YXNiyeK$K_n zLrB!uc_nW0BkG>agI^DhhUZQEY zCEF$Nv3W0@n9rIriX8_NbYhtSRgX0g?Knk{Fq4Ptz#(^p2{6nym89_4nbLMG z9Re)jBf#k6MjaM-lV8BRGR_uB0y(og$T2u|gNGwy zwHE&{Ixbq40ein9U0^DZoo2?FdNip!iTR8zg{52?jBkbqm$gi21F{&wxMZcRf;ee7 z-Bq4i^m^nu{QF#=!qg1&1%n3l-8UjXY~AHMPHH>PZ)09w^p4{u64ITqPN}`O$*Ifx z;#X|TIl^|k$R;bMdLXUwqwew9r;(Z48b6!CRN5^O9*Tb>9dYmaba|D{APP+_3oF%n zvdZ||>ZLuHeo?vRMZ1F2i(6{ALUg@$6H`A9kf!LeFCtjY%xDMpMIO`s-Oty&zkH8h z&2HH~0BQL_M&Deuql#S2%uY#l*4_t*chYR`5eh-yf9anAV@$Me4mp2?r@n%uVB$bX_OA)!E#aXn_iEF(_I7# zR$ue-3<$@`lICe7inW%fYH~-#*iZP_WjNR3D?S5nG@l}G*=QiZvR|&Pe@-=i{CeTM zyl##RjK1Q>Pk%~)mY@@me*C>-?2S+|&Ql^ALKvNF2<(S(SmEIT`15waq%T$Z49vOA zAXB6VxV@MY+%P5*)B->yZn7vx$8Y=~$#U!Gg7p#1hwpizTdA;bJ9(lptZ$uL`;oL0 z5Qf7b+loEHESzv&SRDVJbg(P~9_YA#2UEjlNx>9IMok2Am1AXGn1eXi5sydjumpN> zAPHqH2*`QjW3gCrf-z!>B^(gY+>dlXz14E5&5v+E{3#tu*1Ri?$}&3wEBy(ku_d4z zb_R(M>KGvK{n$v0l#@T!bW1%ORwO41P)fH!iSPR>x4nRBf=XP?=%zEbpX#fTq-tI2 zFD`Xs)EXT=kca0ffON57DAkxOW|08*p~aaFdoY)`4un_ ztUd*}RJyqA!rg!}pBcRig%O>G;k7lcw5jp1k&C&%le9K|?KrqUOkEn34EWfm^@R=U zTR)iD4Ab$)L9+jbJC`s#IwZbnJ)Q#p@ttl)ye9a>w)WUqs!=(KO{9zLJ=g|@OHDPE z=#*toEIpQxSFHYDP$U*L-wC+%a)=*iBK~eMF31oRQU%`c+TNbl1thXvT*hTae52w` zv}t&FIVON8JCH;HJdmkQbN2-f&Bujr@DM25kKgF+(_BB~y|!Cehac!Q>ZnHcozk*b zsT7b7DNls@R zI~}2Y_x90zH#p;5{d;>a<4Ajhz}9F~i=u5wQneC0|CL{z|0KX0fLMK0jh;UbPeE1q z1JjR{c%2Nly~=XTX4mDd;;tB3koFgBl^4Sy*0dy-DZc9Y$f8bOqDXq{)5ab zs}*3_FJF`@GL;6i*0d1$?Qkfm1_@qP!PUR>%A#&s^&7 zW%TB>a;*~4BQXy*HTGKdFJhQ*t070^<1gzmIX*54caj5lD;B>gUje8y<{@vrR?`pI-bPB8UtkJduUw?51D z=Wvl&aZBs=>B0y+5&Wbi7k+9(k2l`rTc&u~u4c5C>Ea0GP%vbxrAoG$PZHeQRj3r5 z5XM}0NT6%ltmbpc9JIlB@TXRnpM2TT&G}~F=CrTLAF{eM48s;zXSLG%Q$6W{c;s5Z z9`jwMs+x%sl?q+DK=F~r?8pOA_K)57ThD=gI>$+cMy%)w7aZS6ir^$^f;dP4gStv+plZVd^U zc+=i@pB@bO9D+HT~SEN!pfY{|e8KRlHw0G1Yh!xmc(z5Cs}<73%VZ z*!={&iZZKyD8o9IxCj?P#7QXYX^?G9E1qdnQTI{(_K&oel4$)aUGIB!t+p3th$2@26Hj&v$y3gxOM z)mVjd=4wAM(ZeOq=AcU2!JY%2&MIpVeS3;X<|Syhl+_+;R!m7t`iFL-`XJ z3WNN&QA0hj&F*7Or*0RG-gi}sKvS?q@z#W!jqTTczS8`Cn=lb`#$rhv_=;|j-AYn} zyBaotV5s{F7_mnFa0MAcy7cc4I>3~4g`0AiK*AX)9fpm9q;7Y>cpg^|3Ds)kphbX^ z`R!C1DUdWF1F8zRy$WDsN8C9@oXcO2TxdyI=INr6qU2T7YF6$+bNWjQsNvfefAavk=c4^OgjBUBeQ>S8gw zCQq{Ce{`{ZclbKlbtGJ$PWLyX&{>=mV|9CSJ7}e8wsAC0Mp+1VA-KuoZ&3x=!{r4! z9wMtM8K|&isTT?*P!)doYB`Sno`DY*pil-N8DE)uC7OP9m1r!Wi1i>EmL0YjoR~iV z4DrW#)UX2YGPjwits#*p#I2Ui02za7LXyODtN9D*j80fubgI&E}T=Zh(t>nkFbWj?2(nc=K*YwfpN+VrGrp;1?OQ{1qfzoq9zz(2ntGq-$3^F2$=1$@Q?e{j zfi~cKWuv-$2BbfH`hQIh!iRM*+ZNmRhw)nCQp&9U-(K4S3(L z$D~eXSYpg3I)uR(QVg~yf?Th^;_FP=82^Tz{&6L%Avf9O^MrrF^(Gz)L;DLm`^^0s=Ii}w`VQFbvt1rt4|BV z7jOL=;eb2awyN_o_dMNHZOS&*07C@A-8GPhEnAM)o1nc$A727xc+x)bC~j;iEAHjP0-@mxEK$ja<~B>|HnDQUs!QmN{k~}4>wh@* z2O|$kb3_oUg0?|$V4_@4$e&V6(z|y7?^+Nug<007B$kZ*d@#TDZeMzq2>*m?8cte% zP5yiB;k$f%GUEz4V2|mMlk#gyDC*bkP)Imt6~vI1IFYXvu+y7Yx|18p;SvSR;AhAu zua5rr1{4&d3}x1~xin&I7OU@osH9#zNNk$d9Y}eTRf}OMj`nYHx`;Es1Cy%YE-Sye zc-Ek2;tMSLyS2;bPSjr`iD;=w|cb-kXc%4W?5x)lM^+2 z_(w!)-*_MV;oaYp3^IPd857Sf^=wSs2C7az;vZGe-m^kW0jE|rs~acPxwKhu&Z16O zN_0vW&j84XL(cvUmIXtdKscl%)G4p*d! z1luY{$*T#Ix&?Q)rha`=AshLu;vsJYsU>y|5?KkT^A>n5%xf+3W4 z24r!OVWoyKOkjFbwQdl*rEEJ*&d+U8VPh33juyU^+XMlJ6?_Ro$XeM3_ za@p04H^l_%6M(5|OveM+X_^hJ3 zZlb?~Yy}kHhT(2_gku$%BFL&|aWT7{KE4OQDBc{mtYZV<+r1yhrYYWGgyVQ==U|Xf z{%a3t78pDrI{!wsIB1ql=OPxktlH2pUE7&8@-Bh9$v30FuREq-f6F<M^u<4u4H8*H?FUo~GNGsobq`vX7^KeVC52)6zD!h-QzTR-|iVJqOz4 z@5D2J0Wdo*?qVks(l&r$hSh-~<2cI6HO`L0Xw;M5xj~A;QpVX1BxJ$v50@!>K#1oQ zfpIc9!23btl=P9kY)%QPGWt)4;@?b|JdbW-H_rS;3p)buNfbp&`g^ftnaf2I%xQci zAfs0rrZRVeqQEH@xI_k(Qvr5lOPe0rgu&C7wmvaT-P@D5J<^N%`Hw=qHphL4KE>O- z*Une5vC$CMBYdG(HvAdL%vjHuqba-_WG|v_Ac@d^7&MFDD<8?IiJ=K^Kmyn;dHKTFo;}p)7%G>7K}aU>Vh*4v;d)!@$5Q?@5U&)n!y$)p8zjj9q`$5 zQlIYw2h1oSA?D-!3mje8HgFs?Qv}MwHlF?~6-QR>y#JN^f|$R+r_5#*_D07Gx)UyE z=sSWMahUsxby7{)=hjBeLPEZt$vNxWk>P!JDM&^VmKOcC>wCOHSput_#>ZC_p58C} z^Q}5oeMrXD=AP1C){_rLAqz_(wD^0edD2y-#o(k(VZ)y|TD=5ZY|N0o=a`F`nluHu zhdIq9v>ARy^Cea98o8ELJ7HruAKwTNZX)6FJ+LxrR+}%Cfmctfua2inf2`h(7DW;w zEyp<6=SiK&@B#qbjq7VnLL;1S_x{~i$wLyK(oll3VSh+>3G9+N>V%MYzN&_fMZ5a9 zfH_`B{+=BzrhbgC-Jw9i`I-o!v!wl!Y{0`(1}bR)#pKMt8t~j!V^kjwU)#xuemJx`)6>_wR~W0CD+i58Bp*I$Vy(k)FInZ zcT)cYBwBj4Z$X&KgEEjFY7K4Z$LO)sa58@ zr^U#352V$ZWyXTb8WLPeV~(x`3kp7-nQ=<+ zQ9EKJ;x?iCx$$Mr6;GO>vsz(MCfSg9{fb3dMNST_72ydtXcg%kS$CT1u9; zf0TwlYwTL=J6pn*x%KbRaM zG?gcv$*@drkYposArVq?J|bZ`-uWM%FIuft|MkDN_$7L3t(2!}a^0~2_kau!Oi&&? znWln74{aI*gZ!@|uqLZ-ST{`Q+TvtNDgmcS<6V}<<&TDY3= z=ZU&3O*b!uMhJP8dPYU8WA(UhOmMPtQ@6h0I+MXs+aRDux?Cl(> z5-U|kAXq>%Sr9?0z<)wyzIxp5er@cG&LA)Y)&@ucgD|6$fGcoBA8s6=vn&es+Z|=0pMj~_m$?Z@x8adjF1>c(fn7p<(!Xiy_xo0&;Qd?U!%thLsC8}L zI>eN8s(Sti1WigLlsjzx=Nb@o@avsakpJI$TCPH=kogrz4|?#d?o0ljhxl3$(4E?Y zdwI8E-@-FYdF$O?Hz5#*q{{HEgQ~3=6LxRTae`DX}+9azJks{ z+MUx!?EgL$t<3QGUkwcXn_MnsXo=PnZ@Xw7ed|LI2@(aUAo8_z+XULa9i^K1S7VT> zoDZaNUO5<4@**rV#L<#fpCxOzFC2?G@*0h%1oC3%$*!0e)X_lHa{Ct9`>_UZ4p%@mxC0VHuIpe(rE zqh5LOzp9eFP|gcv?_g@_`X4&I)H!dzr{3(k`d zHc2V1d>eG21oHVG{qM7ghX8d*C2hhaJfm{>A)zPh%~|eTtxlL@p2R5=f1R;;XJpqi zY*gD}=ku{7A~k)N#xgbUA0OBk7u}4Dr6cKzm$j@jDH4VpXkgi(msdHS;;~thX%hP( z^nrG~W7#p)L#ry`F44 z|J+-~dKywfqXNpBIap*iu7FZnE$8GA zVPH#|0-@yU8F&(S3}cq$&Hs?pjo#a?3XXOMtvZfN1qy2gM*R-)hzKc+#;5|1D{dCS zo*$6w*3hjO%W4K6K-1vsS48fMUSbtO@6du?;|*RDy&bh*!8fbvCSfO@Z~@I-n(kly zI0DGsOB^JXvC4w67Zvc`Z8Wk?P+Ac^nhaqe#d9s+O2KjHM-n%KDZVu*mV32;H5{w@{<2DGlKT4mF#lHZzaW&;ZV7f=P3Vxn9NbOx!@9Q1DcKpi8J>cPU3p_hN(nFt34JeuT1PsDQp=Qgr z(tKputJG&DysFKl-1-@$?p&$9r z3^P@5t4$BT@&Npk_e~o(ltxGc&gcs$Qqjn<`2ETwr%p@~Fe&qIV5U0f`|wqG>F?F& zzf?{^2)1K@(IY_JTOcd3-a34r2S52eXu))Us5hwC;0hmj%7^yru)q6Q_NQYlfT?&l z=9cMwheKRp2l=axEdsMY+L_|I%(&L05Ca^FH4w7tCY;1uhQwU^UUpo;;uuoZ<=;Tz zh2qA?1Ox3>*5|-|Kz*O#`b#i|^9Xv!7UI6i4apfnwvcv=(supH$e6~rnyw=wN!;gp z+V8ACP5;MfU%qb*Ej*C8QU&q)w>n;i%K7f`M@3~x{d(51;j&ROuF<7sn86&no9~y@ zI-W#$BsTosDluQ%WQx@vs)_xv9kuCHGwR2~c)j0SGI+C(qzj6#Z|2#k{zx$wX(f{M z%Z^uX7a15(df*e#4SkMVpGlepnNFLTMa|a4x@TP(*egC9ua=OqJf$5La3G9KO0h*S zH#qbN6IpXhJNW1yNfK|B94`80faxmDLlee6tcRgB(%%Q@Wcs%`iiy%C*kj0BPhQx? zaOp3H@aglno?4>-4f>-9fzuC6tP6;Ty9=Q4+OCVJ3PVb#$r>Ohxo>R6BI*2E5NHvD zWI~z&ru`iF6)pi6V1n9+FH+da8z8)cVjA$KW^Nr^2k*T)wIaFgMJR9=kPHy_c0TH< z(`E~RD%Za|($jtkqYhd@P;>@e!q=PKi+sOboVL7Sd~eN#Z)45{_+o!!^P)vyHF0fyi=PMLlg1-ko$B0qv2+=zfzFP{ca3Tv z!FB$|w)%gqZ(tRgKlkPi?n4O_Q)(Uts_l>2H(oWosogxt-<6ubXsQXvszA&y8ZQ6~ z6H+8u+g2M?#IzLTe-bjUnivM^b;@T0kL-2_3}UrZp6LFAt{3@ticCG-=Sul2_~gsxKH<FI-mO&tc?1+$>;IdoK2m3Sft>e(f$&sL%A_WKihoO;joF+pe))S5H}pqQ4X*> z=Fp(y%u_x(P`!n9#HL)RO3RU_w>R6!gpL^K(_8DcPFXxF-M;?lay0gF{~!59v|PHr z`M+X0L^ezM(UnDcM|1wpc|R!pExgx~lcImC36C`rEnBmgi<2Bls8NYpjNYvq;C#3} zS1N^S>s|@oA}6w|_^BowFyY)dnLnM5_Gr2Oz|>I#rCDWLqm#iI$((%n+^V z9!fZDN8VC6IJ~kl?yY-Kr{x?HV!Tf+wxAMY+orB&%Uh zQ{V}OysWqVqFGczmi7I2J|t8*Zj1l*1G`0wae0yCirMAHfkS>aw;8TKz7JPF9e@ML z6VJ_$#p7GPoz39Zq$S$0Gsz~kdXcD9sUbO=WHh;7%-I8%^^$Zz-2bO|2hj?wt(W`i zK=bgl_cM_GSU?_W3Av2kE2JB`%==c;nqK+qzyRy8u^NcNBY@XZmHES!yCClJ`3VYZ z1I&c%szI7XpG{&|lq!sPP6VPIyCZ}RAQ%p;g(U-~_l4hB(H8k+OJpQT;Plpd{0jzI zwwBNXb)PW4d*()Wj^50*jQJW5Iashg^@}y63o;?cOJvuNl(lzjZwY5mbI6M(QTuZs z`Ba#=Rl9$+_?cD*fPH_F>O5NC+DmkKIwKn6M}|W7xxRmDs}q4G@;G#LSz11GF|b#1 zSe6#o(ZT`sXJ%CVm-^cb?q`%vcZpdrut%@Wl@zaxp1&1kG{pTRSup5%QI&hPdAz1{ zaQn4%@%&LsB|%&QJBnbSK)A{G|GWV9=}TR`PfZwu_VOz=G38!g6-$%#aY6CNsO6YD zksyXhSjZaKs&++iWO1gNKc7tXf@qRnpv^J;-DU2#>pM@*q7r)(1XiHbljpB~zgPm4 z38w}s&!9u-wgS^8l~J2#zh6THEpIGVp8kJE8Cay8!)sylG5fR)Tg1N99B=oH?_lQ+loVRL!f?AcE@wl2Nt zhYy;I?D>aYD{h#k`2yCDZW24kw7YHg-H31a;*6?T82yx}wluN$hH6(u@NyJk2h~&g z9N~->Qn8x)S8VjF2~)GB$QACA#C_?#T`HH~OMPqb4sjE+cZeOk6=kgH*e9)7{r4f^ac0(^TlmPnQQ}G?x+Zx$t%@iam!puF+0|TPQN>$_VgT@3j@n9@o!$Gk+ScU zunB`>3y6dRI)|5`w_Fe)+%wTy_6F2Zcb1e^Off${-kw}qllj{Ks!)!Vt6*XYRY-gp zt^g>dm%AV_ccIls*nW@>1?i;cFMr+HKL(6YHYpMvIv{2OSZ*XRo*ZWJz6A6^NMhXy zv4LD;p||#oLqPJv9>QtXXfn$niy%SF82Pq`*}EMljwuwSOL?U#BL?58zTBAD7sF}f z`>JsX&aIQCYjk}s=IP1rM&=`Z z-r%zQ^Ri6_J+^J-lrd~*Yl@T*djI|s)dsBfS(Er7Lnt6LqIxUg8F^C_SVvU@QBR-! z9xevi7a#{`t^9z%Q(YJ8p<`j!%H$M4vC=qn!tRqu5lbEFKoy_&7Cn3FDq4fJ~euXQSjbSgP?pH9|R^fzFka}mp2 zx^i_C2L7jowd!m9*YbTA!PYoATRh2Ur)eIUian>#ro6N1O>Qt;dN8F+oj>dD5WuQA z-Y8Yc2P!Z5_fOc)mFZ-?qn4}&CUidX4-ZeX67MPM(Vkysf*m!C=-rpEY|U?~XHMxi z^2lVmTN~$1bbwmzI1LwcnA%nx>)0hm?Q76{$c+{#uvMWD;r?9Yr9ZcfYPx@zk@g}L zJOxTuInP&@jp_&;y*&n(&lTut8d1*2VU3OJ-P-LuyVQlH!R4oRacq+O6D4YYS2i^+ ze=#AF$FkojGE5Ue8tVruP}fHZ6xC)+p5a)4KauMNve~f3q4(Z^%=+}KGQG2KMzF%*w87j>dtUBBZ{&;!j{Q>cPV;-Moycf&6 zU)Ju&-Ovm9w;#Qig;7WWx91}i^!A>g2;v5kv!TUWu5yA`#|wNqt^`P zHpA{1lJFHG<8UnZUtdWB&quO5AuF~IlYsAxt%`jUjC@o-069QZv0fo`>D)jN`4Rlv z6|IYX=l|^rR&1x^vkL!81M|vF`O4Ot($*TzRfTIh;uXR$)a>_5>W64YwVflI^~0NiP;n(q+^S zAvUKRc+(nxt|@g~6%&8v3-N%2EmsRA+er=6u#-C(r&UfL;Oob`$xTy39Rpv}-wk}v z8;GbNstI)oe@QS;oKLpAgQwq)Hi)rvVT#}zf6w4tO}2fO7p@S`jlgCvv0 zHwV(x1vbQb%tu5M#={xz6fCqLHEIcNwJ$}JbGxw53$&lD@ww9;FZvBH8D3@f?36ss zxqG$-Hp|<+{#PXiOgFi(QrHHnBLh0uT9Npb_0{a^QuPQGdh&tqJwGRmLVst58Do#0 zY>D(qguoK@4Fd0$gG1y|N5C!ThKNV9`Zf zD*>DU5n@w}eGj)HAe&IAb(@iGJ2rcFKKIbD==nuXn^w?f$kt7k*?FV7@t zgG_)!63=OFRMy{$zKE+!6W4xTcqff_P5w8sFpi9xoK6%d3XsIGH?BYIbQ_Novur!V zd3?uC4i4v0Hup1OH|mi9yHh*-Ej^zXXYzbZ)q4Mm*^EOhTCH}z?qR0J+qL2sdfp#0 zA2Y?*1sdu;xH#vQ&eTknOu8;u zc+cSh!{|I)%3TsG^h$!??2CZ=kGfFf<}WBf{xSl*JLRX}o&_YC;sAm7avNY${bXJP zHwZaI!2p`NJJ^yWI?$yIsY^E=tdrsOF1G;%G9TnJEE_Ap@$XQz{Rq`~v>A3}`yXO} z!0cWG{voyWYpUWU%uP)?R7x$xIfVLtyVLE1*bLGwx2M~y9UDGDn#O{3jG2|rR(yXW zWl2nwa@OfhAMFW@cVSdO)=eE`fE}q(A3~F<-_ZydKhDT`*Zq@Hp# z=dwDfd7e(4RJZb~@gYOpv=Zscp)n|6KbLv~LrFn>P;H~ubo~v?%*anPk3O+`{74}c zeI8FZawXZvw`KJBUhe^e4kdA>b_2ZV%IV>t5*&-Q5|onrygqawroju)P$93(F5rZp z!A;B>44g34x`FO6a6uFujs=|Z5kPLLQbw0Thvp*!BgF4PuotHdNcOqL{X@_)M-s3Ca`>Yfl4*3J{do+091NYDz3BoK8N~a`VLn;oyQW zrF1_1&9Prfma3lz8%CpUU#1H?_0T-hc^uO0qi3~zSh!Zfa7I5k_NF-7g8lr3{QHuC zIa`_{UQ|!b#Z7kN&N0PLC(GUZw@g;O@v7e84U{p!Hn-Z}q$3IAHTpXW$Mis3K^XlT zlzG`k-m59a;t4$fY_c!|f8T%II4f(g)CT^yERaPR(KVFQTo0neUiyJs8F>%rmj4xe zRPg#R@g!Z6IAFv!lU)8&PBe}bmtd-F$W|!H3y(nA? z(gVZwwC=Kr0m{*pfr|o0B^Dg$Fw2YpguCi(0L;8efNPM(Yhk637V>oj9yBEXGpeWE z*Ziz$M+|CI2Hdl+Uo!-14q&B<*`7aCDdYK92}ACMoA)T@-ggt47l_J#tJI+R21|-t zf$6QDRBwAaPkmw`POesA*A_WFaIey&!yqd#2s;nvehPJT1qi{ri@B}&X=l0m-Stmz z?26yDJ6cxjX3(!=K3^YIVZieFDO|LQ+G&QjR;0W-LQ%nzu9{5l9|g}mfAp*r6e**i zc%xz@+EEi9E0=V<5cK}dqQyQiRP&2P_KNQJ1d>okD>+WP6BZA%JPZWe-A;(Vc~8Cp z2O}jS7Cc064@EEpu;6&~9y(P^jN`!N4u{Q)ga7WDo0J>s zuL-C|$zfnMST*z0OUQv~wft}^9YC^s(%t_<;nK5QiBHXF2LiVJvrekU>A#b?Rx z4-#VQ!_xjC5u?6Ku8gu?@6(9`ieKjqo-%|a zq&n^dx(g15fYU|v3OWpAqf$WDe~6(%@_$90rGr9&wrA&mMQ1tM}{>a@la29 zUeZ;>R@N<(8OLtoG@hgQIpRm2wO4;$IBuol0lKwb{D(g9<~Po4^Q|D;X{HP!bgI#&u| zx{@d?HrjBXkHBhNPEo5mi1uecus3#LLZ7UDY2uyx<&cx-*;TTst$C9W_w>=#reSez zqvsYolvEUyN9!R;+*S%x#e~<*xJ4O(xT)2K`*iVl$gcUIo(T~62!`1eJ&zM0Y8C_f z1JlUl4XZBjxIz#0M^esZUwu=qDE!g=H-p_jPXb7#G}Fergekui5<5Iqq2si9_Ek8V z!1IY2fAYKN2o)C+{!x*wHuz}-`Wrsg5!>J|0wbDb7voQ+p>j-;{8oe;WB$KGj*9+d zf8ueZe7h8_>S#jk2<{TLRhjYU0V4?mp9Xj~l+6HUWagjxVy0lev~<}xJj-mI(b;;)IgK{cN{o_LRcwk(7 zrwihB2m!cD6}6`*=(T4F!4uDiP=P>`YyH;qCn*Rqe%iFQ83VaMKvrA(KOv(g{?C_g z-T~k`R)6r4)=&!17-J6S`IG}k^#FfUI9qDEI=0^OsfP>HUgPmP_Z}9<8X5juGwL7@ z?9pBQ>G|%Bsfn0(sbk7o6$|!L0~l3q@14XpzuCWrFbZGEjd-k&k%=KhBDJI6Q72Bm z$ZCD%)B$k093!gil65a`-4d`C#3ZDX>R=G0Q04Df$IR3Ir(pv6b?(PxS=?VR9ON)D zU_kpencTekq=rsSxg=FXs_{EbU9pj*+r}&+8>xLck$-`}Yk(5&o&4J>4@dly5r@h>eGBBlOn9 z65e0(_Y_lrR*?nZPm!nw z3!^(=In(3NJ89Ax0FaMqI{3l8rctPUr#u1Q=CxV}>G+>Z+JZmRlt1hPwEVi^>nu6P zM+My}CDYA3S8;vP`kx<97pk^*ahOl1eVu#D-Q(%|-nvhkNyjsAliZ-J)H|;^=Gb0= zeO&5)@4*#9$FL~lT+5S)?Z~v5cecNMn9>UEx^yNg-`>Ik9qtH_NWzRC?P&TV9HB(m ztGk`bnw~80`c^}S5+!S&7%Nj{@`mgY}+PTWb8ULAZK-;{9!Q zwxB03JL6eD_uG35F8yihr(JITfXvY{N>5jHefOBUPR(eBOD3y^*$>iXyjCS= zzp%}v)f?=MKJJ%3ObhaXCIX6E=CuE=r<`XBk6WImsP}+v6D@my(D|&r)mUT3XG0-M zXy#insS6zDP&SicYw2)iNbSv@p=nq}U>j5~3}ZA@#kSKDd2If+pV0`#7q)vF{10g0 z>3-eQ`|w>XuJtEB{iRINXNVi4vYvT!JO|CO z&bb*{vzGrZuO@?xJ$58=;X$BDK3!%l9ri!PANnQH>(!ir2CxYr z=Ea1(EL)XL1q#e7?M;qc)EP(I#u^@u)MPLV3^gn2RiVl=KS7k-oOIll8%yYCAwis9 zOVfKJZx<;}U||PZQYgI{0bc}-k3CA|(>r3GVDhW}X>PNUt?kZy)QX(LvTMw3 zbSKTo{w7_T%!XlM9>20=z?g5Zx4#d6z0e{fu2|PS640m%tTcHv z`1u-M|1CL z_Y8Gz4Id2^*C`09*I1IJhhr_WoBRq%joNuBQ`OG*5||w;=iCRfc2&L)f#qb3E9S@b zjK?|2VlK)w2}|L)YDV1&h{WO3ON}}U@5|$c+KlohiHN*|>fhEGahtnlC9@x|r$Q>! zsFM>uZ_O9lSz6{Y7%P83xK_(J8xWo9oBVf(L5=a~Q|HwG?otG%_vbrYEu|{#gz2R; zvt5qA+#aiWlNJ%7a=!Wtcyhcsco@4yF6`Z(U%-W>uwqzX#q;#_DVDl3zTY6Y2KbTj zYiystqQ-HeYmWc0d+5i=8y_gWS(~bL-W+SmqaLnw=NIj#yY0^Pgeige%gdf;1Qcz| z>I&fWeyG4eefrikXZXc6CcaKU>*>u+YSP%JBTs&JoD_fC53Bz56g(0z!wbE)!mcy> z|GflQWMa0dVS;O&&=mwQi5o%9Q3)EW&(yUh)Jx0#Hu>vfO$|m{28;YYA&HY)nim4Cby68L1ivDAJU?0@&Z0d{-opZ~|+cgIuxzW+PN!Lj#@ zob1SqY#kZdWJXpYA=zZbu`(*MXPt`75RsITl$DXpB(g_FR<_^$I!Eu%`}_U<{{Q{+ z>7VLxUa$Lg-PgLW`?|0DdM>_tYRRi&|1o^B>LO|}EOP7g&I58}UzkjSr2jQS`>Z57 zhqRBxO0^QMI_?jt9P|aRi=$UbnEI(WfsQmvLH5{7ZcX1JSR|BX$25Iu>t)+!hQs&g zyW==w-H`T6BOj(c-*oP&+MZRs#j`p5d|hzwir{x*pHd%%*16W{8ptjzm-Tg%;~mn~ z@Ra89W?a|q>OGFebWjN?0*|CcQh_PGtS}U|_VVYmg_9~-e>@a==lz~qcp7HJwQo6GfitE( zbue}KEz5074&&T4y5ivYW*3P&LY_~HHad20$&sO*N;WytpVx!UnTTt53Z{E?JATh{ z8|0r8Z!qpu1oh?*YNcJp#$)z&QfvdNG=>2*8BeF~^G;ZhQX&XGpq0`W(U&%LMl=8% z$NhS<%kg#NEt>I$vADYFrLJ5B9|}E%JN&2Gx-BoDH%}Tx{9e({`twrs150ml=SW+^ zot&yHypHvlg_3oZw)DG&}S=_^FJqdP}>W5g4%x`)z7}**5d175`g7KDw{1)YZi99F{Wp6Qc-70GkeFu`km$ zeCFpW-*dICPSJg;_R&01*}w0Tz1EXi8pUV5NRH`g^ zG|#?UWT=QGeJOdMOEoTc+1(N+S0s#H^vGnREVsd><<*@r-r$`&yF0FPEJF#gEh{@i zzcT_M$H%8ZDDcG1^@raYfmnC1DDUQ^+E*14&M^JSQtI0k54LDmU!1RsN6sch;NlVM z#O3|tycpI3p|iQO@a{?BN{92qjK^a`+XAx@VGVIEdkT)#1TZ7fBM^+BDx~z(H4jZz4pw1XeW}kXJs9P`-)M!7P zxD9+v4+5dnu)of7uAx6YNIG4#|Cc$V-P2*Z^rY05RaMUMnOC-&J{KFec(fl1J6720 zyWVM^7IKJL*2%8j@L@3nt<43ZHWt5!y%6!hibTLd6Y^JX!Qw?(FtIeNRp(zIOFucf zK-M(B?sD~`foS6xf98p)KP*v;@4``p};!P-xlw zQ|JK0v=uLFX8YHsob0ulH>PzyHAZv;%|3{mtfRQ}Les3@Kt%(!YxRfKp~Sw&#U6{Q zEClt=!#5{7D?rT{avNYUHikR!apU}YT8ZL$+#x(TJg39F3%-+{taN=&!i4F=?H>z& zDm{LR!(D^(TkKn2v%;Q1YoVI*?|m}iV;&+$3~f)TN%@!Y)U6Dos0xx!o@=4WawrGj+##IbM5w2X#!@7g4YTEF z`H>@M#>^Sg;_rpJKs44yInZz5PFP$naJaMLP8U`gF$%$V%*WD9t`?=1>2TcqOq5)B zezyN6!daOe&6p}H3;LDpoo6$m2Y7_!nFZP^`9<#qbwxq-q8PmYluB7Ma4_gVm4iv;Prph=Uzo3rJj#^4R@WUzXbKYh4tS!lThXD?J|m7^IQVqqIH2PX^zs1j~v{My9;}@uiUC z!4)F7f~grMz-wJ{v|(iHB)y5z^A4JnyGwzZ#p|xKoofJcEJF0GOhvLYZGlRNg>YDB z`zWpw)V%6_9!{=}qKJyEo$6{yA5vi->sLB;?djpdl?vHrXQ8l@px=zizj3Ph>$@hvh@9H)&GDMt6ej5#F?7o41~1iMF`$fwOZz zpQdMy@l;Ps4)}CapR}7cPGJPUh^9&>5y$>)DI8VCiX0TmM-N=VW!&BcJnPQ0gU&n} z-4GQUJ0=Oe9qJ|rQ6lngSF9a6L`Y@_fh5(~(I%~zTCha-YbkC3q?=4|KMsgt* zoyr`LQ(<W=%WLRsInES>(KBn{4pLJH_BBMAjgF1+#QoY;Bb)N5yScnZSz@28N_UR*_DyX%DM?_hIc;)Spxi8Z730-@*5tUK>yk$s6Wp$nC7iojjs ztq|06zSx`9gy&R;+(@zsxefdfiPm#I?aSXf8anIENYeN|Im8pbsOqxw5jq)UauTk# z>u0u=b;dAiEurfXeG*B9or#am7M+m~rTgJ?+JY+~&TO2igR%IfrnoxjBYrb5P6zi0 zzSEz(At6?jC>gr;n~BJwPh$2G6TFI-YABoK+C=EV%)A`X@Dt_ne6vu2N+}o3p9^Kr z%8EsgbWZjZsy%QagqzlcnS9`eT=0Y)`GBi4LI}KbKu6|24 zfIe%qLMIg(7H0s1`|tVVrTAYsbfn4biCL(K6z-f z_wJK1f;kx%hf~uU>_KYeY*_0m(644vy-wEQ*o$VNtuG~nSMgC{!*1$Oh}K~-NdLxgSx6U#_68Y9$<*m(SXn&G%zb@dT;}xow8uY3f8v^3E^}PzL%hG%`^x+p zfF!e6wkw$*ePJ|mpg$cf`6PMT$D574`($F+HxyOI%<_nbM`V|VYELcI{ zsa8Y+ANP8007 z_<3!iWFpm!INuHdc5Hbe)PeD=->U_49pg>Qc=){Agt)a?*V=tgS=G4tDCa+4XtchT zX|djU+HZ94>r9`$EUy$)Gay7l)D?+S6mX9k@S1xm{fSlfZvAJYN4b&<>`sOXSGt2T z)2bq29WO-T;5Kx6Hj5$uuf-9`g-a4fp9D+S174Ac5OI&Q!8a~ER%dtjS93Pi(cNq@ zU-#lY`HA}5byQb6r^7EZ%JEC{H!R5-##GxpiO5F+X!xqvukPGKGXXc}=acxs? zrWqYPIwve2r@%*P5B8PY_t190LFTSb1^kGejG2Gen)0|S`AMwV`(zuxY;GtPtI(OK zsppb%QOsZqubi3HR@ltBz){(nkZ9i*%SEa>x=s}LG{A5;uKni*v|~=h5jjnIH&-IP zv6Yck^PogXZoq_^ZE?XuNragjjg-tgpSQO5k_AuYN3E8^<1z#m%r%g5{Q8k+T6<|t zI;ft`Lr@*72(_EQZu9X)^=Te%C9H9z(HPtp^WU5xeetfR8X#T7lT=Sebk&S zSo>%BKG~W)a+|#!f(|8tgSHb_tP+dunC>fTrqdSc>R$Y`E+9%I@ip_1`;4=Nf=KFJ zWb@|AWtfD+0=qfaAV2#=`}kF#+@g}LXN3=C!)OsVvd?neixh)D;O@yi?E77`dI8^X zMHFq%drY`Sq<|tdkkhZP*D;7jWH-_26p}sV6pDEyUnH zY9K8DC@%dP=k!HLb`R!E#-g^sCmSg`T4}+Jw15L$UJI)7pT^Y*x&36peJuUVjREYtkZeSt+>13`0F@ejdRF?mwCo(J#rF6tls+dp*9d(E{Piz478$#C`<8 zo9ZZ0_)krCPP5z@;XrT`)a?!^4E^Ant*pi2W~|fO`$XXq4+hYeGU{6&@eoH}0tswk z?5Fs3;3y3v+-%p*VX=Ei=z{NckO&IiV(oZb!` zS$7FQMW*MN24PQDd(SJ)ME3?QpVpQMWY3U^C7re{V*diR@SxD9YU)8XE+Se+eat-0 zpGd-BY%N8Ci@-&xf)3Ti?T^+S5Q56sFU>I2Bfo3W6tI*&Hpfg-j10G~#kEI0S}M^{ zekb%aVs3hHma$N+ymdsMxvlcotA%trK7xX7Y}&46Fw-Z^;OEaV6cWz|bHH*n{Pqt` zanTlLGCuWz#zvIUwM0xKWp3UnC0O^|z5&&OAIDrNe`uL;h~pLrw6 zESEDFPjAL0BuKa-KV~++K7E!q-|TdXcgaSMfvSmol_{JqC3ih6A?KLms zMdqm)>s0>Mpf++$0W$Z%pDo2VT3hz!m}vFaxH#@ z*EZE@E4os`qUSSvV?MpKBzeXX9j*TM5*ebG2N3&3u4R+C@Z2|{L8T$}N6Pt6g749z zurPvJ;TM!_Lxv_NR1J(#M~7xD-@03z|8PjOWGiWQ_pk2`60_+HcsVyL`d{fB%kLFu z&OTHjJmK>;#D8;Mv2C}*L(}v{0VVtkgZpm5D`Kj-^>c;Yz1S6*u;p+j{)Pfli1@0l z=m38_@wJ@ODmdaBLIY(7u`VBU2$kcKY#4|@2ZJiDQbOi;?|gr%{jw`nCPaj(mcUL^ z!B5j_G>ICzN|}@fm%j*lmib`aje@we>s5lC=XL7GH0VZs7%|&gRz_F%xfr`|3U4Qe zoRf#E3A&9&p0??A<78~VXe5uIK@(ugiI8l_w?wU+Fj_c?rJu5r=LD5fZ0je9;%nJ@0Xyh@5eAy{t6{pV=d8N$cR%Y1_Y8V`ht)FF#^ec!<~9+{aW-mhWOr-r5+fQ zxYs+a2ms9OneKtYz z7=*HtR7g52iALQPPb88Uw|aG@aoqkc0nlPpLU-l&yVoKf<*u)g!AVrv<9bd+!chql zu-QD_kBM=Hrt81@^FrE}6J15Smu?FF(yk=v{wn$U&a%(z;D#YR(LZb+M9^Fb;GN_V zQX@biJ6}^e=IVzwV${DWj8&y>^2XfysJ4__b!+Mzx9tF zIN$ZGg*KmtSdN5Kbj>wzljVjiHE>rCZ27#|ayuoN;bz`zwx_P$gp?F&M60N9?dC`E zEh~QWJJ_?~*g3M5CVNa9YN@}98Z=CMgM7rq#myCSblIPc=+%q|R+ zi_MLi64m26f5hp$pUc2;$`++|U)N-vZrneU`HHh>1&$R}lqw%_pADi%+Ev5Ch=W}8 z==4GfFoe32Twe*LG4$&yDc!yg{3!*L0Lv0?!gj~)U%Po#aW|I9o_fGN-atS|`Qv_0 zM$bE&hxg8AToq+q(h%Nf9`|2p@JRG5$9+U|ppOVh8jWIu=fxcfF}{63V#*Rm41dP= zES-!-rbp+4IETYow77z$wQ1`{hWJhC*n0%8gURY2dEa37j(Rm!6;J2GT_4>Nn08hZV>w6DkWNUHlHrbG0W7L46w?+jd$f zkUc5tX*yt6qZ63K#wZ!U=Yx2q3!9yW)aI!!iab$o26Rj(RQ~20|S5 zr{IilopZf^W6;hjJ!sTt`$PiZ!W7PNxd;bF#I8C~sH)a@2(SS*^+XW7C)6G1`9%}# z)5Mm%&}}|7o@|8)UCXa9^=xK~n1B>kmaKT`ofHxav~Uq8n{skMa+9`GkFNJWrg_4F}q1;jN19mT_6?!hzMmWW*gz;YiD%Qvk+qHdctD=)yFQ*z*p^ha5mXO)_lLk`W zaKIq;av2kxQ-2nNBcG;R_}JXaGtVd!n#yXPaeyPJriRB$sO3P}SY$U(EI>bk>ls&_Jq8;~uBM*yF&g7MjNGD&aV(N?n2J;k+9fMU9zWr0$5N zyt`gg@sk%pDJglC8vX`JBa;wkTIWT2vVer{Nm)q>`;$*NA0A2#-*~TtCC=tiCWM72 zaR7+}33IdLLkfN$xvJobh#EB~!cC#W;)X9ycTl#<*gS2fjl}`eb}hMb1x#c$D#n`} zm{!=9B^koF3c3p*qfN<#O?Hl)KEtXM99?+`Uf2}NCPmLs38**lM1^Q zsvXcZ+hK2O$#c9BHb3wp%X{UA6;!D-Kk~W^;1Cf}irP~HbF%=JQj~RmwtWOAFR#cN z$fJXa$HRrqE70M@raH1?c6!-Bin^qLn&by}?I3d`+fH7qxNv&eg2ufR=hIO%uLy$O zdnUHlo|RQQYHC5N6I$i@uZ8|%hc8dnGUOM7UB>F`K4(emgNnS%D;oO^%VP~TzRTZF z1HhnEP`%mQaG{R?LjYD8;^>^v5*&ZD3B*lsQi!fWm!73g9_W%VI9H<5?4tIYCORJY zIHqs0RjI-#3#~Axcwyy43P{)JfpbWgOfF8}=og_-;-a|<6i81B6uIqli@sY8D>1Kp zURnk2$Z{(NZY2W@O#|PRAHpNmu1Nqixu1jc{GE4mA#$ycl9#}B@dSY9lfD2UY-tuU zZK6>$uvvdLjqCP_AZgFbY+e}Wbu_Hit@T6$fnyuyIwG~~{28Hh?6=m=r1ITJyc>?3 z5=M`se|TpwOSnIrr~M>N%++MTuMauXAVBEqNTUnsTydS2$4U54;0oM}D49g9&p^$v zc09o?^S1q+^}LXyLrS(AqqRQQt6{T^07ujTv|Q>M96Hh+NB_!7Ad3(fSI}2E12=Cm zXdFN{Ks1R)B{Q(%oZcsRZP5F{w-2(|jQ8`^cde{ZgMA{}J!L1(>b2CEpAKjSo~nEZ z{YSJoRoFy|$%yB48Jt4(cFKeTL}La}<}Yq$y9)qGomaI{xDg%R3OXS|o$4gc)KXxG zNp7s7?XIY)MJA`DWPD(@33^##_13ftT=Dy)mzJ5yCVOYU#(Qo&*rF4lif92gXX(7Y z6D8-;1d8jX01S1C=?e=7b|sIAh(gD=zDrY}Z$X>P%weMTcxdgx!JjctaHDcoa)=woqOtV6&J{rbE89UwLCP&y8sYky#fYl`!dhmWti*w15Fd)7F&d5IB*5uXY_dDDg5+fgY@)W16o8c3YtuXL&p?oRC%sb5!?l11-;NJb&o)cwsvrb(YfnN zjr$V{RtZ(TM+&C_aOk=4d8j}X2;d^r#eevfQ%!cBB@Pwqp=C#b~u-MUDw$Lja(MsoRTY`SldW)=zSgK ziE}#Y@h64NEIlHJ4?wr4j^-HpY0y@cuMzF%yExEEu_`~mP!FoVqr1AwLA%A;b?+na z^E5!sNbSlwdlaJUcncsz-o3|qRvlb(Gc=khDiUOsa!!Vj8$})PY(oLI!5;G9*@o0? zRGbX!J9mLd3nvdXuiDj-uvCc=>XcBR)GG*CA0H-F9tz_vV{ln zoae0}tfDXI$j!yU!6klo?1M0But0Iqlbmb_Q0ScPzA$p(lv zo+tthBI#34wEs4#ZaZ`zJeF%5sw5LYsc*wkckYQQ@;0rzwL$J?WLRK%gZ^Ws3eRaR z(VGCPOPm$pg2|et$zCqE#bkIilCt*@%6({r`ZR;fLg&Jlr>CdaK!1@87XX-SNBng& z?yx-sfX7^Kus#bezRrV&UHhQNb;b2gww=`v)SWMTdkw!Fd3%vi&G}hb{2aLACgs0? zsuQ__b#g{s0Byad!PL_L7;5X`!JaPbOlMYpT87I;x`+ezEYFRe_iNJ~oiD+?+d+i% z+!^?SBxw3S46IM~`SjrK>szB1)ox=Va)jYCdGDEPzhgwwuvzpnw)K679v>*B)6E%5 zYZnCP`-{^mvl?(Kj)g$N*5SLzAj=1M&J_U8SzBClj0$BuL6xmd$CcOPf)A$a<&nx?-S2d+Laq#sp!gDu=P_+sed3SU;B|xvQs+}g?m;m4unR&!p}t8xe>Sx;w%6Z$-)mOk3#pL672zyF0;-UpZXl#=SLXQ|kG@+iFh5$6E?1h750 z(@OVJTp|~wHw5taq(jRsuKCQ_2w9@j=<(3_Z^sT)X(r)EE^D-g+lY}Dc(E~#Ah?{F zH>CSX+16lMAMNTD)RHKJ_wE6Jhy5zHi1ITx&u|2HJwtqas&=N|QGI_)NOB8Yyz~cf z9BjE&0h`X|uWmdXF6-d(25@k<{KG+SPXj*P%)W89KiC6s4gK168h4-~H%Zu<$A4@L z9ziw#ublg}!2J)GL*ECBFG0)2tPB#Up=Yt_3r{L3HW{oxaM9a?oFgGycpFkRGXID$H2F!7@rks;XLyn`p4g(F{G#?6@~c)StwNj!~}_GJW{wx3W>lvV9!EoML*xWBTF!Px`a2ZtyG#|*@^IqQp zU97~;($1yrtj}igBEMq@7YAM>fljKq?|o_~TOV=*Z_ZR{+*BXDHw7@Y9=5k@RhERF z`~&6;V+4P$`x7~;!|Q(3DFP7N>*ho`vdZBc-d=E$C~8iTO2=;B$6by%X~(HAjU5mW z5SD1FDjP$R7dA{}z)K!Oj+eX)l9iYXNWS|sf_jKV1m`P>w&?lPpaC$dq&*~e2eT2| zk&gP{u$FE-GA!L@aWRpwF7OZ2fm%b_5?EjoK_jnpBd7!Gm+PbZ)sX;S;(nd9@Zr?jsW-;l<^8{(XyX7aT>fuG}pb9^;e&j zkM%j3a0ej-0v3WFB~>@6Go0d=%oFLr#1n`?urhunqh9W|m#1nYHOyKdS_d@5slGMp ze0#9WMl>?AvpaVUm{&WvjdZKj9KUk%aJ!>JtjZcH${Lo2UaCNC#wz!~eXg_NyC57m zHwL=#Tz>=9VbLb>cb!?8b?+Om+3SQPN}%Ovtv3F^=kEpqDRWL!KiG`c}kgkl+{GnZ`( z>h>k9)1-Tp?;KnSr-0fEfe-7dk2j`^+o_WDF1pEK51Z-r(?@G>zJF=gVh>P!W&-WB zdFLvSARwQ~26q8Ie>NPqE<%mmBkT&TOI-m7JBbfClJg?68=FKqVvs+s(=C}FbbaMs1G5h0%3_avm2`~l6f|C+$x4RhH z2$O&C$nffT6TQ(u5=(Szdy^jSop|`Mdpg-Y^C}22R}4T)*bq;J8p(-hInoCmNH&-^ zYddq~&9t<%D$Zq6-RsVlHG;Z@czsu_Y-~&7hhos{4TnV`{Y56d)vhD=yd|;YAV`50 zp!858#R6?MV>2^tu;Xw5y8P5=|LyDkVzZ8?YH^=SL1d$mua}dVz4oDdil>9aTx(`7mS16;8o0fAWVu#{6T&lg@wZ*KQSu~iZvq4Bo_ z2X9uI?ScP=e3Kizde38Ie#g{=>_gn)qH=qMY}UH7+#$I>Y2D|V9{neh&;OAm$7 z?8vP5vKB0gqM{Wgpp4;Zol%ZP)|AV8s79%s;)0VsixxVGZW@<}W<$2J zQWdvdqWOqqr>7+)+xH?bo`1Iy=sy}<{I+Pf*lVq}HucJ%I}O=`o685AFH)>8*CMpL z5hB@@0+y1F9^Iv8cgZ=V96H@MlB*Va7+g{4Py&n+nNHp9tLblTH91`j#-LM%quxd=^1e5#A00(Idq z;K}(P2YEiDr03H?4qAHY-m%yQIAJV$veU`Gpk8Yn)c^_OX7JCZ$g7~qS?hq!pW4Al z@R2f)&W~}-cfrzi_wLC6fe{E5J_2fPe5HHQ19X;-qSuo-H8Mj2gCmf+%&Y#7ei+9f zkTfVX)(l>FzQrhQP>5u3{zan}=pI6TvWzK-WP%HWvSZo0$Q~i%?9|ja)!9N3c#i}B z4hO7_aOuYV<;$9c&%8VtFh!(u2DeXN^B_330x8Elvc)a(0wn&|Sy`1_)Q=)eI8RBqjj(Ry-)nK1{9PB%tuIj$G&)jezGdC7?kC56UrVZ}#P%J@wTN!#M zhUoKQ5|wc;T27mnRv;^sD$;?Qj%2`Ytr2t#s{i#Mr2fSDJ3;AkJ_{1zlRKEs7($>4 zmfOGML*9MH1}NMDccrd^`1UHeFV&{sVGW>=hs6T7ez^lY7tu<^`e6WJ^Z~*I8L$aC z_*4&qptE3iA{=<$u`7GJJ9&HtV<8XF7#dWM3#RY!WMRi*)!oHSb@T+>hWs&9OG`s*Q59CH;k#O^xDSpG9A=e+tve8|2X)Fl0aj!twu z3yXzm(Ef$&9n^qpiixRH-y~=&gnTI?{{HHX#18<&HmNg$#`RiLBX9?gs)~2^)s;dp^W>JDuB#f4X78vLw;a=(x*y$x-~)ZaxDL5~5ibBFY^mE2z+t#nBbozbk~ zU_AZ4@b!}xbkB2+ntQu{_ov=@RA%;e%ZUa@eZgDw0_L!9x_>mpV1(bp)_}Wg^!O`< zh-p-*bpGR42TBrp(;EI0~!_%VHi2f$M4<2snm0Nt~-{YZbTd+Kzp@*A1-L~E*H zGp^hzS2+Pw49TY&vUsR+Q%z3dSTuJ(w0rG`%v&$yGkTQ zIr>KiGwF;~`BfFJ$EK3E#BL1QzPu2MrY2e&Q=v-_h+a0t&-w}a@O4xJKiyNoSp2LF zj%Tg$(@+sGxku$@8s3T!$SJu0MeCsRdqX~HN}0Ag^+JK2Buf(~a)LX0ZmWQ?5o=@0 zfTN*Hbhxpx1ehSEO4AS*26tICI{Y+a@WK)G@M1Kh1NzTP8sQA-7^HyQ3Dm70nc|Zf z%AZb!y{G+Z2uJLmO7Ih8ai6l^oWzj1G_8BoMw=whMMTw3q+C)0V@}7#upK)IDW+DEiEs1G9o^y%x9=a>-C)De zkxf-T+a5J)8ZV&3NrpukJ<*7i@x{G@iACm~oYS|mR%0=#)CGgNhRJ5*cnw^4A^Hb~ zx!X~7w zWXSRJzi3+$Glkij{7C^ve4}p-xvR;3qr3Ci+u6W(u%Qi%yNs|wUYv?J0qJk}a{9@A z?>9=5{_bswOk_pmMqF>S0A`>YD7%rglvZq7h8O?1R z@UvHDY)!fse4TpXh+qkF%NRLQyo7Q}s-}4XsiNkW|5`c^W2^jfEX#N|$y%&{{OPbJ zFxPizrA72jjUqQWdSx^c4gtN73vyBt6(V$Ghn!7aAOgb&B6IcwC>-UmmYKdD-H zBXOY7Q0#eJ`%Z$TP$d9-Z(jGW)>71gF-#{Q~FQV<(I`Xc!l7<*>O7{fz~{twS< z7;xhi>nF1><~Jgc@2B99H_0~wB~KgtxVPd?HHUmpu8WTf)W*LoU2_(-5sS)ERA_eJ-M( zya2KDkw?EE?qg`|U3e#lZ)Lodv`(hX^Sfpt^M;*Yqfhh%wtZxS!JUZqOEnh@CGmvC zpv@17=X004PT_fGdL|(Nd)~)i=oW^%NB|5Qd+FGA(O5}nSO=C8w^IG{Ni16QD8^H0 zEDfx|h3u*cD9izjWJw9-slOyH8;zTru?61A3*IkY`#`3_&XW3x3Qu8ZV=U2H*0KZ- zq`A&BS44Zk^*wU zVwo^t&lCGnLqf!M&hepm<)mk1=3lx%br_qc5& ze8NE#_;>df))T)otkeF%#8Ra$QRp19lnps5B*4z#;;q+cT~)2 zBK_)vUn|$Um6pmtnH>uQX8Y|-;)%n=&PKWs%bBsba60-W$doYwq>^KUExF_KZ_6%y zYfxU`EtA5Lh7ExilI()L+j&+q5lFEf)*dqt;mqHYEol%rubd^%N;%WN-0+N;Rv-o4 zf9HHEnZ5(goivKUJ0F)_r#nI1b{$8YfeKzvi%-4b69)VpZ-C*cM%yOCJHuB^G}v0R z`o9kg_@m5zYlWg|;hha`MH_(?NOA}KnsJLLsMJ?zE(kxI)$wqpC7JO&C=Xj6jy>Fm z0WWmnJCweRBp=rFE{+*GlNFf25oENjA!E%=#oK!oGz^jW@y-!}Fz)uGI9f@6q}fXb zM@<0+{exN-Z1Q` zV`f+_CaeihcAOZ#fU_wJ(y0)?slCrEsgMTZq61#M`iC>#fA91H0GP#8rQ!&I!8ynz z{eI-NuPv1eT0KrZdT2{i=AuOe1WE=J_wjG{hCp@93=K4I77fgk#~F#iBx?#x5Kr5w*Y9DAw&M_7uXP<}teRxWE=~pr<5{>Sz_gu4ZF&@ba!4G4-)lHRAO^y75V&&sScmKDl>n7x8h1 zH@Cr{^43gOn;egdH@)2~h)v`%Kk1OwHgf1|?zw&*?zlK+t^vI-KbaW9*Vh?1H(YXo zj(C@oS?YK>pgUd;{;%yspAM?wN$I4t9WQm?uk*z-GzAIhVno>GgYCEHM85vH{aY$< z5|?qH0YcMZh}PC&Y6ZdPbxoF5UJxbWc-{%_WaomugT-v2B?IRB6c%D|4ef*~p7Dx^D8<=ZGKY@{w@%tVtJJuP# z^ZGZ*RkWi1$pWu1)&9eyLQ#w|Bg-wmFy+mjTab_o($Gqk=$k1#H31(@U2u{F=0Hah zYhW@Hi{POu(P+JcGXk_N7O|F#8JZh-tSd+b! zBxCS*2?T_2!=!hm$euqxj=P~R9(!6Efy?NSYwsIl-Jo@gH}3xNZy0a*t&Okdf-%Rg z^6%r|J@hEi2LFI!)AY^9%^1&5YA^7kVc1A(zLZ@OlR8dB{PP9qmG|&ndU9gZAZ;)` zVe^}RIgm^5{_Js=q2|8{I(~0K1bhDFGOdW?9uHOWSrKRa-U`{L(RlyP{jkE*|BqM5 zn0g*x7Av2)0@k-1ZP&Pud4tLcJ#pZjdYl>fAMY9X!46`4;@xGz?h~8saY+cTC0KPZ zc^3v9-Q$J$U+h8|l!qQRhhZ4UAP=w2bOIlS!r=3W?{oQ;#`xX9zvoVXsU@G&FA0q3 z7*+z?ihFSuf43EM?$2zV**YHw{Qu%G0VWKvn2DlfI~8cLMa9tZHibrme_Z|i|H=Ry zzt?94cj1yrqVI#r4+^Ab;$8W_*@ed10u~by3f1QU)l5Be z?%2_Qd{)hufAU%Xo;wWg!wls32boqGOh?kr%3O848Fl6vS8q^%-^XxF=f5?R2(b7J z%jMs~L_Acl>|Z`S{w+ZdXbY4H{5$3U=shr%!{+~*%70Dezovq-r~jJDe^-_Nc*no~ z^1rLfe^-_N-vJn=p6qi@1J7rxRh=5eK&#$@j!Q-Z6c_c)i+}(4AF)#r6wkDODZVwz zOJywW>wKIUH&z8ffEqk66AD%gEHLR}?q9Oiw3CRfwU}<0n3E!27~lMx`vVpLHXOV3 z#Y`^)`phQKiW3El$1zR}(f7GD8JQwnXr9N!;@Z^MqppEs5u8x`R}gMO2V$4J8~ypE zbR-M(+QP>Xq?RCvU2-v(gdtxm@B*DrN~m&zfgU+AAx^B~@a}k%1qDvn&*1YN>^Zvw zx)bPNyJCmq&ufAZD~*Sy2zSbv$E=YeCidzH9WpBRHhvF+3%bx5AZ|>RmD_xg)r{Hw zWZHob#W0D;nlGZ7C}Z65kCu>uF`%7T`+w8!zyN6fRM6L;2WaQC6F!d8ch3OYyJ7DB z$F!Hx5l6vwz_I_Y@*S3VF&47Pe={JD1`HA_Mq$azLq%cPDwU28#pbF&9BLi+7I&(V zY=s5Qa$Z=zlq(~0L}4>O1ugRgRK$ALuO_7R-mcoI*60GNeKaOsSK*v3dN zrpS?5QBp7FGpDUmcxjSFcm)4*ux4uuI6-xDZtt6W3}NuJA3l|cwxt1Vq`r_`g^Li? z>7q#qnLEuDdQasI^JB1*PYh`P6I>DsVb6Qms*DXrX|vA>HN+h!NW)R%>LD~wOK>}- z9xbdE5apsM#i*N?wxT=1MhG6->>+Na1Tg3$Y+_piT7&O-xsT?ChCp|OBH)bdkM zM5dv|jGF`hGkI_jHK(s5T=eb>*p;)~Pdv_#z~ELul~&;0g~u-|YqPMhMW>@_(w^m) zNO`CIn+G&=5EIOT^p*_(6Yjd}{UzX@Y2*FF8+q)wtcVE>%SHs|iFo4wrl6Lw=kd@B z?7BQH*q+2>dg0Xo26qJ%xDj?d!BOChA)h@%24rZtAh%WQdGczHsQ>ZN0q*znK$kY- zoER;5Jg{V!3@_qmi0uVp5IW9IV?zE`w2;QrBKY)K=u6YZZ$)tb`g;flEsG#Yy1`#M z)Ji)KB#|p^a-8`^+p>bqQinS@3<2FxuOhW-P+=|6Ek5KM?$yF6DdO!B_0DDr>EYWRnZeFsI)-(D%bAEL18Nasp^gm#%`g)uu!EF>5gn>K#@mtts5$wRFBo_Ye zz}0~}b-hq{3h)2X!C zouyM2j5^kEv1~xvPy3tDG%$ilhRyV_XU|Jm9~{n3B4fShF2XU*7%uLjoBvVEO=xR) z#FF+h5^N1w7(pr#_Zeqi;G#@__CaT^6xrwn@R}nl%W0W9Jyea`z$b2#7N!4;0Um)Y z`!bt68QAz5ph}urOc7X^JoI&9EL3{xnGJ%eG<9$C_#-KK#0Ds($GLQz!>JwM61qQTrM^r!B(HOih ze5Dut18dDg{axB+a^Lgc8jBKh2Id1!@oX=EybY;1_pK||r&*Q^V_1^;m95;o5T~*t^d}#}K01_FGj-@lMK6Zrre!qzXns9!JD%CHr?g?g|2ZJ5SjeO$MI%XptY?;2_-6A+O5_|igP5%zvGN?u^pH96J zW#u~}QRP$ua!gl?` zJVq#Ld1BjNP((-K{GYs6`)NSZ-?SKu^>~wPT$7p?6Lm-4RJ9kl*>ryiR~>}+APlE~8$y~mlxlz^Yiz`?zdp|! zBJTLy65UNy3yzT;t1-7q&$1=^CXvLZ``E5Ui2sabom4j(Eq(A%rianScg-ziZ=`(e z&Yr^}D6jUv{o%xq9s%PCba>N0fh4GD*x=tH80Jl-Pmn2RkD)wf66O_@5Dmario`NQ zUYf%ycNDX$SN2tJ`rFQ@5ZX#kkay&_I8X$YL?H)O|0vNoFR&tTz`U3P*5M!KZ;x|? zVpuRDiR5agF7Og$849PMvAlQq3#5hW=`B(?qERU>)DLdY0oc z4yJJBvTId;6TnmKmGP4l(pTECzYGfV(%xKO_kZSZ{Qmsm@Az`}pG_s%X7y_+o%#G% zj@BO^u}}DbI~aA<9XF*t#=&(T@;GKuD$pUmtDvmE@Tfp^9R1grppqp05;Yc~L1YYJ z3V8i6c<-cULCz zQ1s64ICs!j{4OXcj^gn9E)Kym{RD`=6k|JGeoa6{X(7-HhuEEil@LwhBd&DDw^+>1x*Y6bPx?R2g_udm9P0Ws02L$6_Ebw8Tu4* zFc{LgP&@xTYbKw1F94vKMS(jF=%T&RuA(90X$1;sN&tX zj^*yrpQA&YXonJjVAx^xjN@opuNrggOrRPj5U<(~?ftj`;#F!4*>T+9!wh)-2k8Pi zkOkhJdF&ne_|tP6Y&lx5lllw>S{U~MfH);oVY>}x^CR&Tm1m3c`V(+c&~pfGXx*YH zpjPw;cPc0WDmw+#@xNLKpnd>MiQ(NEkI4$v@F%m)f1rX}$S>Fpf?%21%KK6@;r<6< z$U382n$2nMY!=%@0>EDddC7s(R0GnYzfT;B4+B#L;L22>qW2cAqVUvRb~*@NU`8d) zJYJLBE#PZb>hQUZPEfi#s=;>S2lL`daM}a{QJo17oBavq4;?m#YwEO1yV82E{>dAQ z^?;?2L~cLW_B>?HYdwMY2KGV;m|mNH$rTT#y$m?U< z@hew&slbIB>7eZooDbf9$O3?MpI#qLqK*a|4mWRJ53h0ibdS}%2_3ZG^eAvSgI5T` z(fSEy?D>84@-iSuUGe;SMt6kYyGf3p#Wn}d+hs?)WxvwTcFAzR+kD|hS$6xQP!m9` zqE|YY*LQ3qpy$`4I64?R8WqUzZ--FE#X=7ES0Ba)@r-~HRmZ!+ufI#&EPqdIZm9A| zhQ{v`&wZ%GILiUWC(_&;k>yq|D=%7R7W6eH#59`oAHPp13Id_=Bk~O*uq4|IStaAu zk%b2=$>9vHt{_B3ZxYFI^fkB*R2U6X^M6?!CSD78b#@V*PrOrQQTJdVzyA&7fQA6N zdWF?Wz~I{p>?j+jycD*()*%O*KcV96t$M(F=w2l8>?GPRXulC$6C0D^r|NBCrI>hi z-0~`eCG4{-1l`~*ZX>3+bq9*u2AG0Y!S{Q zpPCUfYugc(yO#B<+Qf@mt5%qMmnjvGE7}l&$5aJvUk*cJXDv&;S2i!BLiIxW2qh?2 zt;Rc;Gq?8M_AQ{#b~fv<3=x@#0sYt725ZBPhB>%(@He+k9+;b~p2OE+8|SmM(F9C2 zdDlR@U*s*Sx00xRr`6c18_mC!cot3dJ9zR#{c&;M@eA`N0-p#k0E3IF1+NAVygg0u zAAoWIzMDI~h1(w4GUsydH)din0pMj(S!|vZhF{`|umEPBEAc+24p2_d1v0C~G?it) zR4e2yw}-&f2jle`32oM=cUc=&Tq>Uad=6@-PUW9qD1jo?ytkIbRn$V56F&XaBN{&l zLpZ&`rVAxiUQZoV?_sCcCs6xwFvud!Vu_$}$j%|tOaOdmh zY&`#NkGVQB3IBX|lnPEJF6#UrO;B}~KK2bOcScC{Hcn=$g9$1{>YVrPjuL7w9B_BY zR?9}i7&+wvHmMrn4zBReST*yNRqfTy9Z-CfadMc66dpAQ8RmaZpBN@z3w;NXmxz@@ zp^<7mxD=DPImv`avx|au6^uAhmSUQ11W?svZ#~V&eTG7FEj|WU0mbQ=%&$u%UXPqJ zrO6-s?qixindBtcC7Y=NL)&*l^0;KW_;81XCv>Y6#1t3CY~h&sanSP(%e#)WA-Ux+ z{h~Ka*$#@e11p)ME`Bs_KDioFn};37I923oHlq=ezV|PE*+JG6BU@Qh2qPz%i)Q;B z{0=BK|7k7P4kG~1Z008K^}>G_44WvX&Nk~XBMtcKG&Z+4IX~ToJZnB#x_(b|0rV!A z*(BgT`i|(BO=cn?%cdRSTxIfQt>UM1Wp0hD%r!&s!CP3^rKKD^bLP~m#^{idU?GdN z{HagVpU(y`&ffIurCHW2q~)hEHaJjsXNBv2c)2LIecLKQjE!^{&EYE14Uue-<2x3! zOB|;=j^l5fn4ixutnd6YDPDR`2}z?DM2OQ7HOq>9UTsZr~mm z<&!*QAIBjnVUs(1A5smv0-Y+Z&P>iIaFkS%z>HV=4Y&`uPJOd7>nNcHDt&1RNA(nf zE5HPwb9$TqWh}YRWU?wsw)23%(Kg6n=MP|nSvRWzLwpE+Wab8{zS0*G-KD3EsOyU- z%WY4po{I)u?+7}q)3z;Yhhr&JerK2(6F*+TyY4ov!FSxKU|(6CAwu4EVvoA5x|`0+ z`uM|TFkcfsG?d0P(dOw1!%LM*p}auQV{Rly>1M!wHZ;Gq4Agp0MYfUTqx}N@{ZXp! zzs|>X_t%1T8#7O~;HUd7Of29)QV70<1CY5~H-ULZLj(|-245{GbsYTmSV0CyV7d-( zHEz;B*|H%MBm-wu@XDAq?*QNTrydBRD5`i$oy>I@=>9O>&DeNQWz4{Ny0uO4;A_F< z7%a2wg{kQ_svw;2V7o6ce!LVECm&#h4lo;Qk)gEGb#3=qUz!htei3r)yTyQ=dZn2@ zJ5}Nm4TT=um|kjyQW5dqc}gVSwG>(qr1z@_1-xEP9P|Vi;}uH}r`pV5UoHR)3ELN4 zq0N^QtDvwaJjnrYQhV1{PnT>#Pc(e89kl3bG>JL8fAqt_+S?L*teHpm-^16%dtN`= zyhz{4dLbAf`(4C3olIKGw3}yPwMduQAjRO4Th>ijq>F35pRy>pPbTSN{bc#N=ZS;p z^pDmYcD>>Dwh>$F&zw-#S%;sS?8tbC3U*RqnwI=}eyH7wu8^m?Pzbwl$(76JCIhFj z)X7RqC>1jMR)8P#ME>TmCWEQRR98D_+qcudV>VLkA!ZBcj()&YZc#Dw8fvDB{Dj6?d22w#p@ z&w%=Taf?s~pQydw*5vuQ*KGZfGIdUsJI5tex8Xi^fL-TIx!mwP-CZ5pwpE1R!Gv&8 zwq39Q5KQ&(&satl(VfNCI+)GXy6y01%igOd(F8=YGSuO>cR&NOk!I#SKJtH z9sMjSmZ;^DId)Wk2h2@+Ogd^77r;35$z|l5^mdEF*P@Z$P$33s$c@K|mlT7saorBO z0%&G-8JLfI_xXc1KqXld(v1SRTC6^XYgsawZdvLQO-n~iOO~V zPH=lpCaF=UYMZ~h>d5<7fp$}Odt8F-n60RHu5`^N3|3rr^cHCFC?ZaDOJ^16J6`0& z&Df3eap5So48#DtX7H6V^1eXjP@oNY^L6C&7#bOiDBC~APDw3yaWVh(J}g~R_`+@A zP^nrMGw9?JB7nda=_Xdy9|~Z!y5^fl^Ek4&!4_4eo<;m2g( zUxQ=j_U-bGBIZ;Ctq0!)dB}G%4o!{cO6yi(Pj70nNhvIigZeMGBiSk(5ta9td}W}@ z(i7j8S{6DL>Y>^}5a{#-d5F2Yfotush$t4(0+!$*RVi7e44F*Iy%4Hd5v*n;^wa<1 zEC8F0lx5U9E2zq9)?p%+6gRw&;!cHPRPS1k@r)!6HdK@su3%$Sc>C+07!F>8p%MBy;W!LyYIki6RCj!=7QV-rmFGO5{CXQ~@@?<-vKRIqP zyFng2M0Xw}=%90}B_4d1#mnhw`@xIV?E)?F+KwCcH9l{B?E5WmUD}rcGHJ4U1_^m& z``0>k&guv}4Dtmvz{>s3bV*j6*b}(ZA>SwCcW>kMXy6Loxy}I$D;;~4Tw^-qURHEp zlZjiUm!N#{wfi+)zE>$9&Ky$r@VJ#St1Iv-B_@Xm_3J{a+a7$b6z=SHrStXxTlN95 zV|e4(Sg#Z@_Lp2e!-CR@?F4UCTM*X(93+%vJr*c&m}ngp7rZ5FI@yw>opPJyguC+o zv%Jao<8#bm?B#qdD~zPBW$8N{R{U@nP%B{4kaIOVy1l_bpWhePyeP1QSR>dn8=jgs z@){I^)t)C07Z#9U2oa$p3g>$ene-A$2Atb|#ya=(DrwqfUi@M8o{-pP-P`afbhoi5 zSisVbAT>cFbN8{qgd>G#^&*n))3yQ5eCV3Gm|S*0B^9U%sS~yiqeU=Tj(`jEwZg0l zxiHL-OFW@@z<9fWid9l}M06g&f?6oMqr(vaROK)v7Anz^DB!?2cQ z8jH;S7yuxNJs+jz0=+GcH4IkD3n2|XWEmWY%p#g4b(vky`*wakU-|>C7@>X63%U36 zNPrLs-}n)qD`Fo3_<&WjfsPL#G?bz#kaY#&gZW6x{z#<=hhLnRUe;foDqHIxdyvGetEhh6_BW&h>V_~qxDeK)lzw_Ll}yRD@ckDv)%rh8Tak7nPOVCopaXm~R^ zk7ls%Lj27Ci;c>@MxI&NQk0cA5SB`x5B! zgaLIIj%2Lr+?d;uq3o$9`!*-k`g`0n&Kz{Lk`Wa}qT5X5o{v zc!qeaF{Uemwg0e|)9tUpwL9x-ACn3=#MyU>cf`jUy)}2u!hu{3tp(Vg zCuO(zS0-6^gMYN<)Z6e|8`p&}SKQnfnS>>h*R&_+|6Ii?=xl*+_vSK!j*9LqgT){g>jhbEylrx_)2*zc$H1|O{u7P<($um@%T( zYp)Y6wC`CyqRUF{5Qg~!eY=%pq(c!*D(n?1F@fxKe2UR!RRQ{PeNaA#h4LP+WLQ6P^*kbSI zeZDA6%0Q8(Z9Wc#yXzmmK~V@ON7}hD92>7I4z%>MHm!>X)3%CAqm#qE@1jA4zUD?A zkEts2Q{6vdm)cKar;i>5w<}D%cl$P*h-J%!bWjfuum+rd0_U}k<_?yVZ=o9YK46im z1U}S&htqGpBXm*hO430=gpCa*D?v2raz~%U!djIq1D%fj`qgG9JfehzUj0|MYYv~+ z8|FOR(=hOugc!MYSeKfJiJO-Sgx$VvkJ*qN56VY7e23$yY)|kpR>sWsoi-7i27oK9 zEsGfEGD-8PH=&gmBJqPc#k10`rt_S1`pg6V7}uXK1}oL(*s6_HO-6u1Od4;4&`T{)VP3m!w*X}f^R3K9G3V>c_w8+eDG+#ml8 z&(sdi4kr|O!w}M{9(QmxPVIvud*GhASu*6%(}lbr)P?Plw?pEPvi?}lfQ7a!7EJK+ z!e5)_)#j6RVkd_Q5aT+e8vWn{b#pDuK1Jair(Zymal<^=0^RGY5QRJW=19@Dz9~du zIK2f#8oKd=J%u2UsRrF@%03)a`#j7CeTf_t`AdOJZ)w7^e(%^(Chg$b+M53O3b36% z4jvnFGwB=D8x6vQE9Bkkb+s+l} z^~B;zK22$t)@z%&eRE%<(AUX7wXad!P#LNDgoit2ws_d6Q8nBJa6yb+_oa{~KuRp* zFhWOu^Ths#14^sG#XL6&o`YZ!5TsVqpi|axfY)hT2tFX3*i8ixetKJTefx5^zLVH_ zZRZT${+=ii#CTMVL-RFhvM136nog*@jS@^LeJkRkFQ4^)&4#??P^NPbJUBJ23Y4P{ zf{@L^OcZuTIXR)4y%?@F6yep#O|G+>9^Tmpf&&!eyIlukUrDqtR8$~qK~e-ImA&%Y z;AU8g+p-egv?D270J@;vt`8Yf(lFa7g@3MpGsZxO7<+%5drA!r@wH{ogoY*azKor@ zOwBP&2*=N2>Rg{3E1Gg!hP?GI^6Zca70m(9wyTNS(d^}>9KhHe<)|C#hQSJ9LNKT! zfz=zeACE&y0W{o(?n39vRyTJnuK|E~Zmi+R>B@3VW^$*OTfl2Z6b8%4q3hrDv2be) z7YEXCeR9milh?+}|MbK2tLs>#($p{Pp%yTBay}2YwV=A_b{`3P*_h)h$yR+M4 z)I5HDi17s|qv|>V9K#O8u{Z0iB5L^L3g)anKF{u<^|J&wfGzD)ZYGrIzbn$U^ZVGm zB-7;uphVMBo2_73Mh~@S(U1fQydX7NwRycR-9}$-Nee2s~sy6qU*;b^-o~w-_8osY`F6pT>JFu}R>W*HG@v!rM%Kh?(Pd zf~ZX5+euz;6f&r~TMTYPMF$2o9!v$k(Kn}{OS+jzT<5dvjO7b1KU?d&_~3``z|UMN z)8Mz0?>zg3o=Fdw+7xVfw^L1@DbV=vH@&>##vg#$o`nm{^C~=;@0!B|=A-En6`TDe zPu-9-yx1W>16=`Ydg^ysQMK;gVEjQHQKN=zJU`j)=Lcv(AqwUIH&0JiQz!AH2UXC< zfeZd4&UWOTCUzr-%4nVb7LHHu6QA2b^YS0-OdWuORG&IK-s*=~$YwdjtCWFzs?;}B zt$a*`!xUyR?{95%Q~6D4FzrN1KJif_c__&zFxrtWR*wK9sjb@VhXjxy!t`b?+{2D;;1o+3QJzA3jZ(0YBd zG+HktNr{>}@x`?aLRGizc6Qv@p1y%eL%9Ros$Cck)yc1YpDq>l9=C)jq^->57h@=Z zSI}p*)n=D!d-%zlD-Xx%9{-tZ#1F6X3A8u7N>AQ=TFt^iw>|>9kbmOlK_O_<04Ig6 z)`bC-VwYFSAWirz3c7Q2sT*Z$a?3XkLQLe0&WI<9-{759KfRxMMZ#Y#ap}IlJ|cuc z2I8NCh;)1LA?3xl2w9ttiMFmDZ>_mlqhVnD;CN24in5X_1*h6$@qHKwYZa-ZskqjH z=2MYY0gO{RtA=hd18x4Y?r>>i(RkK;7(Re&i!W+=GY!$J$M$XKdD0f+k6r{;q{s=5 zf1nl#d7=h%JYn%CvOd#I^XR*QEB9Q@Lr9-2Z+Py!TtUY1J;C-T@+FX!8w4Zg2YnrV z0I$j-9JeDNmkLd#*o$Ynwr04aKw%TS8#4W60RJNF`0Xv!RAq3$m0?eUu2S*_XVtwP zC>-ViKth(#Ri}9h#j=rIjyk@TN(3$DcQhuKJlqJnu5XBCNRE~GqCdN}6xp{V2!Vh; zNH^xB{9;v`e2FNn@&>6hl-FBg*kMaeCremWgYC3G7bWVc(f5XF#RXue(;$uD64XS- z3M+1*mx^dW;)v&{(M@!gNIi>?X|X zf;6|S6KRq!Z1R;C9GVQGn?PpJ)d^z2b_O!j6}Ksfk7H5fyRU!r$A_{tngX|yf}AQy z&VxWJtw+(Wz5-{DnXoOK zQ5Pm(a(bke{`v{H#rS*)q>wb@$7?<39PwYh828L%dze-PVX?^j80!p?{QFhkKN`C15c&@zzGMPm4Jl%SbW+ z!<|Uo^*2F_U(o5Mb^q`x`3|f?P|a)odF!M?dNC5_9Umr@XjaZuKUrkVzeVgx&OWlk z4{D|7jHWa6Fbc~*2P_BU(2&VgQfRn5CWQ0E2K6xU!%zQw&60M*?FIC9D$6|cAw6eE zjs;MyZnofQ5&xA8tQ#-rA*OkxtPD&WKZ2Lgta!L0+s%qPJ5eim0E5-9D z^5>zbF$cn!VJ_Y;5r2dDX^rWQ8_WpeJDp7!U!CN)B$IL{xa3Wc0hxzvFJwg0m82vn z$zldvKKeJLG+qtgrFU18JM&i%4{Pgs8B<;qjvw?>n-M~h;dX@-mjk>z#oBs4&2vo5 zIFIMl-y{=%27BhtxX*Ui*GaG9RGqX?%q<>ovGJ46ZrWs<+wLp8jw^%%#SgN28&W(j zqUJ#Aj%(FNUIP(pI*9_NX5;B$R(9slw~IgD^<7a#c_Ll>AWv{N#5kZk1`q1KBYTXQ z<_I&Hft4NbWI&j){y06osIl;#@pM9zyeww-&1jbwPf`(?bd5zfYhfYbcmr*q zn^->|{?6li<~Ur^x$yvo_TsVv??i>U=F?C|w3WeKv*%kU9X?1t8DS()#-waUDchsFE?G)uS zMcG~jQ{jTzc>*+Cjn4B`35Wye3AeR5K^y=Tt1ldLMwFPm>`Gz)`hwIO^9jDi{b#Y5L<~~NxyF)^A1(d!dZzi9CF@>=D%CnW|QZTqLz^x8bRy{kPpj*D8UdV;; zo*+k6y0av!v*ZxoLNX~qL${E&CvVW6=sYu+-;=e_-L!bKPT`-HltZqEKe=Zp z{;c*f{Y#;#I%2bz4`pvbUN60)lvfE3dA*(AZIsdd_L3y3cUe4LPCZROLGZrca{vH( zXj;goY$aOIyCK0EaKai)U|OG`6^YGcSYKnzZEwDlaknw{I4Jp>5$Q%~Yu@uE@X}ue zZO#8X&P|ho#lyiZ3I+(yL=X;&@|gtk=XU_UN*q*I+;1=N_lhBY4?-HeL>UuF5so|3 zn|jn2ep!#I9sBnr>|WT##U(~Rtm1;x!<%$P69Zk87;YY?eT2jfLU&k9V!kkde&>bX zl~_O)n7|EuSkhf!#MZ4DqY;5;p$4_sNob)749&pMuk-=;UFwF>OJT%@&>#tZaZRNZ+^Dec^#gEvRJqxRwH~SHaRN36^jP z+atrl6(CR=C26!4A-G`3*7jJn&uVf1e*eJB4s`I=2 zW1cHB94567T#)|Caxv);#$-oDZ%9msEJkuZjfsY@B;r#?T^5gz9v}Sf$;y2{BsURbM}-dUrX7VIc%}rw-DC7r;onCTr-#~cHQX>! zJ1b3$#r7maLLpKg>~~5;8mS_0i!6Vr1xfHe%e9e0|GnfwxGBkltq0IeFfT$1sUvXde>+sElBrYuGdpo?jB-z{V26Zk{Ihbo~%Q=vA@@k5|+(%5wr(c zddJv5(b}#HUVB87LI}9}=9a|U#kLdMJ#xE`U zqP;0}9@P?fc8vVX1g0U+j$NWvJz01$>98phUVb$AhbMJkSBGuxUS`lY46tsUYy)kZ z6C{Jxk}cko8$wmnEed-S_f{`4*^A37mgUvV^2f&LLq@t3f_T}(g${RKgyYP^Qf+7Q zQ`S6%CWZg$1xNSe4)Xbj#aw#n>z?3KWpn`Ku3^*DBHAiHVg9C)xfvQ61tczt^80@M z`6{@@2cZ4%M!4=1^?Q|eSAaIpS&+pgl}1JkE)@=Lf4&@jvYk^)@R^~r0=@cWQH;Sv zn4@-wB1$tNZ=vA}?o8}fp=YD}po(#)n*=TNXE48WrMiVaDW^sRDjXXI&Yesbl*Z@gx$P!v#pU`BKWIUi6!+w5I(^X=U*c~+5Xu4n7)V(pED4O#4E|s5%ybC4 zJZQzoOZ~&~`^$Ig$$@g@VGHk}yEXsm5lDAHGaWiBK?g;DyWj8240Pa7l`}le`^$a) z;p4b}mvO1;r=MurO8vWx|18)Gg7&X8{@ot^K7bIE`S(!&Ps-tri9A+ Ys9-|oblE`8GWfH9pYGn|Jr-B~3)DAPGynhq literal 0 HcmV?d00001 diff --git a/latest/ug/images/aws_cover.jpg b/latest/ug/images/aws_cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e77c372d0849dbb66ae25e66fa84d745bf5a494 GIT binary patch literal 21685 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