How It Works
EKS-Checklist๋ Amazon EKS (Elastic Kubernetes Service) ํด๋ฌ์คํฐ๋ฅผ ์ ๊ฒํ๋ ๋๊ตฌ์ ๋๋ค. ์ด ๋๊ตฌ๋ Go ์ธ์ด๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ, AWS SDK for Go, Kubernetes Go Client๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์๋์ผ๋ก ์ ๊ฒํฉ๋๋ค.
๐ ์ฃผ์ ๊ธฐ์ ์คํ
- AWS SDK for Go: AWS API ํธ์ถ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ฉฐ EKS ํด๋ฌ์คํฐ์ ์ค์ ๋ฐ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค
- Kubernetes Go Client: Kubernetes API์ ์ง์ ์ํธ์์ฉํ์ฌ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ ๊ฒํฉ๋๋ค.
๐ ์๋ ๋ฐฉ์
1. AWS SDK for Go๋ฅผ ํตํ EKS ํด๋ฌ์คํฐ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
EKS ํด๋ฌ์คํฐ๋ฅผ ์ ๊ฒํ๋ ค๋ฉด ์ฐ์ AWS SDK for Go๋ฅผ ํตํด EKS ํด๋ฌ์คํฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ์ ๋ฒ์ , ์ํ, ์ค์ ๋ฑ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
type EksCluster struct {
Cluster *types.Cluster
}
func Describe(clusterName string, cfg aws.Config) EksCluster {
eksClient := eks.NewFromConfig(cfg)
output, err := eksClient.DescribeCluster(context.TODO(), &eks.DescribeClusterInput{
Name: &clusterName,
})
if err != nil {
panic(err.Error())
}
eksCluster := EksCluster{Cluster: output.Cluster}
return eksCluster
}
2. Kubernetes Go Client๋ฅผ ์ฌ์ฉํ ํด๋ฌ์คํฐ ์ํ ์ ๊ฒ
Kubernetes Go Client๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์ง์ ์ ๊ฒํฉ๋๋ค. EKS ํด๋ฌ์คํฐ์์ ์คํ ์ค์ธ ๋ฆฌ์์ค ํ๋(pod), ๋ ธ๋(node), ์๋น์ค(service) ๋ฑ์ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
config, err := rest.InClusterConfig()
if err != nil {
log.Fatal("Failed to get in-cluster config: ", err)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatal("Failed to create Kubernetes client: ", err)
}
pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})
if err != nil {
log.Fatal("Failed to list pods: ", err)
}
3. Cobra๋ฅผ ์ฌ์ฉํ CLI ์ธํฐํ์ด์ค ์ ๊ณต
Cobra ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ CLI ๋ช ๋ น์ด๋ฅผ ์์ฑํ๊ณ , ์ฌ์ฉ์๊ฐ ๋ค์ํ ์ต์ ์ ํตํด ํด๋ฌ์คํฐ ์ ๊ฒ์ ์คํํ ์ ์๋๋ก ๋์ต๋๋ค.
์ฌ๊ธฐ์ --context๋ kubeconfig์์ ์ฌ์ฉํ ํด๋ฌ์คํฐ ์ปจํ ์คํธ๋ฅผ ์ง์ ํ๊ณ , --profile์ AWS CLI ํ๋กํ์ผ์ ์ค์ ํฉ๋๋ค. --output ์ต์ ์ ํตํด ์ถ๋ ฅ ํ์์ text๋ html๋ก ์ค์ ํ ์ ์์ต๋๋ค4. ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ฐ ํผ๋๋ฐฑ
์ ๊ฒ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์๊ฐ ์ค์ ํ ์ถ๋ ฅ ํ์์ ๋ง๊ฒ ํ์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, text ํ์์ผ๋ก ์ถ๋ ฅํ๋ฉด ํฐ๋ฏธ๋์ ์ ๊ฒ ๊ฒฐ๊ณผ๋ฅผ ํ์ํ๊ณ , html ํ์์ผ๋ก ์ถ๋ ฅํ๋ฉด HTML๋ก ์ ๊ฒ ๋ฆฌํฌํธ๋ฅผ ์์ฑํ์ฌ ํ์ผ๋ก ์ ์ฅํ ์ ์์ต๋๋ค.