11local baseParams = std.extVar("__ksonnet/params" ).components["nmslib" ];
22
33{
4-
5- nmsContainer(params, env):: {
4+ deploymentSpec(params, env, containers, volumes=[]):: {
65 apiVersion: "extensions/v1beta1" ,
76 kind: "Deployment" ,
87 metadata: {
9- name: params.name + "-deployment" ,
8+ name: params.name,
109 namespace: env.namespace,
1110 labels: {
1211 app: params.name,
@@ -26,23 +25,49 @@ local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
2625 }
2726 },
2827 spec: {
29- containers: [
30- {
31- name: params.name,
32- image: params.image,
33- args: params.args,
34- ports: [
35- {
36- containerPort: 8008 ,
37- }
38- ],
39- }
40- ],
28+ containers: containers,
29+ volumes: volumes,
4130 },
4231 },
4332 },
4433 },
4534
35+ jobSpec(params, env, containers, volumes=[]):: {
36+ apiVersion: "batch/v1" ,
37+ kind: "Job" ,
38+ metadata: {
39+ name: params.name,
40+ namespace: env.namespace,
41+ labels: {
42+ app: params.name,
43+ }
44+ },
45+ spec: {
46+ replicas: params.replicas,
47+ template: {
48+ metadata: {
49+ labels: {
50+ app: params.name,
51+ }
52+ },
53+ spec: {
54+ "restartPolicy" : "OnFailure" ,
55+ containers: containers,
56+ volumes: volumes,
57+ },
58+ },
59+ },
60+ },
61+
62+ containerSpec(params, env=[], volumeMounts=[], ports=[]):: {
63+ name: params.name,
64+ image: params.image,
65+ args: params.args,
66+ ports: ports,
67+ env: env,
68+ volumeMounts: volumeMounts,
69+ },
70+
4671 service(params, env):: {
4772 apiVersion: "v1" ,
4873 kind: "Service" ,
@@ -84,35 +109,78 @@ local baseParams = std.extVar("__ksonnet/params").components["nmslib"];
84109 parts(newParams, env):: {
85110 local params = baseParams + newParams,
86111
112+ local volumes = [
113+ {
114+ name: "gcp-credentials" ,
115+ secret: {
116+ secretName: "user-gcp-sa" ,
117+ },
118+ },
119+ ],
120+
121+ local containerEnv = [
122+ {
123+ name: "GOOGLE_APPLICATION_CREDENTIALS" ,
124+ value: "/secret/gcp-credentials/user-gcp-sa.json" ,
125+ }
126+ ],
127+
128+ local containerVolumeMounts = [
129+ {
130+ mountPath: "/secret/gcp-credentials" ,
131+ name: "gcp-credentials" ,
132+ },
133+ ],
134+
87135 creator:: {
88136 local creatorParams = params + {
89137 args: [
90- "nmslib-create" ,
91- "--data-file=" + params.dataFile,
92- "--index-file=" + params.indexFile,
138+ "-m" ,
139+ "code_search.nmslib.cli.create_search_index" ,
140+ "--data_dir=" + params.dataDir,
141+ "--lookup_file=" + params.lookupFile,
142+ "--index_file=" + params.indexFile,
93143 ],
94144 },
95145
96146 all: [
97- $.nmsContainer(creatorParams, env),
147+ $.jobSpec(creatorParams, env,
148+ [
149+ $.containerSpec(creatorParams, env=containerEnv,
150+ volumeMounts=containerVolumeMounts)
151+ ],
152+ volumes=volumes),
98153 ],
99154 }.all,
100155
101156 server:: {
102157 local serverParams = params + {
103158 args: [
104- "nmslib-serve" ,
105- "--data-file=" + params.dataFile,
106- "--index-file=" + params.indexFile,
159+ "-m" ,
160+ "code_search.nmslib.cli.start_search_server" ,
107161 "--problem=" + params.problem,
108- "--data-dir=" + params.dataDir,
109- "--serving-url=" + params.servingUrl,
162+ "--data_dir=" + params.dataDir,
163+ "--lookup_file=" + params.lookupFile,
164+ "--index_file=" + params.indexFile,
165+ "--serving_url=" + params.servingUrl,
110166 ],
111167 },
112168
169+ local containerPorts = [
170+ {
171+ containerPort: 8008 ,
172+ }
173+ ],
174+
113175 all: [
114176 $.service(serverParams, env),
115- $.nmsContainer(serverParams, env),
177+ $.deploymentSpec(serverParams, env,
178+ [
179+ $.containerSpec(serverParams, env=containerEnv,
180+ volumeMounts=containerVolumeMounts,
181+ ports=containerPorts)
182+ ],
183+ volumes=volumes),
116184 ],
117185 }.all,
118186 }
0 commit comments