blob: a4c9d6914f0e85f12a307c59792019a07073faf7 [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: [""]
20 resources: ["namespaces", "services", "pods", "secrets"]
21 verbs: ["*"]
22 - apiGroups: ["apps"]
23 resources: ["deployments", "statefulsets"]
24 verbs: ["*"]
25 - apiGroups: ["traefik.containo.us"]
26 resources: ["ingressroutes"]
27 verbs: ["*"]
28---
29apiVersion: rbac.authorization.k8s.io/v1
30kind: ClusterRoleBinding
31metadata:
32 name: deploy-apps-to-sa
33subjects:
34 - kind: ServiceAccount
35 name: app-manager
36 namespace: pcloud-app-manager
37roleRef:
38 kind: ClusterRole
39 name: deploy-apps
40 apiGroup: rbac.authorization.k8s.io
41---
42kind: Service
43apiVersion: v1
44metadata:
45 name: app-manager
46 namespace: pcloud-app-manager
47spec:
48 type: ClusterIP
49 selector:
50 app: app-manager
51 ports:
52 - nodePort:
53 port: 80
54 targetPort: 1234
55---
56apiVersion: traefik.containo.us/v1alpha1
57kind: IngressRoute
58metadata:
59 name: ingress
60 namespace: pcloud-app-manager
61spec:
62 entryPoints:
63 - web
64 routes:
65 - kind: Rule
66 match: PathPrefix(`/app-manager`)
67 services:
68 - kind: Service
69 name: app-manager
70 namespace: pcloud-app-manager
71 passHostHeader: true
72 port: 80
73---
74apiVersion: apps/v1
giolekva65c43262020-05-13 21:58:39 +040075kind: StatefulSet
giolekvab22550e2020-05-12 22:09:03 +040076metadata:
77 name: app-manager
78 namespace: pcloud-app-manager
79spec:
80 selector:
81 matchLabels:
82 app: app-manager
giolekva65c43262020-05-13 21:58:39 +040083 serviceName: app-manager
giolekvab22550e2020-05-12 22:09:03 +040084 replicas: 1
85 template:
86 metadata:
87 labels:
88 app: app-manager
89 spec:
90 serviceAccountName: app-manager
91 containers:
92 - name: app-manager
93 image: giolekva/pcloud-app-manager:latest
94 imagePullPolicy: Always
giolekva65c43262020-05-13 21:58:39 +040095 volumeMounts:
96 - name: state
97 mountPath: /pcloud/app-manager
giolekvab22550e2020-05-12 22:09:03 +040098 ports:
99 - containerPort: 1234
giolekva65c43262020-05-13 21:58:39 +0400100 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"]
101 volumeClaimTemplates:
102 - metadata:
103 name: state
104 spec:
105 accessModes: [ "ReadWriteOnce" ]
106 storageClassName: "local-path"
107 resources:
108 requests:
109 storage: 10Mi