1.6. 서비스 메시에 보안 필터링을 사용하여 net-istio 메모리 사용량 개선
기본적으로 Kubernetes client-go
라이브러리의 정보 관리자 구현은 특정 유형의 모든 리소스를 가져옵니다. 이로 인해 많은 리소스가 사용 가능할 때 상당한 오버헤드가 발생할 수 있으므로 메모리 누수로 인해 Knative net-istio
Ingress 컨트롤러가 대규모 클러스터에서 실패할 수 있습니다. 그러나 컨트롤러에서 Knative 관련 시크릿만 가져올 수 있는 Knative net-istio
수신 컨트롤러에 필터링 메커니즘을 사용할 수 있습니다. KnativeServing
CR(사용자 정의 리소스)에 주석을 추가하여 이 메커니즘을 활성화할 수 있습니다.
시크릿 필터링을 활성화하면 모든 시크릿에 networking.internal.knative.dev/certificate-uid: "<id>"
로 레이블이 지정됩니다. 그러지 않으면 Knative Serving에서 이를 탐지하지 않아 오류가 발생합니다. 새 시크릿과 기존 보안의 라벨을 모두 지정해야 합니다.
사전 요구 사항
- OpenShift Container Platform에 대한 클러스터 관리자 권한이 있거나 AWS 또는 OpenShift Dedicated의 Red Hat OpenShift Service에 대한 클러스터 또는 전용 관리자 권한이 있습니다.
- 프로젝트를 생성했거나 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
- Red Hat OpenShift Service Mesh를 설치합니다. OpenShift Serverless with Service Mesh는 Red Hat OpenShift Service Mesh 버전 2.0.5 이상에서만 지원됩니다.
- OpenShift Serverless Operator 및 Knative Serving을 설치합니다.
-
OpenShift CLI(
oc
)를 설치합니다.
절차
서버리스.openshift.io/enable-secret-informer-filtering
주석을KnativeServing
CR에 추가합니다.KnativeServing CR의 예
apiVersion: operator.knative.dev/v1beta1 kind: KnativeServing metadata: name: knative-serving namespace: knative-serving annotations: serverless.openshift.io/enable-secret-informer-filtering: "true" 1 spec: ingress: istio: enabled: true deployments: - annotations: sidecar.istio.io/inject: "true" sidecar.istio.io/rewriteAppHTTPProbers: "true" name: activator - annotations: sidecar.istio.io/inject: "true" sidecar.istio.io/rewriteAppHTTPProbers: "true" name: autoscaler
- 1
- 이 주석을 추가하면 환경 변수
ENABLE_SECRET_INFORMER_FILTER_BY_CERT_UID=true
를net-istio
컨트롤러 Pod에 삽입합니다.
참고배포를 재정의하여 다른 값을 설정하면 이 주석은 무시됩니다.