peer-validation.yaml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: kilo
  5. ---
  6. apiVersion: admissionregistration.k8s.io/v1
  7. kind: ValidatingWebhookConfiguration
  8. metadata:
  9. name: "peers.kilo.squat.ai"
  10. webhooks:
  11. - name: "peers.kilo.squat.ai"
  12. rules:
  13. - apiGroups: ["kilo.squat.ai"]
  14. apiVersions: ["v1alpha1"]
  15. operations: ["CREATE", "UPDATE"]
  16. resources: ["peers"]
  17. scope: "Cluster"
  18. clientConfig:
  19. service:
  20. namespace: "kilo"
  21. name: "peer-validation"
  22. path: "/validate"
  23. admissionReviewVersions: ["v1"]
  24. sideEffects: None
  25. timeoutSeconds: 5
  26. ---
  27. apiVersion: apps/v1
  28. kind: Deployment
  29. metadata:
  30. name: peer-validation-server
  31. namespace: kilo
  32. labels:
  33. app.kubernetes.io/name: peer-validation-server
  34. spec:
  35. replicas: 1
  36. selector:
  37. matchLabels:
  38. app.kubernetes.io/name: peer-validation-server
  39. template:
  40. metadata:
  41. labels:
  42. app.kubernetes.io/name: peer-validation-server
  43. spec:
  44. securityContext:
  45. runAsNonRoot: true
  46. runAsUser: 1000
  47. containers:
  48. - name: server
  49. image: squat/kilo:0.7.0
  50. args:
  51. - webhook
  52. - --cert-file=/run/secrets/tls/tls.crt
  53. - --key-file=/run/secrets/tls/tls.key
  54. - --listen-metrics=:1107
  55. - --listen=:8443
  56. ports:
  57. - containerPort: 8443
  58. name: webhook
  59. - containerPort: 1107
  60. name: metrics
  61. volumeMounts:
  62. - name: tls
  63. mountPath: /run/secrets/tls
  64. readOnly: true
  65. volumes:
  66. - name: tls
  67. secret:
  68. secretName: peer-validation-webhook-tls
  69. ---
  70. apiVersion: v1
  71. kind: Service
  72. metadata:
  73. name: peer-validation
  74. namespace: kilo
  75. spec:
  76. selector:
  77. app.kubernetes.io/name: peer-validation-server
  78. ports:
  79. - port: 443
  80. targetPort: webhook
  81. ---
  82. apiVersion: v1
  83. kind: ServiceAccount
  84. metadata:
  85. name: kilo-peer-validation
  86. namespace: kilo
  87. ---
  88. apiVersion: rbac.authorization.k8s.io/v1
  89. kind: ClusterRole
  90. metadata:
  91. name: kilo-peer-validation
  92. rules:
  93. - apiGroups:
  94. - admissionregistration.k8s.io
  95. resources:
  96. - validatingwebhookconfigurations
  97. resourceNames:
  98. - peers.kilo.squat.ai
  99. verbs:
  100. - get
  101. - update
  102. ---
  103. apiVersion: rbac.authorization.k8s.io/v1
  104. kind: ClusterRoleBinding
  105. metadata:
  106. name: kilo-peer-validation
  107. roleRef:
  108. apiGroup: rbac.authorization.k8s.io
  109. kind: ClusterRole
  110. name: kilo-peer-validation
  111. subjects:
  112. - kind: ServiceAccount
  113. namespace: kilo
  114. name: kilo-peer-validation
  115. ---
  116. apiVersion: rbac.authorization.k8s.io/v1
  117. kind: Role
  118. metadata:
  119. name: kilo-peer-validation
  120. namespace: kilo
  121. rules:
  122. - apiGroups:
  123. - ""
  124. resources:
  125. - secrets
  126. verbs:
  127. - get
  128. - create
  129. ---
  130. apiVersion: rbac.authorization.k8s.io/v1
  131. kind: RoleBinding
  132. metadata:
  133. name: kilo-peer-validation
  134. namespace: kilo
  135. roleRef:
  136. apiGroup: rbac.authorization.k8s.io
  137. kind: Role
  138. name: kilo-peer-validation
  139. subjects:
  140. - kind: ServiceAccount
  141. namespace: kilo
  142. name: kilo-peer-validation
  143. ---
  144. apiVersion: batch/v1
  145. kind: Job
  146. metadata:
  147. name: cert-gen
  148. namespace: kilo
  149. spec:
  150. template:
  151. spec:
  152. serviceAccountName: kilo-peer-validation
  153. initContainers:
  154. - name: create
  155. image: k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0
  156. args:
  157. - create
  158. - --namespace=kilo
  159. - --secret-name=peer-validation-webhook-tls
  160. - --host=peer-validation,peer-validation.kilo.svc
  161. - --key-name=tls.key
  162. - --cert-name=tls.crt
  163. containers:
  164. - name: patch
  165. image: k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0
  166. args:
  167. - patch
  168. - --webhook-name=peers.kilo.squat.ai
  169. - --secret-name=peer-validation-webhook-tls
  170. - --namespace=kilo
  171. - --patch-mutating=false
  172. restartPolicy: OnFailure
  173. backoffLimit: 4