AWS EKS ์คํฐ๋ 3์ฃผ์ฐจ - Storage
- kkumtree
2023-05-12T05:36:38+09:00
์ด๋ฒ ์ฃผ์ฐจ์๋ ์คํ ๋ฆฌ์ง์ ๋ํด ์ค์ต์ ์งํํด๋ณด์์ต๋๋ค. ์ง๋๋ฒ kOps ์คํฐ๋์์ ๋ค๋ฃจ์๋ ๋ด์ฉ์ด์ง๋ง, ๋ถ์กฑํ๋ ๋ด์ฉ์ ๋ณด์ถฉํ๋ฉด์ ์์ฑ์ ํด๋ณด์์ต๋๋ค.
์ฃผ์ํ ๋ด์ฉ์…
- NodeAffinity๋ฅผ ์ด์ฉํ ๋ผ๋ฒจ๋ง
- AWS EBS controller์ ๊ฒฝ์ฐ, AWS managed policy๋ฅผ ํ์ฉ
- AWS Volume SnapShots Controller๋ฅผ ํตํ ๋ณผ๋ฅจ ๋ฐฑ์
- AWS EFS controller์์์ ๋์ ํ๋ก๋น์ ๋
- AWS EKS ์ ๊ท ๋ ธ๋๊ทธ๋ฃน ์์ฑ
๋ณ๋๋ก kube-ops-view์ ๊ฒฝ์ฐ, ์น์ผ๋ก ํ์ธํ ์ ์์ ๋๊น์ง ์๊ฐ์ด ์์๋๋ค๋ ์ ์ด ์์ต๋๋ค.
1. ์ค์ต ํ๊ฒฝ ๋ฐฐํฌ
- 2์ฃผ์ฐจ์ ์ค์ตํ๋ ๋ด์ฉ๋ค์ ๋ฏธ๋ฆฌ ๋ฐฐํฌ
- AWS LB
- ExternalDNS
- kube-ops-view
- context ์ด๋ฆ ๋ณ๊ฒฝ
- ์ง๋ ๋ฒ๊น์ง pkos๊ฐ ๋จ๋ ํ์์ด ์์๋๋ฐ, ๋๋ค์์ ๋ณ๋ ์ง์ ํ ์ ์์
- EFS ์์ฑ ๊ด๋ จ cloudformation์ด ์ถ๊ฐ๋์์
- EFS FS ID ์กฐํ๋ฅผ ํ๊ธฐ ์ํด aws-cli ํํฐ ํ์ฉ (์ถ์ฒ: AWS Docs)
# ์ค์ต YAML ํ์ผ
curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/eks-oneclick2.yaml
# cloudformation ์คํ ์์ฑ
aws cloudformation deploy --template-file eks-oneclick2.yaml --stack-name myeks --parameter-overrides KeyName=aews SgIngressSshCidr=$(curl -s ipinfo.io/ip)/32 MyIamUserAccessKeyID=AKIA5... MyIamUserSecretAccessKey=CVNa2... ClusterBaseName=myeks --region ap-northeast-2
ssh -i ~/.ssh/aews.pem ec2-user@$(aws cloudformation describe-stacks --stack-name myeks --query 'Stacks[*].Outputs[0].OutputValue' --output text)
# default ๋ค์์คํ์ด์ค ์ ์ฉ
kubectl ns default
# (์ต์
) context ์ด๋ฆ ๋ณ๊ฒฝ
NICK=kkumtree
kubectl ctx
kubectl config rename-context [email protected] $NICK@myeks
# EFS ํ์ธ : AWS ๊ด๋ฆฌ์ฝ์ EFS ํ์ธ
EfsFsId=$(aws efs describe-file-systems --query 'FileSystems[*].FileSystemId' --output text)
echo $EfsFsId
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport $EfsFsId.efs.ap-northeast-2.amazonaws.com:/ /mnt/myefs
df -hT --type nfs4
mount | grep nfs4
echo "Test efs exist with file " > /mnt/myefs/memo.txt
cat /mnt/myefs/memo.txt
rm -f /mnt/myefs/memo.txt
# ์คํ ๋ฆฌ์งํด๋์ค ๋ฐ CSI ๋
ธ๋ ํ์ธ
kubectl get sc
kubectl get sc gp2 -o yaml | yh
kubectl get csinodes
# ๋
ธ๋ ์ ๋ณด ํ์ธ
kubectl get node --label-columns=node.kubernetes.io/instance-type,eks.amazonaws.com/capacityType,topology.kubernetes.io/zone
eksctl get iamidentitymapping --cluster myeks
# ๋
ธ๋ IP ํ์ธ ๋ฐ PrivateIP ๋ณ์ ์ง์
N1=$(kubectl get node --label-columns=topology.kubernetes.io/zone --selector=topology.kubernetes.io/zone=ap-northeast-2a -o jsonpath={.items[0].status.addresses[0].address})
N2=$(kubectl get node --label-columns=topology.kubernetes.io/zone --selector=topology.kubernetes.io/zone=ap-northeast-2b -o jsonpath={.items[0].status.addresses[0].address})
N3=$(kubectl get node --label-columns=topology.kubernetes.io/zone --selector=topology.kubernetes.io/zone=ap-northeast-2c -o jsonpath={.items[0].status.addresses[0].address})
echo "export N1=$N1" >> /etc/profile
echo "export N2=$N2" >> /etc/profile
echo "export N3=$N3" >> /etc/profile
echo $N1, $N2, $N3
# ๋
ธ๋ ๋ณด์๊ทธ๋ฃน ID ํ์ธ
NGSGID=$(aws ec2 describe-security-groups --filters Name=group-name,Values=*ng1* --query "SecurityGroups[*].[GroupId]" --output text)
aws ec2 authorize-security-group-ingress --group-id $NGSGID --protocol '-1' --cidr 192.168.1.100/32
# ์์ปค ๋
ธ๋ SSH ์ ์
ssh ec2-user@$N1 hostname
ssh ec2-user@$N2 hostname
ssh ec2-user@$N3 hostname
# ๋
ธ๋์ ํด ์ค์น
ssh ec2-user@$N1 sudo yum install links tree jq tcpdump sysstat -y
ssh ec2-user@$N2 sudo yum install links tree jq tcpdump sysstat -y
ssh ec2-user@$N3 sudo yum install links tree jq tcpdump sysstat -y
# AWS LB, ExternalDNS ์ค์น
helm repo add eks https://aws.github.io/eks-charts
helm repo update
helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=$CLUSTER_NAME \
--set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller
# ExternalDNS
MyDomain=awskops.click
MyDnzHostedZoneId=$(aws route53 list-hosted-zones-by-name --dns-name "${MyDomain}." --query "HostedZones[0].Id" --output text)
echo $MyDomain, $MyDnzHostedZoneId
curl -s -O https://raw.githubusercontent.com/gasida/PKOS/main/aews/externaldns.yaml
MyDomain=$MyDomain MyDnzHostedZoneId=$MyDnzHostedZoneId envsubst < externaldns.yaml | kubectl apply -f -
1-1. kube-ops-view
- ์๊ฐ์ ์ผ๋ก ํ์ฌ k8s์ ์ํ๋ฅผ ๋ณผ ์ ์๋ ํด
- ์๋๋ ์ค ์์๋๋ฐ, ๋ทฐ์ด๊ฐ ๋ฐ ๋๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ด์์.

AWS EKS ์คํฐ๋ 2์ฃผ์ฐจ - Network
- kkumtree
2023-05-07T07:30:52+09:00
# ์์ฝ๊ฒ๋ ์ ๊ท ํญ๋ชฉ์ธ istio, kube-ops-view๋ ์ค์ต ์คํจ
- istio: `myhome.yaml` ์ ์ด๋ป๊ฒ ์์ฑํ ์ง ๋ชฐ๋ผ์ ์ค๋จ
- kube-ops-view: A๋ ์ฝ๋์ ์ ๋๋ก ์กํ์ง ์์
์ง๋ 1์ฃผ์ฐจ์ ์ด์ด, ์ด๋ฒ ์ฃผ์๋ EKS์ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ๋ํด ์์๋ณด๋ ์๊ฐ์ด์์ต๋๋ค.
์ง์ ์คํฐ๋์์๋ ๋ฐ๋ก ๊ดํ๋นํ๋?ํ๋ฉฐ ๋ฐค๊ณผ ์ฃผ๋ง์ ํ์๊ฒ ๋ถํ์ ์ ์ ๋๋ก
๊ฐ์ฅ ๊ณ ๋๋๋ผ๊ณ ์๊ฐํ๋ ๋คํธ์ํฌ๋ฅผ ๋ค์ ๋ง๋๋ ์ด์ 1% ์น๊ทผ๊ฐ์ด ๋๊ปด์ง๊ณ ์๋ค์.

์ ๊ทธ๋ผ ํด๋ณด๋๋ก ํฉ์๋ค.
1. cloudformation์ ํ์ฉํ EKS ์ํด๋ฆญ ๊ตฌ์ฑ
- ํ์ต์ ์ํด, ์ด๋ฒ์๋ ๊ฐ์๋ค๋์ด ์ค๋นํด์ฃผ์ ์ํด๋ฆญ ๋ฐฐํฌ yaml์ ํ์ฉํ์ฌ ๋ฐฐํฌ.
- ์์ ๋ฐฐํฌ๊น์ง ๋๋ต 20๋ถ ๊ฐ๋ ์์
- IAM์์ ๋ฏธ๋ฆฌ ๋ฐ๊ธํด๋ ์ก์ธ์คํค/์ํฌ๋ฆฟํค๋ฅผ ์์๋์ด์ผํฉ๋๋ค.
# ์ํด๋ฆญ ์
์
aws cloudformation deploy --template-file ~/Documents/aews/eks-oneclick.yaml --stack-name myeks --parameter-overrides KeyName=aews SgIngressSshCidr=$(curl -s ipinfo.io/ip)/32 MyIamUserAccessKeyID={ACSSKEY|AKIA..} MyIamUserSecretAccessKey={SECUKEY|7ob..} ClusterBaseName=myeks --region ap-northeast-2
# ์ปจํธ๋กค ํ๋ ์ธ(๋ง์คํฐ๋
ธ๋) ์ ์ ํ์ธ
ssh -i ~/.ssh/aews.pem ec2-user@$(aws cloudformation describe-stacks --stack-name myeks --query 'Stacks[*].Outputs[0].OutputValue' --output text)

AWS EKS ์คํฐ๋ 1์ฃผ์ฐจ
- kkumtree
2023-04-30T03:00:15+09:00
์ต๊ทผ CloudNet@์์ ์งํํ๊ณ ์๋
AWS EKS Workshop Study(์ดํ, AEWS)์ ์ฐธ์ฌํ๊ฒ ๋์์ต๋๋ค.
k8s๊ฐ ์๋ ์ธ๊ธฐ๊ฐ ๋ง๊ธฐ๋ ํ์ง๋ง, ์ง๋ kOps ์คํฐ๋๋ฅผ ํตํด ๊ด๋ฆฌ์์๊ฐ ์ฐธ ๋ง์ ๊ฒ์ ๋๊ผ์๊ณ ,
์ข๋ ์์ํ๊ฒ ์ดํด๋ฅผ ํด๋ณด๊ณ ์ AWS ์๋น์ค์ธ
EKS(Elastic Kubernetes Service)๋ฅผ ์ด๋ฒ ๊ธฐํ์ ์ดํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
EKS ์ฌ์ฉ์ ์์ด ๊ณ ๋ ค์ฌํญ
EKS๋ ๊ด๋ฆฌํ ์๋น์ค(managed service)์ด๊ธฐ์ ์๋์ ๊ฐ์ ์ฅ์ ์ด ์์ต๋๋ค.
- ํด๋ฌ์คํฐ๋ง์ ์ํ Control Plane(์ผ๋ช
, ๋ง์คํฐ ๋
ธ๋)์ AWS์์ ๊ด๋ฆฌํด์ค๋๋ค.
- ์์ปค๋
ธ๋๋
- ์ฌ์ฉ์๊ฐ AMI๋ฅผ ๊ตฌ์ฑํ์ฌ ์ด๋ฅผ ์ฌ์ฉ
- AWS์์ ์ ๊ณตํ๋ Fargate๋ก VM์ ํ ๋นํ์ฌ ์ฌ์ฉ
- ์์ปค๋
ธ๋๋
- kOps์๋ ์ ์ฌํ์ง๋ง, ๋ค๋ฅธ AWS ์๋น์ค์์ ์ฐ๋์ด ์ฉ์ดํฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก๋ ACM์ ์ธ์ฆ์ ์ฌ์ฉ์ ์์ด ๋ ํธํ ๊ฒ์ด๋ผ ์๊ฐ์ ํ์ต๋๋ค.- ECR์ ์ ์ฅํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ํ์ฉ๊ฐ๋ฅ
- IAM์ ํตํ ๊ถํ ๊ด๋ฆฌ
- ELB๋ฅผ ํตํ ๋ก๋๋ฐธ๋ฐ์ฑ
- VPC๋ฅผ ํตํ ๋คํธ์ํฌ ๊ด๋ฆฌ
- ์คํ์์ค k8s ๊ธฐ๋ฐ์ด๊ธฐ์ EKS๋ก์ ์ฉ์ดํ ๋ง์ด๊ทธ๋ ์ด์
API ์๋ฒ Cluster Endpoint ๊ตฌ์ฑ
-
EKS๋ Control Plane์ ๊ด๋ฆฌํด์ฃผ๋, ๋ง์คํฐ ๋ ธ๋์ ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์ด๋ฅผ ์ํด, Cluster Endpoint๋ฅผ ๊ตฌ์ฑํ์ฌ ๋ง์คํฐ ๋ ธ๋์ ์ ๊ทผํ ์ ์์ต๋๋ค.
GitHub Pages๊ฐ ๊ณ ์ฅ๋ฌ๋? (Cloudflare 526 Error)
- kkumtree
2023-03-28T18:29:11+09:00
`gh-pages & Cloudflare DNS` ๋ฅผ ์ฐ๊ณ ์ ํ๋ค๋ฉด,
Cloudflare์์ SSL/TLS ์ ์ฑ
์ `Full (Strict)` ๋์
`Full`๋ก ํ๋ ์ชฝ์ด ๊ด๋ฆฌ ์์๋ฅผ ์ค์ผ ์ ์๋ค.
Invalid SSL certificate

๊ทธ๊ฐ ์
๋ฌด ์ธ๊ณ๋ ์์๊ณ , ๊ฐ์ธ ์ผ์ ์ ์ํํ๋ฉด์ ๋ธ๋ก๊ทธ ๋ค์ด๊ฐ ์ผ์ด ์์๋ค.
๊ทธ๋ฌ๋ค ์ง๋ ์ฃผ๋ง์ ์์๋ ์ ๊ธฐ์ดํ์์ ๋ง๋ ๋ถ์ผ๋ก๋ถํฐ
๋ธ๋ก๊ทธ์ ์ ๋ค์ด๊ฐ์ง๋ค๋ ๋ง์ ๋ฃ๊ณ , ๊ทธ์ ์์ผ ์ธ์งํ๊ฒ ๋์๋ค.
๋์ฒด ์ธ์ ๋ถํฐ ์ด๋ฌ๋๊ฑธ๊น?
GitHub Pages์์ ๋ธ๋ก๊ทธ ๊ด๋ฆฌ๋ฅผ ํ๊ณ ์์๊ณ ,
Cloudflare๋ก Domain Registrar๋ฅผ ์ด์ ํ ํ์
๋ธ๋ก๊ทธ๋ฅผ ์ฌ๋ ธ๊ธฐ ๋๋ฌธ์ ํ๋์ ์ ๊ฒฝ์ ์ ์จ๋ ์ ์ผ๋๋ฐ.
Ubuntu Pro๋ฅผ ์ ์ฉํ๊ณ ์ฌ์ฉํด๋ณด๊ธฐ
- kkumtree
2023-03-17T11:14:50+09:00
ํํ ๋ฆฌ์ผ ๋ ๋ฒจ์ ๊ฒ์๋ฌผ์
๋๋ค.
๋ชจ๋ ์ ๋ณด๋ https://ubuntu.com/pro/tutorial ์ ๊ธฐ์ดํฉ๋๋ค.
๊ธฐํ ์ด๊ธฐ ๊ตฌ์ฑ ์ค ์ด์๋ ์๋๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
https://canonical-ubuntu-pro-client.readthedocs-hosted.com/en/latest/index.html
๊ณ๊ธฐ
ํ์๊ฐ ๊ฐ์ธ ๋ฐ์คํฌํ์ผ๋ก ์ฌ์ฉํ๋ Ubuntu ๋ฒ์ ์ด 22.10 (Kinetic Kudu), 23.04 (Lunar Lobster) ์ด๊ธฐ์, Ubuntu Pro๋ฅผ ์ ์ฉํด๋ณผ ๊ธฐํ๊ฐ ์์๋ค.
์ด๋ฒ์ ์ง์ธ ๋ถ์ผ๋ก๋ถํฐ ์ ๊ณต๋ฐ์ ์์ธ์ค๋ฉ(XSLAB)์ฌ์ ARM ๊ธฐ๋ฐ Vraptor SQ nano๋ฅผ
ํด๋ฆฐ์ค์นํ๊ณ ๋๋ Ubuntu 20.04.6 LTS (Focal Fossa) ๋ฒ์ ์ด์๊ธฐ์, Ubuntu Pro๋ฅผ ์ ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค.
ํด๋น ์ ํ์ ๋ณด๋ผ๋ชฐ/voramall์์๋ ๋ง๋๋ณผ ์ ์๋ค.
Ubuntu Pro๋?
Ubuntu Pro๋ Ubuntu์ ๊ตฌ๋ ์ํ์ผ๋ก, ๋ณด์ ๋ฑ์ ์ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์๋น์ค๋ก ์ฌ์ ์ ๋ณด์ ์ทจ์ฝ์ ์ ๋น ๋ฅด๊ฒ ๋ณด์ํด์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋๊ฒ ์ฌ๋ฌ๋ชจ๋ก ์ ๊ฐ๋์ง ์์ ๊น ์ถ๊ธฐ์ ์ธ์ ๊น์๋ ํ๋ก๋ํธ์๋ค.
Node.js๋ฅผ ์ํ Dockerfile ๋ง๋ค๊ธฐ
- kkumtree
2023-03-08T20:43:43+09:00
์๋ก ๊ตฌ์ถํ Dockerfile
FROM public.ecr.aws/lts/ubuntu:22.04_stable
ENV DEBIAN_FRONTEND=noninteractive
# Set Preferred Variables
ARG TZ=Asia/Seoul \
NODE_VER=18.x \
UBUNTU_DIST=jammy \
NPM_PKGS="cross-env pm2" \
ADD_USG=kkumtree \
ADD_USR=kkumtree \
ADD_USR_LANG=C.UTF-8
ARG NODE_REPO=node_${NODE_VER}
# Apply essentials
RUN set -ex \
&& ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \
&& apt-get update -y > /dev/null 2>&1 \
&& apt-get install -y --no-install-recommends apt-utils > /dev/null 2>&1 \
&& apt-get install -y --no-install-recommends \
tzdata \
wget curl \
ca-certificates openssl \
lsb-release gnupg \
gcc g++ make \
zip unzip \
vim \
git \
> /dev/null 2>&1 \
&& echo date
# Install env for runtime
# nodejs
RUN set -ex \
&& curl -sLf -o /dev/null \
"https://deb.nodesource.com/${NODE_REPO}/dists/${UBUNTU_DIST}/Release" \
&& curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key \
| gpg --dearmor \
| tee /usr/share/keyrings/nodesource.gpg \
> /dev/null \
&& echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/${NODE_REPO} ${UBUNTU_DIST} main" \
> /etc/apt/sources.list.d/nodesource.list \
&& echo "deb-src [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/${NODE_REPO} ${UBUNTU_DIST} main" \
>> /etc/apt/sources.list.d/nodesource.list
# Install runtime
# nodejs
RUN set -ex \
&& apt-get update > /dev/null \
&& apt-get install -y --no-install-recommends \
nodejs \
> /dev/null 2>&1 \
&& node -v \
&& npm -v \
&& npm install -g npm@latest \
&& npm -v \
&& npm install -g ${NPM_PKGS} \
&& npm update -g \
&& npm list -g \
&& rm -rf /var/lib/apt/lists/* \
/var/cache/apt/* \
/tmp/* \
/var/tmp/* \
&& apt-get remove -yqq \
tzdata \
apt-utils \
&& apt-get clean autoremove -y \
&& apt-get autoclean -y \
&& npm cache clean --force \
&& npm cache verify
# Add user
RUN groupadd -g 1000 ${ADD_USG}
RUN useradd -u 1000 -g ${ADD_USG} -M -s /bin/bash ${ADD_USG}
RUN mkdir -p /app && chown -R 1000:1000 /app
USER ${ADD_USR}
ENV LANG ${ADD_USR_LANG}
ENTRYPOINT ["/bin/bash"]
kops๋ก ์์ฝ๊ฒ spot instance ์์ฒญํ๊ธฐ
- kkumtree
2023-03-06T18:43:51+09:00
kops๋ก ์ถฉ๋ถํ spot instance๋ฅผ ๊ตด๋ฆด ์ ์์ง ์์๊น?
- ๋ ์๊ฐ์ pkos ์คํฐ๋ ๋ด๋ด ํ๊ณ ์์์ต๋๋ค๋ง,
์ด๋ฏธ t3.small ๋๋ ธ๋ค๊ฐ ์ ๋๋ก ๋ ธ๋๋ค์ด ์๋ํ์ง๋ ์์์์ ๋ง๋ดค๊ธฐ ๋๋ฌธ์…
์ฐ์ ์์๋ ์ฃผ์ฐจ๋ณ ๊ณผ์ ์ ์ถ์ด์๊ธฐ ๋๋ฌธ์ ์ด์ ์ผ ์๋ฒ ํ ์คํธ๋ฅผ ํด๋ณด๊ณ , ๊ธ์ ์์ฑํด๋ด ๋๋ค. - ์์ฝํ์๋ฉด
๋ณต์ต์ฉ์ผ๋ก๋ ์ถฉ๋ถํ ๊ฐ๋ฅํ๋ค.๋ผ๋ ํ๋จ์ ๋๋ค.- ์ฐธ๊ณ ๋ก,
์์ฝ๊ฒ === ์ผ๋งค์ ๋๋์ผ๋ก ๊ธฐ์ ํด๋ณด์์ต๋๋ค. - ๊ธ ์ฝ๊ธฐ ๊ท์ฐฎ๋ค! ์ถ์ผ๋ฉด ์ฌ๊ธฐ์์ ์๊ธ์ ํ์ธํ์ค ์ ์์ต๋๋ค.
- ์ฐธ๊ณ ๋ก,
์ ์คํ ์ธ์คํด์ค์ธ๊ฐ?
-
์ด๋ฏธ ์ด์ ํฌ์คํ ์ ์๋์์ ์ธ๊ธํ ๋ฐ ์์ผ๋,
์๋ฌด๋ฆฌ ํด๋ผ์ฐ๋ ์๋น์ค๊ฐ ํฉ๋ฆฌ์ ์ด์ด๋ On-demand ์ธ์คํด์ค๋ฅผ ํ์ต์ฉ์ผ๋ก ์ฌ์ฉํ๊ธฐ์ ์ด์ง ๋นํจ์จ์ ์ด๋ผ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
AWS ํธ๋ฌ๋ธ ์ํ - 7์ฃผ ๊ฐ์ k8s ์ค๋ฌด ์คํฐ๋๋ฅผ ๋ง์น๋ฉฐ
- kkumtree
2023-02-25T22:07:23+09:00
์ต๊ทผ CloudNet@์์ ์งํํ๊ณ ์๋ Production Kubernetes Online Study(์ดํ, PKOS)๋ ๋ง์ง๋ง ์ฃผ์ฐจ๊ฐ ๋๋ฌ์ต๋๋ค.
๋จ์ ๊ณํ์ 4์๋ถํฐ ์์๋๋ ํด์๊ธฐ๊ฐ(a.k.a. ๊ณ์ฝ๋ง๋ฃ ํ)์ค ๋ณต์ต ๊ฒธ, ํฌ์คํ
์ ํด๋ณด๋ ๊ฒ์
๋๋ค.
์ค๋์ ์๋์ ๊ฐ์ด ์คํจ๋ฅผ ๊ฑฐ๋ญํ์ฌ ์ถ๊ฐ๋ก ์๊ฒ๋ ์์ํ ํธ๋ฌ๋ธ์ํ ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
(๋ฌผ๋ก , ์๋ฒฝ์ ๊ฒจ์ฐ๊ฒจ์ฐ ์ฃผ์ฐจ๋ณ ๊ณผ์ ์ ์ถํ๊ณ ๊ธฐ์ ํ๋ ๋ฐ๋์, ๋ง์ ํ๋ค ๊นจ๋ซ๊ณ ์์ค๋ผ์น๊ฒ ํด๋ํฐ์ผ๋ก ์๋ ์ญ์ ํ๊ฒ ๋น์ฉ์ ์ฃผ ์์ธ์ด๊ธด ํ๋ค์;)
๋ถํ์ํ Try & Fail์ ์ค์ด๊ณ , ์ฆ๊ฑฐ์ด k8s ํ์ต๋์๊ธฐ ๋ฐ๋๋๋ค.
1. AWS ๊ณ์ ์ ๊ธ ํด์
์ํฉ
-
์ฒ์ 1์ฃผ์ฐจ ์๋ด๊ฐ ๋๋๊ณ Route53 Hostname์ ๊ตฌ๋งคํ๋ ค๊ณ ํ๋, ์๊พธ ๊ฒฐ์ ๊ฐ ์คํจํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
Traefik์ ํ์ฉํ minikube ์์ ๊ตฌํ์๋ w/Apple Silicon
- kkumtree
2023-02-05T04:54:06+09:00
์ฃผ๋ณ์ผ๋ก๋ถํฐ ํผ๋๋ฐฑ์ ๋ฐ์ ๋ด์ฉ์ด ์์ด ์๋ก์ด ๊ธ๋ก ๋ณด์์์ ์
๋๋ค.
- colima๋ containerd์ฒ๋ผ cri๊ฐ ์๋, Docker engine๊ณผ containerd ์ฌ์ด์ ๋ฌผ๊ฑด์ผ๋ก ์ถ์ ๋ฉ๋๋ค.
- ๋์ปค ์์ง์ ํ์ฌ containerd๋ฅผ ํตํด ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌ.
- colima๋ docker shim ๊ตฌ์กฐ๋ ํํผํ์ ๊ฑฐ๋ผ๊ณ ์ถ์ธก ์ค.
- ๋์ปค ์์ง๊ณผ containerd ์ฌ์ด์ ์ปจํ
์ด๋ ์์ง(๊ด๋ฆฌ๋๊ตฌ?)๋ก ๋ณด์
- colima ์์ ์, ํน์ ๋ฐํ์์ ์ ํํ ์ ์์ต๋๋ค. ๋ฌธ์๋ฅผ ์ ์ฝ์ด๋ด
์๋ค.
`colima start --runtime containerd`
- k8s๋ฅผ ์ํ colima ์์ ๋ช
๋ น์ด๋ ๋ณ๋๋ก ์์ต๋๋ค. colima github๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
traefik v1.7์์๋ ์์ ์ค๋ช
์ ๊ธฐ์ค์ด
k8s.io/v1beta1 API(deprecated)์
๋๋ค
k8s.io/v1 API๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์ด ์์ผ๋, ์ฐธ๊ณ ๋ฐ๋๋๋ค.
๋ก์ปฌํ๊ฒฝ(minikube)์์ Traefik(^2) ์์ ๋ฅผ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.