์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋…ธ์ถœ

๊ฐœ์š”

Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ๋ฉ”์‹œ์˜ ์ผ๋ถ€๋กœ ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ(ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์— ์žˆ๋Š” ๋ฌผ๋ฆฌ์  ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์ „์†กํ•ด Cloud Service Mesh๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ์ถ”๊ฐ€๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ์œผ๋กœ ์ธ๊ทธ๋ ˆ์Šค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

์ด ๋ฌธ์„œ์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Cloud Service Mesh๊ฐ€ ์„ค์น˜๋œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ

  • ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๋…ธ๋“œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ. ์ด ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๊ฐ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์™ธ๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ

์‚ฌ์šฉํ•˜๋ ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์›Œํฌ์Šคํ…Œ์ด์…˜์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. kubectl ๋„๊ตฌ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ ,

    export ASM_INGRESSGATEWAY_NAMESPACE=asm-ingressgateway
    export ASM_INGRESSGATEWAY_DEPLOYMENT_NAME=asm-ingressgateway
    export ASM_INGRESSGATEWAY_SERVICE_NAME=asm-ingressgateway
    export ASM_INGRESSGATEWAY_NODE_LABEL=asm-ingressgateway
    
  2. ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP address๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    export EXTERNAL_LB_IP_ADDRESS=EXTERNAL_LB_IP_ADDRESS
    
  3. [\์„ ํƒ์‚ฌํ•ญ/] ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋…ธ๋“œ์— ๋ผ๋ฒจ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํŠน์ • ๋…ธ๋“œ์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

    kubectl label nodes INGRESSGATEWAY_NODE_IP ${ASM_INGRESSGATEWAY_NODE_LABEL}=
    
    • INGRESSGATEWAY_NODE_IP: ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. kubectl ๋ช…๋ น์–ด๋ฅผ ๋ณด์œ ํ•œ ์ธ๊ทธ๋ ˆ์Šค ๋…ธ๋“œ ์ˆ˜๋งŒํผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋งŒ๋“ค๊ธฐ

์ด ์„น์…˜์˜ ์•ˆ๋‚ด๋ฅผ ์™„๋ฃŒํ•˜๊ธฐ ์ „์— ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌํ˜„์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌํ˜„ ์‹๋ณ„์˜ ์•ˆ๋‚ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    kubectl create namespace ${ASM_INGRESSGATEWAY_NAMESPACE}
    
  1. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์‚ฝ์ž…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    ๊ด€๋ฆฌํ˜•(TD)

    1. ๊ธฐ๋ณธ ์‚ฝ์ž… ๋ผ๋ฒจ์„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    kubectl label namespace ${ASM_INGRESSGATEWAY_NAMESPACE} \
        istio.io/rev- istio-injection=enabled --overwrite
    

    ๊ด€๋ฆฌํ˜•(Istiod)

    ๊ถŒ์žฅ: ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๊ธฐ๋ณธ ์‚ฝ์ž… ๋ผ๋ฒจ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

      kubectl label namespace ${ASM_INGRESSGATEWAY_NAMESPACE} \
          istio.io/rev- istio-injection=enabled --overwrite
    

    ๊ด€๋ฆฌํ˜• Istiod ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ด ์žˆ๋Š” ๊ธฐ์กด ์‚ฌ์šฉ์ž: ๊ธฐ๋ณธ ์‚ฝ์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ๋ฒ„์ „ ๊ธฐ๋ฐ˜ ์‚ฝ์ž…์€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ถœ์‹œ ์ฑ„๋„์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

      kubectl -n istio-system get controlplanerevision
      

      ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

      NAME                AGE
      asm-managed-rapid   6d7h
      

      ์ฐธ๊ณ : ์œ„ ๋ชฉ๋ก์— ๋‘ ๊ฐœ์˜ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๋ฒ„์ „์ด ํ‘œ์‹œ๋˜๋ฉด ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฌ๋Ÿฌ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ์ฑ„๋„์„ ๋‘๋Š” ๋ฐฉ์‹์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

      ์ถœ๋ ฅ์—์„œ NAME ์—ด ์•„๋ž˜์˜ ๊ฐ’์€ Cloud Service Mesh ๋ฒ„์ „์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ถœ์‹œ ์ฑ„๋„์— ํ•ด๋‹นํ•˜๋Š” ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    2. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฒ„์ „ ๋ผ๋ฒจ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

      kubectl label namespace ${ASM_INGRESSGATEWAY_NAMESPACE} \
          istio-injection- istio.io/rev=REVISION_LABEL --overwrite
      

    ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด

    ๊ถŒ์žฅ: ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๊ธฐ๋ณธ ์‚ฝ์ž… ๋ผ๋ฒจ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

      kubectl label namespace ${ASM_INGRESSGATEWAY_NAMESPACE} \
          istio.io/rev- istio-injection=enabled --overwrite
    

    ๊ธฐ๋ณธ ์‚ฝ์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ๋ฒ„์ „ ๊ธฐ๋ฐ˜ ์‚ฝ์ž…์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ istiod์—์„œ ๋ฒ„์ „ ๋ผ๋ฒจ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

      kubectl get deploy -n istio-system -l app=istiod -o \
         jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
      
    2. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฒ„์ „ ๋ผ๋ฒจ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด์—์„œ REVISION_LABEL์€ ์ด์ „ ๋‹จ๊ณ„์—์„œ ํ™•์ธํ•œ istiod ๋ฒ„์ „ ๋ผ๋ฒจ์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

      kubectl label namespace ${ASM_INGRESSGATEWAY_NAMESPACE} \
          istio-injection- istio.io/rev=REVISION_LABEL --overwrite
      
  2. ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

    kubectl --namespace ${ASM_INGRESSGATEWAY_NAMESPACE} apply --filename https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-samples/main/docs/ingress-gateway-external-lb/ingress-gateway.yaml
    

    ์˜ˆ์ƒ ์ถœ๋ ฅ:

    serviceaccount/asm-ingressgateway created
    role.rbac.authorization.k8s.io/asm-ingressgateway created
    rolebinding.rbac.authorization.k8s.io/asm-ingressgateway created
    deployment.apps/asm-ingressgateway created
    service/asm-ingressgateway created
    poddisruptionbudget.policy/asm-ingressgateway created
    horizontalpodautoscaler.autoscaling/asm-ingressgateway created
    
  3. ingressgateway ์„œ๋น„์Šค๋ฅผ ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ IP ์ฃผ์†Œ๋กœ ํŒจ์น˜ํ•ฉ๋‹ˆ๋‹ค.

    cat <<EOF > asm-external-ip-patch.yaml
    spec:
      externalIPs:
        - ${EXTERNAL_LB_IP_ADDRESS}
      loadBalancerIP: ${EXTERNAL_LB_IP_ADDRESS}
    EOF
    
    kubectl --namespace ${ASM_INGRESSGATEWAY_NAMESPACE} patch service/${ASM_INGRESSGATEWAY_SERVICE_NAME} --patch "$(cat asm-external-ip-patch.yaml)"
    
  4. [์„ ํƒ์‚ฌํ•ญ] ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋…ธ๋“œ ๋ผ๋ฒจ ์–ดํ”ผ๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ingressgateway ๋ฐฐํฌ๋ฅผ ํŒจ์น˜ํ•ฉ๋‹ˆ๋‹ค.

    cat <<EOF > asm-ingress-node-label-patch.yaml
    spec:
      template:
        spec:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: ${ASM_INGRESSGATEWAY_NODE_LABEL}
                    operator: Exists
    EOF
    
    kubectl --namespace ${ASM_INGRESSGATEWAY_NAMESPACE} patch deployment/${ASM_INGRESSGATEWAY_DEPLOYMENT_NAME} --patch "$(cat asm-ingress-node-label-patch.yaml)"
    

์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์„ค์ •

์ด ์„น์…˜์—์„œ๋Š” ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์™€ ์—ฐ๊ฒฐ๋˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด Service ํฌํŠธ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ

  1. NodePorts๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    export HTTP_INGRESS_PORT=$(kubectl --namespace ${ASM_INGRESSGATEWAY_NAMESPACE} get service/${ASM_INGRESSGATEWAY_SERVICE_NAME} --output jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
    export HTTPS_INGRESS_PORT=$(kubectl --namespace ${ASM_INGRESSGATEWAY_NAMESPACE} get service/${ASM_INGRESSGATEWAY_SERVICE_NAME} --output jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
    export STATUS_PORT=$(kubectl --namespace ${ASM_INGRESSGATEWAY_NAMESPACE} get service/${ASM_INGRESSGATEWAY_SERVICE_NAME} --output jsonpath='{.spec.ports[?(@.name=="status-port")].nodePort}')
    
  2. NodePorts๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    echo HTTP_INGRESS_PORT=${HTTP_INGRESS_PORT}
    echo HTTPS_INGRESS_PORT=${HTTPS_INGRESS_PORT}
    echo STATUS_PORT=${STATUS_PORT}
    

์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ

์ด์ „ ๋‹จ๊ณ„์— ํ‘œ์‹œ๋œ NodePorts๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ์—์„œ ์ƒํƒœ ์ ๊ฒ€์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    hosts:    CLUSTER_NODE_IP
    Protocol: HTTP
    Port:     STATUS_PORT
    Path:     /healthz/ready
    
    • CLUSTER_NODE_IP: ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋…ธ๋“œ์˜ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์ด IP ์ฃผ์†Œ๋Š” ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์€ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๋‹น ํ•œ ๋ฒˆ์”ฉ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • STATUS_PORT: ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์˜ ์ƒํƒœ API๊ฐ€ ๋…ธ์ถœ๋˜๋Š” NodePort์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ด ์ •๋ณด๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

  2. HTTP ๋ฐ HTTPS ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•˜๋„๋ก ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ๋…ธ๋“œ ํ’€์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ 80(HTTP) ๋ฐ ํฌํŠธ 443(HTTPS)์—์„œ ํŠธ๋ž˜ํ”ฝ์— ๋‹ค์Œ IP:PORT ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    80  ->  CLUSTER_NODE_IP:HTTP_INGRESS_PORT
    443 ->  CLUSTER_NODE_IP:HTTPS_INGRESS_PORT
    
    • CLUSTER_NODE_IP: ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋…ธ๋“œ์˜ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์ด IP ์ฃผ์†Œ๋Š” ์™ธ๋ถ€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์—์„œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์€ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๋‹น ํ•œ ๋ฒˆ์”ฉ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • HTTP_INGRESS_PORT: ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์˜ HTTP ํŠธ๋ž˜ํ”ฝ์ด ๋…ธ์ถœ๋˜๋Š” NodePort์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ด ์ •๋ณด๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

    • HTTPS_INGRESS_PORT: ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์˜ HTTPS ํŠธ๋ž˜ํ”ฝ์ด ๋…ธ์ถœ๋˜๋Š” NodePort์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ด ์ •๋ณด๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ ์ƒํƒœ ์ ๊ฒ€์„ ํ†ต๊ณผํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„