Настроить NATS max_payload на Kubernetes

Моя проблема в том, что мне нужно увеличить NATS max_payload в производственной среде, но он использует Kubernetes, и я понятия не имею, как это сделать, я пытался использовать ConfigMap, но мне это не удалось.

В локальной среде / dev он использует файл конфигурации NATS с докером, поэтому он отлично работает.

Способ заставить его работать локально: NATS с молекулой . Как изменить значение max_payload NATS?

Код внутри k8s / deployment.develop.yaml

(...)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nats
  namespace: develop
  labels:
    account: nats
---
apiVersion: v1
kind: Service
metadata:
  name: nats
  namespace: develop
  labels:
    app: nats
    service: nats
spec:
  ports:
    - port: 4222
      targetPort: 4222
  selector:
    app: nats
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nats-v1
  namespace: develop
  labels:
    app: nats
    version: v1
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: nats
      version: v1
  template:
    metadata:
      labels:
        app: nats
        version: v1
    spec:
      serviceAccountName: nats
      containers:
        - image: 'nats:alpine'
          name: nats
          ports:
            - containerPort: 4222
      restartPolicy: Always
      tolerations: []
      affinity: {}

Спасибо!


person Matheus Richard Chignolli    schedule 12.01.2021    source источник


Ответы (2)


Значение полезной нагрузки жестко закодировано в образе докера (в файле nats-server.conf), поэтому вы не можете изменить его с помощью configmap. Единственное решение, которое я нашел, - это создать свой собственный образ nats с измененным файлом nats-server.conf.

Вот как это сделать.

  1. Сначала выберите вариант изображения из официального репозитория и загрузите контент (например, Dockerfile и nats-server.conf из здесь).
  2. Измените файл nats-server.conf, чтобы изменить значение max_payload: просто добавьте следующую строку (этот файл НЕ в формате JSON)
max_payload: 4Mb
  1. Затем создайте образ: docker image build .
  2. Отметьте его, загрузите в собственное хранилище и используйте вместо официального nats изображения
person Fabien Quatravaux    schedule 04.06.2021

Я бы рекомендовал использовать эти диаграммы NATS Helm. а затем используйте что-то вроде следующего:

nats:
  limits:
    maxPayload: "5mb"

Вы можете найти полный пример здесь: https://github.com/nats-io/k8s/tree/master/helm/charts/nats#limits

person wallyqs    schedule 05.06.2021