Merge pull request #765 from kakkoyun/ksonnet_no_more_8

Remove ksonnet from kube-prometheus-static-etcd.libsonnet
This commit is contained in:
Lili Cosic 2020-11-09 16:00:51 +01:00 committed by GitHub
commit a54498482c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 74 additions and 68 deletions

View File

@ -12,82 +12,88 @@ local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet';
}, },
}, },
prometheus+:: { prometheus+:: {
serviceEtcd: serviceEtcd: {
local service = k.core.v1.service; apiVersion: 'v1',
local servicePort = k.core.v1.service.mixin.spec.portsType; kind: 'Service',
metadata: {
local etcdServicePort = servicePort.newNamed('metrics', 2379, 2379); name: 'etcd',
namespace: 'kube-system',
service.new('etcd', null, etcdServicePort) + labels: { 'k8s-app': 'etcd' },
service.mixin.metadata.withNamespace('kube-system') + },
service.mixin.metadata.withLabels({ 'k8s-app': 'etcd' }) + spec: {
service.mixin.spec.withClusterIp('None'), ports: [
endpointsEtcd: { name: 'metrics', targetPort: 2379, port: 2379 },
local endpoints = k.core.v1.endpoints; ],
local endpointSubset = endpoints.subsetsType; clusterIP: 'None',
local endpointPort = endpointSubset.portsType; },
},
local etcdPort = endpointPort.new() + endpointsEtcd: {
endpointPort.withName('metrics') + apiVersion: 'v1',
endpointPort.withPort(2379) + kind: 'Endpoints',
endpointPort.withProtocol('TCP');
local subset = endpointSubset.new() +
endpointSubset.withAddresses([
{ ip: etcdIP }
for etcdIP in $._config.etcd.ips
]) +
endpointSubset.withPorts(etcdPort);
endpoints.new() +
endpoints.mixin.metadata.withName('etcd') +
endpoints.mixin.metadata.withNamespace('kube-system') +
endpoints.mixin.metadata.withLabels({ 'k8s-app': 'etcd' }) +
endpoints.withSubsets(subset),
serviceMonitorEtcd:
{
apiVersion: 'monitoring.coreos.com/v1',
kind: 'ServiceMonitor',
metadata: { metadata: {
name: 'etcd', name: 'etcd',
namespace: 'kube-system', namespace: 'kube-system',
labels: { labels: { 'k8s-app': 'etcd' },
},
subsets: [{
addresses: [
{ ip: etcdIP }
for etcdIP in $._config.etcd.ips
],
ports: [
{ name: 'metrics', port: 2379, protocol: 'TCP' },
],
}],
},
serviceMonitorEtcd: {
apiVersion: 'monitoring.coreos.com/v1',
kind: 'ServiceMonitor',
metadata: {
name: 'etcd',
namespace: 'kube-system',
labels: {
'k8s-app': 'etcd',
},
},
spec: {
jobLabel: 'k8s-app',
endpoints: [
{
port: 'metrics',
interval: '30s',
scheme: 'https',
// Prometheus Operator (and Prometheus) allow us to specify a tlsConfig. This is required as most likely your etcd metrics end points is secure.
tlsConfig: {
caFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client-ca.crt',
keyFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.key',
certFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.crt',
[if $._config.etcd.serverName != null then 'serverName']: $._config.etcd.serverName,
[if $._config.etcd.insecureSkipVerify != null then 'insecureSkipVerify']: $._config.etcd.insecureSkipVerify,
},
},
],
selector: {
matchLabels: {
'k8s-app': 'etcd', 'k8s-app': 'etcd',
}, },
}, },
spec: {
jobLabel: 'k8s-app',
endpoints: [
{
port: 'metrics',
interval: '30s',
scheme: 'https',
// Prometheus Operator (and Prometheus) allow us to specify a tlsConfig. This is required as most likely your etcd metrics end points is secure.
tlsConfig: {
caFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client-ca.crt',
keyFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.key',
certFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.crt',
[if $._config.etcd.serverName != null then 'serverName']: $._config.etcd.serverName,
[if $._config.etcd.insecureSkipVerify != null then 'insecureSkipVerify']: $._config.etcd.insecureSkipVerify,
},
},
],
selector: {
matchLabels: {
'k8s-app': 'etcd',
},
},
},
}, },
secretEtcdCerts: },
secretEtcdCerts: {
// Prometheus Operator allows us to mount secrets in the pod. By loading the secrets as files, they can be made available inside the Prometheus pod. // Prometheus Operator allows us to mount secrets in the pod. By loading the secrets as files, they can be made available inside the Prometheus pod.
local secret = k.core.v1.secret; apiVersion: 'v1',
secret.new('kube-etcd-client-certs', { kind: 'Secret',
type: 'Opaque',
metadata: {
name: 'kube-etcd-client-certs',
namespace: $._config.namespace,
},
data: {
'etcd-client-ca.crt': std.base64($._config.etcd.clientCA), 'etcd-client-ca.crt': std.base64($._config.etcd.clientCA),
'etcd-client.key': std.base64($._config.etcd.clientKey), 'etcd-client.key': std.base64($._config.etcd.clientKey),
'etcd-client.crt': std.base64($._config.etcd.clientCert), 'etcd-client.crt': std.base64($._config.etcd.clientCert),
}) + },
secret.mixin.metadata.withNamespace($._config.namespace), },
prometheus+: prometheus+:
{ {
// Reference info: https://coreos.com/operators/prometheus/docs/latest/api.html#prometheusspec // Reference info: https://coreos.com/operators/prometheus/docs/latest/api.html#prometheusspec

View File

@ -23,9 +23,9 @@
template+: { template+: {
spec+: { spec+: {
local addArgs(c) = local addArgs(c) =
if c.name == 'prometheus-operator' if c.name == 'prometheus-operator'
then c + {args+: ['--config-reloader-cpu=0']} then c { args+: ['--config-reloader-cpu=0'] }
else c, else c,
containers: std.map(addArgs, super.containers), containers: std.map(addArgs, super.containers),
}, },
}, },