129 lines
3.8 KiB
Plaintext
129 lines
3.8 KiB
Plaintext
{
|
|
_config+:: {
|
|
versions+:: { clusterVerticalAutoscaler: '0.8.1' },
|
|
imageRepos+:: { clusterVerticalAutoscaler: 'gcr.io/google_containers/cpvpa-amd64' },
|
|
|
|
kubeStateMetrics+:: {
|
|
stepCPU: '1m',
|
|
stepMemory: '2Mi',
|
|
},
|
|
},
|
|
ksmAutoscaler+:: {
|
|
clusterRole: {
|
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
|
kind: 'ClusterRole',
|
|
metadata: { name: 'ksm-autoscaler' },
|
|
rules: [{
|
|
apiGroups: [''],
|
|
resources: ['nodes'],
|
|
verbs: ['list', 'watch'],
|
|
}],
|
|
},
|
|
|
|
clusterRoleBinding: {
|
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
|
kind: 'ClusterRoleBinding',
|
|
metadata: { name: 'ksm-autoscaler' },
|
|
roleRef: {
|
|
apiGroup: 'rbac.authorization.k8s.io',
|
|
kind: 'ClusterRole',
|
|
name: 'ksm-autoscaler',
|
|
},
|
|
subjects: [{ kind: 'ServiceAccount', name: 'ksm-autoscaler', namespace: $._config.namespace }],
|
|
},
|
|
|
|
roleBinding: {
|
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
|
kind: 'RoleBinding',
|
|
metadata: {
|
|
name: 'ksm-autoscaler',
|
|
namespace: $._config.namespace,
|
|
},
|
|
roleRef: {
|
|
apiGroup: 'rbac.authorization.k8s.io',
|
|
kind: 'Role',
|
|
name: 'ksm-autoscaler',
|
|
},
|
|
subjects: [{ kind: 'ServiceAccount', name: 'ksm-autoscaler' }],
|
|
},
|
|
|
|
role: {
|
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
|
kind: 'Role',
|
|
metadata: {
|
|
name: 'ksm-autoscaler',
|
|
namespace: $._config.namespace,
|
|
},
|
|
rules: [
|
|
{
|
|
apiGroups: ['extensions'],
|
|
resources: ['deployments'],
|
|
verbs: ['patch'],
|
|
resourceNames: ['kube-state-metrics'],
|
|
},
|
|
{
|
|
apiGroups: ['apps'],
|
|
resources: ['deployments'],
|
|
verbs: ['patch'],
|
|
resourceNames: ['kube-state-metrics'],
|
|
},
|
|
],
|
|
},
|
|
|
|
serviceAccount: {
|
|
apiVersion: 'v1',
|
|
kind: 'ServiceAccount',
|
|
metadata: {
|
|
name: 'ksm-autoscaler',
|
|
namespace: $._config.namespace,
|
|
},
|
|
},
|
|
|
|
deployment:
|
|
local podLabels = { app: 'ksm-autoscaler' };
|
|
local c = {
|
|
name: 'ksm-autoscaler',
|
|
image: $._config.imageRepos.clusterVerticalAutoscaler + ':v' + $._config.versions.clusterVerticalAutoscaler,
|
|
args: [
|
|
'/cpvpa',
|
|
'--target=deployment/kube-state-metrics',
|
|
'--namespace=' + $._config.namespace,
|
|
'--logtostderr=true',
|
|
'--poll-period-seconds=10',
|
|
'--default-config={"kube-state-metrics":{"requests":{"cpu":{"base":"' + $._config.kubeStateMetrics.baseCPU + '","step":"' + $._config.kubeStateMetrics.stepCPU + '","nodesPerStep":1},"memory":{"base":"' + $._config.kubeStateMetrics.baseMemory + '","step":"' + $._config.kubeStateMetrics.stepMemory + '","nodesPerStep":1}},"limits":{"cpu":{"base":"' + $._config.kubeStateMetrics.baseCPU + '","step":"' + $._config.kubeStateMetrics.stepCPU + '","nodesPerStep":1},"memory":{"base":"' + $._config.kubeStateMetrics.baseMemory + '","step":"' + $._config.kubeStateMetrics.stepMemory + '","nodesPerStep":1}}}}',
|
|
],
|
|
resources: {
|
|
requests: { cpu: '20m', memory: '10Mi' },
|
|
},
|
|
};
|
|
|
|
{
|
|
apiVersion: 'apps/v1',
|
|
kind: 'Deployment',
|
|
metadata: {
|
|
name: 'ksm-autoscaler',
|
|
namespace: $._config.namespace,
|
|
labels: podLabels,
|
|
},
|
|
spec: {
|
|
replicas: 1,
|
|
selector: { matchLabels: podLabels },
|
|
template: {
|
|
metadata: {
|
|
labels: podLabels,
|
|
},
|
|
spec: {
|
|
containers: [c],
|
|
serviceAccount: 'ksm-autoscaler',
|
|
nodeSelector: { 'kubernetes.io/os': 'linux' },
|
|
securityContext: {
|
|
runAsNonRoot: true,
|
|
runAsUser: 65534,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|