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.