Figure 1 : EKS-Blueprints
Figure 1: 說明如何把AWS上面的服務跟資源掛進 EKS 裡ㄅ面
這邊就要來介紹部署 AWS EKS 的時候會使用到的工具,部署 AWS EKS 其實有很多種方式,例如:一開始剛接觸AWS 的人,會 manual to create service by AWS console 按一按也是可以建立服務的
也有不少高手也是使用 AWS CLI 來建立服務,甚至可以 用python Boto3 來建立服務,相信這個是多數 的Python 重度使用者的方式
,但是懶還要更懶,因為很多服務都需要互相的串接跟建立,而 K8s 裡面有很多東西,所以就出現了 Blueprints 這個工具來協助部屬EKS的服務,因為可以減少一些麻煩的設定。
AWS Load Balancer Controller、Prometheus, Karpenter 這些東西對於 k8s 來講是一些很基本的套件跟工具,安裝上極為簡單及便利,但是對於 AWS 而言,這些東西跟一般 on-permise 的安裝方式有很大的差異, 因為有很多東西跟設定需要因為 AWS 系統的關係,所以要另外設定跟安裝
,所以有了 EKS-blueprint,所以就讓部屬的門檻降低了
EKS-Blueprint 其實也有 AWS cloudformation 版本,還有我這邊會介紹的 Terraform 版本,Terraform也可以直接部署 eks 跟 aws 上面的資源,但是這些只是開 aws resource,但並不會把 aws resource 整進去 EKS 裏面。這邊有從官方網站的範例直接來說明
可以參考裡面的 example :
https://github.com/aws-ia/terraform-aws-eks-blueprints/tree/main/examples
部署的方式跟一般的 Terraform 的用法其實一樣,並沒有比較特別的,但是要特別注意的是要建立 eks 前先建立好 vpc跟 subnet [NOTE 1]
terraform init
terraform apply -target module.vpc
terraform apply -target module.eks
terraform apply
部署的部分大致上就是跟 terraform 部署的方式一樣,但是 Module 的部分需要另外指定 resource 是 eks-blueprint 提供的即可
################################################################################
# Cluster
################################################################################
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "~> 19.16"
cluster_name = local.name
cluster_version = "1.27"
cluster_endpoint_public_access = true
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
eks_managed_node_groups = {
core_node_group = {
instance_types = ["m5.large"]
ami_type = "BOTTLEROCKET_x86_64"
platform = "bottlerocket"
min_size = 3
max_size = 3
desired_size = 3
}
}
tags = local.tags
}
首先做 Terraform init ,這邊簡單就會把你在terraform 用到的 module packages 安裝到本機
https://aws-ia.github.io/terraform-aws-eks-blueprints/v4.32.1/
https://github.com/aws-ia/terraform-aws-eks-blueprints/tree/main/examples