Terraform으로 Amazon EKS 추가 기능 설치 및 관리
Amazon EKS의 추가 기능이란 무엇입니까?
추가 기능은 Kubernetes 애플리케이션에 지원 운영 기능을 제공하지만 애플리케이션에만 국한되지 않는 소프트웨어입니다.
여기에는 클러스터가 네트워킹, 컴퓨팅 및 스토리지를 위한 기본 AWS 리소스와 상호 작용할 수 있도록 하는 관찰 가능성 에이전트 또는 Kubernetes 드라이버와 같은 소프트웨어가 포함됩니다.
Reference: https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html
Amazon EKS 추가 기능
Amazon VPC CNI
Kubernetes용 Amazon VPC CNI 추가 기능은 Amazon EKS 클러스터의 포드 네트워킹을 위한 네트워킹 플러그인입니다. 플러그인은 Kubernetes 노드에 VPC IP 주소를 할당하고 각 노드의 포드에 필요한 네트워킹을 구성하는 역할을 합니다.
Reference: https://docs.aws.amazon.com/eks/latest/userguide/cni-iam-role.html
코어DNS
CoreDNS는 Kubernetes 클러스터 DNS 역할을 할 수 있는 유연하고 확장 가능한 DNS 서버입니다. 노드가 하나 이상 있는 Amazon EKS 클러스터를 시작하면 클러스터에 배포된 노드 수에 관계없이 CoreDNS 이미지의 복제본 2개가 기본적으로 배포됩니다. CoreDNS 포드는 클러스터의 모든 포드에 대한 이름 확인을 제공합니다.
Reference: https://docs.aws.amazon.com/eks/latest/userguide/managing-coredns.html
큐브 프록시
Kube-proxy는 각 Amazon EC2 노드에서 네트워크 규칙을 유지 관리합니다. 그것은 당신의 포드에 대한 네트워크 통신을 가능하게 합니다.
Reference: https://docs.aws.amazon.com/eks/latest/userguide/managing-kube-proxy.html
아마존 EBS CSI
Amazon Elastic Block Store(Amazon EBS) CSI(Container Storage Interface) 드라이버를 사용하면 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터가 영구 볼륨에 대한 Amazon EBS 볼륨의 수명 주기를 관리할 수 있습니다.
Reference: https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html
https://docs.aws.amazon.com/eks/latest/userguide/managing-ebs-csi.html
Amazon EKS는 모든 클러스터에 대해 Amazon VPC CNI, kube-proxy 및 CoreDNS와 같은 자체 관리형 추가 기능을 자동으로 설치하지만 추가 기능의 기본 구성을 변경하고 원하는 경우 업데이트할 수 있습니다.
Amazon EBS CSI Driver is now available as an Add-on. This Add-on is in preview version with some limitations and inconsistencies. For this reason, its use in Production is not recommended.
이 게시물은 terraform으로 애드온을 설치하는 방법을 단계별로 보여줍니다.
전제 조건
To create an EKS cluster you can check this post
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
단계
01단계 - 각 추가 기능의 버전 가져오기
각 추가 기능의 모든 버전을 알기 위해 AWS CLI를 사용하여 추가 기능에 대한 모든 정보를 설명할 수 있습니다.
aws eks describe-addon-versions > addons.json
이 명령을 사용하면 모든 추가 기능 버전을 설명할 수 있으며 보다 편의를 위해 출력을 JSON 파일에 저장할 수 있습니다.
결과 JSON 파일은 다음과 같습니다.
{
"addons": [
{
"addonName": "kube-proxy",
"type": "networking",
"addonVersions": [
{
"addonVersion": "v1.21.2-eksbuild.2",
"architecture": [
"amd64",
"arm64"
],
"compatibilities": [
{
"clusterVersion": "1.21",
"platformVersions": [
"*"
],
"defaultVersion": true
}
]
},
...
이 JSON 파일에는 이름, 유형, 호환성 등과 같은 EKS 클러스터 추가 기능에 대한 모든 정보가 포함되어 있습니다.
클러스터 버전에 따라 terraform 코드에서 지정하려면 각 추가 기능 버전을 기록해 둡니다.
02단계 - Terraform 코드 생성
먼저 마지막 단계에서 얻은 JSON 파일에서 얻은 정보를 기반으로 각 추가 기능의 모든 이름과 버전을 지정하기 위해 list(object()) 유형의 변수를 만들 수 있습니다.
variable "addons" {
type = list(object({
name = string
version = string
}))
default = [
{
name = "kube-proxy"
version = "v1.21.2-eksbuild.2"
},
{
name = "vpc-cni"
version = "v1.10.1-eksbuild.1"
},
{
name = "coredns"
version = "v1.8.4-eksbuild.1"
},
{
name = "aws-ebs-csi-driver"
version = "v1.4.0-eksbuild.preview"
}
]
}
Terraform용 AWS 공급자에는 추가 기능을 설치하고 관리하기 위한 특정 리소스가 있습니다.
for_each
문을 사용하여 addons
변수의 모든 정보를 반복할 수 있습니다.resource "aws_eks_addon" "addons" {
for_each = { for addon in var.addons : addon.name => addon }
cluster_name = aws_eks_cluster.eks-cluster.id
addon_name = each.value.name
addon_version = each.value.version
resolve_conflicts = "OVERWRITE"
}
03단계 - Terraform 코드 적용
우리가 사용할 수 있는 새로운 자원을 적용하기 위해
terraform apply -auto-approve
설치가 완료되면 UI를 사용하여 추가 기능을 확인할 수 있습니다.
설치에 성공하여 각 추가 기능의
Status
가 Active
임을 알 수 있습니다.모든 것이 사용 가능한지 확인하는 또 다른 방법
kubectl
kubectl get po -n kube-system
이 명령을 사용하여 각 추가 기능의 포드가 실행 중인지 확인할 수 있습니다.
Reference
이 문제에 관하여(Terraform으로 Amazon EKS 추가 기능 설치 및 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/install-manage-amazon-eks-add-ons-with-terraform-2dea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)