๋กœ์ผ“๐Ÿพ
article thumbnail
๋ฐ˜์‘ํ˜•

 

 

์ง€๋‚œ ๊ธ€์—์„œ๋Š” proxmox ์„ ์„ค์น˜ํ•œ ํ›„, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์—๋Š” ์„œ๋น„์Šค ๋ฉ”์‰ฌ์™€ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” Istio ์™€ CSI Driver NFS ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

 

Istio ๋Š” Nginx Controller ๋ฅผ ๋Œ€์‹ ํ•˜๊ณ , mTLS ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ํ•˜๊ณ , CSI Driver NFS ๋Š” ํŒŒ๋“œ๋“ค์˜ ๋ณผ๋ฅจ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

 

Consul ์„ ๋„์ž…ํ•ด๋ณด๊ณ  ์‹ถ์€๋ฐ ์ด๊ฑด ์ถ”ํ›„ ์ž‘์—…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!!

 

๋ชจ๋“  ์ž‘์—…์€ IaC ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ…Œ๋ผํผ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค!

 

๋ ›์ธ ๋‘๋”์ฝ”๋“œ~

 

 

Istio


Helm ๋ฒ„์ „์˜ ์„ค์น˜๋ฅผ ์œ„ํ•œ ๊ฐ€์ด๋“œ๊ฐ€ ๊ณต์‹ ๋ฌธ์„œ์— ์ž˜ ์„ค๋ช… ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Helm Provider ์— ๋งž๊ฒŒ ์ฝ”๋“œํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ๊ณ , terraform apply ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ตณ์ด ํ˜ผ์ž ์‚ฌ์šฉํ•˜๋Š”๋ฐ S3, DynamoDB ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ…Œ๋ผํผ์„ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๊ฑฐ ๊ฐ™์•„ ๋ชจ๋‘ ๋กœ์ปฌ์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค!

 

 

base, daemon, gateway ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์•„, ์ฐธ๊ณ ๋กœ base ๋Š” crd ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ถ€๋ถ„์ด๋ผ pod ๋กœ ๋ฐฐํฌ๋œ์ง„ ์•Š์•„์š”.

 

istio proxy ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ดํ•ดํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ์ €๋Š” privileged ๋ฅผ true ๋กœ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒํ•˜๋ฉด tcpdump ์™€ ๊ฐ™์€ sudo ๊ฐ€ ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ฃ .

 

๋˜ํ•œ ์ €๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์ด๊ณ  ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๊ฐ™์€ ๊ฑด ์—†์œผ๋‹ˆ Ingress Gateway ์˜ ์„œ๋น„์Šค NodePort ๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•˜์˜€๊ณ , ๋…ธ๋“œ์˜ IP ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ NodeAffinity  ๋ฅผ ์‚ฌ์šฉํ•ด Worker Node 1 ์—๋งŒ ๋ฐฐํฌ๋˜๋„๋ก, ๋…ธ๋“œ์˜ DHCP ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

nginx ๋ฅผ ๋ฐฐํฌํ•ด์„œ Istio ๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ดค๋Š”๋ฐ ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋„์‹ํ™” ํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒ ๊ตฐ์š”.

 

 

CSI Driver NFS


NFS ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŒŒ๋“œ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. 

 

์šฐ์„  NFS ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

SSH ๋กœ ์ ‘์† ํ•œ ํ›„, ์•„๋ž˜ ๋ช…๋ น์–ด๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋กœ ์„ค๋ช…ํ•˜์ง„ ์•Š์„๊ฒŒ์š”.

$ apt update

$ apt install -y nfs-kernel-server

$ systemctl list-units --type=service --state=running

$ systemctl status nfs-server

$ systemctl enable nfs-server

$ mkdir -p /mnt/k8s

$ chown -R nobody:nogroup /mnt/k8s/

$ chmod 777 /mnt/k8s

 

# vim /etc/exports
$ /mnt/k8s 192.168.0.0/16(rw,sync,no_subtree_check)

$ exportfs -rav

$ systemctl restart nfs-server

$ systemctl status nfs-server

 

NFS Server ๋Š” ์„ค์น˜ํ–ˆ๊ณ , ์ด์ œ NFS Client ๋„ ์„ค์น˜ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ... ๋ฌธ์ œ๋Š” ์›Œ์ปค ๋…ธ๋“œ๋งˆ๋‹ค ๋ชจ๋‘ ์„ค์น˜ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค..

๋…ธ๋“œ๊ฐ€ ์ง€๊ธˆ์€ 3๊ฐœ์—ฌ์„œ ๊ดœ์ฐฎ์ง€๋งŒ, 100๊ฐœ๋ผ๋ฉด ์–ด์šฐ.. ๋นก์„ธ์ฃ ..

 

๋‹คํ–‰ํžˆ CSI Driver NFS ๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ค๋‹ˆ๋‹ค.

NFS ๋„ ๋ง๊ณ ๋„ EBS ์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ์ €์žฅ์†Œ์˜ CSI ๋„ ๋ชจ๋‘ ์ง€์›ํ•ด์ฃผ๋‹ˆ ํฐ ๋ฌธ์ œ๋Š” ์—†์–ด์š”!

 

์—ญ์‹œ ํ…Œ๋ผํผ์„ ํ†ตํ•ด ์„ค์น˜ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

csi-nfs-node ๋Š” ๋ฐ๋ชฌ์…‹์œผ๋กœ ๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์„ค์น˜๋˜๋ฉด ์ด ํŒŒ๋“œ๋“ค์ด ๋…ธ๋“œ๊ฐ€ NFS Client ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ์ง€์›ํ•ด์ค๋‹ˆ๋‹ค.

 

์•„๋ž˜๋Š” NFS ๋ฅผ ํ…Œ์ŠคํŠธํ•  ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
  server: 192.168.0.150
  share: /mnt/k8s
reclaimPolicy: Delete # Retain
volumeBindingMode: Immediate
mountOptions:
  - hard
  - nfsvers=4.1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  storageClassName: nfs-csi
  accessModes: [ReadWriteOnce] # ReadWriteMany
  resources:
    requests:
      storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-example
  labels:
    app: nfs-example
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nfs-example
  template:
    metadata:
      labels:
        app: nfs-example
    spec:
      containers:
        - image: ubuntu:20.04
          name: ubuntu
          command: ["/bin/bash", "-c", "tail -f /dev/null"]
          volumeMounts:
            - mountPath: /mnt/data
              name: nfs-pvc
      volumes:
        - name: nfs-pvc
          persistentVolumeClaim:
            claimName: nfs-pvc
---

 

Bound ๊ฐ€ ๋œ ๊ฑธ ๋ณด๋‹ˆ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํŒŒ๋“œ์—์„œ ์ƒ์„ฑํ•œ test.txt ๊ฐ€ ์‹ค์ œ NFS ์„œ๋ฒ„์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‚˜์ค‘์— ๊ผญ Consul ๋„ ํ•œ๋ฒˆ ๋„์ž…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์˜ค๋Š˜์€ ์„ฑ๋ฒฝ๊ณผ ์ €์žฅ์†Œ๋ฅผ ์ง€์–ด๋ดค์Šต๋‹ˆ๋‹ค.

 

๋‹ค์Œ ์‹œ๊ฐ„์—” ํ”„๋กœํ…Œ๋ฉ”์šฐ์Šค(๋ณด์ดˆ), ๊ทธ๋ผํŒŒ๋‚˜(๋ณด์ดˆ), ๋ณผํŠธ(์•ˆ๋ณด)๋ฅผ ์„ค์น˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€!

 

๋ฐ˜์‘ํ˜•
profile on loading

Loading...