3

sample.jsonnet:

local k = import "github.com/jsonnet-libs/k8s-libsonnet/1.25/main.libsonnet";
{
  _config:: error "Must provide deploy config",
  // initiate resources
  local deploy = k.apps.v1.deployment,
  local namespace = k.core.v1.namespace,
  local service = k.core.v1.service,
  local container = k.core.v1.container,
  local port = k.core.v1.containerPort,

  namespace: namespace.new(
    name=$._config.environment
  ),

  //carts deploy,service
  deployment: deploy.new(
    name=$._config.deployment.name, 
    containers=[
      container.new(
        name=$._config.deployment.name, image=$._config.deployment.image
      ) + 
      container.withEnv(
        [
          {
            "name": "JAVA_OPTS", "value": "-Xms64m -Xmx128m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom -Dspring.zipkin.enabled=false"
          }
        ]
      ) + 
      k.core.v1.resourceRequirements.withLimits(
        limits=({cpu: 300, memory: 500})
      ) +
      k.core.v1.resourceRequirements.withRequests(
        requests=({cpu: 100, memory: 200})
      ) +
      container.withPorts(
        [
          port.new(8000)
        ]
      )
    ], 
    replicas=1
  ),
  service: service.new(
    name=$._config.deployment.name,
    selector={
      "name": $._config.deployment.name
    }, 
    ports=8080
  ),
}

dev-env.jsonnet:

local deployment_list = [
    "carts",
    "carts_db"
];
local kp = (import "./sample.jsonnet") +
{
    _config: {
        environment: "development",
        deployment: {
            name: "carts",
            image: "weaveworksdemos/carts:0.4.8"
        },
        carts_db: {
            name: "carts_db",
            image: "mongo"
        }
    },
};

//Create deployment manifests
{
    ["deploy_" + deploy_name]: kp.deployment
    for deploy_name in deployment_list
}
//create service manifests
{
    ["service_" + service_name]: kp.service
    for service_name in deployment_list
}

I am running following command to create separate deploy files with different names and images but it not able to loop through different name/image values. It only picks the first value and create two deployment with same configuration. I am new to jsonnet. I wish to generate around 10 deployment and service manifests.

0 Answers0