jsonnet/kube-prometheus: Add back kube-rbac-proxy containers to
kube-state-metrics. These were removed by accident when migrating to using upstream libsonnet.
This commit is contained in:
90
jsonnet/kube-prometheus/kube-rbac-proxy/container.libsonnet
Normal file
90
jsonnet/kube-prometheus/kube-rbac-proxy/container.libsonnet
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
||||||
|
local deployment = k.apps.v1.deployment;
|
||||||
|
local container = deployment.mixin.spec.template.spec.containersType;
|
||||||
|
local containerPort = container.portsType;
|
||||||
|
|
||||||
|
{
|
||||||
|
local krp = self,
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy: {
|
||||||
|
image: error 'must provide image',
|
||||||
|
name: error 'must provide name',
|
||||||
|
securePortName: error 'must provide securePortName',
|
||||||
|
securePort: error 'must provide securePort',
|
||||||
|
secureListenAddress: error 'must provide secureListenAddress',
|
||||||
|
upstream: error 'must provide upstream',
|
||||||
|
tlsCipherSuites: error 'must provide tlsCipherSuites',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
specMixin:: {
|
||||||
|
local sm = self,
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy: {
|
||||||
|
image: error 'must provide image',
|
||||||
|
name: error 'must provide name',
|
||||||
|
securePortName: error 'must provide securePortName',
|
||||||
|
securePort: error 'must provide securePort',
|
||||||
|
secureListenAddress: error 'must provide secureListenAddress',
|
||||||
|
upstream: error 'must provide upstream',
|
||||||
|
tlsCipherSuites: error 'must provide tlsCipherSuites',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
spec+: {
|
||||||
|
template+: {
|
||||||
|
spec+: {
|
||||||
|
containers+: [
|
||||||
|
container.new(krp.config.kubeRbacProxy.name, krp.config.kubeRbacProxy.image) +
|
||||||
|
container.withArgs([
|
||||||
|
'--logtostderr',
|
||||||
|
'--secure-listen-address=' + krp.config.kubeRbacProxy.secureListenAddress,
|
||||||
|
'--tls-cipher-suites=' + std.join(',', krp.config.kubeRbacProxy.tlsCipherSuites),
|
||||||
|
'--upstream=' + krp.config.kubeRbacProxy.upstream,
|
||||||
|
]) +
|
||||||
|
container.withPorts(containerPort.newNamed(krp.config.kubeRbacProxy.securePort, krp.config.kubeRbacProxy.securePortName)),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
deploymentMixin:: {
|
||||||
|
local dm = self,
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy: {
|
||||||
|
image: error 'must provide image',
|
||||||
|
name: error 'must provide name',
|
||||||
|
securePortName: error 'must provide securePortName',
|
||||||
|
securePort: error 'must provide securePort',
|
||||||
|
secureListenAddress: error 'must provide secureListenAddress',
|
||||||
|
upstream: error 'must provide upstream',
|
||||||
|
tlsCipherSuites: error 'must provide tlsCipherSuites',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
deployment+: krp.specMixin {
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy+: dm.config.kubeRbacProxy,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
statefulSetMixin:: {
|
||||||
|
local sm = self,
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy: {
|
||||||
|
image: error 'must provide image',
|
||||||
|
name: error 'must provide name',
|
||||||
|
securePortName: error 'must provide securePortName',
|
||||||
|
securePort: error 'must provide securePort',
|
||||||
|
secureListenAddress: error 'must provide secureListenAddress',
|
||||||
|
upstream: error 'must provide upstream',
|
||||||
|
tlsCipherSuites: error 'must provide tlsCipherSuites',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
statefulSet+: krp.specMixin {
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy+: sm.config.kubeRbacProxy,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,4 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
_config+:: {
|
||||||
|
kubeStateMetrics+:: {
|
||||||
|
scrapeInterval: '30s',
|
||||||
|
scrapeTimeout: '30s',
|
||||||
|
},
|
||||||
|
},
|
||||||
kubeStateMetrics+:: (import 'kube-state-metrics/kube-state-metrics.libsonnet') +
|
kubeStateMetrics+:: (import 'kube-state-metrics/kube-state-metrics.libsonnet') +
|
||||||
{
|
{
|
||||||
local ksm = self,
|
local ksm = self,
|
||||||
@@ -6,38 +12,110 @@
|
|||||||
namespace:: 'monitoring',
|
namespace:: 'monitoring',
|
||||||
version:: '1.9.4', //$._config.versions.kubeStateMetrics,
|
version:: '1.9.4', //$._config.versions.kubeStateMetrics,
|
||||||
image:: 'quay.io/coreos/kube-state-metrics:v' + ksm.version,
|
image:: 'quay.io/coreos/kube-state-metrics:v' + ksm.version,
|
||||||
serviceMonitor: {
|
service+: {
|
||||||
apiVersion: 'monitoring.coreos.com/v1',
|
spec+: {
|
||||||
kind: 'ServiceMonitor',
|
ports: [
|
||||||
metadata: {
|
|
||||||
name: ksm.name,
|
|
||||||
namespace: ksm.namespace,
|
|
||||||
labels: ksm.commonLabels,
|
|
||||||
},
|
|
||||||
spec: {
|
|
||||||
jobLabel: 'app.kubernetes.io/name',
|
|
||||||
selector: {
|
|
||||||
matchLabels: ksm.commonLabels,
|
|
||||||
},
|
|
||||||
endpoints: [
|
|
||||||
{
|
{
|
||||||
port: 'http-metrics',
|
name: 'https-main',
|
||||||
interval: '30s',
|
port: 8443,
|
||||||
scrapeTimeout: '30s',
|
targetPort: 'https-main',
|
||||||
honorLabels: true,
|
|
||||||
relabelings: [
|
|
||||||
{
|
|
||||||
regex: '(pod|service|endpoint|namespace)',
|
|
||||||
action: 'labeldrop',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
port: 'telemetry',
|
name: 'https-self',
|
||||||
interval: '30s',
|
port: 9443,
|
||||||
|
targetPort: 'https-self',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
deployment+: {
|
||||||
|
spec+: {
|
||||||
|
template+: {
|
||||||
|
spec+: {
|
||||||
|
containers: std.map(function(c) c {
|
||||||
|
ports: null,
|
||||||
|
args: ['--host=127.0.0.1', '--port=8081', '--telemetry-host=127.0.0.1', '--telemetry-port=8082'],
|
||||||
|
}, super.containers),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
serviceMonitor:
|
||||||
|
{
|
||||||
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
|
kind: 'ServiceMonitor',
|
||||||
|
metadata: {
|
||||||
|
name: 'kube-state-metrics',
|
||||||
|
namespace: $._config.namespace,
|
||||||
|
labels: {
|
||||||
|
'app.kubernetes.io/name': 'kube-state-metrics',
|
||||||
|
'app.kubernetes.io/version': ksm.version,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
jobLabel: 'app.kubernetes.io/name',
|
||||||
|
selector: {
|
||||||
|
matchLabels: {
|
||||||
|
'app.kubernetes.io/name': 'kube-state-metrics',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
endpoints: [
|
||||||
|
{
|
||||||
|
port: 'https-main',
|
||||||
|
scheme: 'https',
|
||||||
|
interval: $._config.kubeStateMetrics.scrapeInterval,
|
||||||
|
scrapeTimeout: $._config.kubeStateMetrics.scrapeTimeout,
|
||||||
|
honorLabels: true,
|
||||||
|
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
||||||
|
relabelings: [
|
||||||
|
{
|
||||||
|
regex: '(pod|service|endpoint|namespace)',
|
||||||
|
action: 'labeldrop',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tlsConfig: {
|
||||||
|
insecureSkipVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
port: 'https-self',
|
||||||
|
scheme: 'https',
|
||||||
|
interval: $._config.kubeStateMetrics.scrapeInterval,
|
||||||
|
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
||||||
|
tlsConfig: {
|
||||||
|
insecureSkipVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} +
|
||||||
|
((import 'kube-prometheus/kube-rbac-proxy/container.libsonnet') {
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy: {
|
||||||
|
local cfg = self,
|
||||||
|
image: $._config.imageRepos.kubeRbacProxy + ':' + $._config.versions.kubeRbacProxy,
|
||||||
|
name: 'kube-rbac-proxy-main',
|
||||||
|
securePortName: 'https-main',
|
||||||
|
securePort: 8443,
|
||||||
|
secureListenAddress: ':%d' % self.securePort,
|
||||||
|
upstream: 'http://127.0.0.1:8081/',
|
||||||
|
tlsCipherSuites: $._config.tlsCipherSuites,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}).deploymentMixin +
|
||||||
|
((import 'kube-prometheus/kube-rbac-proxy/container.libsonnet') {
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy: {
|
||||||
|
local cfg = self,
|
||||||
|
image: $._config.imageRepos.kubeRbacProxy + ':' + $._config.versions.kubeRbacProxy,
|
||||||
|
name: 'kube-rbac-proxy-self',
|
||||||
|
securePortName: 'https-self',
|
||||||
|
securePort: 9443,
|
||||||
|
secureListenAddress: ':%d' % self.securePort,
|
||||||
|
upstream: 'http://127.0.0.1:8082/',
|
||||||
|
tlsCipherSuites: $._config.tlsCipherSuites,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}).deploymentMixin,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user