matchExpressions не работают в селекторах на основе наборов в Kubernetes - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь использовать селекторы на основе набора для набора реплик в кубернетах. Я не могу использовать выражения соответствия для установки условия фильтра.

Файл yaml набора реплик.

# ngnix-replication-set.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
    name: nginx-rs
    # label not required for RC unless it's being referred to somewhere else.
spec:
    replicas: 3
    selector: # set based selector, can be used to select multiple options in single selection
         matchLabels :
            app : nginx
        ** matchExpressions :   # match expressions are not working  
         -{key:environment,operator:In,values:[dev]}
         -{key: tier, operator: NotIn, values: [frontend,backend]}  **
    template :
        metadata:
            name: nginx-pod
            labels:
                app: nginx  #this spec is used in selector
                tier: server
                environment : dev
        spec:
            containers:
            -   name: nginx-container
                image : nginx
                ports:
                -   containerPort: 80   

Ошибка:

ngnix-replication-set .yaml ": ошибка проверки данных: ValidationError (ReplicaSet.spe c .selector.matchExpressions): недопустимый тип для io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector.matchExpressions: получено" строка ", ожидалось" array "; если вы решите игнорировать эти ошибки, отключите проверку с помощью --validate = false

1 Ответ

2 голосов
/ 20 июня 2020

Из документов здесь это похоже на проблему с отступом. Ниже должно работать.

    ...
    selector:
      matchLabels:
        app: nginx
      matchExpressions:  
        - {key: environment, operator: In, values: [dev]}
        - {key: tier, operator: NotIn, values: [frontend,backend]}
    ...
...