diff --git a/Makefile b/Makefile index 6be593cc63..5151046635 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,8 @@ DEV_DOCKER_TAG_BASE ?= gcr.io/ansible-tower-engineering # Comma separated list SRC_ONLY_PKGS ?= cffi,pycparser,psycopg2,twilio +CURWD = $(shell pwd) + # Determine appropriate shasum command UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) @@ -607,6 +609,10 @@ docker-compose-elk: docker-auth docker-compose-cluster-elk: docker-auth TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose-cluster.yml -f tools/elastic/docker-compose.logstash-link-cluster.yml -f tools/elastic/docker-compose.elastic-override.yml up --no-recreate +minishift-dev: + ansible-playbook -i localhost, -e devtree_directory=$(CURWD) tools/clusterdevel/start_minishift_dev.yml + + clean-elk: docker stop tools_kibana_1 docker stop tools_logstash_1 diff --git a/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 b/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 index ce0c3c3866..9d0627ae9f 100644 --- a/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 +++ b/tools/clusterdevel/roles/minishift/templates/configmap.yml.j2 @@ -1,3 +1,4 @@ +--- apiVersion: v1 kind: ConfigMap metadata: @@ -100,3 +101,28 @@ data: 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', }, } +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: rabbitmq-config + namespace: {{ awx_dev_project }} +data: + enabled_plugins: | + [rabbitmq_management,rabbitmq_peer_discovery_k8s]. + rabbitmq.conf: | + default_user = awx + default_pass = abcdefg + default_vhost = awx + + ## Clustering + cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s + cluster_formation.k8s.host = kubernetes.default.svc.cluster.local + cluster_formation.k8s.address_type = ip + cluster_formation.node_cleanup.interval = 10 + cluster_formation.node_cleanup.only_log_warning = false + cluster_partition_handling = autoheal + ## queue master locator + queue_master_locator=min-masters + ## enable guest user + loopback_users.guest = false diff --git a/tools/clusterdevel/roles/minishift/templates/hostdev.yml.j2 b/tools/clusterdevel/roles/minishift/templates/hostdev.yml.j2 index fdd4be936b..3c7c0e24ec 100644 --- a/tools/clusterdevel/roles/minishift/templates/hostdev.yml.j2 +++ b/tools/clusterdevel/roles/minishift/templates/hostdev.yml.j2 @@ -10,6 +10,7 @@ spec: metadata: labels: name: awx + app: rabbitmq spec: serviceAccountName: awx containers: @@ -26,6 +27,23 @@ spec: - name: awx-rabbit image: ansible/awx_rabbitmq:latest imagePullPolicy: Always + ports: + - name: http + protocol: TCP + containerPort: 15672 + - name: amqp + protocol: TCP + containerPort: 5672 + livenessProbe: + exec: + command: ["rabbitmqctl", "status"] + initialDelaySeconds: 30 + timeoutSeconds: 10 + readinessProbe: + exec: + command: ["rabbitmqctl", "status"] + initialDelaySeconds: 10 + timeoutSeconds: 10 env: # For consupmption by rabbitmq-env.conf - name: MY_POD_IP @@ -34,32 +52,15 @@ spec: fieldPath: status.podIP - name: RABBITMQ_USE_LONGNAME value: "true" - - name: ERLANG_COOKIE - value: "test" - - name: RABBITMQ_ERLANG_COOKIE - value: "cookiemonster" - name: RABBITMQ_NODENAME value: "rabbit@$(MY_POD_IP)" - - name: AUTOCLUSTER_TYPE - value: "etcd" - - name: AUTOCLUSTER_DELAY - value: "60" - - name: ETCD_HOST - value: "etcd" - - name: AUTOCLUSTER_CLEANUP - value: "true" - - name: CLEANUP_WARN_ONLY - value: "false" - - name: CLEANUP_INTERVAL - value: "30" - - name: RABBITMQ_DEFAULT_USER - value: "awx" - - name: RABBITMQ_DEFAULT_PASS - value: "abcdefg" - - name: RABBITMQ_DEFAULT_VHOST - value: "awx" - - name: RABBITMQ_CONFIG_FILE - value: "/etc/rabbitmq/rabbitmq" + - name: K8S_SERVICE_NAME + value: "rabbitmq" + - name: RABBITMQ_ERLANG_COOKIE + value: "cookiemonster" + volumeMounts: + - name: rabbitmq-config + mountPath: /etc/rabbitmq - name: awx-memcached image: memcached - name: postgres @@ -76,3 +77,102 @@ spec: path: settings.py - key: secret_key path: SECRET_KEY + - name: rabbitmq-config + configMap: + name: rabbitmq-config + items: + - key: rabbitmq.conf + path: rabbitmq.conf + - key: enabled_plugins + path: enabled_plugins +--- +apiVersion: v1 +kind: Service +metadata: + name: awx-web-svc + namespace: {{ awx_dev_project }} + labels: + name: awx-web-svc +spec: + type: "NodePort" + ports: + - name: https + port: 8043 + - name: http + port: 8013 + - name: notsure + port: 8080 + selector: + name: awx +--- +kind: Service +apiVersion: v1 +metadata: + namespace: {{ awx_dev_project }} + name: rabbitmq + labels: + app: rabbitmq + type: LoadBalancer +spec: + type: NodePort + ports: + - name: http + protocol: TCP + port: 15672 + targetPort: 15672 + - name: amqp + protocol: TCP + port: 5672 + targetPort: 5672 + selector: + app: rabbitmq +--- +apiVersion: v1 +kind: Service +metadata: + name: awx-rmq-mgmt + namespace: {{ awx_dev_project }} + labels: + name: awx-rmq-mgmt +spec: + type: ClusterIP + ports: + - name: rmqmgmt + port: 15672 + targetPort: 15672 + selector: + name: awx +--- +apiVersion: v1 +kind: Route +metadata: + name: awx-web-svc + namespace: {{ awx_dev_project }} +spec: + port: + targetPort: http + tls: + insecureEdgeTerminationPolicy: Allow + termination: edge + to: + kind: Service + name: awx-web-svc + weight: 100 + wildcardPolicy: None +--- +apiVersion: v1 +kind: Route +metadata: + name: awx-rmq-mgmt + namespace: {{ awx_dev_project }} +spec: + port: + targetPort: rmqmgmt + tls: + insecureEdgeTerminationPolicy: Allow + termination: edge + to: + kind: Service + name: rabbitmq + weight: 100 + wildcardPolicy: None diff --git a/tools/clusterdevel/roles/minishift/templates/serviceacct.yml.j2 b/tools/clusterdevel/roles/minishift/templates/serviceacct.yml.j2 index 7e335dd788..fd6fe9c9c0 100644 --- a/tools/clusterdevel/roles/minishift/templates/serviceacct.yml.j2 +++ b/tools/clusterdevel/roles/minishift/templates/serviceacct.yml.j2 @@ -4,3 +4,28 @@ kind: ServiceAccount metadata: name: awx namespace: {{ awx_dev_project }} +--- +kind: Role +apiVersion: v1 +metadata: + name: endpoint-reader + namespace: {{ awx_dev_project }} +rules: + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get"] +--- +kind: RoleBinding +apiVersion: v1 +metadata: + name: endpoint-reader + namespace: {{ awx_dev_project }} +roleRef: + name: endpoint-reader + namespace: {{ awx_dev_project }} +subjects: + - kind: ServiceAccount + name: awx + namespace: {{ awx_dev_project }} +userNames: + - system:serviceaccount:{{ awx_dev_project }}:awx