Skip to content

Commit 17df9e7

Browse files
committed
Generate memcached for obs api prod
1 parent ec0cee0 commit 17df9e7

File tree

3 files changed

+167
-7
lines changed

3 files changed

+167
-7
lines changed

Diff for: magefiles/cache.go

+20-7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55

66
"github.com/observatorium/observatorium/configuration_go/kubegen/openshift"
7+
"github.com/philipgough/mimic"
78
"github.com/philipgough/mimic/encoding"
89
monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
910

@@ -79,13 +80,25 @@ func (f *memcachedFlags) ToArgs() []string {
7980
}
8081

8182
func (s Stage) Cache() {
82-
gen := s.generator(cacheName)
83-
gwConf := s.gatewayCache(StageMaps)
83+
gen := func() *mimic.Generator {
84+
return s.generator(cacheName)
85+
}
86+
cache(gen, StageMaps, s.namespace())
87+
}
88+
89+
func (p Production) Cache() {
90+
gen := func() *mimic.Generator {
91+
return p.generator(cacheName)
92+
}
93+
cache(gen, ProductionMaps, p.namespace())
94+
}
8495

96+
func cache(g func() *mimic.Generator, m TemplateMaps, namespace string) {
97+
gwConf := gatewayCache(m, namespace)
8598
var sms []runtime.Object
8699

87100
objs := []runtime.Object{
88-
memcachedStatefulSet(gwConf, StageMaps),
101+
memcachedStatefulSet(gwConf, m),
89102
createServiceAccount(gwConf.ServiceAccount, gwConf.Namespace, gwConf.Labels),
90103
createCacheHeadlessService(gwConf),
91104
}
@@ -96,19 +109,19 @@ func (s Stage) Cache() {
96109
Name: cacheName,
97110
}, nil)
98111
enc := encoding.GhodssYAML(template)
112+
gen := g()
99113
gen.Add(cacheTemplate, enc)
100114
gen.Generate()
101115

102-
gen = s.generator(cacheName)
103116
template = openshift.WrapInTemplate(sms, metav1.ObjectMeta{
104117
Name: cacheName + "-service-monitor",
105118
}, nil)
119+
gen = g()
106120
gen.Add("service-monitor-"+cacheTemplate, encoding.GhodssYAML(template))
107121
gen.Generate()
108-
109122
}
110123

111-
func (s Stage) gatewayCache(m TemplateMaps) *memcachedConfig {
124+
func gatewayCache(m TemplateMaps, namespace string) *memcachedConfig {
112125
return &memcachedConfig{
113126
Flags: &memcachedFlags{
114127
Memory: 2048,
@@ -117,7 +130,7 @@ func (s Stage) gatewayCache(m TemplateMaps) *memcachedConfig {
117130
Verbose: true,
118131
},
119132
Name: gatewayCacheName,
120-
Namespace: s.namespace(),
133+
Namespace: namespace,
121134
MemcachedImage: m.Images[apiCache],
122135
ExporterImage: m.Images[memcachedExporter],
123136
Labels: map[string]string{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
apiVersion: template.openshift.io/v1
2+
kind: Template
3+
metadata:
4+
creationTimestamp: null
5+
name: memcached
6+
objects:
7+
- apiVersion: v1
8+
kind: Service
9+
metadata:
10+
creationTimestamp: null
11+
labels:
12+
app.kubernetes.io/component: api-memcached
13+
app.kubernetes.io/instance: rhobs
14+
app.kubernetes.io/name: memcached
15+
app.kubernetes.io/part-of: observatorium
16+
app.kubernetes.io/version: ""
17+
name: api-memcached
18+
namespace: rhobs-production
19+
spec:
20+
clusterIP: None
21+
ports:
22+
- name: client
23+
port: 11211
24+
protocol: TCP
25+
targetPort: 11211
26+
- name: metrics
27+
port: 9150
28+
protocol: TCP
29+
targetPort: 9150
30+
selector:
31+
app.kubernetes.io/component: api-memcached
32+
app.kubernetes.io/instance: rhobs
33+
app.kubernetes.io/name: memcached
34+
app.kubernetes.io/part-of: observatorium
35+
app.kubernetes.io/version: ""
36+
status:
37+
loadBalancer: {}
38+
- apiVersion: v1
39+
kind: ServiceAccount
40+
metadata:
41+
creationTimestamp: null
42+
labels:
43+
app.kubernetes.io/component: api-memcached
44+
app.kubernetes.io/instance: rhobs
45+
app.kubernetes.io/name: memcached
46+
app.kubernetes.io/part-of: observatorium
47+
app.kubernetes.io/version: ""
48+
name: api-memcached
49+
namespace: rhobs-production
50+
- apiVersion: apps/v1
51+
kind: StatefulSet
52+
metadata:
53+
creationTimestamp: null
54+
labels:
55+
app.kubernetes.io/component: api-memcached
56+
app.kubernetes.io/instance: rhobs
57+
app.kubernetes.io/name: memcached
58+
app.kubernetes.io/part-of: observatorium
59+
app.kubernetes.io/version: ""
60+
name: api-memcached
61+
namespace: rhobs-production
62+
spec:
63+
podManagementPolicy: OrderedReady
64+
replicas: 1
65+
selector:
66+
matchLabels:
67+
app.kubernetes.io/component: api-memcached
68+
app.kubernetes.io/instance: rhobs
69+
app.kubernetes.io/name: memcached
70+
app.kubernetes.io/part-of: observatorium
71+
app.kubernetes.io/version: ""
72+
serviceName: api-memcached
73+
template:
74+
metadata:
75+
creationTimestamp: null
76+
labels:
77+
app.kubernetes.io/component: api-memcached
78+
app.kubernetes.io/instance: rhobs
79+
app.kubernetes.io/name: memcached
80+
app.kubernetes.io/part-of: observatorium
81+
app.kubernetes.io/version: ""
82+
spec:
83+
containers:
84+
- args:
85+
- -m 2048
86+
- -c 3072
87+
- -I 5m
88+
- -v
89+
imagePullPolicy: IfNotPresent
90+
name: memcached
91+
ports:
92+
- containerPort: 11211
93+
name: client
94+
protocol: TCP
95+
resources: {}
96+
terminationMessagePolicy: FallbackToLogsOnError
97+
- args:
98+
- --memcached.address=localhost:11211
99+
- --web.listen-address=0.0.0.0:9150
100+
imagePullPolicy: IfNotPresent
101+
name: exporter
102+
ports:
103+
- containerPort: 9150
104+
name: metrics
105+
protocol: TCP
106+
resources: {}
107+
securityContext: {}
108+
serviceAccountName: api-memcached
109+
updateStrategy: {}
110+
status:
111+
availableReplicas: 0
112+
replicas: 0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: template.openshift.io/v1
2+
kind: Template
3+
metadata:
4+
creationTimestamp: null
5+
name: memcached-service-monitor
6+
objects:
7+
- apiVersion: monitoring.coreos.com/v1
8+
kind: ServiceMonitor
9+
metadata:
10+
creationTimestamp: null
11+
labels:
12+
app.kubernetes.io/component: api-memcached
13+
app.kubernetes.io/instance: rhobs
14+
app.kubernetes.io/name: memcached
15+
app.kubernetes.io/part-of: observatorium
16+
app.kubernetes.io/version: ""
17+
prometheus: app-sre
18+
name: api-memcached
19+
namespace: openshift-customer-monitoring
20+
spec:
21+
endpoints:
22+
- honorLabels: true
23+
interval: 30s
24+
path: /metrics
25+
port: metrics
26+
namespaceSelector:
27+
matchNames:
28+
- rhobs-production
29+
selector:
30+
matchLabels:
31+
app.kubernetes.io/component: api-memcached
32+
app.kubernetes.io/instance: rhobs
33+
app.kubernetes.io/name: memcached
34+
app.kubernetes.io/part-of: observatorium
35+
app.kubernetes.io/version: ""

0 commit comments

Comments
 (0)