在 Kubernetes 上配置 NATS max_payload

Configure NATS max_payload on Kubernetes

我的问题是我需要在生产环境中增加 NATS max_payload 但它使用 Kubernetes,我不知道该怎么做,我尝试使用 ConfigMap 但没有成功。

在 local/dev 环境中,它使用带有 docker 的 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: {}

谢谢!

有效负载值被硬编码到 docker 图像中(在 nats-server.conf 文件中),因此您无法通过配置映射更改它。我找到的唯一解决方案是使用修改后的 nats-server.conf 文件构建我自己的 nats 图像。

这是操作方法。

  1. 首先,select 来自 the official repo and download the content (for example Dockerfile and nats-server.conf from here) 的图像风格。
  2. 修改 nats-server.conf 文件以更改 max_payload 值:只需添加以下行(此文件不是 JSON 格式)
max_payload: 4Mb
  1. 然后构建镜像:docker image build .
  2. 标记它,将它上传到您自己的存储库并使用它代替官方 nats 图片

我建议使用这些 NATS Helm charts,然后使用类似下面的内容:

nats:
  limits:
    maxPayload: "5mb"

您可以在此处找到完整示例:https://github.com/nats-io/k8s/tree/master/helm/charts/nats#limits