모든 generator의 Post Selector
모든 generator의 Post Selector
generator의 selector 필드를 사용하면 생성된 값을 기반으로 결과를 후처리(post-filter)할 수 있어요. 형식은 Kubernetes 공통 라벨 셀렉터를 따르며, matchLabels와 더 강력한 matchExpressions를 모두 쓸 수 있어요.
출처: 문서
본문
generator의 selector 필드는 ApplicationSet이 Kubernetes 공통 labelSelector 형식과 생성된 값을 사용해 결과를 후처리(post-filter)할 수 있게 해요.
matchLabels는 {key,value} 쌍의 맵이에요. 다음 list generator는 두 개의 Application 묶음을 생성한 뒤, matchLabels로 env 키의 값이 staging인 목록 요소만 남기도록 필터링해요.
spec:
generators:
- list:
elements:
- cluster: engineering-dev
url: https://kubernetes.default.svc
env: staging
- cluster: engineering-prod
url: https://kubernetes.default.svc
env: prod
selector:
matchLabels:
env: staging
list generator + matchLabels 셀렉터는 단일 파라미터 묶음을 생성해요.
- cluster: engineering-dev
url: https://kubernetes.default.svc
env: staging
더 강력한 셀렉터를 위해 matchExpressions를 사용할 수도 있어요.
matchLabels 맵의 단일 {key,value}는 matchExpressions의 한 요소와 동일해요. 그 요소의 key 필드가 "key"이고, operator는 "In", values 배열에는 "value" 하나만 담겨요. 따라서 같은 예시를 matchExpressions로 쓰면 다음과 같아요.
spec:
generators:
- list:
elements:
- cluster: engineering-dev
url: https://kubernetes.default.svc
env: staging
- cluster: engineering-prod
url: https://kubernetes.default.svc
env: prod
selector:
matchExpressions:
- key: env
operator: In
values:
- staging
유효한 operator에는 In, NotIn, Exists, DoesNotExist가 있어요. In과 NotIn의 경우 values 집합은 비어 있으면 안 돼요.
전체 예시 (Full Example)
이 예시에서 list generator는 두 개의 애플리케이션 묶음을 생성하고, key value 기준으로 필터링해 env의 값이 staging인 것만 선택해요.
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- list:
elements:
- cluster: engineering-dev
url: https://kubernetes.default.svc
env: staging
- cluster: engineering-prod
url: https://kubernetes.default.svc
env: prod
selector:
matchLabels:
env: staging
template:
metadata:
name: '{{.cluster}}-guestbook'
spec:
project: default
source:
repoURL: https://github.com/argoproj-labs/applicationset.git
targetRevision: HEAD
path: examples/list-generator/guestbook/{{.cluster}}
destination:
server: '{{.url}}'
namespace: guestbook
selector는 각 generator 아래에 두며, 생성된 파라미터의 키/값으로 원하는 요소만 걸러낼 수 있어요.
더 알아보기 (Learn more)
- List generator — 위 예시의 list generator 문법.
- Template — 필터링된 파라미터를 Application 템플릿에 렌더링.