1.9. 보안 및 트래픽 관리


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

1.9.1. 애플리케이션 노출

ClusterIP는 클러스터 내의 내부 IP에 서비스를 노출하여 클러스터 내의 다른 서비스에서만 클러스터에 액세스할 수 있도록 합니다. NodePort 서비스 유형은 각 노드의 IP의 정적 포트에 서비스를 노출합니다. 이 서비스 유형을 사용하면 외부 트래픽이 서비스에 액세스할 수 있습니다. 로드 밸런서는 일반적으로 MetalLB를 사용하는 클라우드 또는 베어 메탈 환경에서 사용됩니다. 이 서비스 유형은 외부 트래픽을 서비스로 라우팅하는 외부 로드 밸런서를 프로비저닝합니다. 베어 메탈 환경에서 MetalLB는 VIP 및 ARP 알림 또는 BGP 공지를 사용합니다.

Ingress는 로드 밸런싱, SSL/TLS 종료 및 이름 기반 가상 호스팅과 같은 서비스에 대한 외부 액세스를 관리하는 API 오브젝트입니다. NGINX 또는 HAProxy와 같은 Ingress 컨트롤러는 Ingress API를 구현하고 사용자 정의 규칙을 기반으로 트래픽 라우팅을 처리합니다.

1.9.2. 연결 보안

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

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

Route API를 사용하면 클러스터 관리 인증서로 라우터 간 트래픽 암호화를 사용할 수 있습니다. 이렇게 하면 내부 브릿지가 암호화되어 유지되는 동안 외부 인증서를 중앙에서 관리할 수 있습니다. 애플리케이션 개발자는 애플리케이션에 고유한 개인 키를 받습니다. 이러한 키는 Pod에 시크릿으로 마운트할 수 있습니다.

네트워크 제어는 Pod가 서로 및 기타 네트워크 끝점과 통신할 수 있는 방법에 대한 규칙을 정의합니다. 이렇게 하면 클러스터 내에서 트래픽 흐름을 제어하여 보안이 향상됩니다. 이러한 제어는 네트워크 플러그인 수준에서 구현되어 Pod 간에 허용되는 트래픽만 이동합니다.

RBAC(역할 기반 액세스 제어)는 권한을 관리하고 클러스터 내에서 리소스에 액세스할 수 있는 사용자를 제어합니다. 서비스 계정은 API에 액세스하는 Pod의 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
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  3. 안전하고 암호화된 연결을 보장하도록 수신에 대해 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
    Copy to Clipboard Toggle word wrap

1.9.4. 서비스 유형 및 API 리소스 간 선택

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

OpenShift Container Platform에서는 다음 서비스 유형 및 API 리소스를 지원합니다.

  • 서비스 유형

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

    • Ingress 는 로드 밸런싱, SSL/TLS 종료 및 이름 기반 가상 호스팅 지원을 포함하여 라우팅 HTTP 및 HTTPS 트래픽을 제어합니다. 서비스 자체보다 유연하며 여러 도메인 및 경로를 지원합니다. 복잡한 라우팅이 필요한 경우 Ingress 가 이상적입니다.
    • 경로는 Ingress 와 유사하지만 TLS 재암호화 및 패스스루를 포함한 추가 기능을 제공합니다. 서비스 노출 프로세스를 외부에서 단순화합니다. 경로는 통합 인증서 관리와 같은 고급 기능이 필요한 경우에 가장 적합합니다.

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

HTTP/HTTPS/TLS의 경우 경로 또는 Ingress 로 충분합니다. 다른 모든 것은 더 복잡하며 포트를 액세스하거나 MetalLB를 구성하려면 클러스터 관리자가 필요합니다. LoadBalancer 서비스는 클라우드 환경의 옵션이거나 적절하게 구성된 베어 메탈 환경이기도 합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat