6.8.3.3. 워크로드 리소스 매핑
-
워크로드 리소스 매핑은 API 그룹
binding.operators.coreos.com및servicebinding.io에 대해ServiceBindingCR(사용자 정의 리소스)의 보조 워크로드에 사용할 수 있습니다. -
servicebinding.ioAPI 그룹에서만ClusterWorkloadResourceMapping리소스를 정의해야 합니다. 그러나ClusterWorkloadResourceMapping리소스는binding.operators.coreos.com및servicebinding.ioAPI 그룹 모두에서ServiceBinding리소스와 상호 작용합니다.
컨테이너 경로에 구성 방법을 사용하여 사용자 정의 경로 위치를 구성할 수 없는 경우 바인딩 데이터를 예상해야 하는 위치를 정확하게 정의할 수 있습니다. servicebinding.io API 그룹에서 ClusterWorkloadResourceMapping 리소스를 정의하여 지정된 워크로드에 대한 바인딩 데이터를 프로젝트할 위치를 지정합니다.
다음 예제에서는 CronJob.knativech/v1 리소스에 대한 매핑을 정의하는 방법을 보여줍니다.
예: CronJob.knativech/v1 리소스 매핑
apiVersion: servicebinding.io/v1beta1
kind: ClusterWorkloadResourceMapping
metadata:
name: cronjobs.batch
spec:
versions:
- version: "v1"
annotations: .spec.jobTemplate.spec.template.metadata.annotations
containers:
- path: .spec.jobTemplate.spec.template.spec.containers[*]
- path: .spec.jobTemplate.spec.template.spec.initContainers[*]
name: .name
env: .env
volumeMounts: .volumeMounts
volumes: .spec.jobTemplate.spec.template.spec.volumes
- 1
- 매핑된 워크로드 리소스의
plural.group으로 자격을 부여해야 하는ClusterWorkloadResourceMapping리소스의 이름입니다. - 2
- 매핑되는 리소스의 버전입니다. 지정되지 않은 버전은 "*" 와일드카드와 일치할 수 있습니다.
- 3
- 선택 사항: 고정된 JSONPath로 지정된 Pod의
.annotations필드의 식별자입니다. 기본값은.spec.template.spec.annotations입니다. - 4
- Pod의
.containers및.initContainers필드의 식별자로 JSONPath로 지정됩니다.containers필드에 항목이 정의되지 않은 경우 Service Binding Operator의 기본값은.spec.template.spec.containers[*]및.spec.template.spec.initContainers[\*]이며 다른 모든 필드는 기본값으로 설정됩니다. 그러나 항목을 지정하는 경우.path필드를 정의해야 합니다. - 5
- 선택 사항: 고정된 JSONPath로 지정된 컨테이너의
.name필드의 식별자입니다. 기본값은.name입니다. - 6
- 선택 사항: 고정된 JSONPath로 지정된 컨테이너의
.env필드의 식별자입니다. 기본값은.env입니다. - 7
- 선택 사항: 고정된 JSONPath로 지정된 컨테이너의
.volumeMounts필드의 식별자입니다. 기본값은.volumeMounts입니다. - 8
- 선택 사항: 고정된 JSONPath로 지정된 Pod의
.volumes필드의 식별자입니다. 기본값은.spec.template.spec.volumes입니다.
이 컨텍스트에서 고정된 JSONPath는 다음 작업만 허용하는 JSONPath grammar의 서브 세트입니다.
-
필드 조회:
.spec.template -
배열 인덱싱:
.spec['template']
다른 모든 작업은 허용되지 않습니다.
-
필드 조회:
-
이러한 필드의 대부분은 선택 사항입니다. 지정하지 않으면 Service Binding Operator는
PodSpec리소스와 호환되는 기본값을 가정합니다. -
Service Binding Operator를 사용하려면 이러한 각 필드가 Pod 배포의 해당 필드와 구조적으로 같아야 합니다. 예를 들어 워크로드 리소스의
.env필드의 콘텐츠는 Pod 리소스의.env필드와 동일한 데이터 구조를 허용할 수 있어야 합니다. 그렇지 않으면 이러한 워크로드에 바인딩 데이터를 예상하면 Service Binding Operator에서 예기치 않은 동작이 발생할 수 있습니다.
binding.operators.coreos.com API 그룹과 관련된 동작
ClusterWorkloadResourceMapping 리소스가 binding.operators.coreos.com API 그룹에서 ServiceBinding 리소스와 상호 작용할 때 다음 동작을 기대할 수 있습니다.
-
bindAsFiles: false플래그 값이 있는ServiceBinding리소스가 이러한 매핑 중 하나와 함께 생성되는 경우 해당ClusterWorkloadResourceMapping리소스에 지정된 각경로필드 아래의.envFrom필드에 환경 변수가 projected됩니다. 클러스터 관리자는 바인딩 목적으로
ServiceBinding.bindings.coreos.com리소스에서ClusterWorkloadResourceMapping리소스와.spec.application.bindingPath.containersPath필드를 모두 지정할 수 있습니다.Service Binding Operator는
ClusterWorkloadResourceMapping리소스와.spec.application.bindingPath.containersPath필드 모두에 지정된 위치에 데이터를 바인딩하려고 합니다. 이 동작은path: $containersPath특성과 함께 기본값을 사용하는 기타 모든 값과 함께 해당ClusterWorkloadResourceMapping리소스에 컨테이너 항목을 추가하는 것과 동일합니다.