Giter VIP home page Giter VIP logo

eks-cluster-upgrades-workshop's Introduction

EKS Cluster Upgrades Workshop

Tests

‼️ THIS WORKSHOP IS PERFORMING UPGRADES FROM VERSION 1.25 ‼️

‼️ THIS WORKSHOP IS BEING DEPRECATED, THE REPO WILL REMAIN FOR CONSULTING ‼️

This workshop covers best practices that are applicable for both older and newer versions of Kubernetes. We are committed to keeping our content up-to-date with the latest Amazon EKS releases, Let's get started!

Click here to access the workshop

Introduction

The Amazon cluster upgrades workshop is built to provide you with a reference architecture that can help make your Amazon EKS Cluster upgrades less painful and more seamless. To achieve this, we will be using a GitOps strategy with Fluxv2 for components reconciliation and Karpenter for Node Scaling.

Why this architecture?

One of the key benefits of using GitOps is that it enables us to use a mono repository approach for deploying both add-ons and applications. This approach makes the upgrade process much smoother because we have a single location to look at for deprecated API versions and ensure that add-ons are backwards compatible.

EKS Architecture

By the end of this workshop, you will have a solid understanding of how to use GitOps with Fluxv2 and Karpenter to simplify the EKS Cluster upgrade process. We hope that this will help you to streamline your workflow and ensure that your infrastructure is always up-to-date and functioning smoothly. So, let's dive in and get started!

Navigating the repository

The top level repository can be split is to several areas.

Site content

The workshop content itself is a docusaurus site. All workshop content is written using Markdown and can be found in website.

Learner environment

To spin -up your learn environment, go to website page and follow the instructions to run your docussaurus website.

Locally deploy with terraform:

You will need to fork this repo.

Once forked, execute the install.sh (located in the root of this repo) script and fill te asked questions:

bash ./install.sh

When asked for tf_state_path leave it empty to provision all the components

After that you will need to uncomment lines 5 and 6 of gitops/add-ons/kustomization.yaml file

Then you can push the changes to your desired branch and flux will reconcile the changes

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

eks-cluster-upgrades-workshop's People

Contributors

amazon-auto avatar dependabot[bot] avatar iagobanov avatar imoustak avatar jporci avatar lusoal avatar rodrigobersa avatar tiagoreichert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

eks-cluster-upgrades-workshop's Issues

Using CodeCommit instead of GitHub

For the workshop's GitOps sections, we should be using CodeCommit instead of GitHub.

The way we have GitHub as part of the workshop today, specially using legacy tokens, adds to the complexity and maintainability of the workshop as a whole. Switching to CodeCommit would make the workshop more streamlined, easier to get started for customers, more secure and easier to maintain as well.

Feature: Workshop V2

  • Introduction
    • Add new architecture (Showcasing Fargate) and diagrams that we have used on TFC summit
  • Setup
    • Create you EKS cluster
      • Create EKS Cluster, change from eksctl to install.sh script to use terraform
  • GitOps
    • Flux folder structure
      • Modify to add all the needed changes since we've added more manifests
    • Flux reconciliation flow
      • Change from create an HPA manifest, (this will be already created).
      • To uncomment lines 5 and 6 in gitops/add-ons/kutomization.yaml, can use sed for that
  • Karpenter
    • Karpenter Node Upgrade [RENAME] Karpenter during upgrades
      • Karpenter will be already running so need to change the output from all commands
    • Enabling Karpenter [REMOVE]
      • Should merge this module with previous one and remove this one, since karpenter is already enable we just need to show the nodes that were provisioned by karpenter using labels, and how this is done with taint and tolerations
  • Validating State [RENAME] Validating APIs
  • Control Plane [RENAME] Upgrade Control Plane
    • Introduction
    • Performing EKS Control Plane upgrade
      • Change that to use terraform instead of using eksctl
  • Nodes [RENAME] Upgrade Nodes
    • Introduction
      • Add here that we are running all of our infrastructure pods on Fargate, so we don't need to upgrade any node a part from karpenter (Following module), also add links to AWS documentation on how to upgrade both self-managed and managed node groups
    • Performing managed node groups upgrade [REMOVE]
  • Add-ons [REMOVE]
  • Karpenter Rollout
    • PDB in action [REMOVE]
    • Rollout nodes agressive PDB
      • Show here PDB kubectl -n default get pdb/nginx-pdb
    • Adjusting PDB
    • Rollout nodes with right PDB
  • Conclusion
  • Cleanup
    • Change to terraform destroy

Karpenter node role error on CloudFormation setup

When using the CloudFormation template on self environments, the inline EOF policy created for Karpenter Role nodes fails with:

` [31m│�[0m �[0m�[1m�[31mError: �[0m�[0m�[1m"assume_role_policy" contains an invalid JSON policy: leading space characters are not allowed�[0m �[31m│�[0m �[0m �[31m│�[0m �[0m�[0m with aws_iam_role.karpenter_node_role, �[31m│�[0m �[0m on related_infra.tf line 7, in resource "aws_iam_role" "karpenter_node_role":

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.