AWS EKS ์คํฐ๋ 7์ฃผ์ฐจ - Automation
- kkumtree
2023-06-10T15:13:19+09:00
EKS ์คํฐ๋๋ ๋ง์ง๋ง 7์ฃผ์ฐจ๋ฅผ ๋ง์ดํ์ต๋๋ค.
์ด๋ฒ์๋ AWS Controller for k8s(ACK)์ flux๋ฅผ ๊ฐ๋ณ๊ฒ ์ค์ตํด๋ณด๊ณ
์๋ํ์ ๋ํด ๋ง๋ณด๊ธฐ๋ฅผ ํด๋ณด์์ต๋๋ค.
์์ ํ์ตํด๋ณธ IRSA ๊ฐ๋ ์ธ์๋ CRD(CustomResourceDefinition)์ ํ์ฉํฉ๋๋ค.
1. ์ค์ตํ๊ฒฝ ๋ฐฐํฌ
์ค์ต์ ์ํ YAMLํ์ผ์ด ๋ณ๊ฒฝ๋๊ฑฐ ๋ง๊ณ ๋ 6์ฃผ์ฐจ์ ์ ์ฌํฉ๋๋ค.
curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/eks-oneclick6.yaml
# ์ดํ ์ค๋ต
# CERT_ARN(ACM)์ ๊ฒฝ์ฐ์๋ /etc/profile์ ํ๊ฒฝ๋ณ์ ์ ์ฅ์ ์ํด๋ฌ์
# ์ธ์
์ด ๋ง๋ฃ๋๋ฉด, ๋ค์ ์ฌ์ค์ ํ์
CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`
echo $CERT_ARN
2. ACK(AWS Controller for k8s)
- ์น์ฝ์์ ์ ๊ทผํ์ง ์๊ณ ๋, AWS ์๋น์ค ๋ฆฌ์์ค๋ฅผ ์ง์ k8s์์ ์ ์ ๋ฐ ์ฌ์ฉ๊ฐ๋ฅ
- ์์: ACK ์ปจํธ๋กค๋ฌ ์ค์น -> IRSA ์ค์ -> AWS ๋ฆฌ์์ค ์ปจํธ๋กค
- ๊ฐ์ ํจํด์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋๋ฐ, Cloudformation์ ์ฐ๋ค๋ณด๋ ์ค๊ฐ์ค๊ฐ ๋๊ธฐ ์๊ฐ ๋ฐ์
- (23/05/29) GA: 17๊ฐ ์๋น์ค, Preview: 10๊ฐ ์๋น์ค
2-1. S3
- [ACK S3 Controller ์ค์น]
# ์๋น์ค๋ช
๋ณ์ ์ง์
export SERVICE=s3
# helm ์ฐจํธ ๋ค์ด๋ก๋
export RELEASE_VERSION=$(curl -sL https://api.github.com/repos/aws-controllers-k8s/$SERVICE-controller/releases/latest | grep '"tag_name":' | cut -d'"' -f4 | cut -c 2-)
helm pull oci://public.ecr.aws/aws-controllers-k8s/$SERVICE-chart --version=$RELEASE_VERSION
tar xzvf $SERVICE-chart-$RELEASE_VERSION.tgz
# helm chart ํ์ธ
tree ~/$SERVICE-chart
# ACK S3 Controller ์ค์น
export ACK_SYSTEM_NAMESPACE=ack-system
export AWS_REGION=ap-northeast-2
helm install --create-namespace -n $ACK_SYSTEM_NAMESPACE ack-$SERVICE-controller --set aws.region="$AWS_REGION" ~/$SERVICE-chart
# ์ค์น ํ์ธ
helm list --namespace $ACK_SYSTEM_NAMESPACE
kubectl -n ack-system get pods
kubectl get crd | grep $SERVICE
kubectl get all -n ack-system
kubectl get-all -n ack-system
kubectl describe sa -n ack-system ack-s3-controller
- [IRSA ์ค์ ] AmazonS3FullAccess
- ์ค์ ํ์๋ rollout์ผ๋ก ๋ฐ์ํด์ฃผ์ด์ผํจ
# Create an iamserviceaccount - AWS IAM role bound to a Kubernetes service account
eksctl create iamserviceaccount \
--name ack-$SERVICE-controller \
--namespace ack-system \
--cluster $CLUSTER_NAME \
--attach-policy-arn $(aws iam list-policies --query 'Policies[?PolicyName==`AmazonS3FullAccess`].Arn' --output text) \
--override-existing-serviceaccounts --approve
# ํ์ธ
eksctl get iamserviceaccount --cluster $CLUSTER_NAME
kubectl get sa -n ack-system
kubectl describe sa ack-$SERVICE-controller -n ack-system
# Restart ACK service controller deployment using the following commands.
kubectl -n ack-system rollout restart deploy ack-$SERVICE-controller-$SERVICE-chart
# IRSA ์ ์ฉ์ผ๋ก Env, projected Volume ์ถ๊ฐ ํ์ธ
kubectl describe pod -n ack-system -l k8s-app=$SERVICE-chart
