Использование ConfigMap для определения списка блоков CIDR из белого списка - PullRequest
0 голосов
/ 25 сентября 2018

Что я хочу сделать

Я хотел бы применить белый список IP-адресов, определенный в ConfigMap.Я хотел бы сохранить список внешним, потому что его проще хранить в одном файле, чем вставлять блоки в строку.Белый список будет использоваться многими службами в разных пространствах имен.

Что у меня есть

Много было удалено из следующих файлов спецификаций, но, надеюсь, достаточно было сохранено.

Я определяю белый список в ConfigMap следующим образом:

apiVersion: v1
kind: ConfigMap
data:
  whitelist:
    # example
    - 127.0.0.1/32
    # etc.
metadata:
  name: whitelist

Моя служба, в этом примере:

apiVersion: v1
kind: Service
metadata:
  name: example
  labels:
    label: example

Обратите внимание, что тип службы используется по умолчанию, так как я полагаюсь наIngress, чтобы разоблачить это.Это не может измениться.

Служба находится за определением Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: example
  rules:
  - host: example.com
#... ports, etc

Что я пробовал

Изменение типа службы

Определение службыкак type: LoadBalancer.Это именно то, что я хочу, так как легко использовать ConfigMap, затем я понял, что не могу изменить тип службы по деловым причинам.

Использование входящих аннотаций

apiVersion: extensions/v1beta1
kind: Ingress
# ...
metadata:
  name: whitelist
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: "blockA", "blockB"

Это вроде работает, но яне мог понять, как использовать ConfigMap вместо списка через запятую.Здесь я должен отметить, что любое решение, которое позволяет мне использовать внешний список, является приемлемым, и это не обязательно должен быть ConfigMap только потому, что.

Использование NetworkPolicy

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: example-network-policy
spec:
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
      cidr: # hmm... can I add the ConfigMap here?
    - namespaceSelector:
      # ...etc

Пока это выглядит наиболее многообещающе, но селектор ipBlock, кажется, принимает только один блок ...?

1 Ответ

0 голосов
/ 25 сентября 2018

Использование входящих аннотаций

ConfigMaps не поддерживаются в аннотациях.

Использование NetworkPolicy

ingress иegress являются структурами массива, так что вы можете попробовать это, не уверенный, работает ли он для вас:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: example-network-policy
spec:
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
      cidr: <cidr1>
    - namespaceSelector:
      # ...etc
  - from:
    - ipBlock:
      cidr: <cidr2>
    - namespaceSelector:
      # ...etc
  - from:
    - ipBlock:
      cidr: <cidr3>
    - namespaceSelector:
      # ...etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...