kkumtree

Kubernetes Service(4): envoy overview

  • kkumtree

2024-10-15T10:16:38+09:00

๋”ฐ๋กœ ์Šฅ ์ฐพ์•„๋ณด๋‹ˆ, envoy๋Š” Micro Service Architecture ๋“ฑ ๊ตฌํ˜„๋œ ๋‹จ์œ„ ๊ธฐ๋Šฅ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•œ L7 Proxy ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
Docker Compose ์ •๋„๋‚˜ ์ผ๋ฐ˜ ์„œ๋น„์Šค์—์„œ๋Š” ๊ตณ์ด ํ•„์š”ํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ, Service Mesh ํ™˜๊ฒฝ์—์„œ๋Š” ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ํ›์–ด๋ด…๋‹ˆ๋‹ค.

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. Envoy Installation

wget -O- https://apt.envoyproxy.io/signing.key | sudo gpg --dearmor -o /etc/apt/keyrings/envoy-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/envoy-keyring.gpg] https://apt.envoyproxy.io jammy main" | sudo tee /etc/apt/sources.list.d/envoy.list
sudo apt-get update
sudo apt-get install envoy
envoy --version

ํ•™์Šตํ™˜๊ฒฝ์€ root๋กœ ์ ‘์†๋˜์–ด ์žˆ๊ธฐ์— sudo๋Š” ์“ฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Kubernetes Service(3): Ingress(ingress-nginx) w/k3s

  • kkumtree

2024-10-10T22:12:57+09:00

์ง€๋‚œ ํฌ์ŠคํŒ…, Kubernetes Service(2): LoadBalancer(MetalLB)์— ์ด์–ด Ingress Type์„ ๊ฐ€๋ณ๊ฒŒ ์‚ดํŽด๋ณด๊ณ , Ingress-Nginx๋ฅผ ๊ฐ€๋ณ๊ฒŒ ๋ถ™์—ฌ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. Ingress Type

์ด์ œ, ์‹ ๊ทœ ๊ธฐ๋Šฅ(New feature)์€ Gateway API์— ์ถ”๊ฐ€๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์šฐ์„ , Kubernetes๊ฐ€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๊ฐ€,

  • Ingress Type ๊ณผ LoadBalancer Type์˜ ๋ช…ํ™•ํ•œ ์ฐจ์ด๊ฐ€ ๋ญ˜๊นŒ...?
    ๋ผ๋Š” ์ ์ด๋ผ๊ณ  ๋ด…๋‹ˆ๋‹ค.

๋ฌผ๋ก , ๊ทธ๊ฑฐ ์™ธ์—๋„ k8s์—๋Š” ์•Œ์ญ๋‹ฌ์ญํ•œ ๊ฒƒ๋“ค์ด ์•„-์ฃผ ๋งŽ์ง€๋งŒ์š”.

์นœ์ ˆํ•œ Docs์— ๋”ฐ๋ฅด๋ฉด,
ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ์„œ๋น„์Šค์— ๋Œ€ํ•œ HTTP ๋ฐ HTTPS ๋ผ์šฐํŒ…์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes Service(2): LoadBalancer(MetalLB)

  • kkumtree

2024-10-02T12:54:17+09:00

์ง€๋‚œ ํฌ์ŠคํŒ…, Kubernetes Service(1): ClusterIP/NodePort์— ์ด์–ด LoadBalancer Type์„ ๊ฐ€๋ณ๊ฒŒ ์‚ดํŽด๋ณด๊ณ , MetalLB๋ฅผ ๊ฐ€๋ณ๊ฒŒ ๋ถ™์—ฌ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. LoadBalancer Type

Service(1)์—์„œ ์–ธ๊ธ‰๋œ ๋ถ€๋ถ„์€ ๊ฑฐ๋‘์ ˆ๋ฏธํ•˜๊ณ , ์ถ”๊ฐ€๋กœ ์ ์„ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด, ์•„๋ž˜ ํ•œ ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

You can define a LoadBalancer Service by disabling the load balancer NodePort allocation.

๊ธ€์ž ๊ทธ๋Œ€๋กœ LB์˜ NodePort ํ• ๋‹น์„ ๋น„ํ™œ์„ฑํ•˜์—ฌ, LoadBalancer Service๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Disabling load balancer NodePort allocation ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ,
v1.24๋ถ€ํ„ฐ Stable ์ƒํƒœ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

iptables monitoring with Grafana (Not Completed)

  • kkumtree

2024-09-29T13:35:13+09:00

iptables๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ Grafana๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. ํ™˜๊ฒฝ ๊ตฌ์„ฑ (kind)

์ž‘์„ฑ์‹œ๊ฐ„ ์ด์Šˆ๋กœ featureGates, ConfigPatches, networking ์„ค์ • ์„ค๋ช…์€ ์Šคํ‚ต…ํ•ฉ๋‹ˆ๋‹ค.

a. 1 Master, 3 Slave ํ™˜๊ฒฝ ๊ตฌ์„ฑ

cat <<EOT> kind-svc-1w.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
featureGates:
  "InPlacePodVerticalScaling": true
  "MultiCIDRServiceAllocator": true
nodes:
- role: control-plane
  labels:
    mynode: control-plane
    topology.kubernetes.io/zone: ap-northeast-2a
  extraPortMappings:
  - containerPort: 30000
    hostPort: 30000
  - containerPort: 30001
    hostPort: 30001
  - containerPort: 30002
    hostPort: 30002
  kubeadmConfigPatches:
  - |
    kind: ClusterConfiguration
    apiServer:
      extraArgs:
        runtime-config: api/all=true
    controllerManager:
      extraArgs:
        bind-address: 0.0.0.0
    etcd:
      local:
        extraArgs:
          listen-metrics-urls: http://0.0.0.0:2381
    scheduler:
      extraArgs:
        bind-address: 0.0.0.0
  - |
    kind: KubeProxyConfiguration
    metricsBindAddress: 0.0.0.0
- role: worker
  labels:
    mynode: worker1
    topology.kubernetes.io/zone: ap-northeast-2a
- role: worker
  labels:
    mynode: worker2
    topology.kubernetes.io/zone: ap-northeast-2b
- role: worker
  labels:
    mynode: worker3
    topology.kubernetes.io/zone: ap-northeast-2c
networking:
  podSubnet: 10.10.0.0/16
  serviceSubnet: 10.200.1.0/24
EOT

kind create cluster --config kind-svc-1w.yaml --name myk8s --image kindest/node:v1.31.0

b. ๊ธฐ๋ณธ ํˆด ์„ค์น˜

docker exec -it myk8s-control-plane sh -c 'apt update && apt install tree psmisc lsof wget bsdmainutils bridge-utils net-tools ipset ipvsadm nfacct tcpdump ngrep iputils-ping arping git vim arp-scan -y'

1. prometheus stack ์„ค์น˜ (helm)

a. repository ์ถ”๊ฐ€ ๋ฐ ๊ตฌ์„ฑ

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

cat <<EOT > monitor-values.yaml
prometheus:
  prometheusSpec:
    podMonitorSelectorNilUsesHelmValues: false
    serviceMonitorSelectorNilUsesHelmValues: false
    nodeSelector:
      mynode: control-plane
    tolerations:
    - key: "node-role.kubernetes.io/control-plane"
      operator: "Equal"
      effect: "NoSchedule"


grafana:
  defaultDashboardsTimezone: Asia/Tokyo
  adminPassword: kans7969

  service:
    type: NodePort
    nodePort: 30002
  nodeSelector:
    mynode: control-plane
  tolerations:
  - key: "node-role.kubernetes.io/control-plane"
    operator: "Equal"
    effect: "NoSchedule"

defaultRules:
  create: false
alertmanager:
  enabled: false

EOT 

b. ์„ค์น˜

kubectl create ns monitoring
helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack --version 62.3.0 -f monitor-values.yaml --namespace monitoring

c. prometheus ์ฝ˜์†” ์ ‘์†

์ƒˆ๋กœ์šด ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด, port-forwarding์„ ํ†ตํ•ด ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes Service(1): ClusterIP/NodePort

  • kkumtree

2024-09-27T21:28:17+09:00

Kubernetes์˜ (์ปจ์…‰, ํ˜น์€ ์ฝ˜์…‰ํŠธ๋ผ ๋ถˆ๋ฆฌ๋Š”) Concepts ์ค‘์—์„œ Service์˜ ์ฃผ์ œ๋ฅผ ๋‹ค๋ค„๋ด…๋‹ˆ๋‹ค.

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Service Docs์— ๋ช…๋ฃŒํ•˜๊ฒŒ ์ ํ˜€์žˆ๊ธด ํ•˜์ง€๋งŒ,
๋‹จ์œ„ ๊ธฐ๋Šฅ์œผ๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐ  Pod๋Š” ๊ฒฐ๊ตญ ๊ฐœ๋ณ„์ ์ธ IP๋ฅผ ๊ฐ–๊ฒŒ๋˜๋Š”๋ฐ, Blue/Green ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ๋น„๋กฏํ•ด์„œ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ƒˆ๋กœ์šด Pod์˜ IP๋ฅผ ๋‹ค๋ฅธ Pod๊ฐ€ IP์ฃผ์†Œ ๊ทธ๋Œ€๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์–ด๋ ค์›Œ ์ค‘๊ฐ„์— ๋‘” ๊ฒƒ์œผ๋กœ ์ดํ•ด๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ ˆ๋ฒจ์—์„œ๋Š” ๊ฐ€์ •์šฉ ๊ณต์œ ๊ธฐ์—์„œ ๋™์ IP ํ™˜๊ฒฝ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด, DDNS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ, MAC ADDR ๊ธฐ์ค€์œผ๋กœ Static IP(DHCP๋ชจ๋“œ์‹œ ํ™œ์šฉ)๋ฅผ ์˜ˆ์•ฝํ•˜๋Š” ๊ฒƒ์„ ์„ž์€ ๊ทธ ์–ด๋”˜๊ฐ€๋กœ ๋‚ฉ๋“ํ•˜๊ณ  ๊ณ„์† ์จ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Calico Installation in Operator Mode

  • kkumtree

2024-09-18T20:52:16+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์Šคํ„ฐ๋”” ์ง„ํ–‰ ์‹œ, Manifests๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Calico๋ฅผ ์„ค์น˜ํ•˜์˜€์œผ๋‚˜,
Operator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ณผ์ œ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ์š”์ƒˆ ๋‹ค๋“ค Operator Framework๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งˆ๋ผ์ƒน๊ถˆ ๋ณถ๋“ฏ์ด
Operator๋ฅผ ์ง€์ง€๊ณ  ๋ณถ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ํ˜ธ๊ธฐ์‹ฌ์— ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ Manifests๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ ์‹œ, 50๊ฐœ์˜ ๋…ธ๋“œ[1]๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ Typha๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Calico ์„ค์น˜ ํ™˜๊ฒฝ : AWS EC2(No EKS), kubeadm[2], pod-network-cidr=172.16.0.0/16, IPIP Mode

1. Calico Routing Mode

์œ„์— ์–ธ๊ธ‰๋œ IPIP Mode๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด Calico์˜ Routing Mode๋ฅผ ํ›‘์„ ํ•„์š”์„ฑ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ๋“œ๊ฐ„ ํ†ต์‹  ์‹œ ๋…ธ๋“œ ๊ฐ„์— encapsulation์˜ ์ „๋žต์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋‰˜์–ด ๋ณผ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

Calico ๋ฐ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๊ตฌ์„ฑ

  • kkumtree

2024-09-15T18:40:22+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. Calico ์„ค์น˜

์Šคํ„ฐ๋””์—์„œ AWS CF ๋ฐ Calico ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ(Manifest)๋ฅผ ์ œ๊ณตํ•˜์˜€๊ธฐ์—, ์ด ๋ถ€๋ถ„์€ ์ฐธ๊ณ ๋งŒ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

CNI๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜๊ธฐ์— NotReady ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€, Calico ์„ค์น˜ํ•˜๋ฉด CoreDNS๊ฐ€ ์„ค์ •๋˜๋ฉฐ, Ready ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

  • Calico ์„ค์น˜ ์ „

    # Control Plane and worker nodes are not ready
    (โŽˆ|HomeLab:default) root@k8s-m:~# kubectl get nodes
    NAME     STATUS     ROLES           AGE   VERSION
    k8s-m    NotReady   control-plane   32m   v1.30.5
    k8s-w0   NotReady   <none>          31m   v1.30.5
    k8s-w1   NotReady   <none>          31m   v1.30.5
    k8s-w2   NotReady   <none>          31m   v1.30.5
    
    # Count for iptalbes rules for comparison
    (โŽˆ|HomeLab:default) root@k8s-m:~# iptables -t filter -L | wc -l
    50
    (โŽˆ|HomeLab:default) root@k8s-m:~# iptables -t nat -L | wc -l
    48
    
    (โŽˆ|HomeLab:default) root@k8s-m:~# kubectl get pod -A --sort-by=.metadata.creationTimestamp
    NAMESPACE     NAME                            READY   STATUS    RESTARTS   AGE
    kube-system   etcd-k8s-m                      1/1     Running   0          35m
    kube-system   kube-apiserver-k8s-m            1/1     Running   0          35m
    kube-system   kube-controller-manager-k8s-m   1/1     Running   0          35m
    kube-system   kube-scheduler-k8s-m            1/1     Running   0          35m
    kube-system   coredns-55cb58b774-bscbt        0/1     Pending   0          35m
    kube-system   coredns-55cb58b774-w22zq        0/1     Pending   0          35m
    kube-system   kube-proxy-5hgmn                1/1     Running   0          35m
    kube-system   kube-proxy-bnv77                1/1     Running   0          35m
    kube-system   kube-proxy-xf8q7                1/1     Running   0          35m
    kube-system   kube-proxy-hzsnk                1/1     Running   0          35m
    
  • Calico ์„ค์น˜ ํ›„

KIND ํ†บ์•„๋ณด๊ธฐ

  • kkumtree

2024-09-03T21:16:07+09:00

ํ†บ์•„๋ณด๋‹ค(์šฐ๋ฆฌ๋ง์ƒ˜) ๋Š” ์˜์™ธ๋กœ ํ‘œ์ค€์–ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

KIND ์„ค์น˜ ์ดํ›„์— ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. $KUBECONFIG

  • $KUBECONFIG ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ:
    ๋ณดํ†ต์€ ~/.kube ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    ํ™•์ธํ•ด๋ณด๋‹ˆ, config ๊ฐ’๊ณผ ๋”๋ถˆ์–ด, cache ๋””๋ ‰ํ† ๋ฆฌ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

    โฏ find ~/.kube -maxdepth 2 -type f -exec ls -ld "{}" \;
    -rw------- 1 kkumtree kkumtree 44 Sep  3 21:31 /home/kkumtree/.kube/config
    โฏ find ~/.kube -maxdepth 2 -type d -exec ls -ld "{}" \;
    drwxr-x--- 3 kkumtree kkumtree 4096 Sep  3 21:31 /home/kkumtree/.kube
    drwxr-x--- 4 kkumtree kkumtree 4096 Sep  3 21:11 /home/kkumtree/.kube/cache
    drwxr-x--- 5 kkumtree kkumtree 4096 Sep  3 21:28 /home/kkumtree/.kube/cache/discovery
    drwxr-x--- 3 kkumtree kkumtree 4096 Sep  3 21:28 /home/kkumtree/.kube/cache/http
    
  • KIND์šฉ $KUBECONFIG ์„ค์ •:
    ๊ทธ๋ž˜์„œ ์•„๋ž˜์ฒ˜๋Ÿผ, ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค๊ณ  $KUBECONFIG ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค์— KIND ์„ค์น˜ํ•˜๊ธฐ w/golang

  • kkumtree

2024-09-02T00:33:19+09:00

Helm ์„ค์น˜ ์ถ”๊ฐ€

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” kind(Kubernetes IN Docker)๋ฅผ Golang์„ ํ†ตํ•ด ์„ค์น˜ํ•˜๋ฉด์„œ ์•ฝ๊ฐ„์˜ ์†Œ?๋ž€์ด ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„๋งŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

1. KIND๋ž€?

  • ์•„๋ž˜ ์‚ฌ์ง„์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Docs/Initial_design์—์„œ ๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Concept

2. KIND ์„ค์น˜ํ•˜๊ธฐ

Linux์˜ ๊ฒฝ์šฐ, ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์„ค์น˜๊ฐ€ ์—†์–ด ๋ฐ”์ด๋„ˆ๋ฆฌ, ํ˜น์€ ์†Œ์Šค๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๋‘ ๋ฌธ์žฅ์— ๋ญ”๊ฐ€ ๋ฐœ๋™ํ•˜์—ฌ Go ์–ธ์–ด๋กœ ์„ค์น˜๋ฅผ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

If you are a go developer you may find the go install option convenient.

Otherwise we supply downloadable release binaries, community-managed packages, and a source installation guide.

3. ์„ค์น˜๋Š” ๋งค์šฐ ๊ฐ„๋‹จ

  • Go ๊ฐœ๋ฐœ์ž๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ž˜ ๊น”๋ ค์žˆ์—ˆ๊ณ  ๊ทธ GOPATH ํ™˜๊ฒฝ๋ณ€์ˆ˜๋„ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ์ผ์ด๋žŒ.
โฏ go version
go version go1.22.2 linux/amd64
โฏ go env GOPATH
/home/kkumtree/go
  • Docs๋ฅผ ์ž˜ ์ฝ๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
go install sigs.k8s.io/[email protected]

4. ์ด๊ฑธ๋กœ ๋ ์ผ๋ฆฌ๊ฐ€ ์—†๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

  • ๊ทธ๋Ÿฐ ๊ฑด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Go๋ฅผ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•ด๋ณธ ์ ์ด ์—†์œผ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ Go ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
โฏ env | grep go
PATH=/home/kkumtree/go/bin:/home/kkumtree/.tfenv/bin:/home/kkumtree/.tfenv/bin:/home/kkumtree/.tfenv/bin:/home/kkumtree/.sdkman/candidates/java/current/bin:/home/kkumtree/.nvm/versions/node/v18.15.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

(a์•ˆ) ~/.bashrc์— ์ •์  ์ง€์ •

  • ๋ณดํ†ต ์ด๋ ‡๊ฒŒํ•˜๋ฉด, ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
echo 'export PATH=$PATH:/home/kkumtree/go/bin' >> ~/.bashrc
# zsh์ผ ๊ฒฝ์šฐ) exec bash
source ~/.bashrc
# zsh์ผ ๊ฒฝ์šฐ, ๋‹ค์‹œ zsh๋กœ ๋ณต๊ท€) exec zsh

(b์•ˆ) ~/.profile์— ๋™์  ์ง€์ •

  • ๋ณ„๋‹ค๋ฅธ ์ด์œ ๋Š” ์—†๊ณ , profile์— ์กฐ๊ฑด ์„ค์ •์ด ๋˜์–ด์žˆ์–ด์„œ ์ถ”๊ฐ€ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰ 3์ค„๋งŒ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑ
# โฏ cat ~/.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

# set PATH so it includes user's gopath if it exists
if [ -x "/usr/bin/go" ] && [ -d "$(/usr/bin/go env GOPATH)/bin" ] ; then
    PATH="$(/usr/bin/go env GOPATH)/bin:$PATH"
fi

source ~/.profile๋กœ ์ ์šฉํ•œ ํ›„, kind version์œผ๋กœ ์„ค์น˜ ํ™•์ธ.

Jenkins ์ปจํ…Œ์ด๋„ˆ์—์„œ Host์˜ Docker ๋ฐ๋ชฌ ์‚ฌ์šฉํ•˜๊ธฐ

  • kkumtree

2024-09-01T09:02:15+09:00

์ตœ๊ทผ CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚œ์ด๋„๋ฅผ ์ƒ๊ฐํ•˜๋ฉด KH(Hardcore)NS๊ฐ€ ๋” ๋งž์•„๋ณด์ด์ง€๋งŒ…

k8s๊ฐ€ ์›Œ๋‚™ ์ธ๊ธฐ๊ฐ€ ๋งŽ๊ธฐ๋„ ํ•˜์ง€๋งŒ, Pod ๊ฐ„ ํ†ต์‹ ์—๋Š” ๋งŽ์€ ์ง€์‹์ด ํˆฌ์—ฌ๋˜๊ธฐ์— ์ด๋ฒˆ ๊ธฐํšŒ์— ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ํ™ฉ์ฑ 

์ฒซ ์ฃผ์ฐจ๋Š”, ๋ฐ”๋กœ Kubernetes์— ์ง„์ž…ํ•˜์ง€ ์•Š๊ณ  Containerization์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋จผ์ € ๋‹ค๋ค„์ฃผ์…จ์Šต๋‹ˆ๋‹ค.
์—ฌํƒ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ•์˜์™€ ๋‹ฌ๋ฆฌ 9์ฃผ ๊ฐ„ ๋งค์ฃผ ์ผ์š”์ผ์—๋งŒ ์ง„ํ–‰๋˜๋Š” ์„ธ์…˜์ธ๋ฐ๋„, ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์„ ๋‹ค์‹œ ์งš์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

1. AWS EC2 Instance ์…‹์—…

CloudFormation์„ ํ†ตํ•ด, EC2 ๋ฐ ์ œ๋ฐ˜์‚ฌํ•ญ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์ฃผ์…จ์Šต๋‹ˆ๋‹ค๋งŒ, ์ทจ๋ฏธ ์‚ผ์•„ Terraform ๋ณ€ํ™˜ ์ž‘์—…์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€ ๋ง์•˜์–ด์•ผํ–ˆ๋Š”๋ฐ… LoL

  1. <<
  2. <
  3. 1
  4. 2
  5. 3
  6. 4
  7. โ€ฆ
  8. 6
  9. >
  10. >>

kkumtree

Source code on GitHub

ยฉ 2025 kkumtree and contributors All rights reserved.
Licensed under
CC BY-NC-ND 4.0