{"id":18332508,"url":"https://github.com/tigera-solutions/eks-workshop-prep","last_synced_at":"2026-02-01T11:34:03.952Z","repository":{"id":230242460,"uuid":"712160561","full_name":"tigera-solutions/eks-workshop-prep","owner":"tigera-solutions","description":"This repository will help you to build an EKS cluster using AWS CloudShell for Tigera's Calico Cloud workshop.","archived":false,"fork":false,"pushed_at":"2025-01-22T21:35:16.000Z","size":12,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T18:51:40.740Z","etag":null,"topics":["aws","calicocloud","cloudshell","eks","preparation","regismartins","workshop"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tigera-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-30T23:10:41.000Z","updated_at":"2025-04-01T13:01:21.000Z","dependencies_parsed_at":"2024-03-28T16:29:47.348Z","dependency_job_id":"b6a5390d-12c2-4124-819d-19a116e0e8c2","html_url":"https://github.com/tigera-solutions/eks-workshop-prep","commit_stats":null,"previous_names":["tigera-solutions/eks-workshop-prep"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tigera-solutions/eks-workshop-prep","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigera-solutions%2Feks-workshop-prep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigera-solutions%2Feks-workshop-prep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigera-solutions%2Feks-workshop-prep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigera-solutions%2Feks-workshop-prep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tigera-solutions","download_url":"https://codeload.github.com/tigera-solutions/eks-workshop-prep/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigera-solutions%2Feks-workshop-prep/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28977318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T11:31:13.034Z","status":"ssl_error","status_checked_at":"2026-02-01T11:30:25.558Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","calicocloud","cloudshell","eks","preparation","regismartins","workshop"],"created_at":"2024-11-05T19:39:15.436Z","updated_at":"2026-02-01T11:34:03.931Z","avatar_url":"https://github.com/tigera-solutions.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Calico Cloud on EKS - Workshop Environment Preparation\n\nThis repository will guide you through the preparation process of building an EKS cluster using the AWS CloudShell that will be used in Tigera's Calico Cloud workshop. The goal is to reduce the time used for setting up infrastructure during the workshop, optimizing the Calico Cloud learning and ensuring everyone has the same experience.\n\n## Getting Started with AWS CloudShell\n\nThe following are the basic requirements to **start** the workshop.\n\n* AWS Account [AWS Console](https://portal.aws.amazon.com)\n* AWS CloudShell [https://portal.aws.amazon.com/cloudshell](https://portal.aws.amazon.com/cloudshell)\n* Amazon EKS Cluster - to be created here!\n\n# Instructions\n\n1. Login to AWS Portal at https://portal.aws.amazon.com.\n2. Open the AWS CloudShell.\n\n   ![cloudshell](https://github.com/tigera-solutions/eks-workshop-prep/assets/104035488/a1f0b555-018d-488f-8d8c-975b5c391ede)\n\n3. Install the bash-completion on the AWS CloudShell.\n\n   ```bash\n   sudo yum -y install bash-completion\n   ```\n\n4. Configure the kubectl autocomplete.\n\n   ```bash\n   source \u003c(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first.\n   echo \"source \u003c(kubectl completion bash)\" \u003e\u003e ~/.bashrc # add autocomplete permanently to your bash shell.\n   ```\n\n   You can also use a shorthand alias for kubectl that also works with completion:\n\n   ```bash\n   alias k=kubectl\n   complete -o default -F __start_kubectl k\n   echo \"alias k=kubectl\"  \u003e\u003e ~/.bashrc\n   echo \"complete -o default -F __start_kubectl k\" \u003e\u003e ~/.bashrc\n   /bin/bash\n   ```\n\n5. Install the eksctl - [Installation instructions](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html)\n\n   ```bash\n   mkdir ~/.local/bin\n   curl --silent --location \"https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz\" | tar xz -C /tmp\n   sudo mv /tmp/eksctl ~/.local/bin \u0026\u0026 eksctl version \n   ```\n\n6. Install the K9S, if you like it.\n\n   ```bash\n   curl --silent --location \"https://github.com/derailed/k9s/releases/download/v0.32.7/k9s_Linux_amd64.tar.gz\" | tar xz -C /tmp\n   sudo mv /tmp/k9s ~/.local/bin \u0026\u0026 k9s version\n   ```\n\n## Create an Amazon EKS Cluster\n\n1. Define the environment variables to be used by the resources definition.\n\n   \u003e **NOTE**: In this section, we'll create some environment variables. If your terminal session restarts, you may need to reset these variables. You can do that using the following command:\n   \u003e\n   \u003e ```console\n   \u003e source ~/workshopvars.env\n   \u003e ```\n\n   ```bash\n   # Feel free to use the cluster name and the region that better suits you.\n   export CLUSTERNAME=tigera-workshop\n   export REGION=us-west-2\n   # Persist for later sessions in case of disconnection.\n   echo \"# Start Lab Params\" \u003e ~/workshopvars.env\n   echo export CLUSTERNAME=$CLUSTERNAME \u003e\u003e ~/workshopvars.env\n   echo export REGION=$REGION \u003e\u003e ~/workshopvars.env\n   ```\n \n2. Create the EKS cluster.\n   \n   ```bash\n   eksctl create cluster \\\n     --name $CLUSTERNAME \\\n     --version 1.30 \\\n     --region $REGION \\\n     --node-type m5.xlarge\n   ```\n\n3. Verify your cluster status. The `status` should be `ACTIVE`.\n\n   ```bash\n   aws eks describe-cluster \\\n     --name $CLUSTERNAME \\\n     --region $REGION \\\n     --no-cli-pager \\\n     --output yaml\n   ```\n\n4. Verify you have API access to your new EKS cluster\n\n   ```bash\n   kubectl get nodes\n   ```\n\n   The output will be something similar to:\n\n   \u003cpre\u003e\n   NAME                                           STATUS   ROLES    AGE    VERSION\n   ip-192-168-2-168.us-west-2.compute.internal    Ready    \u003cnone\u003e   129m   v1.30.8-eks-aeac579\n   ip-192-168-57-247.us-west-2.compute.internal   Ready    \u003cnone\u003e   129m   v1.30.8-eks-aeac579\n   \u003c/pre\u003e\n\n   To see more details about your cluster:\n\n   ```bash\n    kubectl cluster-info\n   ```\n\n   The output will be something similar to:\n   \u003cpre\u003e\n   Kubernetes control plane is running at https://E306AAC3433C85AC39A376C39354E640.gr7.us-west-2.eks.amazonaws.com\n   CoreDNS is running at https://E306AAC3433C85AC39A376C39354E640.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy \u003c/br\u003e\n\n   To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.\n   \u003c/pre\u003e\n\n   You should now have a Kubernetes cluster running with 2 nodes. You do not see the master servers for the cluster because these are managed by AWS. The Control Plane services which manage the Kubernetes cluster such as scheduling, API access, configuration data store and object controllers are all provided as services to the nodes.\n\n\n## Scale down the nodegroup to 0 nodes until the workshop starts.\n\n1. Save the nodegroup name in an environment variable:\n\n   ```bash\n   export NGNAME=$(eksctl get nodegroups --cluster $CLUSTERNAME --region $REGION | grep $CLUSTERNAME | awk -F ' ' '{print $2}') \u0026\u0026 \\\n   echo export NGNAME=$NGNAME \u003e\u003e ~/workshopvars.env\n   ```\n\n2. Scale the nodegroup down to 0 nodes, to reduce the cost.\n\n   ```bash\n   eksctl scale nodegroup $NGNAME \\\n     --cluster $CLUSTERNAME \\\n     --region $REGION \\\n     --nodes 0 \\\n     --nodes-max 1 \\\n     --nodes-min 0\n   ```\n\n3. It will take a minute or two until all nodes are deleted. You can monitor the process using the following command: \n\n   ```bash\n   watch kubectl get nodes\n   ```\n\n   When there are no more worker nodes in your EKS cluster, you should see:\n   \u003cpre\u003e\n   Every 2.0s: kubectl get nodes\n   \n   No resources found\n   \u003c/pre\u003e\n\n\n ## Scale up the nodegroup to 2 nodes before the workshop starts.\n\n1. Connect back to your AWS CloudShell and load the environment variables:\n\n   ```bash\n   source ~/workshopvars.env\n   ```\n\n2. Scale up the nodegroup back to 2 nodes:\n\n   ```bash\n   eksctl scale nodegroup $NGNAME \\\n     --cluster $CLUSTERNAME \\\n     --region $REGION \\\n     --nodes 2 \\\n     --nodes-max 2 \\\n     --nodes-min 2\n   ```\n\n3. It will take a few minutes until the nodes are back in `Ready` status. You can monitor it with the following command:\n\n   ```bash\n   watch kubectl get nodes\n   ```\n\n   Wait until the output becomes:\n   \u003cpre\u003e\n   Every 2.0s: kubectl get nodes  \n\n   NAME                                              STATUS   ROLES    AGE    VERSION\n   ip-192-168-2-168.us-west-2.compute.internal    Ready    \u003cnone\u003e   129m   v1.30.8-eks-aeac579\n   ip-192-168-57-247.us-west-2.compute.internal   Ready    \u003cnone\u003e   129m   v1.30.8-eks-aeac579\n   \u003c/pre\u003e\n\n### You are now ready to start the workshop!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftigera-solutions%2Feks-workshop-prep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftigera-solutions%2Feks-workshop-prep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftigera-solutions%2Feks-workshop-prep/lists"}