Кубернетес - укажите externalips в configmap - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть кластер Kubernetes (внешние ips: 1.2.3.4, 2.3.4.5, 3.4.5.6) Я хочу разместить реестр докеров в этом кластере на порту 5000. Теперь, чтобы включить это, я провел тест с externalips, который работает. Это делает nginx доступным через порт 85.

apiVersion: v1
kind: Service
metadata:
  name: nginx-extip
spec:
  type: ClusterIP
  ports:
  - name: http
    protocol: TCP
    port: 85
    targetPort: 80
  selector:
    app: nginx-extip
  externalIPs:
  - 1.2.3.4
  - 2.3.4.5
  - 3.4.5.6
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-extip
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx-extip
    spec:
      containers:
      - name: nginx-extip-server
        image: nginx
        ports:
        - containerPort: 80

Теперь, чтобы повторно использовать конфигурацию externalip, я хочу поместить это в карту конфигурации. Таким образом, все yamls могут просто ссылаться на configmap, и нам не нужно вручную обновлять externalips при их изменении. Как я могу поместить массив ips в configmap?

Моя текущая (не работающая) карта конфигурации:

apiVersion: v1
kind: ConfigMap
metadata:
  name: externalips
  namespace: default
data:
  externalips:
  - 1.2.3.4
  - 2.3.4.5
  - 3.4.5.6

Я получаю ошибку:

error: error validating "static-ips-configmap.yml": error validating data: 
ValidationError(ConfigMap.data.externalips): invalid type for
io.k8s.api.core.v1.ConfigMap.data: got "array", expected "string";
if you choose to ignore these errors, turn validation off with --validate=false

Как я могу поместить эти IP в configmap?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

ffledgling ответ правильный, но я думаю, что "external-ips.list" немного смущает.

Вот как должен выглядеть файл yaml configmap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: externalips
  namespace: default
data:
  externalips: |
    ips:
    - 1.2.3.4
    - 2.3.4.5
    - 3.4.5.6

Таким образом, "externalips", "ips", "external-ips.list" могут быть любыми, поскольку это всего лишь ключи.

0 голосов
/ 25 апреля 2018

Здесь есть две проблемы:

  1. Синтаксическая ошибка при создании самого файла конфигурации.Карта конфигурации ожидает, что вы перечислите несколько файлов и их содержимое, поэтому правильный синтаксис будет выглядеть примерно так:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: externalips
      namespace: default
    data:
      external-ips.list: |
        externalips:
        - 1.2.3.4
        - 2.3.4.5
        - 3.4.5.6
    
  2. Я не думаю, что можно ссылаться наconfigmap, который вы создали для шаблона службы .Поэтому, даже если вам удастся правильно создать конфигурационную карту, вы все равно не сможете повторно использовать ее как часть различных определений служб.

Вам нужна внеполосная система шаблоновчто вы можете использовать для добавления этих внешних IP-адресов к услугам.В качестве альтернативы используйте входной элемент управления, который необходимо настроить для внешних IP-адресов один раз , а затем использовать его для мультиплексирования всех ваших HTTP-служб внутри кластера.Таким образом, вы в любом случае управляете IP-адресами только для одной службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...