0Pricing
DevOps Bootcamp · 강의

네트워크 액세스를 위한 서비스

다양한 Kubernetes 서비스 유형을 사용하여 클러스터 내부와 외부에 애플리케이션을 노출하세요.

네트워크 액세스를 위한 서비스은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

Kubernetes Service란 무엇인가요?

Kubernetes에서 Pod는 배포할 수 있는 가장 작은 단위입니다. Pod는 일시적으로 존재하도록 설계되었으므로 언제든 생성, 삭제 또는 교체될 수 있으며, 이 과정에서 새로운 IP 주소를 받는 경우가 많습니다.

이러한 동적인 특성 때문에 다른 애플리케이션이 Pod를 안정적으로 찾고 통신하기가 어렵습니다. 이때 Service가 사용됩니다!

네트워크 액세스를 위한 서비스 — 일러스트레이션 1

안정적인 네트워크 액세스 제공

Kubernetes Service는 여러 Pod를 위한 안정적인 네트워크 엔드포인트 역할을 합니다. Service 뒤에 있는 Pod가 바뀌더라도 변하지 않는 영구 주소라고 생각하시면 됩니다.

  • Service는 일관된 IP 주소와 DNS 이름을 제공합니다.
  • 여러 Pod에 트래픽을 분산할 수 있습니다.
  • Pod가 확장되거나 다시 시작되어도 지속적인 가용성을 보장합니다.

Pod를 Service에 연결하기

Service는 어느 Pod로 트래픽을 라우팅해야 하는지 어떻게 알까요? 레이블과 셀렉터를 사용합니다.

Pod를 생성할 때 app: my-app과 같은 키-값 쌍인 레이블을 지정합니다. 그러면 Service가 이러한 레이블과 일치하는 셀렉터를 지정하여 동적으로 연결합니다.

ClusterIP를 사용한 내부 액세스

ClusterIP는 기본 Service 유형이며 가장 널리 사용됩니다. Kubernetes 클러스터 내부에 안정적인 내부 IP 주소를 할당합니다. 이 IP는 클러스터 내부의 다른 Pod 또는 Node에서만 연결할 수 있습니다.

애플리케이션 내 다른 Service와만 통신하면 되는 백엔드 Service(예: 데이터베이스 또는 API)에 적합합니다.

ClusterIP Service 정의하기

다음은 ClusterIP Service를 정의한 간단한 YAML 예시입니다. selector가 app: my-backend 레이블과 일치하고, port가 targetPort에 매핑되는 방식을 확인해 보세요.

apiVersion: v1
kind: Service
metadata:
  name: my-backend-service
spec:
  selector:
    app: my-backend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080 # Port your application listens on
  type: ClusterIP

NodePort를 사용한 외부 액세스

NodePort Service는 각 Node의 IP 주소에서 고정 포트로 애플리케이션을 노출합니다. 따라서 모든 Node의 IP와 지정된 포트를 사용하여 클러스터 외부에서 Service에 액세스할 수 있습니다.

nodePort 값은 일반적으로 30000~32767 범위입니다. 간단한 외부 액세스나 개발 환경에 유용합니다.

NodePort Service 정의하기

NodePort를 통해 Service를 외부에 노출하려면 type: NodePort를 설정합니다. 선택적으로 nodePort를 지정할 수 있으며, 지정하지 않으면 Kubernetes가 하나를 선택합니다.

apiVersion: v1
kind: Service
metadata:
  name: my-frontend-service
spec:
  selector:
    app: my-frontend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80 # Port your application listens on
      nodePort: 30080 # Optional: specific port on the Node
  type: NodePort

클라우드 Load Balancer

LoadBalancer Service 유형은 클라우드 환경을 위해 설계되었습니다. 이 유형의 Service를 생성하면 클라우드 제공업체(AWS, GCP, Azure 등)가 외부 Load Balancer를 자동으로 프로비저닝합니다.

이 Load Balancer에는 공용 IP 주소가 할당되고 외부 트래픽이 Pod로 직접 라우팅됩니다. SSL 종료와 같은 고급 기능이 제공되는 경우도 많습니다.

LoadBalancer Service 정의하기

클라우드 Kubernetes 클러스터에서 인터넷에 공개되는 애플리케이션에는 LoadBalancer가 가장 적합한 선택입니다. 외부 액세스 관리를 크게 간소화합니다.

apiVersion: v1
kind: Service
metadata:
  name: my-web-app-lb
spec:
  selector:
    app: my-web-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

적절한 Service 선택하기

팀에서 새로운 애플리케이션을 Kubernetes에 배포하려고 합니다. 다음 시나리오를 생각해 보세요.

  • 클러스터 내부의 다른 Service에서만 액세스하면 되는 백엔드 API
  • 인터넷에서 액세스할 수 있어야 하며 클라우드 제공업체(AWS, GCP, Azure)에 배포하는 프런트엔드 웹 서버

프런트엔드 웹 서버에 가장 적합한 Service 유형은 무엇인가요?

복습: 네트워크 액세스를 위한 Service

Kubernetes Service가 동적인 Pod에 안정적인 네트워크 액세스를 제공한다는 것을 배웠습니다. 애플리케이션이 안정적으로 통신하려면 Service가 반드시 필요합니다.

  • ClusterIP: 클러스터 내부 통신에만 사용됩니다.
  • NodePort: 각 Node의 IP에서 고정 포트로 Service를 노출하며, 특정 용도에서는 외부에서 액세스할 수 있습니다.
  • LoadBalancer: 클라우드 제공업체와 통합하여 외부 Load Balancer를 프로비저닝하고 공개 액세스를 제공합니다.

적절한 Service 유형을 선택하는 것은 애플리케이션의 노출 방식을 제어하는 데 매우 중요합니다.

자주 묻는 질문

“네트워크 액세스를 위한 서비스” 강의는 무료인가요?

네 — “네트워크 액세스를 위한 서비스” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“네트워크 액세스를 위한 서비스”에서 뭘 배우나요?

다양한 Kubernetes 서비스 유형을 사용하여 클러스터 내부와 외부에 애플리케이션을 노출하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“네트워크 액세스를 위한 서비스” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 상태 비저장 앱을 위한 배포
  2. 네트워크 액세스를 위한 서비스
  3. ConfigMaps 및 Secrets
  4. Ingress와 외부 라우팅
← DevOps Bootcamp(으)로 돌아가기