Создайте дополнительные vhost / user / pass для RabbitMQ на рулевой диаграмме для Kubernetes - PullRequest
0 голосов
/ 31 октября 2018

Редактировать: мне нужно установить некоторые дополнительные параметры rabbit vhost / users / pass на рулевом графике для rabbitMQ, который мы используем в K8s, я пробовал через curl в ловушке postStart жизненного цикла:

Вот пример:

lifecycle:
  postStart:
    exec:
      command: ["'/bin/sh', '-c','curl -i -u guest:guest -H ''content-type:application/json'' -XPUT -d '''{'password':'1234','tags':'monitoring'}''' http://localhost:15672/api/users/deleteme'"]

Но не получается:

Killing container with id docker://rabbitmq:FailedPostStartHook

Я попытался изменить цитату, а также установить ее следующим образом:

command:
 - "sh":
 - "-c":
 - etc....

Безуспешно, я впервые пользуюсь крючками, какой-нибудь совет, пожалуйста? Спасибо!

полный набор состояний:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: {{ .Chart.Name }}
  labels:
    app: {{ .Chart.Name }}
spec:
  serviceName: {{ .Chart.Name }}
  replicas: {{ .Values.replicaCount }}
  updateStrategy:
    type: {{ .Values.updateStrategy }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: {{ .Chart.Name }}
          image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - name: epmd
              protocol: TCP
              containerPort: 4369
            - name: amqp
              protocol: TCP
              containerPort: 5672
            - name: http
              protocol: TCP
              containerPort: 15672
          livenessProbe:
            exec:
              command:
                - rabbitmqctl
                - status
            initialDelaySeconds: 30
            timeoutSeconds: 5
          readinessProbe:
            exec:
              command:
                - rabbitmqctl
                - status
            initialDelaySeconds: 10
            timeoutSeconds: 5
          env:
            - name: MY_POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: RABBITMQ_USE_LONGNAME
              value: "true"
            - name: RABBITMQ_NODENAME
              value: "rabbit@$(MY_POD_IP)"
            - name: K8S_SERVICE_NAME
              value: {{ .Chart.Name }}
            - name: RABBITMQ_ERLANG_COOKIE
              valueFrom:
                secretKeyRef:
                  name: {{ .Chart.Name }}
                  key: rabbitmq-erlang-cookie
            - name: RABBITMQ_DEFAULT_USER
              value: {{ .Values.rabbitmqUsername | quote }}
            - name: RABBITMQ_DEFAULT_PASS
              valueFrom:
                secretKeyRef:
                  name: {{ .Chart.Name }}
                  key: rabbitmq-password
            - name: RABBITMQ_DEFAULT_VHOST
              value: {{ .Values.rabbitmqVhost | quote }}
          volumeMounts:
            - name: data
              mountPath: /var/lib/rabbitmq
            - name: config
              mountPath: /etc/rabbitmq
          lifecycle:
              postStart:
                exec:
                  command:
                  - "sh"
                  - "-c"
                  - "curl -i -u guest:guest -H \"content-type:application/json\" -XPUT -d \"{\"password\":\"1234\",\"tags\":\"monitoring\"}\" http://rabbitmq:15672/api/users/deleteme"
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 1
              podAffinityTerm:
                topologyKey: kubernetes.io/hostname
                labelSelector:
                  matchLabels:
                    app: {{ .Chart.Name }}
      volumes:
        - name: config
          configMap:
            name: {{ .Chart.Name }}
        - name: data
          emptyDir: {}

Я мог бы закончить тем, что использовал значения или попытался установить его в configmap: https://github.com/helm/charts/tree/master/stable/rabbitmq-ha

Если есть лучший способ, было бы здорово.

1 Ответ

0 голосов
/ 02 ноября 2018

Я бы порекомендовал посмотреть на шлем Крючки . Они состоят из различных вариантов для вставки на определенных этапах жизненного цикла разработки. Крючки представляют собой обычные шаблоны, однако для их правильной интерпретации Helm требуется специальная аннотация.

apiVersion: ...
kind: ....
metadata:
  annotations:
    "helm.sh/hook": "pre-install"
# ...

Можно рассмотреть запуск задания с хуком post-install, который выполняется после загрузки всех ресурсов в Kubernetes.

...