Skip to content

Latest commit

ย 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

EKS

ํ”„๋กœ์ ํŠธ ์„ค๋ช…

AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ Amazon Elastic Kubernetes Service(Amazon EKS)์—์„œ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋…ธ๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Github main branch์— ํ‘ธ์‰ฌํ•˜๊ฒŒ ๋˜๋ฉด ArgoCD๊ฐ€ Pullํ•ด์™€์„œ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ณธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” EKS ์‚ฌ์šฉ๋ฒ•๊ณผ Ingress๋กœ ALB๋ฅผ ์„ค์ •ํ•  ๋•Œ ๊ฒช์€ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…, Auth Server์™€ Redis๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ๋ฒ•, kubectl ๊ด€๋ จ ๋ช…๋ น์–ด, ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ๋ฐฉ๋ฒ• ๋“ค์„ ์•Œ์•„๋ณด๊ณ  ์ ์šฉ์‹œ์ผœ staging ํ™˜๊ฒฝ์—์„œ์˜ EKS๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ณ

image

INDEX

USE

  1. Kubernetes
  • EKS (Kubernetes ๋ฒ„์ „ 1.21)
    • node (t3.large 35)
  1. CD tool
  • ArgoCD
  1. Monitoring
  • Prometheus
  • Grafna

๊ตฌ์„ฑ

โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ dump.rdb
โ”œโ”€โ”€ eks์ดˆ๊ธฐ์„ค์ •
โ”‚ย ย  โ”œโ”€โ”€ AWSLoadBalancerControllerIAMPolicy
โ”‚ย ย  โ”œโ”€โ”€ cluster-role-trust-policy.json
โ”‚ย ย  โ”œโ”€โ”€ iam_policy.json
โ”‚ย ย  โ””โ”€โ”€ node-role-trust-policy.json
โ”œโ”€โ”€ k8s
โ”‚ย ย  โ”œโ”€โ”€ deployment-apiserver.yaml
โ”‚ย ย  โ”œโ”€โ”€ deployment-authserver.yaml
โ”‚ย ย  โ”œโ”€โ”€ deployment-redis.yaml
โ”‚ย ย  โ”œโ”€โ”€ grafana.yaml
โ”‚ย ย  โ”œโ”€โ”€ ingress-argo.yaml
โ”‚ย ย  โ”œโ”€โ”€ ingress.yaml
โ”‚ย ย  โ”œโ”€โ”€ service-apiserver.yaml
โ”‚ย ย  โ”œโ”€โ”€ service-authserver.yaml
โ”‚ย ย  โ””โ”€โ”€ service-redis.yaml
โ”œโ”€โ”€ make-cluster-2.yaml
โ”œโ”€โ”€ make-cluster.md
โ””โ”€โ”€ make-cluster.yaml

Project Explanation

  • EKS๋กœ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • deploymnet๋กœ๋Š” API Server, Auth Server, Redis ์ด 3๊ฐœ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
  • Service๋Š” 3๊ฐœ๋กœ์จ, API Server์™€ Auth Server๋Š” nodePort๋กœ, Redis๋Š” ClusterIP๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
  • Ingress๋Š” alb๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•œ๋‹ค (ingress controller ๋ฐ ingress)
  • ArgoCD์™€ Github๋ฅผ ์ด์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๋ชจ๋‹ˆํ„ฐ๋ง์œผ๋กœ๋Š” ํ”„๋กœ๋ฉ”ํ‹ฐ์šฐ์Šค์™€ Grafana๋ฅผ ์ด์šฉํ•ด ๊ตฌ์„ฑํ•œ๋‹ค.
  • EKS ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ํ•˜๊ธฐ
  • ๋ช…๋ น์–ด ์ •๋ฆฌ

Start

EKS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ฝ˜์†”์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ eksctl๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

EKS๋กœ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋…ธ๋“œ ์ƒ์„ฑ

eksctl create cluster -f cluster.yaml

๊ณต์‹๋ฌธ์„œ (url ๋„ฃ๊ธฐ)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ eksctl์„ ์„ค์น˜ ํ›„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋Ÿฌ์Šคํ„ฐ๋งŒ ์ƒ์„ฑ ๋  ๋ฟ ๋…ธ๋“œ๋Š” ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•œ๋‹ค.

๋…ธ๋“œ๊นŒ์ง€ ์ƒ์„ฑํ• ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

eksctl create cluster \
--name cluster-1 \
--version 1.21 \
--region us-west-2 \
--nodegroup-name c1-nodes \
--node-type t3.medium \
--nodes 2

์ด์™€๊ฐ™์ด eksctl์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ต์…˜์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

yaml๋กœ๋„ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋…ธ๋“œ๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

make-cluster.yaml์„ ์‹คํ–‰์‹œ์ผœ ์›ํ•˜๋Š”๋Œ€๋กœ ๋…ธ๋“œ์™€ ๊ถŒํ•œ, vpc ๋“ฑ์„ ์ •์˜ํ•ด์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹คํ–‰๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

kubectl apply -f make-cluster.yaml

ekctl ์„ค์น˜ ~ alb์„ค์น˜ ๊ณผ์ •

1. ekctl ์„ค์น˜

์ฐธ์กฐ

1-1. ekctl ๋‹ค์šด

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

1-2. ์••์ถ• ํ•ด์ œ๋œ ์ด์ง„ํŒŒ์ผ ์˜ฎ๊ธฐ๊ธฐ

sudo mv /tmp/eksctl /usr/local/bin

1-3. ๋ฒ„์ „ํ™•์ธ

eksctl version

2. eks ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ ๋…ธ๋“œ ์ƒ์„ฑ

์ฐธ์กฐ

2-1. ์ƒ์„ฑ(์ƒ์„ฑ๋˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆผ)

eksctl create cluster --name staging --region ap-northeast-2
(eksctl create cluster --name my-cluster --region region-code)

2-2. ๋ฆฌ์†Œ์Šค ๋ณด๊ธฐ(ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ ํ™•์ธ)

kubectl get nodes -o wide

2-3. ํด๋Ÿฌ์Šคํ„ฐ์— ์‹คํ–‰์ค‘์ธ ์›Œํฌ๋กœ๋“œ ํ™•์ธ

kubectl get pods --all-namespaces -o wide

2-4. ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ†ต์‹ 

aws eks update-kubeconfig --region region-code --name my-cluster

3. AWS Load Balancer Controller ์„ค์น˜

์ฐธ์กฐ

3-1. IAM ์ •์ฑ… ์ƒ์„ฑ

curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.0/docs/install/iam_policy.json

3-2. IAM ์ •์ฑ… ๋งŒ๋“ค๊ธฐ

aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy \
--policy-document file://iam_policy.json
    

3-3. eksctl์„ ์ด์šฉํ•ด kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ IAM ์—ญํ• ์„ ์ƒ์„ฑํ•˜๊ณ  AWS ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์ปจํŠธ๋กค๋Ÿฌ์˜ kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— aws-load-balancer-controller๋ผ๋Š” Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์„ ์ถ”๊ฐ€

eksctl create iamserviceaccount \
--cluster=staging \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=arn:aws:iam::060701521359:policy/AWSLoadBalancerControllerIAMPolicy \
    --approve


(eksctl create iamserviceaccount \
--cluster=my-cluster \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \
--override-existing-serviceaccounts \
--approve)

โš ๏ธ Warning
no IAM OIDC provider associated with cluster
๋ฌธ๊ตฌ๊ฐ€ ๋œจ๋ฉด try ๋’ค ๋ถ€ํ„ฐ ๋ณต์‚ฌํ•œ๋‹ค์Œ --approve๋ฅผ ๋ถ™์—ฌ์„œ ์‹คํ–‰ ํ›„ ์œ„ ๋ช…๋ น์–ด ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

eksctl utils associate-iam-oidc-provider --region=ap-northeast-2 --cluster=staging --approve

4. helm์„ ์‚ฌ์šฉํ•˜์—ฌ AWS Load Balancer Controller ์„ค์น˜

4-1. eks-charts ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€

helm repo add eks https://aws.github.io/eks-charts

4-2. ์ตœ์‹  ์ฐจํŠธ๊ฐ€ ์ ์šฉ๋˜๋„๋ก ๋กœ์ปฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธ

helm repo update

4-3. aws ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์ปจํŠธ๋กค๋Ÿฌ ์„ค์น˜

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n default \
--set clusterName=staging \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller 

( 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 )

4-4. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋– ์•ผํ•จ

> kubectl get deployment -n kube-system aws-load-balancer-controller
    NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
    aws-load-balancer-controller   2/2     2            2           47s

5. ์„œ๋ธŒ๋„ท -> public, private ํƒœ๊ทธ ์ถ”๊ฐ€

ํ‚ค - kubernetes.io/cluster/pj4-staging
๊ฐ’ - shared ๋˜๋Š” owned

(ํ‚ค - kubernetes.io/cluster/cluster-name)
(๊ฐ’ - shared ๋˜๋Š” owned)

5-1. ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์— ํƒœ๊ทธ ์ถ”๊ฐ€

ํ‚ค - kubernetes.io/role/internal-elb
๊ฐ’ - 1

5-2. ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์— ํƒœ๊ทธ ์ถ”๊ฐ€

ํ‚ค - kubernetes.io/role/elb
๊ฐ’ - 1

6. ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ IAM ์‚ฌ์šฉ์ž ๋ฐ ์—ญํ•  ์•ก์„ธ์Šค ์‚ฌ์šฉ ์„ค์ •

์ฐธ์กฐ

curl -o eks-console-full-access.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/docs/eks-console-full-access.yaml
kubectl apply -f eks-console-full-access.yaml

6-2. ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ RBAC(๋งˆ์Šคํ„ฐ๊ถŒํ•œ)

eksctl create iamidentitymapping \
--cluster ํด๋Ÿฌ์Šคํ„ฐ์ด๋ฆ„ \
--arn arn:aws:iam::xxxxxxxxxxxx:user/์œ ์ €์ด๋ฆ„ \
--username ์œ ์ €์ด๋ฆ„ \
--group system:masters

6-3. ํ™•์ธ

eksctl get iamidentitymapping --cluster eksworkshop-eksctl

6-4. ์‚ฌ์šฉ์ž ์ถ”๊ฐ€์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

Link

Ingress๋กœ ALB๋ฅผ ์„ค์ •ํ•  ๋•Œ ์•Œ์•„๋‘˜ ๊ฒƒ

# k8s/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: project4
  namespace: default
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/group.name: project4--staging
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-northeast-2:xxxxxxxxxxxx:certificate/104f70c8-4cbb-4873-aed9-eb9bfbeeb021
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
spec:
  rules:
  - host: "eks.devops-altf4.click"
    http:
      paths:
      - path: /auth
        pathType: Prefix
        backend:
          service:
            name: auth-server
            port:
              number: 80

      - path: /
        pathType: Prefix
        backend:
          service:
            name: api-server
            port:
              number: 80

์ธํ„ฐ๋„ท์—์„œ ingress alb๋ฅผ ์ฐพ์•„๋ณด๋ฉด ์ฒซ ๋ฌธ์žฅ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด 2๊ฐœ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

apiVersion: networking.k8s.io/v1

apiVersion: extensions/v1beta1

https://kubernetes.io/docs/reference/using-api/deprecation-guide/

ingress ์— apiVersion ์ค‘ extensions/v1beta1 ๋Š” 1.14 ๋ฒ„์ „์— deprecated ๋˜์—ˆ๊ณ  1.22 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋‹ˆ networking.k8s.io/v1 ๋กœ ๋ณ€๊ฒฝํ•˜๋ผ๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘๊ฐœ์˜ ๋ฒ„์ „์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ์ ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://findmypiece.tistory.com/308

โš ๏ธ Warning
๋งŒ์•ฝ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค๋ฉด ingress ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ง€์šฐ๊ณ  ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

```Warning  FailedDeployModel  24s (x7 over 3m16s)  ingress  (combined from similar events): Failed deploy model due to AccessDeniedException: User: arn:aws:sts::060701521359:assumed-role/eksctl-staging-addon-iamserviceaccount-kube-Role1-TNFF6IU9WWLU/1653979665832449172 is not authorized to perform: waf-regional:GetWebACLForResource on resource: arn:aws:waf-regional:ap-northeast-2:060701521359:*/* with an explicit deny in a service control policy
       status code: 400, request id: 13eb850c-1cee-4dbe-97b0-cd1916e7cbb3```

์ถ”๊ฐ€๋ช…๋ น์–ด : --set enableWaf=false --set enableWaf2=false --set enableShield=false

์ฐธ์กฐ

Auth server์™€ Redis ์—ฐ๊ฒฐํ•˜๊ธฐ

(1) Endpoint๋ฅผ ์ง์ ‘ ํ•˜๋“œ์ฝ”๋”ฉํ•ด์„œ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•

Auth ์„œ๋ฒ„๋Š” Redis๋ฅผ ํ˜ธ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ auth ์„œ๋ฒ„๋Š” NodePort์ด๊ณ , redis๋Š” ClusterIP๋กœ ์„œ๋น„์Šค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— host๋ฅผ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์ ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ๋กœ์ปฌ์ƒ์—์„œ๋Š” Auth server์˜ ํ˜ธ์ŠคํŠธ๋ฅผ 127.0.0.1๋กœ ์ฃผ์—ˆ๋‹ค๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒ์—์„œ๋Š” Redis Service์˜ endpoint ์ฃผ์†Œ๋กœ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

> kubectl describe service redis-service
Name:              redis-service
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          app=redis
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.100.161.238
IPs:               10.100.161.238
Port:              redis  6379/TCP
TargetPort:        6379/TCP
Endpoints:         192.168.115.20:6379
Session Affinity:  None
Events:            <none>

kubectl describe service redis-service

describe ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์„œ ์–ป์€ endpoint ์ฃผ์†Œ๋ฅผ auth ์„œ๋ฒ„์— host๋กœ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

ํ˜น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

> kubectl get endpoints
NAME         ENDPOINTS           AGE
kubernetes   192.168.49.2:8443   54m
redis        172.17.0.3:6379     22s

(2) redis์˜ endpoint๋Š” ๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋‹ˆ endpoint๋ฅผ ๊ณ ์ •์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

//redis-endpoint.yaml
apiVersion: v1
kind: Endpoints
metadata:
 # the name here should match the name of the Service
 name: redis
subsets:
 - addresses:
     - ip: ์›ํ•˜๋Š” IP ์ฃผ์†Œ
   ports:
     - port: 6379
# auth-server/app.js
const Redis = require('ioredis');
const express = require('express');
//const axios = require('axios');
const bodyParser = require('body-parser');
const port = 3005;



const redis_client = new Redis({
  host : '192.168.115.20',
  port : '6379'
});

(3) ๋„๋ฉ”์ธ์œผ๋กœ auth์„œ๋ฒ„์™€ Redis๋ฅผ ์—ฐ๊ฒฐ ์‹œ ํ‚ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค

const client = redis.createClient({
  host: "redis.default.svc.cluster.local", 
  //์„œ๋น„์Šค์ด๋ฆ„.๋„ค์ž„์ŠคํŽ˜์ด์Šค.svc.ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ตœ์ƒ์œ„ ๋„๋ฉ”์ธ
  port: 6379,
})

api-service.default.svc.cluster.local

api-service๋Š” ์„œ๋น„์Šค์˜ ์ด๋ฆ„์„ ๋œปํ•œ๋‹ค.

default๋Š” ํ•ด๋‹น ์„œ๋น„์Šค๊ฐ€ ์†ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ด๋‹ค.

svc๋Š” ์„œ๋น„์Šค๋ฅผ ๋œปํ•˜๋ฉฐ, ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

cluster.local์€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์ƒ์œ„ ๋„๋ฉ”์ธ์ด๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด, ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋น„์Šค์˜ ์ด๋ฆ„๊ณผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋งŒ ์•ˆ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ์กฐํ•ฉ๋œ ๋„๋ฉ”์ธ์„ ํ†ตํ•ด ํ•ด๋‹น ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

kubectl ๋ช…๋ น์–ด

kubectl logs ~ -> ํŒŒ๋“œ ๋Œ€ํ•ด ๋กœ๊ทธ ๊ธฐ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl describe ~ -> ๋””ํ”Œ๋กœ์ด๋จผํŠธ, ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl get all -> pod ๋ฐ service, ๋ ˆํ”Œ๋ฆฌ์นด์…‹์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl describe ingress ~ -> ingress์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl exec -it redis -- redis-cli redis๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํŒŒ๋“œ์— ์ง์ ‘ ์—ฐ๊ฒฐํ•ด์„œ PING์„ ๋‚ ๋ ค๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl get ns -> ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ถˆ๋Ÿฌ ์˜ต๋‹ˆ๋‹ค.

kubectl port-forward pod/auth-server-76ffb98979-cfmmc 3005:3005 -> ํŒŒ๋“œ๋ฅผ ํฌํŠธํฌ์›Œ๋”ฉ์œผ๋กœ ๋กœ์ปฌํ˜ธ์ŠคํŠธ์ƒ์— ๋…ธ์ถœ์‹œํ‚ต๋‹ˆ๋‹ค.

ArgoCD ์„ค์น˜๋ฒ•

ArgoCD๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฒ•์€ ArgoCD ํ™ˆํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.
ArgoCD ๊ณต์‹ํ™ˆํŽ˜์ด์ง€

๊ทธ๋Ÿฌ๋‚˜ githube์˜ ํ”„๋ผ์ด๋น— ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” pubํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ Warning
sshํ‚ค๋Š” id_ed25519๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค ์„ค์น˜๋Š” ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://gist.github.com/hrdtbs/ba50868d7d608b89f958fe32dc35fdd4

์ƒ์„ฑํ•œ pubํ‚ค๋ฅผ ๊นƒํ—ˆ๋ธŒ setting -> Deploy keys ์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ผ์ด๋น— ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

argocd repo add git@๋ ˆํŒŒ์ง€ํ† ๋ฆฌ --ssh-private-key-path ~/.ssh/id_ed25519 --name id_ed25519 

์˜ˆ์‹œ

argocd repo add git@github.com:devops-team-AltF4/Kubernetes.git --ssh-private-key-path ~/.ssh/id_ed25519 --name id_ed25519

๋ณธ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์ฒ˜๋Ÿผ k8s์•ˆ์— deployment, service, ingress ๋“ค์„ ๋„ฃ์–ด๋„ฃ๊ณ  ์ƒ์„ฑํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

argoCD์—์„œ path์„ค์ •ํ•  ๋•Œ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์•ˆ์˜ ํด๋”๋งŒ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

namespace

$ kubectl get all 
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   55d
$ kubectl get all -o wide
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE   SELECTOR
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   55d   <none>
$ kubectl get all -o wide -n default
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE   SELECTOR
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   55d   <none>
-n ์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•ฝ์ž๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜

namespace ๋‚ด ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ๋“œ๋Š” ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ผ๋ฉด ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Namespaces ๋ž€ ๋™์ผํ•œ ๋ฌผ๋ฆฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ƒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ด๋Ÿฐ ๊ฐ€์ƒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋‚ด์—์„œ ๋…ผ๋ฆฌ์ ์ธ ๋ถ„๋ฆฌ ๋‹จ์œ„ ์ด๋ฉฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ Namespace ๋ณ„๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

clean UP

eksctl delete cluster --name ํด๋Ÿฌ์Šคํ„ฐ์ด๋ฆ„ --region ap-northeast-2

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors