apiVersion: v1 kind: Namespace metadata: name: cloudhost-builds labels: app.kubernetes.io/part-of: cloudhost --- apiVersion: v1 kind: ServiceAccount metadata: name: kaniko-builder namespace: cloudhost-builds --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: kaniko-builder namespace: cloudhost-builds rules: - apiGroups: [''] resources: ['pods', 'pods/log', 'secrets', 'configmaps', 'persistentvolumeclaims'] verbs: ['create', 'get', 'list', 'watch', 'delete', 'patch', 'update'] - apiGroups: ['batch'] resources: ['jobs'] verbs: ['create', 'get', 'list', 'watch', 'delete'] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: kaniko-builder namespace: cloudhost-builds roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: kaniko-builder subjects: - kind: ServiceAccount name: kaniko-builder namespace: cloudhost-builds --- # In-cluster registry for Kaniko push + app image pull (HTTP — add TLS in production). apiVersion: v1 kind: Service metadata: name: registry namespace: cloudhost-builds spec: type: ClusterIP ports: - port: 5000 targetPort: 5000 selector: app: registry --- apiVersion: apps/v1 kind: Deployment metadata: name: registry namespace: cloudhost-builds spec: replicas: 1 selector: matchLabels: app: registry template: metadata: labels: app: registry spec: containers: - name: registry image: registry:2 ports: - containerPort: 5000 env: - name: REGISTRY_HTTP_ADDR value: ':5000'