|
1 | 1 | { |
2 | | - local container = $.core.v1.container, |
3 | | - |
4 | 2 | ingester_args:: |
5 | 3 | $._config.ringConfig + |
6 | 4 | $._config.storeConfig + |
|
40 | 38 | else {} |
41 | 39 | ), |
42 | 40 |
|
| 41 | + ingester_statefulset_args:: { |
| 42 | + 'ingester.wal-enabled': true, |
| 43 | + 'ingester.checkpoint-enabled': true, |
| 44 | + 'ingester.recover-from-wal': true, |
| 45 | + 'ingester.wal-dir': $._config.ingester.wal_dir, |
| 46 | + 'ingester.checkpoint-duration': '15m', |
| 47 | + '-log.level': 'info', |
| 48 | + 'ingester.tokens-file-path': $._config.ingester.wal_dir + '/tokens', |
| 49 | + }, |
| 50 | + |
43 | 51 | ingester_ports:: $.util.defaultPorts, |
44 | 52 |
|
45 | 53 | local name = 'ingester', |
| 54 | + local container = $.core.v1.container, |
46 | 55 |
|
47 | 56 | ingester_container:: |
48 | 57 | container.new(name, $._images.ingester) + |
|
53 | 62 | $.util.readinessProbe + |
54 | 63 | $.jaeger_mixin, |
55 | 64 |
|
56 | | - local deployment = $.apps.v1.deployment, |
| 65 | + local volumeMount = $.core.v1.volumeMount, |
| 66 | + |
| 67 | + ingester_statefulset_container:: |
| 68 | + $.ingester_container + |
| 69 | + container.withArgsMixin($.util.mapToFlags($.ingester_statefulset_args)) + |
| 70 | + container.withVolumeMountsMixin([ |
| 71 | + volumeMount.new('ingester-pvc', $._config.ingester.wal_dir), |
| 72 | + ]), |
57 | 73 |
|
58 | 74 | ingester_deployment_labels:: {}, |
59 | 75 |
|
| 76 | + local pvc = $.core.v1.persistentVolumeClaim, |
| 77 | + local volume = $.core.v1.volume, |
| 78 | + local statefulSet = $.apps.v1.statefulSet, |
| 79 | + |
| 80 | + local ingester_pvc = |
| 81 | + pvc.new('ingester-pvc') + |
| 82 | + pvc.mixin.spec.resources.withRequests({ storage: $._config.ingester.statefulset_disk }) + |
| 83 | + pvc.mixin.spec.withAccessModes(['ReadWriteOnce']) + |
| 84 | + pvc.mixin.spec.withStorageClassName('fast'), |
| 85 | + |
| 86 | + statefulset_storage_config_mixin:: |
| 87 | + statefulSet.mixin.spec.template.metadata.withAnnotationsMixin({ schemaID: $._config.schemaID },) + |
| 88 | + $.util.configVolumeMount('schema-' + $._config.schemaID, '/etc/cortex/schema'), |
| 89 | + |
| 90 | + ingester_statefulset: |
| 91 | + if $._config.ingester_deployment_without_wal == false then |
| 92 | + statefulSet.new('ingester', $._config.ingester.statefulset_replicas, [$.ingester_statefulset_container], ingester_pvc) + |
| 93 | + statefulSet.mixin.spec.withServiceName('ingester') + |
| 94 | + statefulSet.mixin.spec.template.spec.withVolumes([volume.fromPersistentVolumeClaim('ingester-pvc', 'ingester-pvc')]) + |
| 95 | + statefulSet.mixin.metadata.withNamespace($._config.namespace) + |
| 96 | + statefulSet.mixin.metadata.withLabels({ name: 'ingester' }) + |
| 97 | + statefulSet.mixin.spec.template.metadata.withLabels({ name: 'ingester' } + $.ingester_deployment_labels) + |
| 98 | + statefulSet.mixin.spec.selector.withMatchLabels({ name: 'ingester' }) + |
| 99 | + statefulSet.mixin.spec.template.spec.securityContext.withRunAsUser(0) + |
| 100 | + statefulSet.mixin.spec.template.spec.withTerminationGracePeriodSeconds(4800) + |
| 101 | + statefulSet.mixin.spec.updateStrategy.withType('RollingUpdate') + |
| 102 | + $.statefulset_storage_config_mixin + |
| 103 | + $.util.configVolumeMount('overrides', '/etc/cortex') + |
| 104 | + $.util.podPriority('high') + |
| 105 | + $.util.antiAffinityStatefulSet |
| 106 | + else null, |
| 107 | + |
| 108 | + local deployment = $.apps.v1.deployment, |
| 109 | + |
60 | 110 | ingester_deployment: |
61 | | - deployment.new(name, 3, [$.ingester_container], $.ingester_deployment_labels) + |
62 | | - $.util.antiAffinity + |
63 | | - $.util.configVolumeMount('overrides', '/etc/cortex') + |
64 | | - deployment.mixin.metadata.withLabels({ name: name }) + |
65 | | - deployment.mixin.spec.withMinReadySeconds(60) + |
66 | | - deployment.mixin.spec.strategy.rollingUpdate.withMaxSurge(0) + |
67 | | - deployment.mixin.spec.strategy.rollingUpdate.withMaxUnavailable(1) + |
68 | | - deployment.mixin.spec.template.spec.withTerminationGracePeriodSeconds(4800) + |
69 | | - $.storage_config_mixin + |
70 | | - $.util.podPriority('high'), |
| 111 | + if $._config.ingester_deployment_without_wal then |
| 112 | + deployment.new(name, 3, [$.ingester_container], $.ingester_deployment_labels) + |
| 113 | + $.util.antiAffinity + |
| 114 | + $.util.configVolumeMount('overrides', '/etc/cortex') + |
| 115 | + deployment.mixin.metadata.withLabels({ name: name }) + |
| 116 | + deployment.mixin.spec.withMinReadySeconds(60) + |
| 117 | + deployment.mixin.spec.strategy.rollingUpdate.withMaxSurge(0) + |
| 118 | + deployment.mixin.spec.strategy.rollingUpdate.withMaxUnavailable(1) + |
| 119 | + deployment.mixin.spec.template.spec.withTerminationGracePeriodSeconds(4800) + |
| 120 | + $.storage_config_mixin + |
| 121 | + $.util.podPriority('high') |
| 122 | + else null, |
71 | 123 |
|
72 | 124 | ingester_service_ignored_labels:: [], |
73 | 125 |
|
74 | 126 | ingester_service: |
75 | | - $.util.serviceFor($.ingester_deployment, $.ingester_service_ignored_labels), |
| 127 | + if $._config.ingester_deployment_without_wal then |
| 128 | + $.util.serviceFor($.ingester_deployment, $.ingester_service_ignored_labels) |
| 129 | + else |
| 130 | + $.util.serviceFor($.ingester_statefulset, $.ingester_service_ignored_labels), |
76 | 131 |
|
77 | 132 | local podDisruptionBudget = $.policy.v1beta1.podDisruptionBudget, |
78 | 133 |
|
|
0 commit comments