Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local k = import '../../vendor/ksonnet/ksonnet.beta.4/k.libsonnet';
- {
- _config+:: {
- namespace: 'default',
- versions+:: {
- alertproxy: '1.31.1-uclibc',
- },
- imageRepos+:: {
- alertproxy: 'busybox',
- },
- alertproxy+:: {
- env: [],
- name: 'k8s',
- affinities: {
- key: 'test', value: 'her'
- },
- nodeSelector: { 'kubernetes.io/os': 'linux' },
- serviceName: 'alertproxy-' + $._config.alertproxy.name,
- port: 5000,
- container: {
- requests: { cpu: '100m', memory: '100Mi' },
- limits: { cpu: '200m', memory: '200Mi' },
- },
- containers: [],
- },
- },
- alertproxy+: {
- service:
- local service = k.core.v1.service;
- local servicePort = k.core.v1.service.mixin.spec.portsType;
- local alerproxyService = servicePort.newNamed('http', $._config.alertproxy.port, 'http');
- service.new('alertproxy-' + $._config.alertproxy.name, $.alertproxy.deployment.spec.selector.matchLabels, alerproxyService) +
- service.mixin.metadata.withLabels({ app: 'alertproxy' }) +
- service.mixin.metadata.withNamespace($._config.namespace),
- deployment:
- local deployment = k.apps.v1.deployment;
- local container = k.apps.v1.deployment.mixin.spec.template.spec.containersType;
- local volume = k.apps.v1.deployment.mixin.spec.template.spec.volumesType;
- local containerPort = container.portsType;
- local containerVolumeMount = container.volumeMountsType;
- local podSelector = deployment.mixin.spec.template.spec.selectorType;
- local env = container.envType;
- local targetPort = $._config.alertproxy.port;
- local portName = 'http';
- local podLabels = { app: 'alertproxy' };
- local nodeAffinity = deployment.mixin.spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecutionType;
- local matchExpression = nodeAffinity.mixin.preference.matchExpressionsType;
- local c = [
- container.new('alertproxy', $._config.imageRepos.alertproxy + ':' + $._config.versions.alertproxy) +
- container.withEnv($._config.alertproxy.env) +
- container.withPorts(containerPort.newNamed(targetPort, portName)) +
- container.mixin.readinessProbe.httpGet.withPort(portName) +
- container.mixin.resources.withRequests($._config.alertproxy.container.requests) +
- container.mixin.resources.withLimits($._config.alertproxy.container.limits),
- ] + $._config.alertproxy.containers;
- local expression = [
- matchExpression.new() +
- matchExpression.withKey($._config.alertproxy.affinities.key) +
- matchExpression.withValues($._config.alertproxy.affinities.value) +
- matchExpression.withOperator('In') ,
- ];
- deployment.new('alertproxy', 1, c, podLabels) +
- deployment.mixin.metadata.withNamespace($._config.namespace) +
- deployment.mixin.metadata.withLabels(podLabels) +
- deployment.mixin.spec.selector.withMatchLabels(podLabels) +
- deployment.mixin.spec.template.spec.withNodeSelector($._config.alertproxy.nodeSelector) +
- nodeAffinity.new() +
- nodeAffinity.withWeight(100) +
- nodeAffinity.mixin.preference.withMatchExpressions(expression),
- },
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement