refactor(production/ksonnet): Remove kausal from the root element (#3917)

Signed-off-by: Javier Palomo <javier.palomo@grafana.com>
pull/3926/head
Javier Palomo 4 years ago committed by GitHub
parent 5e020dbdba
commit e16f1fef81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      production/ksonnet/loki-canary/loki-canary.libsonnet
  2. 19
      production/ksonnet/loki/boltdb_shipper.libsonnet
  3. 8
      production/ksonnet/loki/common.libsonnet
  4. 7
      production/ksonnet/loki/config.libsonnet
  5. 21
      production/ksonnet/loki/distributor.libsonnet
  6. 24
      production/ksonnet/loki/gateway.libsonnet
  7. 27
      production/ksonnet/loki/index-gateway.libsonnet
  8. 35
      production/ksonnet/loki/ingester.libsonnet
  9. 1
      production/ksonnet/loki/loki.libsonnet
  10. 6
      production/ksonnet/loki/overrides.libsonnet
  11. 31
      production/ksonnet/loki/querier.libsonnet
  12. 26
      production/ksonnet/loki/query-frontend.libsonnet
  13. 34
      production/ksonnet/loki/ruler.libsonnet
  14. 16
      production/ksonnet/loki/table-manager.libsonnet
  15. 14
      production/ksonnet/loki/wal.libsonnet
  16. 32
      production/ksonnet/promtail/promtail.libsonnet

@ -4,10 +4,10 @@ local k = import 'ksonnet-util/kausal.libsonnet';
// backwards compatibility with ksonnet
local envVar = if std.objectHasAll(k.core.v1, 'envVar') then k.core.v1.envVar else k.core.v1.container.envType;
k + config {
namespace: $.core.v1.namespace.new($._config.namespace),
config {
namespace: k.core.v1.namespace.new($._config.namespace),
local container = $.core.v1.container,
local container = k.core.v1.container,
loki_canary_args:: {
labelvalue: '$(POD_NAME)',
@ -15,15 +15,15 @@ k + config {
loki_canary_container::
container.new('loki-canary', $._images.loki_canary) +
$.util.resourcesRequests('10m', '20Mi') +
container.withPorts($.core.v1.containerPort.new(name='http-metrics', port=80)) +
container.withArgsMixin($.util.mapToFlags($.loki_canary_args)) +
k.util.resourcesRequests('10m', '20Mi') +
container.withPorts(k.core.v1.containerPort.new(name='http-metrics', port=80)) +
container.withArgsMixin(k.util.mapToFlags($.loki_canary_args)) +
container.withEnv([
envVar.fromFieldPath('HOSTNAME', 'spec.nodeName'),
envVar.fromFieldPath('POD_NAME', 'metadata.name'),
]),
local daemonSet = $.apps.v1.daemonSet,
local daemonSet = k.apps.v1.daemonSet,
loki_canary_daemonset:
daemonSet.new('loki-canary', [$.loki_canary_container]),

@ -1,10 +1,11 @@
{
local pvc = $.core.v1.persistentVolumeClaim,
local volumeMount = $.core.v1.volumeMount,
local container = $.core.v1.container,
local statefulSet = $.apps.v1.statefulSet,
local service = $.core.v1.service,
local containerPort = $.core.v1.containerPort,
local k = import 'ksonnet-util/kausal.libsonnet',
local pvc = k.core.v1.persistentVolumeClaim,
local volumeMount = k.core.v1.volumeMount,
local container = k.core.v1.container,
local statefulSet = k.apps.v1.statefulSet,
local service = k.core.v1.service,
local containerPort = k.core.v1.containerPort,
_config+:: {
// run ingesters and queriers as statefulsets when using boltdb-shipper to avoid using node disk for storing the index.
@ -55,19 +56,19 @@
compactor_container:: if $._config.using_boltdb_shipper then
container.new('compactor', $._images.compactor) +
container.withPorts(compactor_ports) +
container.withArgsMixin($.util.mapToFlags($.compactor_args)) +
container.withArgsMixin(k.util.mapToFlags($.compactor_args)) +
container.withVolumeMountsMixin([volumeMount.new('compactor-data', '/data')]) +
container.mixin.readinessProbe.httpGet.withPath('/ready') +
container.mixin.readinessProbe.httpGet.withPort($._config.http_listen_port) +
container.mixin.readinessProbe.withTimeoutSeconds(1) +
$.util.resourcesRequests('4', '2Gi')
k.util.resourcesRequests('4', '2Gi')
else {},
compactor_statefulset: if $._config.using_boltdb_shipper then
statefulSet.new('compactor', 1, [$.compactor_container], $.compactor_data_pvc) +
statefulSet.mixin.spec.withServiceName('compactor') +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount('loki', '/etc/loki/config') +
statefulSet.mixin.spec.updateStrategy.withType('RollingUpdate') +
statefulSet.mixin.spec.template.spec.securityContext.withFsGroup(10001) // 10001 is the group ID assigned to Loki in the Dockerfile
else {},

@ -1,10 +1,12 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
namespace:
$.core.v1.namespace.new($._config.namespace),
k.core.v1.namespace.new($._config.namespace),
util+:: {
local containerPort = $.core.v1.containerPort,
local container = $.core.v1.container,
local containerPort = k.core.v1.containerPort,
local container = k.core.v1.container,
defaultPorts::
[

@ -351,15 +351,16 @@
},
},
local configMap = $.core.v1.configMap,
local k = import 'ksonnet-util/kausal.libsonnet',
local configMap = k.core.v1.configMap,
config_file:
configMap.new('loki') +
configMap.withData({
'config.yaml': $.util.manifestYaml($._config.loki),
'config.yaml': k.util.manifestYaml($._config.loki),
}),
local deployment = $.apps.v1.deployment,
local deployment = k.apps.v1.deployment,
config_hash_mixin::
deployment.mixin.spec.template.metadata.withAnnotationsMixin({

@ -1,6 +1,7 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
local container = $.core.v1.container,
local containerPort = $.core.v1.containerPort,
local container = k.core.v1.container,
local containerPort = k.core.v1.containerPort,
distributor_args::
$._config.commonArgs {
@ -10,26 +11,26 @@
distributor_container::
container.new('distributor', $._images.distributor) +
container.withPorts($.util.defaultPorts) +
container.withArgsMixin($.util.mapToFlags($.distributor_args)) +
container.withArgsMixin(k.util.mapToFlags($.distributor_args)) +
container.mixin.readinessProbe.httpGet.withPath('/ready') +
container.mixin.readinessProbe.httpGet.withPort($._config.http_listen_port) +
container.mixin.readinessProbe.withInitialDelaySeconds(15) +
container.mixin.readinessProbe.withTimeoutSeconds(1) +
$.util.resourcesRequests('500m', '500Mi') +
$.util.resourcesLimits('1', '1Gi'),
k.util.resourcesRequests('500m', '500Mi') +
k.util.resourcesLimits('1', '1Gi'),
local deployment = $.apps.v1.deployment,
local deployment = k.apps.v1.deployment,
distributor_deployment:
deployment.new('distributor', 3, [$.distributor_container]) +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity,
k.util.antiAffinity,
distributor_service:
$.util.serviceFor($.distributor_deployment),
k.util.serviceFor($.distributor_deployment),
}

@ -1,3 +1,5 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
_config+:: {
htpasswd_contents: error 'must specify htpasswd contents',
@ -7,14 +9,14 @@
nginx: 'nginx:1.15.1-alpine',
},
local secret = $.core.v1.secret,
local secret = k.core.v1.secret,
gateway_secret:
secret.new('gateway-secret', {
'.htpasswd': std.base64($._config.htpasswd_contents),
}),
local configMap = $.core.v1.configMap,
local configMap = k.core.v1.configMap,
gateway_config:
configMap.new('gateway-config') +
@ -77,15 +79,15 @@
||| % $._config,
}),
local container = $.core.v1.container,
local containerPort = $.core.v1.containerPort,
local container = k.core.v1.container,
local containerPort = k.core.v1.containerPort,
gateway_container::
container.new('nginx', $._images.nginx) +
container.withPorts($.core.v1.containerPort.new(name='http', port=80)) +
$.util.resourcesRequests('50m', '100Mi'),
container.withPorts(k.core.v1.containerPort.new(name='http', port=80)) +
k.util.resourcesRequests('50m', '100Mi'),
local deployment = $.apps.v1.deployment,
local deployment = k.apps.v1.deployment,
gateway_deployment:
deployment.new('gateway', 3, [
@ -94,10 +96,10 @@
deployment.mixin.spec.template.metadata.withAnnotationsMixin({
config_hash: std.md5(std.toString($.gateway_config)),
}) +
$.util.configVolumeMount('gateway-config', '/etc/nginx') +
$.util.secretVolumeMount('gateway-secret', '/etc/nginx/secrets', defaultMode=420) +
$.util.antiAffinity,
k.util.configVolumeMount('gateway-config', '/etc/nginx') +
k.util.secretVolumeMount('gateway-secret', '/etc/nginx/secrets', defaultMode=420) +
k.util.antiAffinity,
gateway_service:
$.util.serviceFor($.gateway_deployment),
k.util.serviceFor($.gateway_deployment),
}

@ -1,8 +1,8 @@
{
_config+:: {
use_index_gateway: false,
index_gateway_pvc_size: '50Gi',
index_gateway_pvc_class: 'fast',
use_index_gateway: false,
index_gateway_pvc_size: '50Gi',
index_gateway_pvc_class: 'fast',
loki+: {
storage_config+: if $._config.use_index_gateway then {
@ -15,11 +15,12 @@
},
},
local containerPort = $.core.v1.containerPort,
local pvc = $.core.v1.persistentVolumeClaim,
local container = $.core.v1.container,
local volumeMount = $.core.v1.volumeMount,
local statefulSet = $.apps.v1.statefulSet,
local k = import 'ksonnet-util/kausal.libsonnet',
local containerPort = k.core.v1.containerPort,
local pvc = k.core.v1.persistentVolumeClaim,
local container = k.core.v1.container,
local volumeMount = k.core.v1.volumeMount,
local statefulSet = k.apps.v1.statefulSet,
// Use PVC for index_gateway instead of node disk.
index_gateway_data_pvc:: if $._config.use_index_gateway then
@ -43,24 +44,24 @@
index_gateway_container:: if $._config.use_index_gateway then
container.new('index-gateway', $._images.index_gateway) +
container.withPorts(index_gateway_ports) +
container.withArgsMixin($.util.mapToFlags($.index_gateway_args)) +
container.withArgsMixin(k.util.mapToFlags($.index_gateway_args)) +
container.withVolumeMountsMixin([volumeMount.new('index-gateway-data', '/data')]) +
container.mixin.readinessProbe.httpGet.withPath('/ready') +
container.mixin.readinessProbe.httpGet.withPort($._config.http_listen_port) +
container.mixin.readinessProbe.withTimeoutSeconds(1) +
$.util.resourcesRequests('500m', '2Gi')
k.util.resourcesRequests('500m', '2Gi')
else {},
index_gateway_statefulset: if $._config.use_index_gateway then
statefulSet.new('index-gateway', 1, [$.index_gateway_container], $.index_gateway_data_pvc) +
statefulSet.mixin.spec.withServiceName('index-gateway') +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount('loki', '/etc/loki/config') +
statefulSet.mixin.spec.updateStrategy.withType('RollingUpdate') +
statefulSet.mixin.spec.template.spec.securityContext.withFsGroup(10001) // 10001 is the group ID assigned to Loki in the Dockerfile
else {},
index_gateway_service: if $._config.use_index_gateway then
$.util.serviceFor($.index_gateway_statefulset)
k.util.serviceFor($.index_gateway_statefulset)
else {},
}
}

@ -1,8 +1,9 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
local container = $.core.v1.container,
local pvc = $.core.v1.persistentVolumeClaim,
local volumeMount = $.core.v1.volumeMount,
local statefulSet = $.apps.v1.statefulSet,
local container = k.core.v1.container,
local pvc = k.core.v1.persistentVolumeClaim,
local volumeMount = k.core.v1.volumeMount,
local statefulSet = k.apps.v1.statefulSet,
ingester_args::
$._config.commonArgs {
@ -17,31 +18,31 @@
ingester_container::
container.new('ingester', $._images.ingester) +
container.withPorts($.util.defaultPorts) +
container.withArgsMixin($.util.mapToFlags($.ingester_args)) +
container.withArgsMixin(k.util.mapToFlags($.ingester_args)) +
container.mixin.readinessProbe.httpGet.withPath('/ready') +
container.mixin.readinessProbe.httpGet.withPort($._config.http_listen_port) +
container.mixin.readinessProbe.withInitialDelaySeconds(15) +
container.mixin.readinessProbe.withTimeoutSeconds(1) +
$.util.resourcesRequests('1', '5Gi') +
$.util.resourcesLimits('2', '10Gi') +
k.util.resourcesRequests('1', '5Gi') +
k.util.resourcesLimits('2', '10Gi') +
if $._config.stateful_ingesters then
container.withVolumeMountsMixin([
volumeMount.new('ingester-data', '/data'),
]) else {},
local deployment = $.apps.v1.deployment,
local deployment = k.apps.v1.deployment,
local name = 'ingester',
ingester_deployment: if !$._config.stateful_ingesters then
deployment.new(name, 3, [$.ingester_container]) +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity +
k.util.antiAffinity +
deployment.mixin.spec.withMinReadySeconds(60) +
deployment.mixin.spec.strategy.rollingUpdate.withMaxSurge(0) +
deployment.mixin.spec.strategy.rollingUpdate.withMaxUnavailable(1) +
@ -60,12 +61,12 @@
statefulSet.mixin.spec.withServiceName('ingester') +
statefulSet.mixin.spec.withPodManagementPolicy('Parallel') +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity +
k.util.antiAffinity +
statefulSet.mixin.spec.updateStrategy.withType('RollingUpdate') +
statefulSet.mixin.spec.template.spec.securityContext.withFsGroup(10001) + // 10001 is the group ID assigned to Loki in the Dockerfile
statefulSet.mixin.spec.template.spec.withTerminationGracePeriodSeconds(4800)
@ -73,11 +74,11 @@
ingester_service:
if !$._config.stateful_ingesters then
$.util.serviceFor($.ingester_deployment)
k.util.serviceFor($.ingester_deployment)
else
$.util.serviceFor($.ingester_statefulset),
k.util.serviceFor($.ingester_statefulset),
local podDisruptionBudget = $.policy.v1beta1.podDisruptionBudget,
local podDisruptionBudget = k.policy.v1beta1.podDisruptionBudget,
ingester_pdb:
podDisruptionBudget.new() +

@ -1,4 +1,3 @@
(import 'ksonnet-util/kausal.libsonnet') +
(import 'jaeger-agent-mixin/jaeger.libsonnet') +
(import 'images.libsonnet') +
(import 'common.libsonnet') +

@ -1,3 +1,5 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
_config+: {
overrides: {
@ -14,12 +16,12 @@
// },
},
},
local configMap = $.core.v1.configMap,
local configMap = k.core.v1.configMap,
overrides_config:
configMap.new($._config.overrides_configmap_name) +
configMap.withData({
'overrides.yaml': $.util.manifestYaml(
'overrides.yaml': k.util.manifestYaml(
{
overrides: $._config.overrides,
}

@ -1,8 +1,9 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
local container = $.core.v1.container,
local pvc = $.core.v1.persistentVolumeClaim,
local volumeMount = $.core.v1.volumeMount,
local statefulSet = $.apps.v1.statefulSet,
local container = k.core.v1.container,
local pvc = k.core.v1.persistentVolumeClaim,
local volumeMount = k.core.v1.volumeMount,
local statefulSet = k.apps.v1.statefulSet,
querier_args::
$._config.commonArgs {
@ -12,28 +13,28 @@
querier_container::
container.new('querier', $._images.querier) +
container.withPorts($.util.defaultPorts) +
container.withArgsMixin($.util.mapToFlags($.querier_args)) +
container.withArgsMixin(k.util.mapToFlags($.querier_args)) +
container.mixin.readinessProbe.httpGet.withPath('/ready') +
container.mixin.readinessProbe.httpGet.withPort($._config.http_listen_port) +
container.mixin.readinessProbe.withInitialDelaySeconds(15) +
container.mixin.readinessProbe.withTimeoutSeconds(1) +
$.util.resourcesRequests('4', '2Gi') +
k.util.resourcesRequests('4', '2Gi') +
if $._config.stateful_queriers then
container.withVolumeMountsMixin([
volumeMount.new('querier-data', '/data'),
]) else {},
local deployment = $.apps.v1.deployment,
local deployment = k.apps.v1.deployment,
querier_deployment: if !$._config.stateful_queriers then
deployment.new('querier', 3, [$.querier_container]) +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity
k.util.antiAffinity
else {},
// PVC for queriers when running as statefulsets
@ -49,19 +50,19 @@
statefulSet.mixin.spec.withServiceName('querier') +
statefulSet.mixin.spec.withPodManagementPolicy('Parallel') +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity +
k.util.antiAffinity +
statefulSet.mixin.spec.updateStrategy.withType('RollingUpdate') +
statefulSet.mixin.spec.template.spec.securityContext.withFsGroup(10001) // 10001 is the group ID assigned to Loki in the Dockerfile
else {},
querier_service:
if !$._config.stateful_queriers then
$.util.serviceFor($.querier_deployment)
k.util.serviceFor($.querier_deployment)
else
$.util.serviceFor($.querier_statefulset),
k.util.serviceFor($.querier_statefulset),
}

@ -1,5 +1,7 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
local container = $.core.v1.container,
local container = k.core.v1.container,
query_frontend_args::
$._config.commonArgs {
@ -10,7 +12,7 @@
query_frontend_container::
container.new('query-frontend', $._images.query_frontend) +
container.withPorts($.util.defaultPorts) +
container.withArgsMixin($.util.mapToFlags($.query_frontend_args)) +
container.withArgsMixin(k.util.mapToFlags($.query_frontend_args)) +
container.mixin.readinessProbe.httpGet.withPath('/ready') +
container.mixin.readinessProbe.httpGet.withPort($._config.http_listen_port) +
container.mixin.readinessProbe.withInitialDelaySeconds(15) +
@ -18,30 +20,30 @@
$.jaeger_mixin +
// sharded queries may need to do a nonzero amount of aggregation on the frontend.
if $._config.queryFrontend.sharded_queries_enabled then
$.util.resourcesRequests('2', '2Gi') +
$.util.resourcesLimits(null, '6Gi') +
k.util.resourcesRequests('2', '2Gi') +
k.util.resourcesLimits(null, '6Gi') +
container.withEnvMap({
JAEGER_REPORTER_MAX_QUEUE_SIZE: '5000',
})
else $.util.resourcesRequests('2', '600Mi') +
$.util.resourcesLimits(null, '1200Mi'),
else k.util.resourcesRequests('2', '600Mi') +
k.util.resourcesLimits(null, '1200Mi'),
local deployment = $.apps.v1.deployment,
local deployment = k.apps.v1.deployment,
query_frontend_deployment:
deployment.new('query-frontend', $._config.queryFrontend.replicas, [$.query_frontend_container]) +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity,
k.util.antiAffinity,
local service = $.core.v1.service,
local service = k.core.v1.service,
query_frontend_service:
$.util.serviceFor($.query_frontend_deployment) +
k.util.serviceFor($.query_frontend_deployment) +
// Make sure that query frontend worker, running in the querier, do resolve
// each query-frontend pod IP and NOT the service IP. To make it, we do NOT
// use the service cluster IP so that when the service DNS is resolved it

@ -1,9 +1,11 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
local container = $.core.v1.container,
local pvc = $.core.v1.persistentVolumeClaim,
local statefulSet = $.apps.v1.statefulSet,
local deployment = $.apps.v1.deployment,
local volumeMount = $.core.v1.volumeMount,
local container = k.core.v1.container,
local pvc = k.core.v1.persistentVolumeClaim,
local statefulSet = k.apps.v1.statefulSet,
local deployment = k.apps.v1.deployment,
local volumeMount = k.core.v1.volumeMount,
ruler_args:: $._config.commonArgs {
target: 'ruler',
@ -21,9 +23,9 @@
if $._config.ruler_enabled then
container.new('ruler', $._images.ruler) +
container.withPorts($.util.defaultPorts) +
container.withArgsMixin($.util.mapToFlags($.ruler_args)) +
$.util.resourcesRequests('1', '6Gi') +
$.util.resourcesLimits('16', '16Gi') +
container.withArgsMixin(k.util.mapToFlags($.ruler_args)) +
k.util.resourcesRequests('1', '6Gi') +
k.util.resourcesLimits('16', '16Gi') +
$.util.readinessProbe +
$.jaeger_mixin +
if $._config.stateful_rulers then
@ -37,20 +39,20 @@
deployment.new('ruler', 2, [$.ruler_container]) +
deployment.mixin.spec.template.spec.withTerminationGracePeriodSeconds(600) +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity
k.util.antiAffinity
else {},
ruler_service: if !$._config.ruler_enabled
then {}
else
if $._config.stateful_rulers
then $.util.serviceFor($.ruler_statefulset)
else $.util.serviceFor($.ruler_deployment),
then k.util.serviceFor($.ruler_statefulset)
else k.util.serviceFor($.ruler_deployment),
// PVC for rulers when running as statefulsets
@ -66,12 +68,12 @@
statefulSet.mixin.spec.withServiceName('ruler') +
statefulSet.mixin.spec.withPodManagementPolicy('Parallel') +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config') +
$.util.configVolumeMount(
k.util.configVolumeMount('loki', '/etc/loki/config') +
k.util.configVolumeMount(
$._config.overrides_configmap_mount_name,
$._config.overrides_configmap_mount_path,
) +
$.util.antiAffinity +
k.util.antiAffinity +
statefulSet.mixin.spec.updateStrategy.withType('RollingUpdate') +
statefulSet.mixin.spec.template.spec.securityContext.withFsGroup(10001) // 10001 is the group ID assigned to Loki in the Dockerfile
else {},

@ -1,5 +1,7 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
local container = $.core.v1.container,
local container = k.core.v1.container,
table_manager_args::
$._config.commonArgs {
@ -18,21 +20,21 @@
table_manager_container::
container.new('table-manager', $._images.tableManager) +
container.withPorts($.util.defaultPorts) +
container.withArgsMixin($.util.mapToFlags($.table_manager_args)) +
container.withArgsMixin(k.util.mapToFlags($.table_manager_args)) +
container.mixin.readinessProbe.httpGet.withPath('/ready') +
container.mixin.readinessProbe.httpGet.withPort($._config.http_listen_port) +
container.mixin.readinessProbe.withInitialDelaySeconds(15) +
container.mixin.readinessProbe.withTimeoutSeconds(1) +
$.util.resourcesRequests('100m', '100Mi') +
$.util.resourcesLimits('200m', '200Mi'),
k.util.resourcesRequests('100m', '100Mi') +
k.util.resourcesLimits('200m', '200Mi'),
local deployment = $.apps.v1.deployment,
local deployment = k.apps.v1.deployment,
table_manager_deployment:
deployment.new('table-manager', 1, [$.table_manager_container]) +
$.config_hash_mixin +
$.util.configVolumeMount('loki', '/etc/loki/config'),
k.util.configVolumeMount('loki', '/etc/loki/config'),
table_manager_service:
$.util.serviceFor($.table_manager_deployment),
k.util.serviceFor($.table_manager_deployment),
}

@ -1,3 +1,5 @@
local k = import 'ksonnet-util/kausal.libsonnet';
{
local with(x) = if $._config.wal_enabled then x else {},
@ -18,7 +20,7 @@
}),
},
local pvc = $.core.v1.persistentVolumeClaim,
local pvc = k.core.v1.persistentVolumeClaim,
ingester_wal_pvc:: with(
pvc.new('ingester-wal') +
@ -27,19 +29,19 @@
pvc.mixin.spec.withStorageClassName($._config.ingester_pvc_class)
),
local container = $.core.v1.container,
local volumeMount = $.core.v1.volumeMount,
local container = k.core.v1.container,
local volumeMount = k.core.v1.volumeMount,
ingester_container+:: with(
$.util.resourcesRequests('1', '7Gi') +
$.util.resourcesLimits('2', '14Gi') +
k.util.resourcesRequests('1', '7Gi') +
k.util.resourcesLimits('2', '14Gi') +
container.withVolumeMountsMixin([
volumeMount.new('ingester-wal', $._config.loki.ingester.wal.dir),
]),
),
local statefulSet = $.apps.v1.statefulSet,
local statefulSet = k.apps.v1.statefulSet,
ingester_statefulset+: with(
statefulSet.spec.withVolumeClaimTemplatesMixin($.ingester_wal_pvc),
),

@ -5,14 +5,20 @@ local k = import 'ksonnet-util/kausal.libsonnet';
// backwards compatibility with ksonnet
local envVar = if std.objectHasAll(k.core.v1, 'envVar') then k.core.v1.envVar else k.core.v1.container.envType;
k + config + scrape_config {
config + scrape_config {
namespace:
$.core.v1.namespace.new($._config.namespace),
k.core.v1.namespace.new($._config.namespace),
// The RBAC functions in kausal.libsonnet require namespace to be set
local namespaced_k = k {
_config+:: { namespace: $._config.namespace },
},
local policyRule = k.rbac.v1beta1.policyRule,
local policyRule = $.rbac.v1beta1.policyRule,
promtail_rbac:
$.util.rbac($._config.promtail_cluster_role_name, [
namespaced_k.util.rbac($._config.promtail_cluster_role_name, [
policyRule.new() +
policyRule.withApiGroups(['']) +
policyRule.withResources(['nodes', 'nodes/proxy', 'services', 'endpoints', 'pods']) +
@ -33,24 +39,24 @@ k + config + scrape_config {
clients: std.map(client_config, $._config.promtail_config.clients),
},
local configMap = $.core.v1.configMap,
local configMap = k.core.v1.configMap,
promtail_config_map:
configMap.new($._config.promtail_configmap_name) +
configMap.withData({
'promtail.yml': $.util.manifestYaml($.promtail_config),
'promtail.yml': k.util.manifestYaml($.promtail_config),
}),
promtail_args:: {
'config.file': '/etc/promtail/promtail.yml',
},
local container = $.core.v1.container,
local container = k.core.v1.container,
promtail_container::
container.new('promtail', $._images.promtail) +
container.withPorts($.core.v1.containerPort.new(name='http-metrics', port=80)) +
container.withArgsMixin($.util.mapToFlags($.promtail_args)) +
container.withPorts(k.core.v1.containerPort.new(name='http-metrics', port=80)) +
container.withArgsMixin(k.util.mapToFlags($.promtail_args)) +
container.withEnv([
envVar.fromFieldPath('HOSTNAME', 'spec.nodeName'),
]) +
@ -61,12 +67,12 @@ k + config + scrape_config {
container.mixin.securityContext.withPrivileged(true) +
container.mixin.securityContext.withRunAsUser(0),
local daemonSet = $.apps.v1.daemonSet,
local daemonSet = k.apps.v1.daemonSet,
promtail_daemonset:
daemonSet.new($._config.promtail_pod_name, [$.promtail_container]) +
daemonSet.mixin.spec.template.spec.withServiceAccount($._config.promtail_cluster_role_name) +
$.util.configMapVolumeMount($.promtail_config_map, '/etc/promtail') +
$.util.hostVolumeMount('varlog', '/var/log', '/var/log') +
$.util.hostVolumeMount('varlibdockercontainers', $._config.promtail_config.container_root_path + '/containers', $._config.promtail_config.container_root_path + '/containers', readOnly=true),
k.util.configMapVolumeMount($.promtail_config_map, '/etc/promtail') +
k.util.hostVolumeMount('varlog', '/var/log', '/var/log') +
k.util.hostVolumeMount('varlibdockercontainers', $._config.promtail_config.container_root_path + '/containers', $._config.promtail_config.container_root_path + '/containers', readOnly=true),
}

Loading…
Cancel
Save