Add support for AWS access/secret keys in train component (#466)

This commit is contained in:
Oleg Shepetyuk 2019-01-23 09:58:00 +02:00
parent 2b0eec34c3
commit f89af01e2c
3 changed files with 41 additions and 1 deletions

View File

@ -12,6 +12,7 @@
numPs: 0,
numWorkers: 0,
secret: '',
secretKeyRefs: '',
trainSteps: 200,
},
"mnist-deploy-gcp": {

View File

@ -43,6 +43,28 @@ local trainEnv = [
},
];
// AWS Access/Secret keys
local awsSecretKeyRefs = util.parseSecret(params.secretKeyRefs);
local awsAccessKeyId = if std.length(awsSecretKeyRefs) > 0 then awsSecretKeyRefs[0] else "";
local awsSecretAccessKey = if std.length(awsSecretKeyRefs) > 1 then awsSecretKeyRefs[1] else "";
local awsEnv = [
{
name: "AWS_ACCESS_KEY_ID",
valueFrom: {
secretKeyRef:
awsAccessKeyId
}
},
{
name: "AWS_SECRET_ACCESS_KEY",
valueFrom: {
secretKeyRef:
awsSecretAccessKey
}
}
];
local secretPieces = std.split(params.secret, "=");
local secretName = if std.length(secretPieces) > 0 then secretPieces[0] else "";
local secretMountPath = if std.length(secretPieces) > 1 then secretPieces[1] else "";
@ -54,7 +76,7 @@ local replicaSpec = {
"/usr/bin/python",
"/opt/model.py",
],
env: trainEnv + util.parseEnv(params.envVariables),
env: trainEnv + util.parseEnv(params.envVariables) + awsEnv,
image: params.image,
name: "tensorflow",
volumeMounts: if secretMountPath != "" then

View File

@ -7,6 +7,13 @@
value: v[1],
},
// convert a list of two items into a map representing a secret name and key
listToSecretMap:: function(v)
{
name: v[0],
key: v[1],
},
// Function to turn comma separated list of environment variables into a dictionary.
parseEnv:: function(v)
local pieces = std.split(v, ",");
@ -16,4 +23,14 @@
std.split(v, ",")
)
else [],
// Function to turn comma separated list of secret names and keys into a dictionary.
parseSecret:: function(v)
local pieces = std.split(v, ",");
if v != "" && std.length(pieces) > 0 then
std.map(
function(i) $.listToSecretMap(std.split(i, ".")),
std.split(v, ",")
)
else [],
}