hawkular_cassandra_rc.j2 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. apiVersion: v1
  2. kind: ReplicationController
  3. metadata:
  4. name: hawkular-cassandra-{{ node }}
  5. labels:
  6. metrics-infra: hawkular-cassandra
  7. name: hawkular-cassandra
  8. type: hawkular-cassandra
  9. spec:
  10. selector:
  11. name: hawkular-cassandra-{{ node }}
  12. replicas: {{replica_count}}
  13. template:
  14. version: v1
  15. metadata:
  16. labels:
  17. metrics-infra: hawkular-cassandra
  18. name: hawkular-cassandra-{{ node }}
  19. type: hawkular-cassandra
  20. spec:
  21. serviceAccount: cassandra
  22. securityContext:
  23. fsGroup: {{ fsgroup }}
  24. seLinuxOptions:
  25. level: {{ selinux_level }}
  26. supplementalGroups:
  27. - {{openshift_metrics_cassandra_storage_group}}
  28. {% if node_selector is iterable and node_selector | length > 0 %}
  29. nodeSelector:
  30. {% for key, value in node_selector.items() %}
  31. {{key}}: "{{value}}"
  32. {% endfor %}
  33. {% endif %}
  34. containers:
  35. - image: "{{ openshift_metrics_cassandra_image }}"
  36. imagePullPolicy: IfNotPresent
  37. name: hawkular-cassandra-{{ node }}
  38. ports:
  39. - name: cql-port
  40. containerPort: 9042
  41. - name: thrift-port
  42. containerPort: 9160
  43. - name: tcp-port
  44. containerPort: 7000
  45. - name: ssl-port
  46. containerPort: 7001
  47. command:
  48. - "/opt/apache-cassandra/bin/cassandra-docker.sh"
  49. - "--cluster_name=hawkular-metrics"
  50. - "--data_volume=/cassandra_data"
  51. - "--internode_encryption=all"
  52. - "--require_node_auth=true"
  53. - "--enable_client_encryption=true"
  54. - "--require_client_auth=true"
  55. env:
  56. - name: CASSANDRA_MASTER
  57. value: "{{ master }}"
  58. - name: CASSANDRA_DATA_VOLUME
  59. value: "/cassandra_data"
  60. - name: JVM_OPTS
  61. value: "-Dcassandra.commitlog.ignorereplayerrors=true"
  62. - name: ENABLE_PROMETHEUS_ENDPOINT
  63. value: "{{ openshift_metrics_cassandra_enable_prometheus_endpoint }}"
  64. - name: TRUSTSTORE_NODES_AUTHORITIES
  65. value: "/hawkular-cassandra-certs/tls.peer.truststore.crt"
  66. - name: TRUSTSTORE_CLIENT_AUTHORITIES
  67. value: "/hawkular-cassandra-certs/tls.client.truststore.crt"
  68. - name: TAKE_SNAPSHOT
  69. value: "{{ openshift_metrics_cassandra_take_snapshot }}"
  70. - name: POD_NAMESPACE
  71. valueFrom:
  72. fieldRef:
  73. fieldPath: metadata.namespace
  74. - name: MEMORY_LIMIT
  75. valueFrom:
  76. resourceFieldRef:
  77. resource: limits.memory
  78. - name: CPU_LIMIT
  79. valueFrom:
  80. resourceFieldRef:
  81. resource: limits.cpu
  82. divisor: 1m
  83. volumeMounts:
  84. - name: cassandra-data
  85. mountPath: "/cassandra_data"
  86. - name: hawkular-cassandra-certs
  87. mountPath: "/hawkular-cassandra-certs"
  88. securityContext:
  89. runAsUser: {{ run_as_uid }}
  90. {% if ((openshift_metrics_cassandra_limits_cpu is defined and openshift_metrics_cassandra_limits_cpu is not none)
  91. or (openshift_metrics_cassandra_limits_memory is defined and openshift_metrics_cassandra_limits_memory is not none)
  92. or (openshift_metrics_cassandra_requests_cpu is defined and openshift_metrics_cassandra_requests_cpu is not none)
  93. or (openshift_metrics_cassandra_requests_memory is defined and openshift_metrics_cassandra_requests_memory is not none))
  94. %}
  95. resources:
  96. {% if (openshift_metrics_cassandra_limits_cpu is not none
  97. or openshift_metrics_cassandra_limits_memory is not none)
  98. %}
  99. limits:
  100. {% if openshift_metrics_cassandra_limits_cpu is not none %}
  101. cpu: "{{openshift_metrics_cassandra_limits_cpu}}"
  102. {% endif %}
  103. {% if openshift_metrics_cassandra_limits_memory is not none %}
  104. memory: "{{openshift_metrics_cassandra_limits_memory}}"
  105. {% endif %}
  106. {% endif %}
  107. {% if (openshift_metrics_cassandra_requests_cpu is not none
  108. or openshift_metrics_cassandra_requests_memory is not none)
  109. %}
  110. requests:
  111. {% if openshift_metrics_cassandra_requests_cpu is not none %}
  112. cpu: "{{openshift_metrics_cassandra_requests_cpu}}"
  113. {% endif %}
  114. {% if openshift_metrics_cassandra_requests_memory is not none %}
  115. memory: "{{openshift_metrics_cassandra_requests_memory}}"
  116. {% endif %}
  117. {% endif %}
  118. {% endif %}
  119. readinessProbe:
  120. exec:
  121. command:
  122. - "/opt/apache-cassandra/bin/cassandra-docker-ready.sh"
  123. timeoutSeconds: 10
  124. lifecycle:
  125. preStop:
  126. exec:
  127. command:
  128. - "/opt/apache-cassandra/bin/cassandra-prestop.sh"
  129. postStart:
  130. exec:
  131. command:
  132. - "/opt/apache-cassandra/bin/cassandra-poststart.sh"
  133. terminationGracePeriodSeconds: 1800
  134. volumes:
  135. - name: cassandra-data
  136. {% if openshift_metrics_cassandra_storage_type == 'emptydir' %}
  137. emptyDir: {}
  138. {% else %}
  139. persistentVolumeClaim:
  140. claimName: "{{ openshift_metrics_cassandra_pvc_prefix }}-{{ node }}"
  141. {% endif %}
  142. - name: hawkular-cassandra-certs
  143. secret:
  144. secretName: hawkular-cassandra-certs