Advertisement
Guest User

Untitled

a guest
May 19th, 2020
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.24 KB | None | 0 0
  1. local k = import '../../vendor/ksonnet/ksonnet.beta.4/k.libsonnet';
  2.  
  3. {
  4.   _config+:: {
  5.     namespace: 'default',
  6.  
  7.     versions+:: {
  8.       alertproxy: '1.31.1-uclibc',
  9.     },
  10.  
  11.     imageRepos+:: {
  12.       alertproxy: 'busybox',
  13.     },
  14.  
  15.     alertproxy+:: {
  16.       env: [],
  17.       name: 'k8s',
  18.       affinities: {
  19.         key: 'test', value: 'her'
  20.       },
  21.       nodeSelector: { 'kubernetes.io/os': 'linux' },
  22.       serviceName: 'alertproxy-' + $._config.alertproxy.name,
  23.       port: 5000,
  24.       container: {
  25.         requests: { cpu: '100m', memory: '100Mi' },
  26.         limits: { cpu: '200m', memory: '200Mi' },
  27.       },
  28.       containers: [],
  29.     },
  30.   },
  31.   alertproxy+: {
  32.     service:
  33.       local service = k.core.v1.service;
  34.       local servicePort = k.core.v1.service.mixin.spec.portsType;
  35.  
  36.       local alerproxyService = servicePort.newNamed('http', $._config.alertproxy.port, 'http');
  37.  
  38.       service.new('alertproxy-' + $._config.alertproxy.name, $.alertproxy.deployment.spec.selector.matchLabels, alerproxyService) +
  39.       service.mixin.metadata.withLabels({ app: 'alertproxy' }) +
  40.       service.mixin.metadata.withNamespace($._config.namespace),
  41.     deployment:
  42.       local deployment = k.apps.v1.deployment;
  43.       local container = k.apps.v1.deployment.mixin.spec.template.spec.containersType;
  44.       local volume = k.apps.v1.deployment.mixin.spec.template.spec.volumesType;
  45.       local containerPort = container.portsType;
  46.       local containerVolumeMount = container.volumeMountsType;
  47.       local podSelector = deployment.mixin.spec.template.spec.selectorType;
  48.       local env = container.envType;
  49.       local targetPort = $._config.alertproxy.port;
  50.       local portName = 'http';
  51.       local podLabels = { app: 'alertproxy' };
  52.       local nodeAffinity = deployment.mixin.spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecutionType;
  53.       local matchExpression = nodeAffinity.mixin.preference.matchExpressionsType;
  54.  
  55.       local c = [
  56.         container.new('alertproxy', $._config.imageRepos.alertproxy + ':' + $._config.versions.alertproxy) +
  57.         container.withEnv($._config.alertproxy.env) +
  58.         container.withPorts(containerPort.newNamed(targetPort, portName)) +
  59.         container.mixin.readinessProbe.httpGet.withPort(portName) +
  60.         container.mixin.resources.withRequests($._config.alertproxy.container.requests) +
  61.         container.mixin.resources.withLimits($._config.alertproxy.container.limits),
  62.       ] + $._config.alertproxy.containers;
  63.  
  64.       local expression = [
  65.         matchExpression.new() +
  66.         matchExpression.withKey($._config.alertproxy.affinities.key) +
  67.         matchExpression.withValues($._config.alertproxy.affinities.value) +
  68.         matchExpression.withOperator('In') ,
  69.       ];
  70.  
  71.       deployment.new('alertproxy', 1, c, podLabels) +
  72.       deployment.mixin.metadata.withNamespace($._config.namespace) +
  73.       deployment.mixin.metadata.withLabels(podLabels) +
  74.       deployment.mixin.spec.selector.withMatchLabels(podLabels) +
  75.       deployment.mixin.spec.template.spec.withNodeSelector($._config.alertproxy.nodeSelector) +
  76.       nodeAffinity.new() +
  77.       nodeAffinity.withWeight(100) +
  78.       nodeAffinity.mixin.preference.withMatchExpressions(expression),
  79.   },
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement