blob: a3a263b07242a497350bcfbb7344498543cc51a3 [file] [log] [blame]
{%- from "kubernetes/map.jinja" import common with context -%}
{%- from "kubernetes/map.jinja" import master with context -%}
---
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
name: opencontrail
namespace: kube-system
labels:
app: opencontrail
addonmanager.kubernetes.io/mode: Reconcile
spec:
selector:
matchLabels:
app: opencontrail
template:
metadata:
labels:
app: opencontrail
spec:
hostNetwork: true
containers:
- name: rabbitmq
image: rabbitmq:{{ common.addons.get('contrail',{}).get('rabbitmq_version',"3.6.6") }}-management-alpine
{% raw %}
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- >
if [ -z "$(grep rabbitmq /etc/resolv.conf)" ]; then
sed "s/^search \([^ ]\+\)/search rabbitmq.\1 \1/" /etc/resolv.conf > /etc/resolv.conf.new;
cat /etc/resolv.conf.new > /etc/resolv.conf;
rm /etc/resolv.conf.new;
fi;
until rabbitmqctl node_health_check; do sleep 1; done;
if [[ "$HOSTNAME" != "ctl01" && -z "$(rabbitmqctl cluster_status | grep ctl01)" ]]; then
rabbitmqctl stop_app;
rabbitmqctl join_cluster rabbit@ctl01;
rabbitmqctl start_app;
fi;
rabbitmqctl set_policy ha-all "." '{"ha-mode":"exactly","ha-params":3,"ha-sync-mode":"automatic"}'
{% endraw %}
env:
- name: RABBITMQ_ERLANG_COOKIE
value: {{ common.addons.get('contrail',{}).get('rabbitmq_erlang_cookie',"YTQMGYEHFATZPDKPOCXX") }}
- name: RABBITMQ_DEFAULT_USER
value: {{ master.network.get('opencontrail',{}).get('message_queue',{}).get('user',"guest") }}
- name: RABBITMQ_DEFAULT_PASS
value: {{ master.network.get('opencontrail',{}).get('message_queue',{}).get('password',"guest") }}
- name: opencontrail-controller
image: {{ common.addons.opencontrail.controller.image }}
securityContext:
privileged: true
env:
- name: CONTRAIL_UID
value: "{{ salt['user.info']('contrail').get('uid', 0) }}"
- name: CONTRAIL_GID
value: "{{ salt['group.info']('contrail').get('gid', 0) }}"
{%- if pillar.get('opencontrail', None) %}
- name: API_WORKERS
value: "{{ pillar.get('opencontrail').get('config', {}).get('api',{}).get('workers_count', 4) }}"
{%- endif %}
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- >
service rabbitmq-server stop;
systemctl disable rabbitmq-server.service;
service redis-server stop;
systemctl disable redis-server.service;
volumeMounts:
- name: etc-contrail
mountPath: /etc/contrail
- name: var-lib-configdb
mountPath: /var/lib/cassandra
- name: var-lib-config-zookeeper-data
mountPath: /var/lib/zookeeper
- name: var-lib-zookeeper-myid
mountPath: /var/lib/zookeeper/myid
- name: etc-cassandra-cassandra-env-sh
mountPath: /etc/cassandra/cassandra-env.sh
- name: etc-cassandra-cassandra-yaml
mountPath: /etc/cassandra/cassandra.yaml
- name: etc-cassandra-logback-xml
mountPath: /etc/cassandra/logback.xml
- name: etc-zookeeper-conf-zoo-cfg
mountPath: /etc/zookeeper/conf/zoo.cfg
- name: etc-zookeeper-conf-log4j-properties
mountPath: /etc/zookeeper/conf/log4j.properties
- name: contrail-logs
mountPath: /var/log/contrail
- name: journal-controller
mountPath: /var/log/journal
- name: opencontrail-analyticsdb
image: {{ common.addons.opencontrail.analyticsdb.image }}
securityContext:
privileged: true
env:
- name: CONTRAIL_UID
value: "{{ salt['user.info']('contrail').get('uid', 0) }}"
- name: CONTRAIL_GID
value: "{{ salt['group.info']('contrail').get('gid', 0) }}"
volumeMounts:
- name: etc-contrail
mountPath: /etc/contrail
- name: etc-cassandra-cassandra-env-analytics-sh
mountPath: /etc/cassandra/cassandra-env.sh
- name: etc-cassandra-cassandra-analytics-yaml
mountPath: /etc/cassandra/cassandra.yaml
- name: etc-cassandra-logback-xml
mountPath: /etc/cassandra/logback.xml
- name: var-lib-analyticsdb
mountPath: /var/lib/cassandra
- name: var-lib-analyticsdb-zookeeper-data
mountPath: /var/lib/zookeeper
- name: var-lib-zookeeper-myid
mountPath: /var/lib/zookeeper/myid
- name: usr-share-kafka-config-server-properties
mountPath: /usr/share/kafka/config/server.properties
- name: usr-share-kafka-config-consumer-properties
mountPath: /usr/share/kafka/config/consumer.properties
- name: usr-share-kafka-config-zookeeper-properties
mountPath: /usr/share/kafka/config/zookeeper.properties
- name: usr-share-kafka-logs
mountPath: /usr/share/kafka/logs
- name: etc-zookeeper-conf-zoo-analytics-cfg
mountPath: /etc/zookeeper/conf/zoo.cfg
- name: etc-zookeeper-conf-log4j-properties
mountPath: /etc/zookeeper/conf/log4j.properties
- name: contrail-logs
mountPath: /var/log/contrail
- name: journal-analyticsdb
mountPath: /var/log/journal
- name: opencontrail-analytics
image: {{ common.addons.opencontrail.analytics.image }}
volumeMounts:
- name: etc-contrail
mountPath: /etc/contrail
- name: etc-redis-redis-conf
mountPath: /etc/redis/redis.conf
- name: contrail-logs
mountPath: /var/log/contrail
- name: journal-analytics
mountPath: /var/log/journal
securityContext:
privileged: true
env:
- name: CONTRAIL_UID
value: "{{ salt['user.info']('contrail').get('uid', 0) }}"
- name: CONTRAIL_GID
value: "{{ salt['group.info']('contrail').get('gid', 0) }}"
volumes:
# analytics / analyticsdb / controller /
- name: etc-contrail
hostPath:
path: /etc/contrail
type: DirectoryOrCreate
- name: contrail-logs
hostPath:
path: /var/log/contrail
type: DirectoryOrCreate
# controller
- name: var-lib-configdb
hostPath:
path: /var/lib/configdb
type: DirectoryOrCreate
- name: var-lib-config-zookeeper-data
hostPath:
path: /var/lib/config_zookeeper_data
type: DirectoryOrCreate
- name: etc-cassandra-cassandra-env-sh
hostPath:
path: /etc/cassandra/cassandra-env.sh
type: File
- name: etc-cassandra-cassandra-yaml
hostPath:
path: /etc/cassandra/cassandra.yaml
type: File
- name: etc-zookeeper-conf-zoo-cfg
hostPath:
path: /etc/zookeeper/conf/zoo.cfg
type: File
- name: journal-controller
hostPath:
path: /var/log/journal/contrail-controller
type: DirectoryOrCreate
# analyticsdb
- name: etc-cassandra-cassandra-env-analytics-sh
hostPath:
path: /etc/cassandra/cassandra-env-analytics.sh
type: File
- name: etc-cassandra-cassandra-analytics-yaml
hostPath:
path: /etc/cassandra/cassandra_analytics.yaml
type: File
- name: etc-cassandra-logback-xml # is used by controller as well
hostPath:
path: /etc/cassandra/logback.xml
type: File
- name: var-lib-analyticsdb
hostPath:
path: /var/lib/analyticsdb
type: DirectoryOrCreate
- name: var-lib-analyticsdb-zookeeper-data
hostPath:
path: /var/lib/analyticsdb-zookeeper-data
type: DirectoryOrCreate
- name: var-lib-zookeeper-myid # is used for controller as well
hostPath:
path: /var/lib/zookeeper/myid
type: File
- name: usr-share-kafka-config-server-properties
hostPath:
path: /usr/share/kafka/config/server.properties
type: File
- name: usr-share-kafka-config-consumer-properties
hostPath:
path: /usr/share/kafka/config/consumer.properties
type: File
- name: usr-share-kafka-config-zookeeper-properties
hostPath:
path: /usr/share/kafka/config/zookeeper.properties
type: File
- name: usr-share-kafka-logs
hostPath:
path: /usr/share/kafka/logs
type: DirectoryOrCreate
- name: etc-zookeeper-conf-zoo-analytics-cfg
hostPath:
path: /etc/zookeeper/conf/zoo_analytics.cfg
type: File
- name: etc-zookeeper-conf-log4j-properties # is used by controller as well
hostPath:
path: /etc/zookeeper/conf/log4j.properties
type: File
- name: journal-analyticsdb
hostPath:
path: /var/log/journal/contrail-analyticsdb
type: DirectoryOrCreate
# analytics
- name: etc-redis-redis-conf
hostPath:
path: /etc/redis/redis.conf
type: File
- name: journal-analytics
hostPath:
path: /var/log/journal/contrail-analytics
type: DirectoryOrCreate
nodeSelector:
"node-role.kubernetes.io/master": "true"
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master