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

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

Kyle Bai
December 21, 2019

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

Kyle Bai

December 21, 2019
Tweet

More Decks by Kyle Bai

Other Decks in Technology

Transcript

  1. @k2r2bai About Me ⽩凱仁(Kyle Bai) • Site Reliability Engineer at

    AMIS • Contributor to multiple OSS. • Certified Kubernetes Administrator/Developer. • Co-organizer of Cloud Native Taiwan User Group. • Interested in emerging technologies. @kairen https://k2r2bai.com
  2. @k2r2bai Agenda Today I would like to talk about •

    Infrastructure as code • Vishwakarma • Live Demo
  3. @k2r2bai "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."
  4. @k2r2bai • 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
  5. @k2r2bai 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
  6. @k2r2bai Solutions on AWS Kubespray RKE Kops Kube-aws Typhoon Kubicorn

    CoreOS Tectonic LinuxKit Matchbox KubeNow Bootkube kubeadm-dind-cluster Minikube PKS Kubeadm KIND KRIB
  7. @k2r2bai Challenges to build Kubrnetes on AWS • Maintain all

    AWS resources(ex: EC2 instance, VPC). • Kubernetes node(worker) scalability. • Kubernetes components upgrade. • Logging and Monitoring. • Configuration management.
  8. @k2r2bai • Network environment customize. • Align company compliance. •

    Audit. • Security. • Cost. • Clusters have difference topology. • Want more specific features. • .... Why build Kubernetes by ourselves?
  9. @k2r2bai 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
  10. @k2r2bai 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?
  11. @k2r2bai 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