Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vishwakarma: Terraform modules for deploying EK...

Kyle Bai
January 08, 2020

Vishwakarma: Terraform modules for deploying EKS and Self-hosting Kubernetes(AWS))

How does AMIS build self-hosted Kubernetes on AWS, and use Fargate for EKS.

Kyle Bai

January 08, 2020
Tweet

More Decks by Kyle Bai

Other Decks in Technology

Transcript

  1. © 2020, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. @k2r2bai Vishwakarma: Terraform modules for deploying EKS and Self-hosting Kubernetes Kyle Bai Site Reliability Engineer AMIS Cloud Native Taiwan User Group
  2. © 2020, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. @k2r2bai About Me ⽩凱仁(Kyle Bai) • SRE at AMIS. • OSS Contributor. • Certified Kubernetes Administrator/Developer. • Co-organizer of Cloud Native Taiwan User Group. • Interested in emerging technologies. GitHub: kairen([email protected]) Blog: https://k2r2bai.com
  3. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. • Motivations • Infrastructure as code • Vishwakarma • Live Demo Agenda Today I would like to talk about
  4. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Data Centers Networking Servers Application Storage Virtualization OS Hardware Accelerator Drivers Database Runtime Application OS Data Centers Networking Servers Application Storage Virtualization OS Laptop Enterprise IT Public Cloud Customer Managed Provider Managed Database Runtime Database Runtime Drivers Drivers
  5. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Data Centers Networking Servers Application Storage Virtualization OS Hardware Accelerator Drivers Database Runtime Application OS Data Centers Networking Servers Application Storage Virtualization OS Laptop Enterprise IT Public Cloud Customer Managed Provider Managed Database Runtime Database Runtime Drivers Drivers
  6. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Data Centers Networking Servers Application Storage Virtualization OS Hardware Accelerator Drivers Database Runtime Application OS Data Centers Networking Servers Application Storage Virtualization OS Customer Managed Provider Managed Database Runtime Database Runtime Drivers Drivers Laptop Enterprise IT Public Cloud
  7. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Data Centers Networking Servers Application Storage Virtualization OS Hardware Accelerator Drivers Database Runtime Application OS Data Centers Networking Servers Application Storage Virtualization OS Laptop (Dev) Enterprise IT (Staging) Public Cloud (Production) Customer Managed Provider Managed Database Runtime Database Runtime Drivers Drivers
  8. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Dev Staging Production
  9. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Dev Staging Production US EU AP …
  10. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Dev Staging Production US EU AP …
  11. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. TW Local Dev TW US Staging
  12. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. TW Local Dev TW US Staging AP … US EU Production
  13. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Infrastructure as code
  14. © 2020, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. “Infrastructure-as-code (IaC) is the concept of writing code to represent your infrastructure requirements and using an IaC tool to apply those changes to your cloud/on-prem environment.”
  15. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. • Create/change/destroy infrastructure resources such as compute, storage, networking components or platform services like database, Kubernetes cluster etc. • Deploy/update applications on top of the infrastructure. • Manage the configurations used by the applications. • Versioning infrastructure. The problems IaC tools can solve
  16. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Terraform is the only tool to focus solely on creating, destroying and managing infrastructure components. You use the Hashicorp Configuration Language (HCL) to describe the infrastructure resources you need. • Provider • Provisioner • Modules • Plan phase • Apply phase Terraform
  17. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. CLI / SDK / Console Region A Region B Region C ... Terraform CLI Region A Region B Region C ...
  18. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Kubernetes solutions on AWS Kubespray RKE Kops Kube-aws Typhoon EKS CoreOS Tectonic LinuxKit Matchbox KubeNow Bootkube kubeadm-dind-cluster Minikube PKS Kubeadm KIND KRIB
  19. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Challenges to build Kubrnetes
  20. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. • Maintain all AWS resources(ex: EC2 instance, VPC). • Kubernetes node(worker) scalability. • Kubernetes components upgrade. • Logging and Monitoring. • Configuration management. Challenges to build Kubrnetes on AWS
  21. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. • Network environment customize. • Align company compliance. • Audit. • Security. • Topology. • ... • Cost. • Clusters have different topology. • Want more specific features. Why build Kubernetes by ourselves?
  22. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Vishwakarma can be used to create a Kubernetes cluster in AWS by leveraging HashiCorp Terraform and CoreOS. And there are two kind of Kubernetes master within vishwakarma, one leverages AWS EKS, the other one is ElastiKube (Self-Hosted). Vishwakarma hXps://github.com/getamis/vishwakarma
  23. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. ElastiKube is a highly configurable Terraform module with building blocks. The motivation to build ElastiKube is that we need: • Robust and HA Kubernetes master nodes. • Pluggable HA worker nodes with different instance types. • Configurable Kubernetes resources during bootstrapping. • Standalone and HA etcd. • Use CoreOS Container Linux on all host machines. • Use Ignition for provisioning Container Linux. What's ElastiKube?
  24. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. • Agility: The ability to easily and atomically update software is the only way to improve internet security. • Portability: Containers turn apps into integral units that can migrate easily between machines and between providers. • Security: Today’s VM-focused workflow ties the OS directly to the apps on the box. Moving dependencies out of the OS and into a container dramatically reduces complexity. • Make sure that all resources are IMMUTABLE! Why do we use CoreOS?
  25. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Ignition is the utility used by CoreOS Container Linux, Fedora CoreOS, and RHEL CoreOS to manipulate disks during the initramfs. This includes partitioning disks, formatting partitions, writing files (regular files, systemd units, etc.), and configuring users. Ignition
  26. @k2r2bai © 2020, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. What’s Going On?
  27. © 2020, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Self-hosting Kubernetes