Parametrize volumes and ports for nmslib containers

This commit is contained in:
Sanyam Kapoor 2018-08-08 17:32:26 -07:00
parent 133e054033
commit 6e9150bad6
1 changed files with 50 additions and 38 deletions

View File

@ -1,7 +1,7 @@
local baseParams = std.extVar("__ksonnet/params").components["nmslib"]; local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
{ {
deploymentSpec(params, env, containers):: { deploymentSpec(params, env, containers, volumes=[]):: {
apiVersion: "extensions/v1beta1", apiVersion: "extensions/v1beta1",
kind: "Deployment", kind: "Deployment",
metadata: { metadata: {
@ -26,20 +26,13 @@ local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
}, },
spec: { spec: {
containers: containers, containers: containers,
volumes: [ volumes: volumes,
{
name: "gcp-credentials",
secret: {
secretName: "user-gcp-sa",
},
},
],
}, },
}, },
}, },
}, },
jobSpec(params, env, containers):: { jobSpec(params, env, containers, volumes=[]):: {
apiVersion: "batch/v1", apiVersion: "batch/v1",
kind: "Job", kind: "Job",
metadata: { metadata: {
@ -60,40 +53,19 @@ local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
spec: { spec: {
"restartPolicy": "OnFailure", "restartPolicy": "OnFailure",
containers: containers, containers: containers,
volumes: [ volumes: volumes,
{
name: "gcp-credentials",
secret: {
secretName: "user-gcp-sa",
},
},
],
}, },
}, },
}, },
}, },
containerSpec(params):: { containerSpec(params, env=[], volumeMounts=[], ports=[]):: {
name: params.name, name: params.name,
image: params.image, image: params.image,
args: params.args, args: params.args,
ports: [ ports: ports,
{ env: env,
containerPort: 8008, volumeMounts: volumeMounts,
}
],
env: [
{
name: "GOOGLE_APPLICATION_CREDENTIALS",
value: "/secret/gcp-credentials/user-gcp-sa.json",
}
],
volumeMounts: [
{
mountPath: "/secret/gcp-credentials",
name: "gcp-credentials",
},
],
}, },
service(params, env):: { service(params, env):: {
@ -137,6 +109,29 @@ local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
parts(newParams, env):: { parts(newParams, env):: {
local params = baseParams + newParams, local params = baseParams + newParams,
local volumes = [
{
name: "gcp-credentials",
secret: {
secretName: "user-gcp-sa",
},
},
],
local containerEnv = [
{
name: "GOOGLE_APPLICATION_CREDENTIALS",
value: "/secret/gcp-credentials/user-gcp-sa.json",
}
],
local containerVolumeMounts = [
{
mountPath: "/secret/gcp-credentials",
name: "gcp-credentials",
},
],
creator:: { creator:: {
local creatorParams = params + { local creatorParams = params + {
args: [ args: [
@ -149,7 +144,12 @@ local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
}, },
all: [ all: [
$.jobSpec(creatorParams, env, [ $.containerSpec(creatorParams) ]), $.jobSpec(creatorParams, env,
[
$.containerSpec(creatorParams, env=containerEnv,
volumeMounts=containerVolumeMounts)
],
volumes=volumes),
], ],
}.all, }.all,
@ -166,9 +166,21 @@ local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
], ],
}, },
local containerPorts = [
{
containerPort: 8008,
}
],
all: [ all: [
$.service(serverParams, env), $.service(serverParams, env),
$.deploymentSpec(serverParams, env, [ $.containerSpec(serverParams) ]), $.deploymentSpec(serverParams, env,
[
$.containerSpec(serverParams, env=containerEnv,
volumeMounts=containerVolumeMounts,
ports=containerPorts)
],
volumes=volumes),
], ],
}.all, }.all,
} }