istio egress 게이트웨이 컬이 작동하지 않습니까? 문제 해결 안내서 및 수정

게시 됨: 2025-02-03

Istio Egress 게이트웨이를 통해 컬 요청을 받기 위해 고군분투하고 있습니까? 당신은 혼자가 아닙니다. Kubernetes 및 Istio와 함께 일하는 많은 개발자들은 아웃 바운드 트래픽이 차단되거나 TLS 오류가 발생하지 않거나 외부 서비스에 액세스하려고 할 때 응답이없는 문제가 발생합니다.

Istio Egress 게이트웨이는 Kubernetes 클러스터 내부의 서비스에서 외부 트래픽을 처리하는 데 중요한 구성 요소입니다. 이는 제어 된 출구 지점, 보안 관리, 라우팅 및 나가는 요청에 대한 정책 집행 역할을합니다. 그러나 잘못 구성되면 아웃 바운드 연결을 차단하거나 HTTP 503 오류를 일으키거나 TLS 발생이 올바르게 작동하지 않도록 할 수 있습니다.

이 안내서는 CURL 요청이 실패한 이유를 식별하고 연결 문제를 디버그하는 방법을 보여주고 Istio의 Egress Gateway를 통해 아웃 바운드 커뮤니케이션을 복원하기위한 입증 된 수정 사항을 제공하는 데 도움이됩니다.

컬이 Istio Egress 게이트웨이에서 작동하지 않는 이유는 무엇입니까?

컬이 Istio Egress 게이트웨이에서 작동하지 않는 이유는 무엇입니까?

istio egress 게이트웨이를 통해 트래픽을 라우팅 할 때 컬 명령이 실패하면 몇 가지 가능한 원인이 있습니다.

  • 외부 서비스를위한 서비스 중지 없음 : 기본적으로 Istio는 서비스를 통해 명시 적으로 허용되지 않는 한 아웃 바운드 트래픽을 차단합니다 . 이 항목이 없으면 외부 요청이 실패합니다.
  • 잘못된 대상 룰 구성 : 대상 룰은 TLS 설정을 포함하여 트래픽 처리 방법을 정의합니다. 서비스 와 일치하지 않으면 연결이 실패 할 수 있습니다.
  • 아웃 바운드 트래픽을 차단하는 네트워크 정책 : Kubernetes NetworkPolicies 또는 방화벽 규칙은 추방 트래픽을 방지 할 수 있습니다.
  • TLS 원산지 문제 : 외부 서비스에 TLS가 필요하지만 ISTIO가 올바르게 구성되지 않으면 SSL 오류로 요청이 실패 할 수 있습니다.
  • 잘못 구성된 VirtualService : 가상 서비스가 트래픽을 잘못 라우팅하여 컬을 타임 아웃하거나 HTTP 503 오류를 반환 할 수 있습니다.
  • 방화벽 외부 요청 차단 : 일부 클라우드 제공 업체는 기본적으로 아웃 바운드 연결을 차단하므로 명시 적 허용 규칙이 필요합니다.

수정을 적용하기 전에 어떤 구성 요소가 고장을 일으키는 지 이해하는 것이 필수적입니다.

istio egress 게이트웨이 컬 문제를 해결하는 방법

Curl이 Istio의 Egress Gateway를 통해 작동하지 않는 경우 단계별 수정 사항을 따라 문제를 해결하십시오.

1. ServiceEntry 구성을 확인하십시오

ISTIO는 외부 서비스 와의 커뮤니케이션을 허용하기 위해 서비스가 필요합니다. 그것 없이는 모든 나가는 트래픽이 차단됩니다.

  • 기존 ServiceEntries 나열하려면 다음 명령을 실행하십시오.
  • 외부 서비스가 목록에서 누락 된 경우 다음과 같은 서비스를 작성하십시오 : Apiversion : Networking.istio.io/v1alpha3
    친절 : ServiceTry
    메타 데이터 :
    이름 : 외부 -API
    투기:
    호스트 :
    - example.com
    위치 : mesh_external
    포트 :
    - 숫자 : 443
    이름 : https
    프로토콜 : HTTPS
  • 구성 및 테스트 컬을 다시 적용하십시오.

2. Egress 게이트웨이 배포를 확인하십시오

Egress Gateway Pod는 외부 트래픽이 올바르게 흐르려면 실행되어야합니다. 상태 확인 :

  • 모든 egress 게이트웨이 포드 나열 : Kubectl get pods -n istio -system | grep egress
  • 포드가 실행되지 않으면 istio를 다시 시작하거나 올바른 egressgateway 구성을 적용하십시오.

egress 게이트웨이를 수동으로 배포하려면 다음 yaml을 사용하십시오.

Apversion : Networking.istio.io/v1alpha3
친절 : 게이트웨이
메타 데이터 :
이름 : istio-egressgateway
투기:
선택자:
Istio : egressgateway
서버 :
- 포트 :
번호 : 443
이름 : https
프로토콜 : HTTPS
호스트 :
- example.com

3. 방화벽 및 네트워크 정책을 확인하십시오

많은 Kubernetes 클러스터 에는 아웃 바운드 연결을 차단 하는 방화벽 또는 네트워크 정책이 있습니다.

  • 다음 명령을 실행하여 ISTIO에 영향을 미치는 모든 네트워크 폴리 픽을 확인하십시오 : Kubectl Get NetworkPolicy -a
  • 엄격한 추방 규칙이있는 경우 Istio의 Egress Gateway에서 아웃 바운드 연결을 허용하도록 업데이트하십시오.

4. 디버그 ISTIO EGRESS LOGS

Istio의 Egress Gateway 에서 오류를 식별하려면 디버그 로깅을 활성화하고 로그를 검사하십시오.

  • 디버그 모델로 로깅 설정 : istioctl proxy-config log <egress-gateway-pod>-레벨 디버그
  • egress 게이트웨이의 페치 로그 : kubectl logs <egress-gateway-pod> -n istio-system
  • 연결 오류, 라우팅 불일치 또는 TLS 핸드 셰이크 고장을 찾으십시오.

5. TLS 원산지 문제를 수정하십시오

외부 서비스에 HTTP가 필요한 경우 Istio가 TLS 출신을 올바르게 처리하고 있는지 확인하십시오.

  • TLS : Apiversion : Networking.istio.io/v1alpha3 을 활성화하려면 대상을 수정하십시오
    종류 : 대상 룰
    메타 데이터 :
    이름 : 외부 -API-DR
    투기:
    호스트 : example.com
    교통 정책 :
    TLS :
    모드 : 간단합니다
  • 구성 및 테스트 컬을 다시 적용하십시오.

6. 일반적인 오류 및 수정

오류 메시지 가능한 원인 해결책
curl: (56) Recv failure: Connection reset by peer 추방 트래픽이 차단됩니다 외부 서비스에 서비스를 추가하십시오
curl: (35) SSL connect error TLS 핸드 셰이크가 실패했습니다 대상 룰에서 TLS 출신을 확인하십시오
no healthy upstream 외부 서비스는 도달 할 수 없습니다 네트워크 정책 및 DNS 해상도를 확인하십시오
connection refused Envoy 프록시는 요청을 전달하지 않습니다 로그를 디버그하고 VirtualService 라우팅을 확인하십시오

외부 API 통화를위한 Istio Egress 게이트웨이 최적화

외부 API 통화를위한 Istio Egress 게이트웨이 최적화

Istio의 Egress Gateway를 통해 트래픽을 보낼 때 성능과 신뢰성을 향상 시키려면 다음과 같은 모범 사례를 따르십시오.

  • 올바른 DestinationRules를 사용하여 올바른 로드 밸런싱 정책을 정의하십시오.
  • 임시 네트워크 문제로 인한 실패를 방지하기 위해 시간 초과 및 검색을 적용하십시오 .
  • Kubernetes에서 일부 외부 서비스가 올바르게 해결되지 않을 수 있으므로 DNS 해상도가 클러스터 내부에서 작동하는지 확인하십시오 .
  • Kiali 및 Grafana 와 같은 Istio 원격 측정 도구를 사용하여 Egress 트래픽을 모니터링하십시오 .
  • 보안 모범 사례를 따르면 신뢰할 수있는 트래픽 만 Egress 게이트웨이를 통해 허용됩니다.

최종 문제 해결 단계

  • 방화벽 규칙 이 아웃 바운드 트래픽을 허용하는지 확인하십시오.
  • Istio Egress 게이트웨이 로그에서 오류가 있는지 확인하십시오.
  • TLS 출신이 대상 구역에서 제대로 구성되어 있는지 확인하십시오.
  • 네트워크 액세스를 확인하기 위해 포드 내부의 직접 컬 요청을 테스트하십시오.
  • 문제가 지속되면 istio 구성 요소를 다시 시작하고 구성을 다시 신청하십시오.

결론

Istio의 egress 게이트웨이를 통해 컬 요청이 실패하는 경우 일반적으로 서비스 센터 누락, TLS 오해, 방화벽 제한 또는 잘못된 라우팅 설정으로 인해 문제가 발생합니다. 이 안내서를 따르면 문제를 효과적으로 진단하고 해결할 수 있어야합니다.

이 안내서가 도움이된다면 아래에 의견을 남겨주세요. 추가 질문이 있으시면 의견에 문의하면 더 문제를 해결하도록 도와 드리겠습니다. 비슷한 Istio Egress 게이트웨이 문제에 직면 할 수있는 다른 사람들 과이 기사를 공유하십시오!