blob: b6ea5f644f0ef6e7865d3e98f670151fafb04a4c [file] [log] [blame]
giolekvab22550e2020-05-12 22:09:03 +04001---
2apiVersion: v1
3kind: Namespace
4metadata:
5 name: pcloud-app-manager
6---
giolekvad6cbd8f2020-05-16 13:52:01 +04007# TODO(giolekva): use default service account
giolekvab22550e2020-05-12 22:09:03 +04008apiVersion: v1
9kind: ServiceAccount
10metadata:
11 name: app-manager
12 namespace: pcloud-app-manager
13---
14apiVersion: rbac.authorization.k8s.io/v1
15kind: ClusterRole
16metadata:
17 name: deploy-apps
18rules:
19 - apiGroups: [""]
giolekva1c0372c2020-05-16 21:18:59 +040020 resources: ["namespaces", "services", "pods", "secrets", "serviceaccounts", "configmaps", "persistentvolumeclaims"]
giolekvab22550e2020-05-12 22:09:03 +040021 verbs: ["*"]
22 - apiGroups: ["apps"]
23 resources: ["deployments", "statefulsets"]
24 verbs: ["*"]
25 - apiGroups: ["traefik.containo.us"]
26 resources: ["ingressroutes"]
giolekva1c0372c2020-05-16 21:18:59 +040027 verbs: ["*"]
28 - apiGroups: ["rbac.authorization.k8s.io"]
29 resources: ["roles", "rolebindings"]
30 verbs: ["*"]
giolekvab22550e2020-05-12 22:09:03 +040031---
32apiVersion: rbac.authorization.k8s.io/v1
33kind: ClusterRoleBinding
34metadata:
35 name: deploy-apps-to-sa
36subjects:
37 - kind: ServiceAccount
38 name: app-manager
39 namespace: pcloud-app-manager
40roleRef:
41 kind: ClusterRole
42 name: deploy-apps
43 apiGroup: rbac.authorization.k8s.io
44---
45kind: Service
46apiVersion: v1
47metadata:
48 name: app-manager
49 namespace: pcloud-app-manager
50spec:
51 type: ClusterIP
52 selector:
53 app: app-manager
54 ports:
55 - nodePort:
56 port: 80
57 targetPort: 1234
58---
59apiVersion: traefik.containo.us/v1alpha1
60kind: IngressRoute
61metadata:
62 name: ingress
63 namespace: pcloud-app-manager
64spec:
65 entryPoints:
66 - web
67 routes:
68 - kind: Rule
69 match: PathPrefix(`/app-manager`)
70 services:
71 - kind: Service
72 name: app-manager
73 namespace: pcloud-app-manager
74 passHostHeader: true
75 port: 80
76---
77apiVersion: apps/v1
giolekva65c43262020-05-13 21:58:39 +040078kind: StatefulSet
giolekvab22550e2020-05-12 22:09:03 +040079metadata:
80 name: app-manager
81 namespace: pcloud-app-manager
82spec:
83 selector:
84 matchLabels:
85 app: app-manager
giolekva65c43262020-05-13 21:58:39 +040086 serviceName: app-manager
giolekvab22550e2020-05-12 22:09:03 +040087 replicas: 1
88 template:
89 metadata:
90 labels:
91 app: app-manager
92 spec:
93 serviceAccountName: app-manager
94 containers:
95 - name: app-manager
96 image: giolekva/pcloud-app-manager:latest
97 imagePullPolicy: Always
giolekva65c43262020-05-13 21:58:39 +040098 volumeMounts:
99 - name: state
100 mountPath: /pcloud/app-manager
giolekvab22550e2020-05-12 22:09:03 +0400101 ports:
102 - containerPort: 1234
giolekva65c43262020-05-13 21:58:39 +0400103 command: ["app-manager", "--logtostderr", "--port=1234", "--api_addr=http://api.pcloud.svc:1111/add_schema", "--helm_bin=/usr/bin/helm", "--manager_store_file=/pcloud/app-manager/manager-state"]
104 volumeClaimTemplates:
105 - metadata:
106 name: state
107 spec:
108 accessModes: [ "ReadWriteOnce" ]
109 storageClassName: "local-path"
110 resources:
111 requests:
112 storage: 10Mi