1.9. 보안 및 교통 관리


관리자는 ClusterIP , NodePort , LoadBalaner 와 같은 서비스 유형과 Ingress , Route 와 같은 API 리소스를 사용하여 애플리케이션을 외부 트래픽에 노출하고 네트워크 연결을 보호할 수 있습니다. Ingress Operator와 CNO(Cluster Network Operator)는 이러한 서비스와 리소스를 구성하고 관리하는 데 도움이 됩니다. Ingress Operator는 하나 이상의 Ingress Controller를 배포하고 관리합니다. 이러한 컨트롤러는 클러스터 내부의 서비스로 외부 HTTP 및 HTTPS 트래픽을 라우팅합니다. CNO는 Pod 네트워크, 서비스 네트워크, DNS를 포함한 클러스터 네트워크 구성 요소를 배포하고 관리합니다.

1.9.1. 애플리케이션 노출

ClusterIP는 클러스터 내부의 내부 IP에 서비스를 노출시켜 클러스터 내의 다른 서비스에서만 클러스터에 접근할 수 있도록 합니다. NodePort 서비스 유형은 각 노드의 IP에 있는 정적 포트에서 서비스를 제공합니다. 이 서비스 유형은 외부 트래픽이 서비스에 액세스하는 것을 허용합니다. 로드 밸런서는 일반적으로 MetalLB를 사용하는 클라우드 또는 베어 메탈 환경에서 사용됩니다. 이 서비스 유형은 외부 트래픽을 서비스로 라우팅하는 외부 부하 분산 장치를 제공합니다. 베어메탈 환경에서 MetalLB는 VIP와 ARP 공지 또는 BGP 공지를 사용합니다.

Ingress는 부하 분산, SSL/TLS 종료, 이름 기반 가상 호스팅과 같은 서비스에 대한 외부 액세스를 관리하는 API 객체입니다. NGINX나 HAProxy와 같은 Ingress Controller는 Ingress API를 구현하고 사용자 정의 규칙에 따라 트래픽 라우팅을 처리합니다.

1.9.2. 연결 보안

Ingress 컨트롤러는 백엔드 서비스로 전달하기 전에 들어오는 SSL/TLS 트래픽을 해독하기 위해 SSL/TLS 종료를 관리합니다. SSL/TLS 종료는 애플리케이션 포드에서 암호화/복호화 프로세스의 부담을 덜어줍니다. TLS 인증서를 사용하여 클라이언트와 서비스 간 트래픽을 암호화할 수 있습니다. cert-manager 와 같은 도구를 사용하면 인증서 배포 및 갱신을 자동화하여 인증서를 관리할 수 있습니다.

SNI 필드가 있는 경우 경로는 TLS 트래픽을 포드로 전달합니다. 이 프로세스를 통해 TCP를 실행하는 서비스가 HTTP/HTTPS뿐만 아니라 TLS를 사용하여 노출될 수 있습니다. 사이트 관리자는 인증서를 중앙에서 관리하고 애플리케이션 개발자가 허가 없이도 개인 키를 읽을 수 있도록 허용할 수 있습니다.

Route API는 클러스터 관리 인증서를 사용하여 라우터-포드 트래픽을 암호화할 수 있도록 합니다. 이를 통해 외부 인증서는 중앙에서 관리되고 내부 인증서는 암호화된 상태로 유지됩니다. 애플리케이션 개발자는 자신의 애플리케이션에 대한 고유한 개인 키를 받습니다. 이러한 키는 포드에 비밀 키로 장착될 수 있습니다.

네트워크 제어는 포드가 서로 및 다른 네트워크 엔드포인트와 통신할 수 있는 방법에 대한 규칙을 정의합니다. 이렇게 하면 클러스터 내의 트래픽 흐름을 제어하여 보안이 강화됩니다. 이러한 제어는 네트워크 플러그인 수준에서 구현되어 포드 간에 허용된 트래픽 흐름만 보장됩니다.

역할 기반 액세스 제어(RBAC)는 클러스터 내의 리소스에 누가 액세스할 수 있는지 권한을 관리하고 제어합니다. 서비스 계정은 API에 액세스하는 포드에 대한 ID를 제공합니다. RBAC를 사용하면 각 Pod가 수행할 수 있는 작업을 세부적으로 제어할 수 있습니다.

1.9.3. 예: 애플리케이션 노출 및 연결 보안

이 예에서 클러스터에서 실행되는 웹 애플리케이션은 외부 사용자가 액세스해야 합니다.

  1. 서비스를 만들고 요구 사항에 맞는 서비스 유형을 사용하여 애플리케이션을 서비스로 노출합니다.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-web-app
    spec:
      type: LoadBalancer
      selector:
        app: my-web-app
      ports:
      - port: 80
        targetPort: 8080
  2. HTTP/HTTPS 트래픽을 관리하고 서비스로 라우팅하기 위해 Ingress 리소스를 정의합니다.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-web-app-ingress
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
      - host: mywebapp.example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-web-app
                port:
                  number: 80
  3. 보안되고 암호화된 연결을 보장하려면 Ingress에 TLS를 구성하세요.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-web-app-ingress
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      tls:
      - hosts:
        - mywebapp.example.com
        secretName: my-tls-secret
      rules:
      - host: mywebapp.example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-web-app
                port:
                  number: 80

1.9.4. 서비스 유형과 API 리소스 중에서 선택

서비스 유형과 API 리소스는 애플리케이션을 노출하고 네트워크 연결을 보호하는 데 다양한 이점을 제공합니다. 적절한 서비스 유형이나 API 리소스를 활용하면 애플리케이션이 노출되는 방식을 효과적으로 관리하고 내부 및 외부 클라이언트 모두에게 안전하고 안정적인 액세스를 보장할 수 있습니다.

OpenShift Container Platform은 다음과 같은 서비스 유형과 API 리소스를 지원합니다.

  • 서비스 유형

    • ClusterIP 는 내부적으로만 노출되도록 설계되었습니다. 설정이 쉽고 클러스터 내 서비스에 액세스하기 위한 안정적인 내부 IP 주소를 제공합니다. ClusterIP 는 클러스터 내 서비스 간 통신에 적합합니다.
    • NodePort는 각 노드의 IP에서 정적 포트로 서비스를 노출하여 외부 액세스를 허용합니다. 설정이 간단하고 개발 및 테스트에 유용합니다. NodePort 는 클라우드 공급자의 로드 밸런서가 필요 없이 간단한 외부 액세스에 적합합니다.
    • LoadBalancer는 트래픽을 여러 노드에 분산하기 위해 외부 로드 밸런서를 자동으로 프로비저닝합니다. 안정적이고 가용성이 높은 액세스가 필요한 프로덕션 환경에 이상적입니다.
    • ExternalName은 서비스를 외부 DNS 이름에 매핑하여 클러스터 외부의 서비스에 해당 서비스의 DNS 이름을 사용하여 액세스할 수 있도록 합니다. 외부 서비스나 레거시 시스템을 클러스터와 통합하는 데 유용합니다.
    • 헤드리스 서비스는 안정적인 ClusterIP를 제공하지 않고 Pod IP 목록을 반환하는 DNS 이름입니다. 이 기능은 상태 저장 애플리케이션이나 개별 포드 IP에 직접 액세스해야 하는 시나리오에 이상적입니다.
  • api-resources

    • Ingress는 부하 분산, SSL/TLS 종료, 이름 기반 가상 호스팅을 지원하는 등 HTTP 및 HTTPS 트래픽 라우팅에 대한 제어 기능을 제공합니다. 서비스만 사용하는 것보다 더 유연하며 여러 도메인과 경로를 지원합니다. 복잡한 라우팅이 필요한 경우에는 Ingress가 이상적입니다.
    • Route는 Ingress 와 비슷하지만 TLS 재암호화 및 패스스루를 포함한 추가 기능을 제공합니다. 서비스를 외부에 노출하는 과정이 간소화됩니다. Route는 통합 인증서 관리와 같은 고급 기능이 필요할 때 가장 적합합니다.

외부 트래픽에 서비스를 노출하는 간단한 방법이 필요한 경우 RouteIngress가 가장 좋은 선택일 수 있습니다. 이러한 리소스는 네임스페이스 관리자나 개발자가 관리할 수 있습니다. 가장 쉬운 방법은 경로를 만들고, 외부 DNS 이름을 확인한 다음, 외부 DNS 이름을 가리키는 CNAME을 갖도록 DNS를 구성하는 것입니다.

HTTP/HTTPS/TLS의 경우 Route 또는 Ingress로 충분합니다. 그 외의 것은 더 복잡하며 클러스터 관리자가 포트에 액세스할 수 있는지 또는 MetalLB가 구성되어 있는지 확인해야 합니다. LoadBalancer 서비스는 클라우드 환경이나 적절하게 구성된 베어 메탈 환경에서도 사용할 수 있는 옵션입니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동