controls.yaml 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4. name: dataops-hook-bootstrap
  5. namespace: {{ .Values.namespace }}
  6. annotations:
  7. helm.sh/hook: pre-install,pre-upgrade
  8. helm.sh/hook-weight: "-40"
  9. helm.sh/hook-delete-policy: before-hook-creation
  10. automountServiceAccountToken: false
  11. ---
  12. apiVersion: rbac.authorization.k8s.io/v1
  13. kind: Role
  14. metadata:
  15. name: dataops-hook-bootstrap
  16. namespace: {{ .Values.namespace }}
  17. annotations:
  18. helm.sh/hook: pre-install,pre-upgrade
  19. helm.sh/hook-weight: "-39"
  20. helm.sh/hook-delete-policy: before-hook-creation
  21. rules: []
  22. ---
  23. apiVersion: rbac.authorization.k8s.io/v1
  24. kind: RoleBinding
  25. metadata:
  26. name: dataops-hook-bootstrap
  27. namespace: {{ .Values.namespace }}
  28. annotations:
  29. helm.sh/hook: pre-install,pre-upgrade
  30. helm.sh/hook-weight: "-38"
  31. helm.sh/hook-delete-policy: before-hook-creation
  32. subjects:
  33. - kind: ServiceAccount
  34. name: dataops-hook-bootstrap
  35. namespace: {{ .Values.namespace }}
  36. roleRef: {apiGroup: rbac.authorization.k8s.io, kind: Role, name: dataops-hook-bootstrap}
  37. ---
  38. apiVersion: policy/v1
  39. kind: PodDisruptionBudget
  40. metadata:
  41. name: dataops-backend
  42. namespace: {{ .Values.namespace }}
  43. spec: {minAvailable: 1, selector: {matchLabels: {app: dataops-backend}}}
  44. ---
  45. apiVersion: networking.k8s.io/v1
  46. kind: NetworkPolicy
  47. metadata:
  48. name: dataops-default-deny
  49. namespace: {{ .Values.namespace }}
  50. spec: {podSelector: {}, policyTypes: [Ingress, Egress]}
  51. ---
  52. apiVersion: batch/v1
  53. kind: Job
  54. metadata:
  55. name: dataops-role-init
  56. namespace: {{ .Values.namespace }}
  57. labels: {app: dataops-role-init}
  58. annotations:
  59. helm.sh/hook: pre-install,pre-upgrade
  60. helm.sh/hook-weight: "-20"
  61. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  62. spec:
  63. template:
  64. metadata: {labels: {app: dataops-role-init}}
  65. spec:
  66. serviceAccountName: dataops-hook-bootstrap
  67. automountServiceAccountToken: false
  68. restartPolicy: Never
  69. securityContext: {seccompProfile: {type: RuntimeDefault}}
  70. containers:
  71. - name: role-init
  72. image: "{{ .Values.images.migrator }}"
  73. securityContext: {runAsNonRoot: true, allowPrivilegeEscalation: false, readOnlyRootFilesystem: true, capabilities: {drop: ["ALL"]}}
  74. env: [{name: DB_ROLE_INIT_DATABASE_URL, valueFrom: {secretKeyRef: {name: "{{ .Values.secrets.database }}", key: migration_url}}}]
  75. ---
  76. apiVersion: batch/v1
  77. kind: Job
  78. metadata:
  79. name: dataops-db-migrate
  80. namespace: {{ .Values.namespace }}
  81. labels: {app: dataops-db-migrate}
  82. annotations:
  83. helm.sh/hook: pre-install,pre-upgrade
  84. helm.sh/hook-weight: "-10"
  85. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  86. spec:
  87. template:
  88. metadata: {labels: {app: dataops-db-migrate}}
  89. spec:
  90. serviceAccountName: dataops-hook-bootstrap
  91. automountServiceAccountToken: false
  92. restartPolicy: Never
  93. securityContext: {seccompProfile: {type: RuntimeDefault}}
  94. containers:
  95. - name: db-migrate
  96. image: "{{ .Values.images.migrator }}"
  97. securityContext: {runAsNonRoot: true, allowPrivilegeEscalation: false, readOnlyRootFilesystem: true, capabilities: {drop: ["ALL"]}}
  98. env: [{name: MIGRATION_DATABASE_URL, valueFrom: {secretKeyRef: {name: "{{ .Values.secrets.database }}", key: migration_url}}}]
  99. ---
  100. apiVersion: networking.k8s.io/v1
  101. kind: NetworkPolicy
  102. metadata:
  103. name: dataops-hook-egress
  104. namespace: {{ .Values.namespace }}
  105. annotations:
  106. helm.sh/hook: pre-install,pre-upgrade
  107. helm.sh/hook-weight: "-30"
  108. helm.sh/hook-delete-policy: before-hook-creation
  109. spec:
  110. podSelector:
  111. matchExpressions:
  112. - key: app
  113. operator: In
  114. values: [dataops-role-init, dataops-db-migrate]
  115. policyTypes: [Egress]
  116. egress:
  117. - to:
  118. - namespaceSelector: {matchLabels: {kubernetes.io/metadata.name: kube-system}}
  119. podSelector: {matchLabels: {k8s-app: kube-dns}}
  120. ports: [{protocol: UDP, port: 53}, {protocol: TCP, port: 53}]
  121. - to:
  122. - podSelector: {matchLabels: {app: dataops-postgres}}
  123. ports: [{protocol: TCP, port: 5432}]
  124. ---
  125. apiVersion: networking.k8s.io/v1
  126. kind: NetworkPolicy
  127. metadata:
  128. name: dataops-runtime-egress
  129. namespace: {{ .Values.namespace }}
  130. spec:
  131. podSelector:
  132. matchExpressions:
  133. - key: app
  134. operator: In
  135. values: [dataops-backend, dataops-runner]
  136. policyTypes: [Egress]
  137. egress:
  138. - to:
  139. - namespaceSelector: {matchLabels: {kubernetes.io/metadata.name: kube-system}}
  140. podSelector: {matchLabels: {k8s-app: kube-dns}}
  141. ports: [{protocol: UDP, port: 53}, {protocol: TCP, port: 53}]
  142. - to:
  143. - podSelector: {matchLabels: {app: dataops-postgres}}
  144. ports: [{protocol: TCP, port: 5432}]
  145. - to:
  146. - podSelector: {matchLabels: {app: dataops-neo4j}}
  147. ports: [{protocol: TCP, port: 7687}]
  148. - to:
  149. - podSelector: {matchLabels: {app: dataops-minio}}
  150. ports: [{protocol: TCP, port: 9000}]
  151. - to:
  152. - podSelector:
  153. matchExpressions:
  154. - key: app
  155. operator: In
  156. values: [dataops-backend, dataops-runner]
  157. ports: [{protocol: TCP, port: 5500}, {protocol: TCP, port: 5600}]
  158. ---
  159. apiVersion: networking.k8s.io/v1
  160. kind: NetworkPolicy
  161. metadata:
  162. name: dataops-backend-ingress
  163. namespace: {{ .Values.namespace }}
  164. spec:
  165. podSelector: {matchLabels: {app: dataops-backend}}
  166. policyTypes: [Ingress]
  167. ingress:
  168. - from:
  169. - namespaceSelector: {matchLabels: {kubernetes.io/metadata.name: dataops-ingress}}
  170. podSelector: {matchLabels: {app: dataops-ingress-controller}}
  171. ports: [{protocol: TCP, port: 5500}]
  172. - from:
  173. - namespaceSelector: {matchLabels: {kubernetes.io/metadata.name: dataops-monitoring}}
  174. podSelector: {matchLabels: {app: dataops-health-check}}
  175. ports: [{protocol: TCP, port: 5500}]