Rabbitmq:如何创建 RABBITMQ_ERLANG_COOKIE

Ted*_*oko 2 erlang rabbitmq kubernetes

我正在尝试在我的 kubernetes 中部署一个 rabbitmq pod。所以我使用由 Google 托管的 rabbitmq:https : //github.com/GoogleCloudPlatform/rabbitmq-docker/blob/master/3/README.md#connecting-to-a-running-rabbitmq-container-kubernetes

在文档中,它说:Starting a RabbitMQ instance

替换your-erlang-cookie为有效的 cookie 值。有关更多信息,请参阅RABBITMQ_ERLANG_COOKIE in环境变量。

将以下内容复制到 pod.yaml 文件中,并运行 kubectl create -f pod.yaml。

apiVersion: v1
kind: Pod
metadata:
  name: some-rabbitmq
  labels:
    name: some-rabbitmq
spec:
  containers:
    - image: launcher.gcr.io/google/rabbitmq3
      name: rabbitmq
      env:
        - name: "RABBITMQ_ERLANG_COOKIE"
          value: "unique-erlang-cookie"
Run Code Online (Sandbox Code Playgroud)

我怎么能生成 cookie erlang ?在互联网上搜索了几天后,我一无所获。我在 Windows 中安装了rabbitmq,我从未生成过 cookie erlang。

请问我该怎么办?谢谢

Dav*_*aze 7

它是任何独特的价值;唯一的限制是 RabbitMQ 的每个连接实例(即 StatefulSet 中的每个 Pod)都具有相同的 cookie 值。

指定这一点的一个好方法是使用Secret

env:
  - name: RABBITMQ_ERLANG_COOKIE
    valueFrom:
      secretKeyRef:
        name: rabbitmq
        key: erlangCookie
Run Code Online (Sandbox Code Playgroud)

这需要您创建 Secret。为了解决这个问题,您可以运行一次性命令来创建一个随机的 Secret:

kubectl create secret generic rabbitmq \
  --from-literal=erlangCookie=$(dd if=/dev/urandom bs=30 count=1 | base64)
Run Code Online (Sandbox Code Playgroud)

对于实际生产使用,您需要将该凭据存储在安全的地方,并能够在部署时注入(或重新创建)它。管理这有点超出了这个问题的范围。