From de1458d651673a21c0069f5d929883f62a4d1036 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Mon, 27 Jul 2020 15:54:29 -0700 Subject: [PATCH 01/14] updating eks workshop to use EE blueprint --- .../10_prerequisites/nf_aws_event.md | 2 +- .../10_prerequisites/nf_self_paced.md | 2 +- .../{aws_event.md => aws_event/_index.md} | 6 +-- .../{ => aws_event}/at_an_aws_updateiam.md | 0 .../aws_event/review_cnf_outputs.md | 42 +++++++++++++++++++ .../{self_paced.md => self_paced/_index.md} | 4 +- .../{ => self_paced}/ap-southeast-1.md | 0 .../self_paced/at_an_aws_updateiam.md | 14 +++++++ .../at_an_aws_validaterole.md | 0 .../{ => self_paced}/attach_workspaceiam.md | 0 .../prerequisites/{ => self_paced}/awscli.md | 0 .../self_paced}/eksctl/_index.md | 2 +- .../eksworkshop-kubeflow.yml.template | 0 .../launcheks.files/eksworkshop.yml.template | 0 .../self_paced}/eksctl/launcheks.md | 8 ++-- .../self_paced}/eksctl/prerequisites.md | 0 .../self_paced}/eksctl/test.md | 0 .../{ => self_paced}/eu-west-1.md | 0 .../{ => self_paced}/k8stools.md | 0 .../{ => self_paced}/on_your_own_updateiam.md | 0 .../on_your_own_validaterole.md | 0 .../prerequisites/{ => self_paced}/sshkey.md | 0 .../{ => self_paced}/update_workspaceiam.md | 0 .../{ => self_paced}/us-east-2.md | 0 .../{ => self_paced}/us-west-2.md | 0 .../{ => self_paced}/workspace.md | 0 26 files changed, 68 insertions(+), 12 deletions(-) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event.md => aws_event/_index.md} (87%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => aws_event}/at_an_aws_updateiam.md (100%) create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced.md => self_paced/_index.md} (96%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/ap-southeast-1.md (100%) create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/at_an_aws_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/attach_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/awscli.md (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/_index.md (97%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/launcheks.files/eksworkshop.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/launcheks.md (81%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/prerequisites.md (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/test.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/eu-west-1.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/k8stools.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/on_your_own_updateiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/on_your_own_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/sshkey.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/update_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/us-east-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/us-west-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/workspace.md (100%) diff --git a/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md b/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md index 9313d732..9dc299fe 100644 --- a/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md +++ b/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md @@ -8,7 +8,7 @@ weight: 20 {{% notice warning %}} Only complete this section if you are at an AWS hosted event (such as re:Invent, -Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "self_paced.md" >}}). +Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "nf_self_paced.md" >}}). {{% /notice %}} ### Login to the AWS Workshop Portal diff --git a/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md b/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md index 7d2c1aa5..f1fc1baa 100644 --- a/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md +++ b/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md @@ -5,7 +5,7 @@ weight: 10 --- {{% notice warning %}} -Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "aws_event.md" >}}). +Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "nf_aws_event.md" >}}). {{% /notice %}} ### Prepare for CleanUp diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md similarity index 87% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md index e4a2fb24..2ffd2a44 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md @@ -1,6 +1,6 @@ --- title: "...at an AWS event" -chapter: false +chapter: true weight: 20 --- @@ -9,7 +9,7 @@ weight: 20 {{% notice warning %}} Only complete this section if you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you -are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "self_paced.md" >}}). +are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "../self_paced" >}}). {{% /notice %}} ### Login to the AWS Workshop Portal @@ -23,4 +23,4 @@ If you are at an AWS event, an AWS account was created for you to use throughout You are now logged in to the AWS console in an account that was created for you, and will be available only throughout the workshop run time. -Once you have completed the step above, **you can head straight to [Create a Workspace]({{< relref "workspace.md" >}})** +Once you have completed the step above, **you can head straight to [Review the CloudFormation Stack Outputs]({{< relref "review_cnf_outputs.md" >}})** diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md new file mode 100644 index 00000000..5875c43e --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md @@ -0,0 +1,42 @@ +--- +title: "Review the Cloudformation Outputs" +chapter: false +weight: 29 +--- + +{{% notice warning %}} +If you are running the workshop on your own, the Cloud9 workspace should be built by an IAM user with Administrator privileges, not the root account user. Please ensure you are logged in as an IAM user, not the root +account user. +{{% /notice %}} + +{{% notice info %}} +If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by +an AWS employee), we have created the resources required to get started with the workshop +{{% /notice %}} + +#### What resources are already deployed? + +We have deployed the below resources required to get started with the workshop, you'll need to reference the resources created by the CloudFormation stack. + +1. A [AWS Cloud9](https://console.aws.amazon.com/cloud9) with an IAM role with AdministratorAccess attached and setup with the utilities eksctl, kubectl. + +2. An EKS cluster with the name `eksworkshop-eksctl`. It also created a nodegroup with 2 on-demand instances. + + {{%expand "Click to see the eksctl used to create the cluster" %}} + ``` + eksctl create cluster --version=1.16 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access + ``` + {{% /expand%}} + +It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. + +#### Use your resources + +In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. + +1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. + +1. In the stack details pane, click the **Outputs** tab. + +It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md similarity index 96% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md index bea67433..8d0a18d8 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md @@ -1,11 +1,11 @@ --- title: "...on your own" -chapter: false +chapter: true weight: 10 --- {{% notice warning %}} -Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "aws_event.md" >}}). +Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "../aws_event" >}}). {{% /notice %}} ### Running the workshop on your own diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md new file mode 100644 index 00000000..b7843343 --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md @@ -0,0 +1,14 @@ +--- +title: "...AT AN AWS EVENT - Updating Workspace Cloud9 Instance" +chapter: false +disableToc: true +hidden: true +--- + +## Attach the IAM role to your Workspace + +1. Follow [this deep link to find your Cloud9 EC2 instance](https://console.aws.amazon.com/ec2/v2/home?#Instances:tag:Name=aws-cloud9-.*workshop.*;sort=desc:launchTime) +1. Select the instance, then choose **Actions / Instance Settings / Attach/Replace IAM Role** +![c9instancerole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9instancerole.png) +1. Choose **TeamRoleInstance** from the **IAM Role** drop down, and select **Apply** +![c9attachrole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9attachroleee.png) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md similarity index 97% rename from content/using_ec2_spot_instances_with_eks/eksctl/_index.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md index 209de2b6..b54d4718 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md @@ -1,7 +1,7 @@ --- title: "Launch using eksctl" chapter: true -weight: 20 +weight: 90 --- # Launch using [eksctl](https://eksctl.io/) diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md similarity index 81% rename from content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md index be7f7c18..1a3f7cb3 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md @@ -6,7 +6,7 @@ weight: 20 {{% notice warning %}} -**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../prerequisites/update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. +**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. {{% /notice %}} #### Challenge: @@ -25,11 +25,11 @@ aws sts get-caller-identity **Select the tab** and and validate the assumed role… {{% /notice %}} {{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="../prerequisites/on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="../prerequisites/at_an_aws_validaterole.md" />}} + {{< tab name="...ON YOUR OWN" include="../on_your_own_validaterole.md" />}} + {{< tab name="...AT AN AWS EVENT" include="../at_an_aws_validaterole.md" />}} {{< /tabs >}} -If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../prerequisites/update_workspaceiam.md" >}})** for troubleshooting. +If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../update_workspaceiam.md" >}})** for troubleshooting. If you do see the correct role, proceed to next step to create an EKS cluster. {{% /expand %}} diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/test.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/test.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md From d1e62a6d5110ec7a7923753c34f277e5aa43dbbb Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Tue, 28 Jul 2020 14:57:04 -0700 Subject: [PATCH 02/14] updating eks workshop to use EE blueprint --- .../self_paced => }/eksctl/_index.md | 2 +- .../eksworkshop-kubeflow.yml.template | 0 .../launcheks.files/eksworkshop.yml.template | 0 .../self_paced => }/eksctl/launcheks.md | 8 ++++---- .../self_paced => }/eksctl/prerequisites.md | 0 .../{prerequisites/self_paced => }/eksctl/test.md | 0 .../{self_paced => }/ap-southeast-1.md | 0 .../{aws_event => }/at_an_aws_updateiam.md | 0 .../{self_paced => }/at_an_aws_validaterole.md | 0 .../{self_paced => }/attach_workspaceiam.md | 0 .../{aws_event/_index.md => aws_event.md} | 2 +- .../prerequisites/{self_paced => }/awscli.md | 0 .../prerequisites/{self_paced => }/eu-west-1.md | 0 .../prerequisites/{self_paced => }/k8stools.md | 0 .../{self_paced => }/on_your_own_updateiam.md | 0 .../{self_paced => }/on_your_own_validaterole.md | 0 .../{aws_event => }/review_cnf_outputs.md | 0 .../{self_paced/_index.md => self_paced.md} | 4 ++-- .../self_paced/at_an_aws_updateiam.md | 14 -------------- .../prerequisites/{self_paced => }/sshkey.md | 0 .../{self_paced => }/update_workspaceiam.md | 0 .../prerequisites/{self_paced => }/us-east-2.md | 0 .../prerequisites/{self_paced => }/us-west-2.md | 0 .../prerequisites/{self_paced => }/workspace.md | 0 24 files changed, 8 insertions(+), 22 deletions(-) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/_index.md (97%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/launcheks.files/eksworkshop.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/launcheks.md (81%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/prerequisites.md (100%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/test.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/ap-southeast-1.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event => }/at_an_aws_updateiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/at_an_aws_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/attach_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event/_index.md => aws_event.md} (96%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/awscli.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/eu-west-1.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/k8stools.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/on_your_own_updateiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/on_your_own_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event => }/review_cnf_outputs.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced/_index.md => self_paced.md} (96%) delete mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/sshkey.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/update_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/us-east-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/us-west-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/workspace.md (100%) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md similarity index 97% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md rename to content/using_ec2_spot_instances_with_eks/eksctl/_index.md index b54d4718..3442f48f 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md @@ -1,7 +1,7 @@ --- title: "Launch using eksctl" chapter: true -weight: 90 +weight: 30 --- # Launch using [eksctl](https://eksctl.io/) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template rename to content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template rename to content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md similarity index 81% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md rename to content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md index 1a3f7cb3..be7f7c18 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md @@ -6,7 +6,7 @@ weight: 20 {{% notice warning %}} -**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. +**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../prerequisites/update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. {{% /notice %}} #### Challenge: @@ -25,11 +25,11 @@ aws sts get-caller-identity **Select the tab** and and validate the assumed role… {{% /notice %}} {{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="../on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="../at_an_aws_validaterole.md" />}} + {{< tab name="...ON YOUR OWN" include="../prerequisites/on_your_own_validaterole.md" />}} + {{< tab name="...AT AN AWS EVENT" include="../prerequisites/at_an_aws_validaterole.md" />}} {{< /tabs >}} -If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../update_workspaceiam.md" >}})** for troubleshooting. +If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../prerequisites/update_workspaceiam.md" >}})** for troubleshooting. If you do see the correct role, proceed to next step to create an EKS cluster. {{% /expand %}} diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md b/content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md rename to content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md b/content/using_ec2_spot_instances_with_eks/eksctl/test.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md rename to content/using_ec2_spot_instances_with_eks/eksctl/test.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md similarity index 96% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 2ffd2a44..9afffdef 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -9,7 +9,7 @@ weight: 20 {{% notice warning %}} Only complete this section if you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you -are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "../self_paced" >}}). +are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "self_paced.md" >}}). {{% /notice %}} ### Login to the AWS Workshop Portal diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md b/content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md b/content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md b/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md similarity index 96% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md index 8d0a18d8..bea67433 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md @@ -1,11 +1,11 @@ --- title: "...on your own" -chapter: true +chapter: false weight: 10 --- {{% notice warning %}} -Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "../aws_event" >}}). +Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "aws_event.md" >}}). {{% /notice %}} ### Running the workshop on your own diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md deleted file mode 100644 index b7843343..00000000 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "...AT AN AWS EVENT - Updating Workspace Cloud9 Instance" -chapter: false -disableToc: true -hidden: true ---- - -## Attach the IAM role to your Workspace - -1. Follow [this deep link to find your Cloud9 EC2 instance](https://console.aws.amazon.com/ec2/v2/home?#Instances:tag:Name=aws-cloud9-.*workshop.*;sort=desc:launchTime) -1. Select the instance, then choose **Actions / Instance Settings / Attach/Replace IAM Role** -![c9instancerole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9instancerole.png) -1. Choose **TeamRoleInstance** from the **IAM Role** drop down, and select **Apply** -![c9attachrole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9attachroleee.png) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md b/content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md b/content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md From 6791d53cf876ebf038fe2b0a9911d8ec4e0ad9dd Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Fri, 31 Jul 2020 13:47:34 -0700 Subject: [PATCH 03/14] updating eks workshop to use EE blueprint --- .../eksctl/_index.md | 2 +- .../create_eks_cluster_eksctl_command.md | 7 +++ .../eksctl/launcheks.md | 19 +------ .../prerequisites/aws_event.md | 49 ++++++++++++++++++- .../prerequisites/review_cnf_outputs.md | 42 ---------------- .../update_workspace_settings.md | 24 +++++++++ .../prerequisites/update_workspaceiam.md | 36 +------------- .../prerequisites/validate_workspace_role.md | 23 +++++++++ .../prerequisites/workspace_at_launch.md | 12 +++++ layouts/shortcodes/insert-md-from-file.html | 7 +++ 10 files changed, 125 insertions(+), 96 deletions(-) create mode 100644 content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md delete mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md create mode 100644 layouts/shortcodes/insert-md-from-file.html diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md index 3442f48f..209de2b6 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md @@ -1,7 +1,7 @@ --- title: "Launch using eksctl" chapter: true -weight: 30 +weight: 20 --- # Launch using [eksctl](https://eksctl.io/) diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md b/content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md new file mode 100644 index 00000000..541fa4ce --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md @@ -0,0 +1,7 @@ + + +``` +eksctl create cluster --version=1.16 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access +``` diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md index be7f7c18..970ad060 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md @@ -14,20 +14,7 @@ weight: 20 {{%expand "Expand here to see the solution" %}} -Use the [GetCallerIdentity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) CLI command to validate that the Cloud9 IDE is using the correct IAM role. - -``` -aws sts get-caller-identity - -``` - -{{% notice note %}} -**Select the tab** and and validate the assumed role… -{{% /notice %}} -{{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="../prerequisites/on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="../prerequisites/at_an_aws_validaterole.md" />}} -{{< /tabs >}} +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../prerequisites/update_workspaceiam.md" >}})** for troubleshooting. @@ -40,9 +27,7 @@ If you do see the correct role, proceed to next step to create an EKS cluster. The following command will create an eks cluster with the name `eksworkshop-eksctl` .It will also create a nodegroup with 2 on-demand instances. -``` -eksctl create cluster --version=1.16 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access -``` +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md" %}} eksctl allows us to pass parameters to initialize the cluster. While initializing the cluster, eksctl does also allow us to create nodegroups. diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 9afffdef..a3fc952b 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -1,6 +1,6 @@ --- title: "...at an AWS event" -chapter: true +chapter: false weight: 20 --- @@ -23,4 +23,49 @@ If you are at an AWS event, an AWS account was created for you to use throughout You are now logged in to the AWS console in an account that was created for you, and will be available only throughout the workshop run time. -Once you have completed the step above, **you can head straight to [Review the CloudFormation Stack Outputs]({{< relref "review_cnf_outputs.md" >}})** +{{% notice info %}} +In the interest of time for shorter events we sometimes deploy the resources required as a prerequisite for you. If you were told so, please review the cloudformation outputs of the stack that was deployed by expanding the instructions below. Since we have already setup the prerequisites, **you can head straight to [Test the Cluster]({{< relref "../eksctl/test.md" >}})** after looking at the instructions. +{{% /notice %}} + +{{%expand "Click to reveal detailed instructions" %}} + +#### What resources are already deployed {#resources_deployed} + +We have deployed the below resources required to get started with the workshop, you'll need to reference the resources created by the CloudFormation stack. + ++ An [AWS Cloud9](https://console.aws.amazon.com/cloud9) workspace with + - An IAM role created and attached to the workspace with Administrator access + - Kubernetes tools installed (kubectl, jq and envsubst) + - awscli upgraded to v2 + - Created and uploaded a SSH key to your AWS region + - [eksctl](https://eksctl.io/) installed, The official CLI for Amaon EKS + ++ An EKS cluster with the name `eksworkshop-eksctl` and a [EKS managed node group](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) with 2 on-demand instances. + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md" %}} + + +#### Use your resources + +In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. + +1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. + +1. In the stack details pane, click the **Outputs** tab. + +It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. + +#### Launch your Cloud9 workspace + +- Click on the url against `Cloud9IDE` from the outputs + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md" %}} + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md" %}} + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} + +Since we have already setup the prerequisites, **you can head straight to [Test the Cluster]({{< relref "../eksctl/test.md" >}})** + +{{% /expand%}} + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md b/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md deleted file mode 100644 index 5875c43e..00000000 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Review the Cloudformation Outputs" -chapter: false -weight: 29 ---- - -{{% notice warning %}} -If you are running the workshop on your own, the Cloud9 workspace should be built by an IAM user with Administrator privileges, not the root account user. Please ensure you are logged in as an IAM user, not the root -account user. -{{% /notice %}} - -{{% notice info %}} -If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by -an AWS employee), we have created the resources required to get started with the workshop -{{% /notice %}} - -#### What resources are already deployed? - -We have deployed the below resources required to get started with the workshop, you'll need to reference the resources created by the CloudFormation stack. - -1. A [AWS Cloud9](https://console.aws.amazon.com/cloud9) with an IAM role with AdministratorAccess attached and setup with the utilities eksctl, kubectl. - -2. An EKS cluster with the name `eksworkshop-eksctl`. It also created a nodegroup with 2 on-demand instances. - - {{%expand "Click to see the eksctl used to create the cluster" %}} - ``` - eksctl create cluster --version=1.16 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access - ``` - {{% /expand%}} - -It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. - -#### Use your resources - -In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. - -1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. - -1. In the stack details pane, click the **Outputs** tab. - -It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. - diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md new file mode 100644 index 00000000..dbbb697a --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md @@ -0,0 +1,24 @@ + + +{{% notice info %}} +Cloud9 normally manages IAM credentials dynamically. This isn't currently compatible with +the EKS IAM authentication, so we will disable it and rely on the IAM role instead. +{{% /notice %}} + + +- Return to your workspace and click the sprocket, or launch a new tab to open the Preferences tab +- Select **AWS SETTINGS** +- Turn off **AWS managed temporary credentials** +- Close the Preferences tab +![c9disableiam](/images/using_ec2_spot_instances_with_eks/prerequisites/c9disableiam.png) + +To ensure temporary credentials aren't already in place we will also remove +any existing credentials file: +``` +rm -vf ${HOME}/.aws/credentials +``` + + + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md index 46c4df5f..ac0c0834 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md @@ -4,23 +4,7 @@ chapter: false weight: 60 --- -{{% notice info %}} -Cloud9 normally manages IAM credentials dynamically. This isn't currently compatible with -the EKS IAM authentication, so we will disable it and rely on the IAM role instead. -{{% /notice %}} - - -- Return to your workspace and click the sprocket, or launch a new tab to open the Preferences tab -- Select **AWS SETTINGS** -- Turn off **AWS managed temporary credentials** -- Close the Preferences tab -![c9disableiam](/images/using_ec2_spot_instances_with_eks/prerequisites/c9disableiam.png) - -To ensure temporary credentials aren't already in place we will also remove -any existing credentials file: -``` -rm -vf ${HOME}/.aws/credentials -``` +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md" %}} We should configure our aws cli with our current region as default: ``` @@ -33,21 +17,5 @@ aws configure set default.region ${AWS_REGION} aws configure get default.region ``` -### Validate the IAM role {#validate_iam} - -Use the [GetCallerIdentity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) CLI command to validate that the Cloud9 IDE is using the correct IAM role. - -``` -aws sts get-caller-identity - -``` - -{{% notice note %}} -**Select the tab** and validate the assumed role… -{{% /notice %}} -{{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="at_an_aws_validaterole.md" />}} -{{< /tabs >}} - +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md b/content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md new file mode 100644 index 00000000..dab9a079 --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md @@ -0,0 +1,23 @@ + + +### Validate the IAM role {#validate_iam} + +Use the [GetCallerIdentity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) CLI command to validate that the Cloud9 IDE is using the correct IAM role. + +``` +aws sts get-caller-identity + +``` + +{{% notice note %}} +**Select the tab** and validate the assumed role… +{{% /notice %}} + +{{< tabs name="Region" >}} + {{< tab name="...ON YOUR OWN" include="on_your_own_validaterole.md" />}} + {{< tab name="...AT AN AWS EVENT" include="at_an_aws_validaterole.md" />}} +{{< /tabs >}} + + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md b/content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md new file mode 100644 index 00000000..e334d016 --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md @@ -0,0 +1,12 @@ + +- When it comes up, customize the environment by closing the **welcome tab** +and **lower work area**, and opening a new **terminal** tab in the main work area: +![c9before](/images/using_ec2_spot_instances_with_eks/prerequisites/c9before.png) + +- Your workspace should now look like this: +![c9after](/images/using_ec2_spot_instances_with_eks/prerequisites/c9after.png) + +- If you like this theme, you can choose it yourself by selecting **View / Themes / Solarized / Solarized Dark** +in the Cloud9 workspace menu. diff --git a/layouts/shortcodes/insert-md-from-file.html b/layouts/shortcodes/insert-md-from-file.html new file mode 100644 index 00000000..8fe5f61e --- /dev/null +++ b/layouts/shortcodes/insert-md-from-file.html @@ -0,0 +1,7 @@ +
+ {{ $file := .Get "file" }} + {{ $page := .Site.GetPage $file }} + {{ with $page }} + {{ .Content }} + {{ end }} +
From aca2b269b6eea0b79343d06b00898b2a5575dabc Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Thu, 13 Aug 2020 14:03:19 -0700 Subject: [PATCH 04/14] Added sceenshot of cnf output --- .../prerequisites/aws_event.md | 12 +++++++++--- .../prerequisites/cnf_output.png | Bin 0 -> 135958 bytes 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 static/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index a3fc952b..197276a6 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -37,8 +37,8 @@ We have deployed the below resources required to get started with the workshop, - An IAM role created and attached to the workspace with Administrator access - Kubernetes tools installed (kubectl, jq and envsubst) - awscli upgraded to v2 - - Created and uploaded a SSH key to your AWS region - - [eksctl](https://eksctl.io/) installed, The official CLI for Amaon EKS + - Created and imported a key pair to Amazon EC2 + - [eksctl](https://eksctl.io/) installed, The official CLI for Amazon EKS + An EKS cluster with the name `eksworkshop-eksctl` and a [EKS managed node group](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) with 2 on-demand instances. @@ -49,12 +49,18 @@ We have deployed the below resources required to get started with the workshop, In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. -1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. +1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack name that starts with **mod-** in the list. 1. In the stack details pane, click the **Outputs** tab. +![cnf_output](/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png) + It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. +{{% notice info %}} +you will notice additional Cloudformation stacks were also deployed which is the result of the stack that starts with **mod-**. One to deploy the Cloud9 Workspace and two other to create the EKS cluster and managed nodegroup. +{{% /notice %}} + #### Launch your Cloud9 workspace - Click on the url against `Cloud9IDE` from the outputs diff --git a/static/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png b/static/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png new file mode 100644 index 0000000000000000000000000000000000000000..5eda44b3701593fc4b4766389beeba721888554b GIT binary patch literal 135958 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
fp&Zs{a94(g|<3ns@`Qbg^9A$e%5w?}xs%Ok} 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�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

#KPu}%lkp*7-4sk+|kY#5wZ@t+g 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

R|0v!Nvi>BEf+m-}l8w+OsBO)US>@08f9 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 literal 0 HcmV?d00001 From eecbf50e188ab73c6c2ee4d5a4162a7cdb0cd7f7 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Tue, 18 Aug 2020 14:22:45 -0700 Subject: [PATCH 05/14] Adding note style to the last line --- .../prerequisites/aws_event.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 197276a6..7df6c1f0 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -71,7 +71,9 @@ you will notice additional Cloudformation stacks were also deployed which is the {{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} +{{% notice note %}} Since we have already setup the prerequisites, **you can head straight to [Test the Cluster]({{< relref "../eksctl/test.md" >}})** +{{% /notice %}} {{% /expand%}} From 97907d882e1db320d3748684d0ce6aa8913f24ae Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Mon, 27 Jul 2020 15:54:29 -0700 Subject: [PATCH 06/14] updating eks workshop to use EE blueprint --- .../10_prerequisites/nf_aws_event.md | 2 +- .../10_prerequisites/nf_self_paced.md | 2 +- .../{aws_event.md => aws_event/_index.md} | 6 +-- .../{ => aws_event}/at_an_aws_updateiam.md | 0 .../aws_event/review_cnf_outputs.md | 42 +++++++++++++++++++ .../{self_paced.md => self_paced/_index.md} | 4 +- .../{ => self_paced}/ap-southeast-1.md | 0 .../self_paced/at_an_aws_updateiam.md | 14 +++++++ .../at_an_aws_validaterole.md | 0 .../{ => self_paced}/attach_workspaceiam.md | 0 .../prerequisites/{ => self_paced}/awscli.md | 0 .../self_paced}/eksctl/_index.md | 2 +- .../eksworkshop-kubeflow.yml.template | 0 .../launcheks.files/eksworkshop.yml.template | 0 .../self_paced}/eksctl/launcheks.md | 8 ++-- .../self_paced}/eksctl/prerequisites.md | 0 .../self_paced}/eksctl/test.md | 0 .../{ => self_paced}/eu-west-1.md | 0 .../{ => self_paced}/k8stools.md | 0 .../{ => self_paced}/on_your_own_updateiam.md | 0 .../on_your_own_validaterole.md | 0 .../prerequisites/{ => self_paced}/sshkey.md | 0 .../{ => self_paced}/update_workspaceiam.md | 0 .../{ => self_paced}/us-east-2.md | 0 .../{ => self_paced}/us-west-2.md | 0 .../{ => self_paced}/workspace.md | 0 26 files changed, 68 insertions(+), 12 deletions(-) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event.md => aws_event/_index.md} (87%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => aws_event}/at_an_aws_updateiam.md (100%) create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced.md => self_paced/_index.md} (96%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/ap-southeast-1.md (100%) create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/at_an_aws_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/attach_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/awscli.md (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/_index.md (97%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/launcheks.files/eksworkshop.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/launcheks.md (81%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/prerequisites.md (100%) rename content/using_ec2_spot_instances_with_eks/{ => prerequisites/self_paced}/eksctl/test.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/eu-west-1.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/k8stools.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/on_your_own_updateiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/on_your_own_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/sshkey.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/update_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/us-east-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/us-west-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{ => self_paced}/workspace.md (100%) diff --git a/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md b/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md index 9313d732..9dc299fe 100644 --- a/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md +++ b/content/nextflow-on-aws-batch/10_prerequisites/nf_aws_event.md @@ -8,7 +8,7 @@ weight: 20 {{% notice warning %}} Only complete this section if you are at an AWS hosted event (such as re:Invent, -Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "self_paced.md" >}}). +Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "nf_self_paced.md" >}}). {{% /notice %}} ### Login to the AWS Workshop Portal diff --git a/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md b/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md index 7d2c1aa5..f1fc1baa 100644 --- a/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md +++ b/content/nextflow-on-aws-batch/10_prerequisites/nf_self_paced.md @@ -5,7 +5,7 @@ weight: 10 --- {{% notice warning %}} -Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "aws_event.md" >}}). +Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "nf_aws_event.md" >}}). {{% /notice %}} ### Prepare for CleanUp diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md similarity index 87% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md index e4a2fb24..2ffd2a44 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md @@ -1,6 +1,6 @@ --- title: "...at an AWS event" -chapter: false +chapter: true weight: 20 --- @@ -9,7 +9,7 @@ weight: 20 {{% notice warning %}} Only complete this section if you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you -are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "self_paced.md" >}}). +are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "../self_paced" >}}). {{% /notice %}} ### Login to the AWS Workshop Portal @@ -23,4 +23,4 @@ If you are at an AWS event, an AWS account was created for you to use throughout You are now logged in to the AWS console in an account that was created for you, and will be available only throughout the workshop run time. -Once you have completed the step above, **you can head straight to [Create a Workspace]({{< relref "workspace.md" >}})** +Once you have completed the step above, **you can head straight to [Review the CloudFormation Stack Outputs]({{< relref "review_cnf_outputs.md" >}})** diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md new file mode 100644 index 00000000..5875c43e --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md @@ -0,0 +1,42 @@ +--- +title: "Review the Cloudformation Outputs" +chapter: false +weight: 29 +--- + +{{% notice warning %}} +If you are running the workshop on your own, the Cloud9 workspace should be built by an IAM user with Administrator privileges, not the root account user. Please ensure you are logged in as an IAM user, not the root +account user. +{{% /notice %}} + +{{% notice info %}} +If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by +an AWS employee), we have created the resources required to get started with the workshop +{{% /notice %}} + +#### What resources are already deployed? + +We have deployed the below resources required to get started with the workshop, you'll need to reference the resources created by the CloudFormation stack. + +1. A [AWS Cloud9](https://console.aws.amazon.com/cloud9) with an IAM role with AdministratorAccess attached and setup with the utilities eksctl, kubectl. + +2. An EKS cluster with the name `eksworkshop-eksctl`. It also created a nodegroup with 2 on-demand instances. + + {{%expand "Click to see the eksctl used to create the cluster" %}} + ``` + eksctl create cluster --version=1.16 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access + ``` + {{% /expand%}} + +It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. + +#### Use your resources + +In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. + +1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. + +1. In the stack details pane, click the **Outputs** tab. + +It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md similarity index 96% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md index bea67433..8d0a18d8 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md @@ -1,11 +1,11 @@ --- title: "...on your own" -chapter: false +chapter: true weight: 10 --- {{% notice warning %}} -Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "aws_event.md" >}}). +Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "../aws_event" >}}). {{% /notice %}} ### Running the workshop on your own diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md new file mode 100644 index 00000000..b7843343 --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md @@ -0,0 +1,14 @@ +--- +title: "...AT AN AWS EVENT - Updating Workspace Cloud9 Instance" +chapter: false +disableToc: true +hidden: true +--- + +## Attach the IAM role to your Workspace + +1. Follow [this deep link to find your Cloud9 EC2 instance](https://console.aws.amazon.com/ec2/v2/home?#Instances:tag:Name=aws-cloud9-.*workshop.*;sort=desc:launchTime) +1. Select the instance, then choose **Actions / Instance Settings / Attach/Replace IAM Role** +![c9instancerole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9instancerole.png) +1. Choose **TeamRoleInstance** from the **IAM Role** drop down, and select **Apply** +![c9attachrole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9attachroleee.png) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md similarity index 97% rename from content/using_ec2_spot_instances_with_eks/eksctl/_index.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md index 209de2b6..b54d4718 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md @@ -1,7 +1,7 @@ --- title: "Launch using eksctl" chapter: true -weight: 20 +weight: 90 --- # Launch using [eksctl](https://eksctl.io/) diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md similarity index 81% rename from content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md index 1303c51f..02d24ea4 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md @@ -6,7 +6,7 @@ weight: 20 {{% notice warning %}} -**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../prerequisites/update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. +**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. {{% /notice %}} #### Challenge: @@ -25,11 +25,11 @@ aws sts get-caller-identity **Select the tab** and and validate the assumed role… {{% /notice %}} {{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="../prerequisites/on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="../prerequisites/at_an_aws_validaterole.md" />}} + {{< tab name="...ON YOUR OWN" include="../on_your_own_validaterole.md" />}} + {{< tab name="...AT AN AWS EVENT" include="../at_an_aws_validaterole.md" />}} {{< /tabs >}} -If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../prerequisites/update_workspaceiam.md" >}})** for troubleshooting. +If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../update_workspaceiam.md" >}})** for troubleshooting. If you do see the correct role, proceed to next step to create an EKS cluster. {{% /expand %}} diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/test.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/eksctl/test.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md From c81c029d5ba3975af79d5b9ed03f1995c2ac08b5 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Tue, 28 Jul 2020 14:57:04 -0700 Subject: [PATCH 07/14] updating eks workshop to use EE blueprint --- .../self_paced => }/eksctl/_index.md | 2 +- .../eksworkshop-kubeflow.yml.template | 0 .../launcheks.files/eksworkshop.yml.template | 0 .../self_paced => }/eksctl/launcheks.md | 8 ++++---- .../self_paced => }/eksctl/prerequisites.md | 0 .../{prerequisites/self_paced => }/eksctl/test.md | 0 .../{self_paced => }/ap-southeast-1.md | 0 .../{aws_event => }/at_an_aws_updateiam.md | 0 .../{self_paced => }/at_an_aws_validaterole.md | 0 .../{self_paced => }/attach_workspaceiam.md | 0 .../{aws_event/_index.md => aws_event.md} | 2 +- .../prerequisites/{self_paced => }/awscli.md | 0 .../prerequisites/{self_paced => }/eu-west-1.md | 0 .../prerequisites/{self_paced => }/k8stools.md | 0 .../{self_paced => }/on_your_own_updateiam.md | 0 .../{self_paced => }/on_your_own_validaterole.md | 0 .../{aws_event => }/review_cnf_outputs.md | 0 .../{self_paced/_index.md => self_paced.md} | 4 ++-- .../self_paced/at_an_aws_updateiam.md | 14 -------------- .../prerequisites/{self_paced => }/sshkey.md | 0 .../{self_paced => }/update_workspaceiam.md | 0 .../prerequisites/{self_paced => }/us-east-2.md | 0 .../prerequisites/{self_paced => }/us-west-2.md | 0 .../prerequisites/{self_paced => }/workspace.md | 0 24 files changed, 8 insertions(+), 22 deletions(-) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/_index.md (97%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/launcheks.files/eksworkshop.yml.template (100%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/launcheks.md (81%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/prerequisites.md (100%) rename content/using_ec2_spot_instances_with_eks/{prerequisites/self_paced => }/eksctl/test.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/ap-southeast-1.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event => }/at_an_aws_updateiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/at_an_aws_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/attach_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event/_index.md => aws_event.md} (96%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/awscli.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/eu-west-1.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/k8stools.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/on_your_own_updateiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/on_your_own_validaterole.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{aws_event => }/review_cnf_outputs.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced/_index.md => self_paced.md} (96%) delete mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/sshkey.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/update_workspaceiam.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/us-east-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/us-west-2.md (100%) rename content/using_ec2_spot_instances_with_eks/prerequisites/{self_paced => }/workspace.md (100%) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md similarity index 97% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md rename to content/using_ec2_spot_instances_with_eks/eksctl/_index.md index b54d4718..3442f48f 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/_index.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md @@ -1,7 +1,7 @@ --- title: "Launch using eksctl" chapter: true -weight: 90 +weight: 30 --- # Launch using [eksctl](https://eksctl.io/) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template rename to content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop-kubeflow.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.files/eksworkshop.yml.template rename to content/using_ec2_spot_instances_with_eks/eksctl/launcheks.files/eksworkshop.yml.template diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md similarity index 81% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md rename to content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md index 02d24ea4..1303c51f 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/launcheks.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md @@ -6,7 +6,7 @@ weight: 20 {{% notice warning %}} -**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. +**DO NOT PROCEED** with this step unless you have [validated the IAM role]({{< relref "../prerequisites/update_workspaceiam.md#validate_iam" >}}) in use by the Cloud9 IDE. You will not be able to run the necessary kubectl commands in the later modules unless the EKS cluster is built using the IAM role. {{% /notice %}} #### Challenge: @@ -25,11 +25,11 @@ aws sts get-caller-identity **Select the tab** and and validate the assumed role… {{% /notice %}} {{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="../on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="../at_an_aws_validaterole.md" />}} + {{< tab name="...ON YOUR OWN" include="../prerequisites/on_your_own_validaterole.md" />}} + {{< tab name="...AT AN AWS EVENT" include="../prerequisites/at_an_aws_validaterole.md" />}} {{< /tabs >}} -If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../update_workspaceiam.md" >}})** for troubleshooting. +If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../prerequisites/update_workspaceiam.md" >}})** for troubleshooting. If you do see the correct role, proceed to next step to create an EKS cluster. {{% /expand %}} diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md b/content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/prerequisites.md rename to content/using_ec2_spot_instances_with_eks/eksctl/prerequisites.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md b/content/using_ec2_spot_instances_with_eks/eksctl/test.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eksctl/test.md rename to content/using_ec2_spot_instances_with_eks/eksctl/test.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/ap-southeast-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/ap-southeast-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/at_an_aws_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/attach_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/attach_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md similarity index 96% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 2ffd2a44..9afffdef 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/_index.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -9,7 +9,7 @@ weight: 20 {{% notice warning %}} Only complete this section if you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by an AWS employee). If you -are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "../self_paced" >}}). +are running the workshop on your own, go to: [Start the workshop on your own]({{< relref "self_paced.md" >}}). {{% /notice %}} ### Login to the AWS Workshop Portal diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md b/content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/awscli.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/awscli.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md b/content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/eu-west-1.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/eu-west-1.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md b/content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/k8stools.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/k8stools.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_updateiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_updateiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md b/content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/on_your_own_validaterole.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/on_your_own_validaterole.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md b/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/aws_event/review_cnf_outputs.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md similarity index 96% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md index 8d0a18d8..bea67433 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/_index.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced.md @@ -1,11 +1,11 @@ --- title: "...on your own" -chapter: true +chapter: false weight: 10 --- {{% notice warning %}} -Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "../aws_event" >}}). +Only complete this section if you are running the workshop on your own. If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, etc), go to [Start the workshop at an AWS event]({{< relref "aws_event.md" >}}). {{% /notice %}} ### Running the workshop on your own diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md deleted file mode 100644 index b7843343..00000000 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/at_an_aws_updateiam.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "...AT AN AWS EVENT - Updating Workspace Cloud9 Instance" -chapter: false -disableToc: true -hidden: true ---- - -## Attach the IAM role to your Workspace - -1. Follow [this deep link to find your Cloud9 EC2 instance](https://console.aws.amazon.com/ec2/v2/home?#Instances:tag:Name=aws-cloud9-.*workshop.*;sort=desc:launchTime) -1. Select the instance, then choose **Actions / Instance Settings / Attach/Replace IAM Role** -![c9instancerole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9instancerole.png) -1. Choose **TeamRoleInstance** from the **IAM Role** drop down, and select **Apply** -![c9attachrole](/images/using_ec2_spot_instances_with_eks/prerequisites/c9attachroleee.png) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md b/content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/sshkey.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/sshkey.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/update_workspaceiam.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-east-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/us-east-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md b/content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/us-west-2.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/us-west-2.md diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md b/content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md similarity index 100% rename from content/using_ec2_spot_instances_with_eks/prerequisites/self_paced/workspace.md rename to content/using_ec2_spot_instances_with_eks/prerequisites/workspace.md From 843478fd6dee90536f4085513e0f4f73aa461d85 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Fri, 31 Jul 2020 13:47:34 -0700 Subject: [PATCH 08/14] updating eks workshop to use EE blueprint --- .../eksctl/_index.md | 2 +- .../create_eks_cluster_eksctl_command.md | 13 + .../eksctl/launcheks.md | 19 +- .../prerequisites/aws_event.md | 50 ++- .../eks-spot-workshop-quickstart-cnf.yml | 359 ++++++++++++++++++ .../prerequisites/review_cnf_outputs.md | 42 -- .../update_workspace_settings.md | 30 ++ .../prerequisites/update_workspaceiam.md | 36 +- .../prerequisites/validate_workspace_role.md | 29 ++ .../prerequisites/workspace_at_launch.md | 18 + layouts/shortcodes/insert-md-from-file.html | 7 + 11 files changed, 509 insertions(+), 96 deletions(-) create mode 100644 content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml delete mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md create mode 100644 content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md create mode 100644 layouts/shortcodes/insert-md-from-file.html diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md index 3442f48f..209de2b6 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/_index.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/_index.md @@ -1,7 +1,7 @@ --- title: "Launch using eksctl" chapter: true -weight: 30 +weight: 20 --- # Launch using [eksctl](https://eksctl.io/) diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md b/content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md new file mode 100644 index 00000000..6842cf3a --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md @@ -0,0 +1,13 @@ +--- +title: "Create EKS cluster Command" +chapter: false +disableToc: true +hidden: true +--- + + +``` +eksctl create cluster --version=1.18 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access +``` diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md index 1303c51f..3f18c2a5 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/launcheks.md @@ -14,20 +14,7 @@ weight: 20 {{%expand "Expand here to see the solution" %}} -Use the [GetCallerIdentity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) CLI command to validate that the Cloud9 IDE is using the correct IAM role. - -``` -aws sts get-caller-identity - -``` - -{{% notice note %}} -**Select the tab** and and validate the assumed role… -{{% /notice %}} -{{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="../prerequisites/on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="../prerequisites/at_an_aws_validaterole.md" />}} -{{< /tabs >}} +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} If you do not see the correct role, please go back and **[validate the IAM role]({{< relref "../prerequisites/update_workspaceiam.md" >}})** for troubleshooting. @@ -39,9 +26,7 @@ If you do see the correct role, proceed to next step to create an EKS cluster. The following command will create an eks cluster with the name `eksworkshop-eksctl`. It will also create a nodegroup with 2 on-demand instances. -``` -eksctl create cluster --version=1.18 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access -``` +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md" %}} eksctl allows us to pass parameters to initialize the cluster. While initializing the cluster, eksctl does also allow us to create nodegroups. diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 9afffdef..55923c5e 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -1,6 +1,6 @@ --- title: "...at an AWS event" -chapter: true +chapter: false weight: 20 --- @@ -23,4 +23,50 @@ If you are at an AWS event, an AWS account was created for you to use throughout You are now logged in to the AWS console in an account that was created for you, and will be available only throughout the workshop run time. -Once you have completed the step above, **you can head straight to [Review the CloudFormation Stack Outputs]({{< relref "review_cnf_outputs.md" >}})** +{{% notice info %}} +In the interest of time for shorter events we sometimes deploy the resources required as a prerequisite for you. If you were told so, please review the cloudformation outputs of the stack that was deployed by **expanding the instructions below**. +{{% /notice %}} + +{{%expand "Click to reveal detailed instructions" %}} + +#### What resources are already deployed {#resources_deployed} + +We have deployed the below resources required to get started with the workshop using a CloudFormation Template (**[eks-spot-workshop-quickstarter-cnf.yml] (prerequisites.files/eks-spot-workshop-quickstart-cnf.yml)**), Please reference the below resources created by the stack. + ++ An [AWS Cloud9](https://console.aws.amazon.com/cloud9) workspace with + - An IAM role created and attached to the workspace with Administrator access + - Kubernetes tools installed (kubectl, jq and envsubst) + - awscli upgraded to v2 + - Created and uploaded a SSH key to your AWS region + - [eksctl](https://eksctl.io/) installed, The official CLI for Amaon EKS + ++ An EKS cluster with the name `eksworkshop-eksctl` and a [EKS managed node group](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) with 2 on-demand instances. + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/eksctl/create_eks_cluster_eksctl_command.md" %}} + + +#### Use your resources + +In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. + +1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. + +1. In the stack details pane, click the **Outputs** tab. + +It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. + +#### Launch your Cloud9 workspace + +- Click on the url against `Cloud9IDE` from the outputs + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md" %}} + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md" %}} + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} + + +Since we have already setup the prerequisites, **you can head straight to [Test the Cluster]({{< relref "../eksctl/test.md" >}})** + +{{% /expand%}} + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml b/content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml new file mode 100644 index 00000000..912409fb --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml @@ -0,0 +1,359 @@ +--- +AWSTemplateFormatVersion: '2010-09-09' +Description: AWS CloudFormation template to create a Cloud9 environment setup with kubectl, eksctl and an EKS cluster with a managed node group. Please allow ~20min for the EKS cluster to be ready. +Metadata: + Author: + Description: Sandeep Palavalasa + License: + Description: 'Copyright 2020 Amazon.com, Inc. and its affiliates. All Rights Reserved. + + Licensed under the Amazon Software License (the "License"). You may not use this file + except in compliance with the License. A copy of the License is located at + + http://aws.amazon.com/asl/ + + or in the "license" file accompanying this file. This file is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations under the License.' + +Parameters: + C9InstanceType: + Description: Example Cloud9 instance type + Type: String + Default: t3.small + AllowedValues: + - t3.small + - t3.medium + ConstraintDescription: Must be a valid Cloud9 instance type + C9KubectlVersion: + Description: Cloud9 instance kubectl version + Type: String + Default: v1.18.12 + ConstraintDescription: Must be a valid kubectl version + C9KubectlVersionTEST: + Description: Cloud9 instance kubectl version + Type: String + Default: v1.18.12 + ConstraintDescription: Must be a valid kubectl version + C9EKSctlVersion: + Description: Cloud9 instance eksctl version + Type: String + Default: 0.31.0 + ConstraintDescription: Must be a valid eksctl version + EKSClusterVersion: + Description: EKS Cluster Vesion + Type: String + Default: 1.18 + ConstraintDescription: Must be a valid eks version + EKSClusterName: + Description: EKS Cluster Name + Type: String + Default: eksworkshop-eksctl + ConstraintDescription: Must be a valid eks version + #Used only by Event Engine, if you are self-deploying the stack leave the default value to NONE + EETeamRoleArn: + Description: "ARN of the Team Role" + Default: NONE + Type: String + ConstraintDescription: This is ONLY used Event Engine, dont change this if you are self-deploying the stack + +Conditions: + EventEngine: !Not [!Equals [!Ref EETeamRoleArn, NONE]] + +Resources: + +################## PERMISSIONS AND ROLES ################# + C9Role: + Type: AWS::IAM::Role + Properties: + RoleName: C9-TeamRole + Tags: + - Key: Environment + Value: AWS Example + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - ec2.amazonaws.com + - ssm.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - arn:aws:iam::aws:policy/AdministratorAccess + Path: "/" + C9LambdaExecutionRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - lambda.amazonaws.com + Action: + - sts:AssumeRole + Path: "/" + Policies: + - PolicyName: + Fn::Join: + - '' + - - C9LambdaPolicy- + - Ref: AWS::Region + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogGroup + - logs:CreateLogStream + - logs:PutLogEvents + Resource: arn:aws:logs:*:*:* + - Effect: Allow + Action: + - cloudformation:DescribeStacks + - cloudformation:DescribeStackEvents + - cloudformation:DescribeStackResource + - cloudformation:DescribeStackResources + - ec2:DescribeInstances + - ec2:AssociateIamInstanceProfile + - ec2:ModifyInstanceAttribute + - ec2:ReplaceIamInstanceProfileAssociation + - iam:ListInstanceProfiles + - iam:PassRole + Resource: "*" + +################## LAMBDA BOOTSTRAP FUNCTION ################ + + C9BootstrapInstanceLambda: + Description: Bootstrap Cloud9 instance + Type: Custom::C9BootstrapInstanceLambda + DependsOn: + - C9BootstrapInstanceLambdaFunction + - C9Instance + - C9LambdaExecutionRole + Properties: + Tags: + - Key: Environment + Value: AWS Example + ServiceToken: + Fn::GetAtt: + - C9BootstrapInstanceLambdaFunction + - Arn + REGION: + Ref: AWS::Region + StackName: + Ref: AWS::StackName + EnvironmentId: + Ref: C9Instance + LabIdeInstanceProfileName: + # Ref: C9IAMInstanceProfileName + Ref: C9InstanceProfile + LabIdeInstanceProfileArn: + # !Sub 'arn:aws:iam::${AWS::AccountId}:instance-profile/${C9IAMInstanceProfileName}' + Fn::GetAtt: + - C9InstanceProfile + - Arn + + C9BootstrapInstanceLambdaFunction: + Type: AWS::Lambda::Function + Properties: + Tags: + - Key: Environment + Value: AWS Example + Handler: index.lambda_handler + Role: + Fn::GetAtt: + - C9LambdaExecutionRole + - Arn + Runtime: python3.6 + MemorySize: 256 + Timeout: '600' + Code: + ZipFile: | + from __future__ import print_function + import boto3 + # import loggings + import json + import os + import time + import traceback + import cfnresponse + + # logger = logging.getLogger() + # logger.setLevel(logging.INFO) + + def lambda_handler(event, context): + # logger.info('event: {}'.format(event)) + # logger.info('context: {}'.format(context)) + responseData = {} + + if event['RequestType'] == 'Create': + try: + # Open AWS clients + ec2 = boto3.client('ec2') + + # Get the InstanceId of the Cloud9 IDE + # print(str({'Name': 'tag:aws:cloud9:environment','Values': [event['ResourceProperties']['EnvironmentId']]})) + instance = ec2.describe_instances(Filters=[{'Name': 'tag:aws:cloud9:environment','Values': [event['ResourceProperties']['EnvironmentId']]}])['Reservations'][0]['Instances'][0] + # logger.info('instance: {}'.format(instance)) + + # Create the IamInstanceProfile request object + iam_instance_profile = { + 'Arn': event['ResourceProperties']['LabIdeInstanceProfileArn'], + 'Name': event['ResourceProperties']['LabIdeInstanceProfileName'] + } + # logger.info('iam_instance_profile: {}'.format(iam_instance_profile)) + + # Wait for Instance to become ready before adding Role + instance_state = instance['State']['Name'] + # logger.info('instance_state: {}'.format(instance_state)) + while instance_state != 'running': + time.sleep(5) + instance_state = ec2.describe_instances(InstanceIds=[instance['InstanceId']]) + # logger.info('instance_state: {}'.format(instance_state)) + + # attach instance profile + response = ec2.associate_iam_instance_profile(IamInstanceProfile=iam_instance_profile, InstanceId=instance['InstanceId']) + # logger.info('response - associate_iam_instance_profile: {}'.format(response)) + r_ec2 = boto3.resource('ec2') + + responseData = {'Success': 'Started bootstrapping for instance: '+instance['InstanceId']} + cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, 'CustomResourcePhysicalID') + + except Exception as e: + # logger.error(e, exc_info=True) + responseData = {'Error': traceback.format_exc(e)} + cfnresponse.send(event, context, cfnresponse.FAILED, responseData, 'CustomResourcePhysicalID') +################## SSM BOOTSRAP HANDLER ############### + C9OutputBucket: + Type: AWS::S3::Bucket + DeletionPolicy: Delete + + C9SSMDocument: + Type: AWS::SSM::Document + Properties: + Tags: + - Key: Environment + Value: AWS Example + Content: Yaml + DocumentType: Command + Content: + schemaVersion: '2.2' + description: Bootstrap Cloud9 Instance + mainSteps: + - action: aws:runShellScript + name: C9bootstrap + inputs: + runCommand: + - "#!/bin/bash" + - date + - . /home/ec2-user/.bashrc + - whoami + - !Sub 'echo "export KUBECTL_VERSION=${C9KubectlVersion}"' + - sudo -H -u ec2-user aws sts get-caller-identity + - echo '=== INSTALL kubectl ===' + - !Sub 'export KUBECTL_VERSION=${C9KubectlVersion}' + - sudo curl --silent --location -o /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl + - sudo chmod +x /usr/local/bin/kubectl + - echo '=== Install JQ and envsubst ===' + - sudo yum -y install jq gettext + - echo '=== Update to the latest AWS CLI ===' + - sudo -H -u ec2-user aws --version + - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + - unzip awscliv2.zip + - sudo ./aws/install + - . /home/ec2-user/.bash_profile + - sudo -H -u ec2-user aws --version + - echo '=== setup AWS configs ===' + - rm -vf /home/ec2-user/.aws/credentials + - export ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account) + - export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region') + - echo "export ACCOUNT_ID=${ACCOUNT_ID}" >> /home/ec2-user/.bash_profile + - echo "export AWS_REGION=${AWS_REGION}" >> /home/ec2-user/.bash_profile + - sudo -H -u ec2-user aws configure set default.region ${AWS_REGION} + - sudo -H -u ec2-user aws configure get default.region + - sudo -H -u ec2-user aws sts get-caller-identity + - echo '=== Generate SSH key and import to aws ===' + - sudo -H -u ec2-user ssh-keygen -f /home/ec2-user/.ssh/id_rsa1 -P '' + - sudo -H -u ec2-user aws ec2 import-key-pair --key-name "eksworkshop" --public-key-material file:///home/ec2-user/.ssh/id_rsa1.pub + - echo '=== Install EKSCTL ===' + - !Sub 'export EKSCTL_VERSION=${C9EKSctlVersion}' + - curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/${EKSCTL_VERSION}/eksctl_Linux_amd64.tar.gz" | tar xz -C /tmp + - sudo mv -v /tmp/eksctl /usr/local/bin + - sudo -H -u ec2-user /usr/local/bin/eksctl version + - echo '=== Create EKS Cluster ===' + - !Sub 'sudo -H -u ec2-user /usr/local/bin/eksctl create cluster --version=${EKSClusterVersion} --name=${EKSClusterName} --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS::Region} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access' + - sudo -H -u ec2-user /usr/local/bin/kubectl get nodes + + C9BootstrapAssociation: + Type: AWS::SSM::Association + DependsOn: + - C9OutputBucket + Properties: + Name: !Ref C9SSMDocument + OutputLocation: + S3Location: + OutputS3BucketName: !Ref C9OutputBucket + OutputS3KeyPrefix: bootstrapoutput + Targets: + - Key: tag:SSMBootstrap + Values: + - Active + +################## INSTANCE ##################### + C9InstanceProfile: + Type: AWS::IAM::InstanceProfile + Properties: + Path: "/" + Roles: + - Ref: C9Role + C9Instance: + Description: "-" + DependsOn: C9BootstrapAssociation + Type: AWS::Cloud9::EnvironmentEC2 + Properties: + Description: AWS Cloud9 instance for Examples + AutomaticStopTimeMinutes: 3600 + InstanceType: + Ref: C9InstanceType + Name: + Ref: AWS::StackName + # OwnerArn: !Sub 'arn:aws:sts::${AWS::AccountId}:assumed-role/TeamRole/MasterKey' + OwnerArn: !If [EventEngine , !Sub 'arn:aws:sts::${AWS::AccountId}:assumed-role/TeamRole/MasterKey' , !Ref AWS::NoValue] + Tags: + - + Key: SSMBootstrap + Value: Active + - + Key: Environment + Value: + Ref: AWS::StackName + +Outputs: + Cloud9IDE: + Value: + Fn::Join: + - '' + - - https:// + - Ref: AWS::Region + - ".console.aws.amazon.com/cloud9/ide/" + - Ref: C9Instance + - "?region=" + - Ref: AWS::Region + + EKSCluster: + Value: + Fn::Join: + - '' + - - https:// + - Ref: AWS::Region + - ".console.aws.amazon.com/eks/home" + - "?region=" + - Ref: AWS::Region + - "#/clusters/" + - Ref: EKSClusterName + EKSClusterVersion: + Value: !Ref EKSClusterVersion diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md b/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md deleted file mode 100644 index 5875c43e..00000000 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/review_cnf_outputs.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Review the Cloudformation Outputs" -chapter: false -weight: 29 ---- - -{{% notice warning %}} -If you are running the workshop on your own, the Cloud9 workspace should be built by an IAM user with Administrator privileges, not the root account user. Please ensure you are logged in as an IAM user, not the root -account user. -{{% /notice %}} - -{{% notice info %}} -If you are at an AWS hosted event (such as re:Invent, Kubecon, Immersion Day, or any other event hosted by -an AWS employee), we have created the resources required to get started with the workshop -{{% /notice %}} - -#### What resources are already deployed? - -We have deployed the below resources required to get started with the workshop, you'll need to reference the resources created by the CloudFormation stack. - -1. A [AWS Cloud9](https://console.aws.amazon.com/cloud9) with an IAM role with AdministratorAccess attached and setup with the utilities eksctl, kubectl. - -2. An EKS cluster with the name `eksworkshop-eksctl`. It also created a nodegroup with 2 on-demand instances. - - {{%expand "Click to see the eksctl used to create the cluster" %}} - ``` - eksctl create cluster --version=1.16 --name=eksworkshop-eksctl --node-private-networking --managed --nodes=2 --alb-ingress-access --region=${AWS_REGION} --node-labels="lifecycle=OnDemand,intent=control-apps" --asg-access - ``` - {{% /expand%}} - -It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. - -#### Use your resources - -In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. - -1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. - -1. In the stack details pane, click the **Outputs** tab. - -It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. - diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md new file mode 100644 index 00000000..1c886b7e --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md @@ -0,0 +1,30 @@ +--- +title: "Update Workshop Settings" +chapter: false +disableToc: true +hidden: true +--- + + +{{% notice info %}} +Cloud9 normally manages IAM credentials dynamically. This isn't currently compatible with +the EKS IAM authentication, so we will disable it and rely on the IAM role instead. +{{% /notice %}} + + +- Return to your workspace and click the sprocket, or launch a new tab to open the Preferences tab +- Select **AWS SETTINGS** +- Turn off **AWS managed temporary credentials** +- Close the Preferences tab +![c9disableiam](/images/using_ec2_spot_instances_with_eks/prerequisites/c9disableiam.png) + +To ensure temporary credentials aren't already in place we will also remove +any existing credentials file: +``` +rm -vf ${HOME}/.aws/credentials +``` + + + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md index 46c4df5f..ac0c0834 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/update_workspaceiam.md @@ -4,23 +4,7 @@ chapter: false weight: 60 --- -{{% notice info %}} -Cloud9 normally manages IAM credentials dynamically. This isn't currently compatible with -the EKS IAM authentication, so we will disable it and rely on the IAM role instead. -{{% /notice %}} - - -- Return to your workspace and click the sprocket, or launch a new tab to open the Preferences tab -- Select **AWS SETTINGS** -- Turn off **AWS managed temporary credentials** -- Close the Preferences tab -![c9disableiam](/images/using_ec2_spot_instances_with_eks/prerequisites/c9disableiam.png) - -To ensure temporary credentials aren't already in place we will also remove -any existing credentials file: -``` -rm -vf ${HOME}/.aws/credentials -``` +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md" %}} We should configure our aws cli with our current region as default: ``` @@ -33,21 +17,5 @@ aws configure set default.region ${AWS_REGION} aws configure get default.region ``` -### Validate the IAM role {#validate_iam} - -Use the [GetCallerIdentity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) CLI command to validate that the Cloud9 IDE is using the correct IAM role. - -``` -aws sts get-caller-identity - -``` - -{{% notice note %}} -**Select the tab** and validate the assumed role… -{{% /notice %}} -{{< tabs name="Region" >}} - {{< tab name="...ON YOUR OWN" include="on_your_own_validaterole.md" />}} - {{< tab name="...AT AN AWS EVENT" include="at_an_aws_validaterole.md" />}} -{{< /tabs >}} - +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md b/content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md new file mode 100644 index 00000000..01b04d65 --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md @@ -0,0 +1,29 @@ +--- +title: "Validate Workshpace Role" +chapter: false +disableToc: true +hidden: true +--- + + +### Validate the IAM role {#validate_iam} + +Use the [GetCallerIdentity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) CLI command to validate that the Cloud9 IDE is using the correct IAM role. + +``` +aws sts get-caller-identity + +``` + +{{% notice note %}} +**Select the tab** and validate the assumed role… +{{% /notice %}} + +{{< tabs name="Region" >}} + {{< tab name="...ON YOUR OWN" include="on_your_own_validaterole.md" />}} + {{< tab name="...AT AN AWS EVENT" include="at_an_aws_validaterole.md" />}} +{{< /tabs >}} + + diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md b/content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md new file mode 100644 index 00000000..bc8505d2 --- /dev/null +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/workspace_at_launch.md @@ -0,0 +1,18 @@ +--- +title: "Workspace at Launch" +chapter: false +disableToc: true +hidden: true +--- + +- When it comes up, customize the environment by closing the **welcome tab** +and **lower work area**, and opening a new **terminal** tab in the main work area: +![c9before](/images/using_ec2_spot_instances_with_eks/prerequisites/c9before.png) + +- Your workspace should now look like this: +![c9after](/images/using_ec2_spot_instances_with_eks/prerequisites/c9after.png) + +- If you like this theme, you can choose it yourself by selecting **View / Themes / Solarized / Solarized Dark** +in the Cloud9 workspace menu. diff --git a/layouts/shortcodes/insert-md-from-file.html b/layouts/shortcodes/insert-md-from-file.html new file mode 100644 index 00000000..8fe5f61e --- /dev/null +++ b/layouts/shortcodes/insert-md-from-file.html @@ -0,0 +1,7 @@ +

+ {{ $file := .Get "file" }} + {{ $page := .Site.GetPage $file }} + {{ with $page }} + {{ .Content }} + {{ end }} +
From e8f175a2fc10b1030f02b8f96c97906b0210ab93 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Thu, 13 Aug 2020 14:03:19 -0700 Subject: [PATCH 09/14] Added sceenshot of cnf output --- .../prerequisites/aws_event.md | 12 +++++++++--- .../prerequisites/cnf_output.png | Bin 0 -> 135958 bytes 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 static/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 55923c5e..752aef95 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -37,8 +37,8 @@ We have deployed the below resources required to get started with the workshop u - An IAM role created and attached to the workspace with Administrator access - Kubernetes tools installed (kubectl, jq and envsubst) - awscli upgraded to v2 - - Created and uploaded a SSH key to your AWS region - - [eksctl](https://eksctl.io/) installed, The official CLI for Amaon EKS + - Created and imported a key pair to Amazon EC2 + - [eksctl](https://eksctl.io/) installed, The official CLI for Amazon EKS + An EKS cluster with the name `eksworkshop-eksctl` and a [EKS managed node group](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) with 2 on-demand instances. @@ -49,12 +49,18 @@ We have deployed the below resources required to get started with the workshop u In this workshop, you'll need to reference the resources created by the CloudFormation stack that we setup for you. -1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack in the list. +1. On the [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation), select the stack name that starts with **mod-** in the list. 1. In the stack details pane, click the **Outputs** tab. +![cnf_output](/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png) + It is recommended that you keep this window open so you can easily refer to the outputs and resources throughout the workshop. +{{% notice info %}} +you will notice additional Cloudformation stacks were also deployed which is the result of the stack that starts with **mod-**. One to deploy the Cloud9 Workspace and two other to create the EKS cluster and managed nodegroup. +{{% /notice %}} + #### Launch your Cloud9 workspace - Click on the url against `Cloud9IDE` from the outputs diff --git a/static/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png b/static/images/using_ec2_spot_instances_with_eks/prerequisites/cnf_output.png new file mode 100644 index 0000000000000000000000000000000000000000..5eda44b3701593fc4b4766389beeba721888554b GIT binary patch literal 135958 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
fp&Zs{a94(g|<3ns@`Qbg^9A$e%5w?}xs%Ok} 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�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

#KPu}%lkp*7-4sk+|kY#5wZ@t+g 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

R|0v!Nvi>BEf+m-}l8w+OsBO)US>@08f9 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 literal 0 HcmV?d00001 From 7fbc77f7b1b8fb6868635ca80148e9ba5f101842 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Tue, 18 Aug 2020 14:22:45 -0700 Subject: [PATCH 10/14] Adding note style to the last line --- .../prerequisites/aws_event.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 752aef95..6d9d7245 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -71,8 +71,9 @@ you will notice additional Cloudformation stacks were also deployed which is the {{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} - +{{% notice note %}} Since we have already setup the prerequisites, **you can head straight to [Test the Cluster]({{< relref "../eksctl/test.md" >}})** +{{% /notice %}} {{% /expand%}} From 61fbb40f3e3c05e70d761c702456bbea97db7085 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Fri, 4 Dec 2020 12:43:03 -0800 Subject: [PATCH 11/14] removing the tab selection in validate IAM role section --- .../prerequisites/aws_event.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md index 6d9d7245..2a59556f 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/aws_event.md @@ -69,7 +69,16 @@ you will notice additional Cloudformation stacks were also deployed which is the {{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/update_workspace_settings.md" %}} -{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/validate_workspace_role.md" %}} +### Validate the IAM role {#validate_iam} + +Use the [GetCallerIdentity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) CLI command to validate that the Cloud9 IDE is using the correct IAM role. + +``` +aws sts get-caller-identity + +``` + +{{% insert-md-from-file file="using_ec2_spot_instances_with_eks/prerequisites/at_an_aws_validaterole.md" %}} {{% notice note %}} Since we have already setup the prerequisites, **you can head straight to [Test the Cluster]({{< relref "../eksctl/test.md" >}})** From e818d8aafbfba105edb574875a7e0aae0883fb12 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Fri, 4 Dec 2020 13:52:45 -0800 Subject: [PATCH 12/14] Adding condition in CNF to use event engine TeamRole --- .../eks-spot-workshop-quickstart-cnf.yml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml b/content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml index 912409fb..a94368a0 100644 --- a/content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml +++ b/content/using_ec2_spot_instances_with_eks/prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml @@ -58,15 +58,15 @@ Parameters: ConstraintDescription: This is ONLY used Event Engine, dont change this if you are self-deploying the stack Conditions: - EventEngine: !Not [!Equals [!Ref EETeamRoleArn, NONE]] + NotEventEngine: !Equals [!Ref EETeamRoleArn, NONE] Resources: ################## PERMISSIONS AND ROLES ################# C9Role: Type: AWS::IAM::Role + Condition: NotEventEngine Properties: - RoleName: C9-TeamRole Tags: - Key: Environment Value: AWS Example @@ -148,14 +148,7 @@ Resources: Ref: AWS::StackName EnvironmentId: Ref: C9Instance - LabIdeInstanceProfileName: - # Ref: C9IAMInstanceProfileName - Ref: C9InstanceProfile - LabIdeInstanceProfileArn: - # !Sub 'arn:aws:iam::${AWS::AccountId}:instance-profile/${C9IAMInstanceProfileName}' - Fn::GetAtt: - - C9InstanceProfile - - Arn + LabIdeInstanceProfileArn: !If [ NotEventEngine, !GetAtt C9InstanceProfile.Arn, !Sub 'arn:aws:iam::${AWS::AccountId}:instance-profile/TeamRoleInstanceProfile' ] C9BootstrapInstanceLambdaFunction: Type: AWS::Lambda::Function @@ -202,8 +195,7 @@ Resources: # Create the IamInstanceProfile request object iam_instance_profile = { - 'Arn': event['ResourceProperties']['LabIdeInstanceProfileArn'], - 'Name': event['ResourceProperties']['LabIdeInstanceProfileName'] + 'Arn': event['ResourceProperties']['LabIdeInstanceProfileArn'] } # logger.info('iam_instance_profile: {}'.format(iam_instance_profile)) @@ -306,6 +298,7 @@ Resources: ################## INSTANCE ##################### C9InstanceProfile: Type: AWS::IAM::InstanceProfile + Condition: NotEventEngine Properties: Path: "/" Roles: @@ -322,7 +315,7 @@ Resources: Name: Ref: AWS::StackName # OwnerArn: !Sub 'arn:aws:sts::${AWS::AccountId}:assumed-role/TeamRole/MasterKey' - OwnerArn: !If [EventEngine , !Sub 'arn:aws:sts::${AWS::AccountId}:assumed-role/TeamRole/MasterKey' , !Ref AWS::NoValue] + OwnerArn: !If [NotEventEngine , !Ref AWS::NoValue , !Sub 'arn:aws:sts::${AWS::AccountId}:assumed-role/TeamRole/MasterKey'] Tags: - Key: SSMBootstrap From 6887a7a2b8c01e12001b610e1a30297a9bc437b4 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Fri, 4 Dec 2020 15:37:08 -0800 Subject: [PATCH 13/14] Adding the fix for unauthorized error on EKS console --- .../eksctl/test.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/test.md b/content/using_ec2_spot_instances_with_eks/eksctl/test.md index 9b1d3897..31a2aeb1 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/test.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/test.md @@ -33,3 +33,34 @@ You now have a fully working Amazon EKS Cluster that is ready to use! {{% notice tip %}} Explore the Elastic Kubernetes Service (EKS) section in the AWS Console and the properties of the newly created EKS cluster. {{% /notice %}} + +{{% notice warning %}} +You might see **Error loading Namespaces** while exploring the cluster on the AWS Console. It could be because the console user role doesnt have necessary permissions on the EKS cluster's RBAC configuration in the control plane. Please expand and follow the below instructions to add necessary permissions. +{{% /notice %}} + +{{%expand "Click to reveal detailed instructions" %}} + +### Add your IAM role Arn as cluster-admin on RBAC + +Get the ARN for your IAM role, it should look something like + +``` +arn:aws:iam:::role/ +``` + +Edit the ConfigMap **aws-auth** using the below command + +``` +kubectl describe configmap -n kube-system aws-auth +``` + +Add the below snippet at the end, that will add the IAM role to the **masters** group on EKS cluster RBAC, thereby assigning a **cluster-admin** role on the cluster. Please make sure you replace the `` and `` with you AWS Account Number and IAM Role Name respectively + +``` + - groups: + - system:masters + rolearn: arn:aws:iam:::role/ + username: +``` + +{{% /expand%}} From ea234a89803f591617fdec4cd53cc69ec4bb5e11 Mon Sep 17 00:00:00 2001 From: Palavalasa Date: Fri, 4 Dec 2020 15:52:43 -0800 Subject: [PATCH 14/14] Adding the fix for unauthorized error on EKS console --- content/using_ec2_spot_instances_with_eks/eksctl/test.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/using_ec2_spot_instances_with_eks/eksctl/test.md b/content/using_ec2_spot_instances_with_eks/eksctl/test.md index 31a2aeb1..9d979992 100644 --- a/content/using_ec2_spot_instances_with_eks/eksctl/test.md +++ b/content/using_ec2_spot_instances_with_eks/eksctl/test.md @@ -51,10 +51,12 @@ arn:aws:iam:::role/ Edit the ConfigMap **aws-auth** using the below command ``` -kubectl describe configmap -n kube-system aws-auth +kubectl edit configmap -n kube-system aws-auth ``` -Add the below snippet at the end, that will add the IAM role to the **masters** group on EKS cluster RBAC, thereby assigning a **cluster-admin** role on the cluster. Please make sure you replace the `` and `` with you AWS Account Number and IAM Role Name respectively +Add the below snippet at the end, that will add the IAM role to the **masters** group on EKS cluster RBAC, thereby assigning a **cluster-admin** role on the cluster. Please refer the documentation [here](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) + +Please make sure to replace the `` and `` with your AWS Account Number and IAM Role Name respectively ``` - groups: