RabbitMQ: Allow clients to directly connect to servers
This PS updates the rabbitmq chart, to allow clients to connect directly to backend servers, and also introduces a htk function to produce the appropriate transport_url used by oslo.messaging to take advantage of this functionaility. Change-Id: I5150a64bd29fa062e30496c1f2127de138322863 Signed-off-by: Pete Birley <pete@port.direct>
This commit is contained in:
parent
b2f47aabb1
commit
0925f50e2a
@ -0,0 +1,123 @@
|
||||
{{/*
|
||||
Copyright 2017 The Openstack-Helm Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
|
||||
{{/*
|
||||
abstract: |
|
||||
Resolves endpoint string suitible for use with oslo.messaging transport url
|
||||
See: https://docs.openstack.org/oslo.messaging/latest/reference/transport.html#oslo_messaging.TransportURL
|
||||
examples:
|
||||
- values: |
|
||||
endpoints:
|
||||
cluster_domain_suffix: cluster.local
|
||||
oslo_messaging:
|
||||
auth:
|
||||
cinder:
|
||||
username: cinder
|
||||
password: password
|
||||
statefulset:
|
||||
replicas: 2
|
||||
name: rabbitmq-rabbitmq
|
||||
hosts:
|
||||
default: rabbitmq
|
||||
host_fqdn_override:
|
||||
default: null
|
||||
path: /cinder
|
||||
scheme: rabbit
|
||||
port:
|
||||
amqp:
|
||||
default: 5672
|
||||
usage: |
|
||||
{{ tuple "oslo_messaging" "internal" "cinder" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" }}
|
||||
return: |
|
||||
rabbit://cinder:password@rabbitmq-rabbitmq-0.rabbitmq.default.svc.cluster.local:5672,cinder:password@rabbitmq-rabbitmq-1.rabbitmq.default.svc.cluster.local:5672/cinder
|
||||
- values: |
|
||||
endpoints:
|
||||
cluster_domain_suffix: cluster.local
|
||||
oslo_messaging:
|
||||
auth:
|
||||
cinder:
|
||||
username: cinder
|
||||
password: password
|
||||
statefulset: null
|
||||
hosts:
|
||||
default: rabbitmq
|
||||
host_fqdn_override:
|
||||
default: null
|
||||
path: /cinder
|
||||
scheme: rabbit
|
||||
port:
|
||||
amqp:
|
||||
default: 5672
|
||||
usage: |
|
||||
{{ tuple "oslo_messaging" "internal" "cinder" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" }}
|
||||
return: |
|
||||
rabbit://cinder:password@rabbitmq.default.svc.cluster.local:5672/cinder
|
||||
- values: |
|
||||
endpoints:
|
||||
cluster_domain_suffix: cluster.local
|
||||
oslo_messaging:
|
||||
auth:
|
||||
cinder:
|
||||
username: cinder
|
||||
password: password
|
||||
statefulset:
|
||||
replicas: 2
|
||||
name: rabbitmq-rabbitmq
|
||||
hosts:
|
||||
default: rabbitmq
|
||||
host_fqdn_override:
|
||||
default: rabbitmq.openstackhelm.org
|
||||
path: /cinder
|
||||
scheme: rabbit
|
||||
port:
|
||||
amqp:
|
||||
default: 5672
|
||||
usage: |
|
||||
{{ tuple "oslo_messaging" "internal" "cinder" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" }}
|
||||
return: |
|
||||
rabbit://cinder:password@rabbitmq.openstackhelm.org:5672/cinder
|
||||
*/}}
|
||||
|
||||
{{- define "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" -}}
|
||||
{{- $type := index . 0 -}}
|
||||
{{- $endpoint := index . 1 -}}
|
||||
{{- $userclass := index . 2 -}}
|
||||
{{- $port := index . 3 -}}
|
||||
{{- $context := index . 4 -}}
|
||||
{{- $endpointScheme := tuple $type $endpoint $port $context | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" }}
|
||||
{{- $userMap := index $context.Values.endpoints ( $type | replace "-" "_" ) "auth" $userclass }}
|
||||
{{- $ssMap := index $context.Values.endpoints ( $type | replace "-" "_" ) "statefulset" | default false}}
|
||||
{{- $hostFqdnOverride := index $context.Values.endpoints ( $type | replace "-" "_" ) "host_fqdn_override" }}
|
||||
{{- $endpointUser := index $userMap "username" }}
|
||||
{{- $endpointPass := index $userMap "password" }}
|
||||
{{- $endpointHostSuffix := tuple $type $endpoint $context | include "helm-toolkit.endpoints.endpoint_host_lookup" }}
|
||||
{{- $endpointPort := tuple $type $endpoint $port $context | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
|
||||
{{- $local := dict "endpointCredsAndHosts" list -}}
|
||||
{{- if not (or (index $hostFqdnOverride $endpoint | default ( index $hostFqdnOverride "default" ) ) ( not $ssMap ) ) }}
|
||||
{{- $endpointHostPrefix := $ssMap.name }}
|
||||
{{- range $podInt := until ( atoi (print $ssMap.replicas ) ) }}
|
||||
{{- $endpointCredAndHost := printf "%s:%s@%s-%d.%s:%s" $endpointUser $endpointPass $endpointHostPrefix $podInt $endpointHostSuffix $endpointPort }}
|
||||
{{- $_ := set $local "endpointCredsAndHosts" ( append $local.endpointCredsAndHosts $endpointCredAndHost ) }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
{{- $endpointHost := tuple $type $endpoint $context | include "helm-toolkit.endpoints.endpoint_host_lookup" }}
|
||||
{{- $endpointCredAndHost := printf "%s:%s@%s:%s" $endpointUser $endpointPass $endpointHost $endpointPort }}
|
||||
{{- $_ := set $local "endpointCredsAndHosts" ( append $local.endpointCredsAndHosts $endpointCredAndHost ) }}
|
||||
{{- end }}
|
||||
{{- $endpointCredsAndHosts := include "helm-toolkit.utils.joinListWithComma" $local.endpointCredsAndHosts }}
|
||||
{{- $endpointPath := tuple $type $endpoint $port $context | include "helm-toolkit.endpoints.keystone_endpoint_path_lookup" }}
|
||||
{{- printf "%s://%s%s" $endpointScheme $endpointCredsAndHosts $endpointPath }}
|
||||
{{- end -}}
|
@ -1,39 +0,0 @@
|
||||
{{/*
|
||||
Copyright 2017 The Openstack-Helm Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
|
||||
{{- if .Values.manifests.service_discovery }}
|
||||
{{- $envAll := . }}
|
||||
{{- if empty $envAll.Values.endpoints.oslo_messaging.hosts.discovery }}
|
||||
{{- $service_discovery_name := .Release.Name | trunc 12 }}
|
||||
{{- $_ := set $envAll.Values.endpoints.oslo_messaging.hosts "discovery" ( printf "%s-%s-%s" $service_discovery_name "dsv" ( $service_discovery_name | sha256sum | trunc 6 )) }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ tuple "oslo_messaging" "discovery" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
|
||||
spec:
|
||||
ports:
|
||||
- port: {{ tuple "oslo_messaging" "internal" "amqp" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
|
||||
name: amqp
|
||||
- port: {{ add (tuple "oslo_messaging" "internal" "amqp" . | include "helm-toolkit.endpoints.endpoint_port_lookup") 20000 }}
|
||||
name: clustering
|
||||
- port: {{ tuple "oslo_messaging" "internal" "http" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
|
||||
name: http
|
||||
clusterIP: None
|
||||
selector:
|
||||
{{ tuple $envAll "rabbitmq" "server" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
|
||||
{{ end }}
|
@ -22,13 +22,14 @@ kind: Service
|
||||
metadata:
|
||||
name: {{ tuple "oslo_messaging" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
|
||||
spec:
|
||||
clusterIP: None
|
||||
ports:
|
||||
- port: {{ tuple "oslo_messaging" "internal" "amqp" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
|
||||
name: amqp
|
||||
- port: {{ add (tuple "oslo_messaging" "internal" "amqp" . | include "helm-toolkit.endpoints.endpoint_port_lookup") 20000 }}
|
||||
name: clustering
|
||||
- port: {{ tuple "oslo_messaging" "internal" "http" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
|
||||
name: http
|
||||
- port: {{ tuple "oslo_messaging" "internal" "amqp" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
|
||||
name: amqp
|
||||
- port: {{ add (tuple "oslo_messaging" "internal" "amqp" . | include "helm-toolkit.endpoints.endpoint_port_lookup") 20000 }}
|
||||
name: clustering
|
||||
- port: {{ tuple "oslo_messaging" "internal" "http" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
|
||||
name: http
|
||||
selector:
|
||||
{{ tuple $envAll "rabbitmq" "server" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
|
||||
{{ end }}
|
||||
|
@ -16,10 +16,6 @@ limitations under the License.
|
||||
|
||||
{{- if .Values.manifests.statefulset }}
|
||||
{{- $envAll := . }}
|
||||
{{- if empty $envAll.Values.endpoints.oslo_messaging.hosts.discovery }}
|
||||
{{- $service_discovery_name := .Release.Name | trunc 12 }}
|
||||
{{- $_ := set $envAll.Values.endpoints.oslo_messaging.hosts "discovery" ( printf "%s-%s-%s" $service_discovery_name "dsv" ( $service_discovery_name | sha256sum | trunc 6 )) }}
|
||||
{{- end }}
|
||||
|
||||
{{- $rcControllerName := printf "%s-%s" $envAll.Release.Name "rabbitmq" }}
|
||||
{{ tuple $envAll "rabbitmq" $rcControllerName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
|
||||
@ -65,7 +61,7 @@ metadata:
|
||||
labels:
|
||||
{{ tuple $envAll "rabbitmq" "server" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
|
||||
spec:
|
||||
serviceName: {{ tuple "oslo_messaging" "discovery" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
|
||||
serviceName: {{ tuple "oslo_messaging" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
|
||||
replicas: {{ $envAll.Values.pod.replicas.server }}
|
||||
podManagementPolicy: "Parallel"
|
||||
selector:
|
||||
@ -178,13 +174,11 @@ spec:
|
||||
- name: RABBITMQ_USE_LONGNAME
|
||||
value: "true"
|
||||
- name: RABBITMQ_NODENAME
|
||||
value: "rabbit@$(MY_POD_NAME).{{ tuple "oslo_messaging" "discovery" . | include "helm-toolkit.endpoints.hostname_fqdn_endpoint_lookup" }}"
|
||||
value: "rabbit@$(MY_POD_NAME).{{ tuple "oslo_messaging" "internal" . | include "helm-toolkit.endpoints.hostname_fqdn_endpoint_lookup" }}"
|
||||
- name: K8S_SERVICE_NAME
|
||||
value: {{ tuple "oslo_messaging" "discovery" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
|
||||
# NOTE(portdirect): We use the discovery fqdn here, as we resolve
|
||||
# nodes via their pods hostname/nodename
|
||||
value: {{ tuple "oslo_messaging" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
|
||||
- name: K8S_HOSTNAME_SUFFIX
|
||||
value: ".{{ tuple "oslo_messaging" "discovery" . | include "helm-toolkit.endpoints.hostname_fqdn_endpoint_lookup" }}"
|
||||
value: ".{{ tuple "oslo_messaging" "internal" . | include "helm-toolkit.endpoints.hostname_fqdn_endpoint_lookup" }}"
|
||||
- name: RABBITMQ_ERLANG_COOKIE
|
||||
value: "{{ $envAll.Values.endpoints.oslo_messaging.auth.erlang_cookie }}"
|
||||
- name: PORT_HTTP
|
||||
|
@ -95,7 +95,7 @@ pod:
|
||||
weight:
|
||||
default: 10
|
||||
replicas:
|
||||
server: 3
|
||||
server: 2
|
||||
prometheus_rabbitmq_exporter: 1
|
||||
lifecycle:
|
||||
upgrades:
|
||||
@ -267,10 +267,6 @@ endpoints:
|
||||
password: password
|
||||
hosts:
|
||||
default: rabbitmq
|
||||
# NOTE(portdirect): If left empty, the release name sha suffixed with dsv
|
||||
# will be used for to produce a unique hostname for clustering
|
||||
# and discovery.
|
||||
discovery: null
|
||||
# NOTE(portdirect): the public host is only used to the management WUI
|
||||
# If left empty, the release name sha suffixed with mgr, will be used to
|
||||
# produce an unique hostname.
|
||||
|
Loading…
Reference in New Issue
Block a user