diff --git a/installer/roles/kubernetes/templates/deployment.yml.j2 b/installer/roles/kubernetes/templates/deployment.yml.j2 index 8e9f234c20..383a3e0a8a 100644 --- a/installer/roles/kubernetes/templates/deployment.yml.j2 +++ b/installer/roles/kubernetes/templates/deployment.yml.j2 @@ -39,7 +39,7 @@ data: [rabbitmq_management,rabbitmq_peer_discovery_k8s]. rabbitmq_definitions.json: | { - "users":[{"name": "{{ rabbitmq_user }}", "password": "{{ rabbitmq_password }}", "tags": ""}], + "users":[{"name": "{{ rabbitmq_user }}", "password": "{{ rabbitmq_password }}", "tags": "administrator"}], "permissions":[ {"user":"{{ rabbitmq_user }}","vhost":"awx","configure":".*","write":".*","read":".*"} ], @@ -269,12 +269,14 @@ spec: containerPort: 5672 livenessProbe: exec: - command: ["rabbitmqctl", "status"] + command: + - /usr/local/bin/healthchecks/rabbit_health_node.py initialDelaySeconds: 30 timeoutSeconds: 10 readinessProbe: exec: - command: ["rabbitmqctl", "status"] + command: + - /usr/local/bin/healthchecks/rabbit_health_node.py initialDelaySeconds: 10 timeoutSeconds: 10 env: @@ -293,9 +295,18 @@ spec: key: rabbitmq_erlang_cookie - name: K8S_SERVICE_NAME value: "rabbitmq" + - name: RABBITMQ_USER + value: {{ rabbitmq_user }} + - name: RABBITMQ_PASSWORD + valueFrom: + secretKeyRef: + name: "{{ kubernetes_deployment_name }}-secrets" + key: rabbitmq_password volumeMounts: - name: rabbitmq-config mountPath: /etc/rabbitmq + - name: rabbitmq-healthchecks + mountPath: /usr/local/bin/healthchecks resources: requests: memory: "{{ rabbitmq_mem_request }}Gi" @@ -387,6 +398,41 @@ spec: path: enabled_plugins - key: rabbitmq_definitions.json path: rabbitmq_definitions.json + - name: rabbitmq-healthchecks + configMap: + name: {{ kubernetes_deployment_name }}-healthchecks + items: + - key: rabbit_health_node.py + path: rabbit_health_node.py + defaultMode: 0755 +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ kubernetes_deployment_name }}-healthchecks + namespace: {{ kubernetes_namespace }} +data: + rabbit_health_node.py: | + #!/usr/bin/env python + try: + from http.client import HTTPConnection + except ImportError: + from httplib import HTTPConnection + import sys + import os + import base64 + authsecret = base64.b64encode(os.getenv('RABBITMQ_USER') + ':' + os.getenv('RABBITMQ_PASSWORD')) + conn=HTTPConnection('localhost:15672') + conn.request('GET', '/api/healthchecks/node', headers={'Authorization': 'Basic %s' % authsecret}) + r1 = conn.getresponse() + if r1.status != 200: + sys.stderr.write('Received http error %i\n' % (r1.status)) + sys.exit(1) + body = r1.read() + if body != '{"status":"ok"}': + sys.stderr.write('Received body: %s' % body) + sys.exit(2) + sys.exit(0) --- apiVersion: v1 kind: Service