1.19.3. WasmPlugin API 참조


WasmPlugins API는 Istio 프록시에서 WebAssembly 필터를 통해 제공하는 기능을 확장하는 메커니즘을 제공합니다.

여러 WasmPlugins를 배포할 수 있습니다. 단계우선 순위 설정은 Envoy의 필터 체인의 일부로 실행 순서( Envoy의 필터 체인의 일부로)를 결정하여 사용자 제공wasmPlugins와 Istio의 내부 필터 간 복잡한 상호 작용을 구성할 수 있습니다.

다음 예제에서 인증 필터는 OpenID 흐름을 구현하고 Authorization 헤더를 JSON 웹 토큰(JWT)으로 채웁니다. Istio 인증은 이 토큰을 사용하고 수신 게이트웨이에 배포합니다. ExsmPlugin 파일은 프록시 사이드카 파일 시스템에 있습니다. 필드 URL을 확인합니다.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: openid-connect
  namespace: istio-ingress
spec:
  selector:
    matchLabels:
      istio: ingressgateway
  url: file:///opt/filters/openid.wasm
  sha256: 1ef0c9a92b0420cf25f7fe5d481b231464bc88f486ca3b9c83ed5cc21d2f6210
  phase: AUTHN
  pluginConfig:
    openid_server: authn
    openid_realm: ingress

다음은 동일한 예입니다. 그러나 이번에는 파일 시스템의 파일 대신 OCI(Open Container Initiative) 이미지가 사용됩니다. URL ,imagePullPolicy , imagePullSecret 필드를 기록해 둡니다.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: openid-connect
  namespace: istio-system
spec:
  selector:
    matchLabels:
      istio: ingressgateway
  url: oci://private-registry:5000/openid-connect/openid:latest
  imagePullPolicy: IfNotPresent
  imagePullSecret: private-registry-pull-secret
  phase: AUTHN
  pluginConfig:
    openid_server: authn
    openid_realm: ingress
표 1.15. 와smPlugin 필드 참조
필드유형설명필수 항목

spec.selector

WorkloadSelector

이 플러그인 구성을 적용해야 하는 특정 pod/VM 세트를 선택하는 데 사용되는 기준입니다. 생략하면 이 구성이 동일한 네임스페이스의 모든 워크로드 인스턴스에 적용됩니다. 구성 루트 네임스페이스에 Extras mPlugin 필드가 있는 경우 모든 네임스페이스의 적용 가능한 모든 워크로드에 적용됩니다.

아니요

spec.url

문자열

Exsm 모듈 또는 OCI 컨테이너의 URL입니다. 스키마가 없는 경우 기본값은 oci:// 로, OCI 이미지를 참조합니다. 다른 유효한 체계는 프록시 컨테이너 내에 로컬로 존재하는 .wasm 모듈 파일을 참조하기 위한 file:// 와 원격으로 호스팅되는 .wasm 모듈 파일의 경우 http[s]:// 입니다.

아니요

spec.sha256

문자열

wasm 모듈 또는 OCI 컨테이너를 확인하는 데 사용할 SHA256 체크섬입니다. url 필드에서 SHA256을 이미 참조하는 경우( @sha256: 표기법 사용) 이 필드의 값과 일치해야 합니다. 태그에서 OCI 이미지를 참조하고 이 필드가 설정된 경우 가져오기 후 이 필드의 콘텐츠에 대해 체크섬이 확인됩니다.

아니요

spec.imagePullPolicy

PullPolicy

OCI 이미지를 가져올 때 적용할 가져오기 동작입니다. SHA 대신 태그에서 이미지를 참조하는 경우에만 관련이 있습니다. url 필드에서 OCI 이미지를 참조하고 latest 태그가 Always 값이 Always가 기본값인 경우 미러링 K8s 동작을 제외하고 기본값은 IfNotPresent 입니다. url 필드가 file:// 또는 http[s]:// 를 직접 사용하는 경우 설정이 무시됩니다.

아니요

spec.imagePullSecret

문자열

OCI 이미지 가져오기에 사용할 자격 증명. 이미지를 가져올 때 레지스트리에 대한 인증을 위한 풀 시크릿이 포함된 wasmPlugin 오브젝트와 동일한 네임스페이스에 시크릿의 이름입니다.

아니요

spec.phase

PluginPhase

필터 체인에서 이 WasmPlugin 개체가 삽입되는 위치를 결정합니다.

아니요

spec.priority

int64

동일한 단계 값이 있는 WasmPlugins 개체의 순서를 결정합니다. 동일한 단계의 동일한 워크로드에 여러 개의 fe smPlugins 개체가 적용되는 경우 우선 순위와 내림차순으로 적용됩니다. 우선순위 필드가 설정되지 않은 경우 또는 동일한 값을 가진 두 개의 wasmPlugins 개체 가 있는 경우, 순서는 월mPlugins 오브젝트의 이름과 네임 스페이스에서 결정됩니다. 기본값은 0 입니다.

아니요

spec.pluginName

문자열

Envoy 구성에 사용되는 플러그인 이름입니다. 일부 와트m 모듈에는 이 값을 실행하기 위해 이 값을 사용해야 할 수 있습니다.

아니요

spec.pluginConfig

struct

플러그인에 전달될 구성입니다.

아니요

spec.pluginConfig.verificationKey

문자열

서명된 OCI 이미지 또는wasm 모듈의 서명을 확인하는 데 사용되는 공개 키입니다. PEM 형식으로 제공해야 합니다.

아니요

WorkloadSelector 개체는 필터를 프록시에 적용할 수 있는지 확인하는 데 사용되는 기준을 지정합니다. 일치하는 기준에는 프록시와 연결된 메타데이터, pod/VM에 연결된 라벨과 같은 워크로드 인스턴스 정보 또는 초기 핸드셰이크 중 Istio에 제공하는 기타 정보가 포함됩니다. 여러 조건이 지정된 경우 워크로드 인스턴스를 선택하기 위해 모든 조건을 일치해야 합니다. 현재는 라벨 기반 선택 메커니즘만 지원됩니다.

표 1.16. WorkloadSelector
필드유형설명필수 항목

matchLabels

map<string, string>

정책을 적용해야 하는 특정 Pod/VM 세트를 나타내는 하나 이상의 레이블입니다. 레이블 검색 범위는 리소스가 있는 구성 네임스페이스로 제한됩니다.

있음

PullPolicy 오브젝트는 OCI 이미지를 가져올 때 적용할 풀 동작을 지정합니다.

표 1.17. PullPolicy
설명

<empty>

기본값은 latest 태그가 있는 OCI 이미지를 제외하고 IfNotPresent 값으로 기본값은 Always 여야 합니다.

IfNotPresent

기존 버전의 이미지를 이전에 가져온 경우 이 버전이 사용됩니다. 이미지가 로컬에 없는 경우 최신 버전을 가져옵니다.

Always

이 플러그인을 적용할 때 항상 최신 버전의 이미지를 가져옵니다.

구조체 는 동적으로 입력된 값에 매핑되는 필드로 구성된 구조화된 데이터 값을 나타냅니다.Represents a structured data value, consisting of fields which map to dynamically typed values. 일부 언어에서는 Struct가 네이티브 표현에 의해 지원될 수 있습니다. 예를 들어 JavaScript와 같은 스크립팅 언어에서 구조체는 개체로 표시됩니다.

표 1.18. struct
필드유형설명

필드

map<string, Value>

동적으로 입력된 값의 맵입니다.

PluginPhase 는 플러그인이 삽입될 필터 체인의 단계를 지정합니다.

표 1.19. PluginPhase
필드설명

<empty>

컨트롤 플레인은 플러그인을 삽입할 위치를 결정합니다. 이는 일반적으로 라우터 바로 앞에 필터 체인의 끝에 있습니다. 플러그인이 다른 플러그인과 독립적인 경우 PluginPhase를 지정하지 마십시오.

AUTHN

Istio 인증 필터 전에 플러그인을 삽입합니다.

AUTHZ

Istio 권한 부여 필터 및 Istio 인증 필터 후에 플러그인을 삽입합니다.

STATS

Istio 통계 필터 및 Istio 권한 부여 필터 후에 플러그인을 삽입합니다.

1.19.3.1. 월 mPlugin 리소스 배포

wasmPlugin 리소스를 사용하여 Red Hat OpenShift Service Mesh 확장을 활성화할 수 있습니다. 이 예제에서 istio-system 은 Service Mesh Control Plane 프로젝트의 이름입니다. 다음 예제에서는 사용자를 인증하기 위해 OpenID Connect 흐름을 수행하는 openid-connect 필터를 생성합니다.

절차

  1. 다음 예제 리소스를 만듭니다.

    plugin.yaml 예

    apiVersion: extensions.istio.io/v1alpha1
    kind: WasmPlugin
    metadata:
      name: openid-connect
      namespace: istio-system
    spec:
      selector:
        matchLabels:
          istio: ingressgateway
      url: oci://private-registry:5000/openid-connect/openid:latest
      imagePullPolicy: IfNotPresent
      imagePullSecret: private-registry-pull-secret
      phase: AUTHN
      pluginConfig:
        openid_server: authn
        openid_realm: ingress

  2. 다음 명령을 사용하여 plugin.yaml 파일을 적용합니다.

    $ oc apply -f plugin.yaml
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.