-
Notifications
You must be signed in to change notification settings - Fork 141
/
clusterlogging.go
87 lines (80 loc) · 2.85 KB
/
clusterlogging.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package helpers
import (
"github.com/openshift/cluster-logging-operator/internal/constants"
receiverses "github.com/openshift/cluster-logging-operator/test/framework/e2e/receivers/elasticsearch"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
log "github.com/ViaQ/logerr/v2/log/static"
cl "github.com/openshift/cluster-logging-operator/api/logging/v1"
elasticsearch "github.com/openshift/elasticsearch-operator/apis/logging/v1"
)
type LogComponentType string
const (
ComponentTypeStore LogComponentType = "LogStore"
ComponentTypeVisualization LogComponentType = "Visualization"
ComponentTypeCollector LogComponentType = "collector"
ComponentTypeCollectorFluentd LogComponentType = "collector-fluentd"
ComponentTypeCollectorVector LogComponentType = "collector-vector"
ComponentTypeCollectorDeployment LogComponentType = "collector-deployment"
ComponentTypeReceiverElasticsearchRHManaged LogComponentType = receiverses.ManagedLogStore
)
func NewClusterLogging(componentTypes ...LogComponentType) *cl.ClusterLogging {
log.Info("NewClusterLogging ", "componentTypes", componentTypes)
instance := &cl.ClusterLogging{
TypeMeta: metav1.TypeMeta{
Kind: "ClusterLogging",
APIVersion: cl.GroupVersion.String(),
},
ObjectMeta: metav1.ObjectMeta{
Name: constants.SingletonName,
Namespace: constants.OpenshiftNS,
},
Spec: cl.ClusterLoggingSpec{
ManagementState: cl.ManagementStateManaged,
},
}
for _, compType := range componentTypes {
switch compType {
case ComponentTypeStore:
instance.Spec.LogStore = &cl.LogStoreSpec{
Type: cl.LogStoreTypeElasticsearch,
Elasticsearch: &cl.ElasticsearchSpec{
Resources: &v1.ResourceRequirements{
Requests: v1.ResourceList{
v1.ResourceMemory: resource.MustParse("2Gi"),
v1.ResourceCPU: resource.MustParse("100m"),
},
},
ProxySpec: cl.ProxySpec{
Resources: &v1.ResourceRequirements{
Requests: v1.ResourceList{
v1.ResourceMemory: resource.MustParse("512Mi"),
v1.ResourceCPU: resource.MustParse("200m"),
},
},
},
NodeCount: 1,
RedundancyPolicy: elasticsearch.ZeroRedundancy,
},
}
case ComponentTypeCollector, ComponentTypeCollectorFluentd:
instance.Spec.Collection = &cl.CollectionSpec{
Type: cl.LogCollectionTypeFluentd,
CollectorSpec: cl.CollectorSpec{
Resources: &v1.ResourceRequirements{
Requests: v1.ResourceList{
v1.ResourceMemory: resource.MustParse("500Mi"),
v1.ResourceCPU: resource.MustParse("200m"),
},
},
},
}
case ComponentTypeCollectorVector:
instance.Spec.Collection = &cl.CollectionSpec{
Type: cl.LogCollectionTypeVector,
}
}
}
return instance
}