@metaplay/metaplay-auth 1.4.1 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/index.js +68 -62
- package/dist/index.js.map +1 -1
- package/dist/src/stackapi.js +38 -0
- package/dist/src/stackapi.js.map +1 -1
- package/index.ts +72 -68
- package/package.json +1 -1
- package/src/stackapi.ts +50 -0
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -7,7 +7,6 @@ import { checkGameServerDeployment } from './src/deployment.js';
|
|
|
7
7
|
import { logger, setLogLevel } from './src/logging.js';
|
|
8
8
|
import { isValidFQDN, executeCommand } from './src/utils.js';
|
|
9
9
|
import { exit } from 'process';
|
|
10
|
-
import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr';
|
|
11
10
|
import { tmpdir } from 'os';
|
|
12
11
|
import { join } from 'path';
|
|
13
12
|
import { randomBytes } from 'crypto';
|
|
@@ -45,7 +44,7 @@ const program = new Command();
|
|
|
45
44
|
program
|
|
46
45
|
.name('metaplay-auth')
|
|
47
46
|
.description('Authenticate with Metaplay and get AWS and Kubernetes credentials for game servers.')
|
|
48
|
-
.version('1.4.
|
|
47
|
+
.version('1.4.2')
|
|
49
48
|
.option('-d, --debug', 'enable debug output')
|
|
50
49
|
.hook('preAction', (thisCommand) => {
|
|
51
50
|
// Handle debug flag for all commands.
|
|
@@ -262,36 +261,14 @@ program.command('get-docker-login')
|
|
|
262
261
|
const tokens = await loadTokens();
|
|
263
262
|
const stackApi = new StackAPI(tokens.access_token, options.stackApi);
|
|
264
263
|
const gameserverId = resolveGameserverId(gameserver, options);
|
|
265
|
-
// Fetch AWS credentials from Metaplay cloud
|
|
266
|
-
logger.debug('Get AWS credentials from Metaplay');
|
|
267
|
-
const credentials = await stackApi.getAwsCredentials(gameserverId);
|
|
268
264
|
// Get environment info (region is needed for ECR)
|
|
269
265
|
logger.debug('Get environment info');
|
|
270
266
|
const environment = await stackApi.getEnvironmentDetails(gameserverId);
|
|
271
|
-
const awsRegion = environment.deployment.aws_region;
|
|
272
267
|
const dockerRepo = environment.deployment.ecr_repo;
|
|
273
|
-
//
|
|
274
|
-
logger.debug('
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
accessKeyId: credentials.AccessKeyId,
|
|
278
|
-
secretAccessKey: credentials.SecretAccessKey,
|
|
279
|
-
sessionToken: credentials.SessionToken
|
|
280
|
-
},
|
|
281
|
-
region: awsRegion
|
|
282
|
-
});
|
|
283
|
-
// Fetch the ECR docker authentication token
|
|
284
|
-
logger.debug('Fetch ECR login credentials from AWS');
|
|
285
|
-
const command = new GetAuthorizationTokenCommand({});
|
|
286
|
-
const response = await client.send(command);
|
|
287
|
-
if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
|
|
288
|
-
throw new Error('Received an empty authorization token response for ECR repository');
|
|
289
|
-
}
|
|
290
|
-
// Parse username and password from the response (separated by a ':')
|
|
291
|
-
logger.debug('Parse ECR response');
|
|
292
|
-
const authorization64 = response.authorizationData[0].authorizationToken;
|
|
293
|
-
const authorization = Buffer.from(authorization64, 'base64').toString();
|
|
294
|
-
const [username, password] = authorization.split(':');
|
|
268
|
+
// Resolve docker credentials for remote registry
|
|
269
|
+
logger.debug('Get docker credentials');
|
|
270
|
+
const dockerCredentials = await stackApi.getDockerCredentials(gameserverId);
|
|
271
|
+
const { username, password } = dockerCredentials;
|
|
295
272
|
// Output the docker repo & credentials
|
|
296
273
|
if (options.format === 'env') {
|
|
297
274
|
console.log(`export DOCKER_REPO=${dockerRepo}`);
|
|
@@ -351,36 +328,12 @@ program.command('push-docker-image')
|
|
|
351
328
|
const tokens = await loadTokens();
|
|
352
329
|
const stackApi = new StackAPI(tokens.access_token, options.stackApi);
|
|
353
330
|
const gameserverId = resolveGameserverId(gameserver, options);
|
|
354
|
-
// Fetch AWS credentials from Metaplay cloud
|
|
355
|
-
logger.debug('Get AWS credentials from Metaplay');
|
|
356
|
-
const credentials = await stackApi.getAwsCredentials(gameserverId);
|
|
357
331
|
// Get environment info (region is needed for ECR)
|
|
358
332
|
logger.debug('Get environment info');
|
|
359
333
|
const envInfo = await stackApi.getEnvironmentDetails(gameserverId);
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
const client = new ECRClient({
|
|
364
|
-
credentials: {
|
|
365
|
-
accessKeyId: credentials.AccessKeyId,
|
|
366
|
-
secretAccessKey: credentials.SecretAccessKey,
|
|
367
|
-
sessionToken: credentials.SessionToken
|
|
368
|
-
},
|
|
369
|
-
region: awsRegion
|
|
370
|
-
});
|
|
371
|
-
// Fetch the ECR docker authentication token
|
|
372
|
-
logger.debug('Fetch ECR login credentials from AWS');
|
|
373
|
-
const command = new GetAuthorizationTokenCommand({});
|
|
374
|
-
const response = await client.send(command);
|
|
375
|
-
if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
|
|
376
|
-
throw new Error('Received an empty authorization token response for ECR repository');
|
|
377
|
-
}
|
|
378
|
-
// Parse username and password from the response (separated by a ':')
|
|
379
|
-
logger.debug('Parse ECR response');
|
|
380
|
-
const authorization64 = response.authorizationData[0].authorizationToken;
|
|
381
|
-
const authorization = Buffer.from(authorization64, 'base64').toString();
|
|
382
|
-
const [username, password] = authorization.split(':');
|
|
383
|
-
const authConfig = { username, password, serveraddress: '' }; // \todo serveraddress value? https://stackoverflow.com/questions/54252777/how-to-push-image-with-dockerode-image-not-pushed-but-no-error
|
|
334
|
+
// Resolve docker credentials for remote registry
|
|
335
|
+
logger.debug('Get docker credentials');
|
|
336
|
+
const dockerCredentials = await stackApi.getDockerCredentials(gameserverId);
|
|
384
337
|
// Resolve tag from src image
|
|
385
338
|
if (!imageName) {
|
|
386
339
|
throw new Error('Must specify a valid docker image name as the image-name argument');
|
|
@@ -404,9 +357,10 @@ program.command('push-docker-image')
|
|
|
404
357
|
// Push the image
|
|
405
358
|
logger.debug(`Push image ${dstImageName}`);
|
|
406
359
|
const dstDockerImage = dockerApi.getImage(dstImageName);
|
|
360
|
+
const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl };
|
|
407
361
|
const pushStream = await dstDockerImage.push({ authconfig: authConfig, tag: options.imageTag });
|
|
408
362
|
// Follow push progress & wait until completed
|
|
409
|
-
logger.debug('Following push stream...');
|
|
363
|
+
logger.debug('Following image push stream...');
|
|
410
364
|
await new Promise((resolve, reject) => {
|
|
411
365
|
dockerApi.modem.followProgress(pushStream, (error, result) => {
|
|
412
366
|
if (error) {
|
|
@@ -458,20 +412,72 @@ program.command('deploy-server')
|
|
|
458
412
|
throw new Error('Must specify a valid docker image tag as the image-tag argument, usually the SHA of the build');
|
|
459
413
|
}
|
|
460
414
|
if (!options.deploymentName) {
|
|
461
|
-
throw new Error(`Invalid Helm deployment name '${options.deploymentName}'`);
|
|
415
|
+
throw new Error(`Invalid Helm deployment name '${options.deploymentName}'; specify one with --deployment-name or use the default`);
|
|
462
416
|
}
|
|
417
|
+
// Fetch Docker credentials for target environment registry
|
|
418
|
+
const dockerCredentials = await stackApi.getDockerCredentials(gameserverId);
|
|
463
419
|
// Resolve information about docker image
|
|
420
|
+
// const dockerApi = new Docker({
|
|
421
|
+
// host: dockerCredentials.registryUrl,
|
|
422
|
+
// port: 443,
|
|
423
|
+
// protocol: 'https',
|
|
424
|
+
// username: dockerCredentials.username,
|
|
425
|
+
// headers: {
|
|
426
|
+
// Authorization: `Bearer ${dockerCredentials.password}`,
|
|
427
|
+
// Host: dockerCredentials.registryUrl.replace('https://', ''),
|
|
428
|
+
// }
|
|
429
|
+
// })
|
|
430
|
+
const dockerApi = new Docker();
|
|
464
431
|
const dockerRepo = envInfo.deployment.ecr_repo;
|
|
465
432
|
const imageName = `${dockerRepo}:${imageTag}`;
|
|
466
|
-
logger.debug(`Fetch docker image
|
|
433
|
+
logger.debug(`Fetch docker image labels for ${imageName}`);
|
|
467
434
|
let imageLabels;
|
|
468
435
|
try {
|
|
469
|
-
const
|
|
470
|
-
|
|
471
|
-
imageLabels = (await dockerImage.inspect()).Config.Labels || {};
|
|
436
|
+
const localDockerImage = dockerApi.getImage(imageName);
|
|
437
|
+
imageLabels = (await localDockerImage.inspect()).Config.Labels || {};
|
|
472
438
|
}
|
|
473
439
|
catch (err) {
|
|
474
|
-
|
|
440
|
+
logger.debug(`Failed to resolve docker image metadata from local image ${imageName}: ${err}`);
|
|
441
|
+
}
|
|
442
|
+
// If wasn't able to resolve the images, pull image from the target environment registry & resolve labels
|
|
443
|
+
if (imageLabels === undefined) {
|
|
444
|
+
// Pull the image from remote registry
|
|
445
|
+
try {
|
|
446
|
+
console.log(`Image ${imageName} not found locally -- pulling docker image from target environment registry...`);
|
|
447
|
+
const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl };
|
|
448
|
+
const pullStream = await dockerApi.pull(imageName, { authconfig: authConfig });
|
|
449
|
+
// Follow pull progress & wait until completed
|
|
450
|
+
logger.debug('Following image pull stream...');
|
|
451
|
+
await new Promise((resolve, reject) => {
|
|
452
|
+
dockerApi.modem.followProgress(pullStream, (error, result) => {
|
|
453
|
+
if (error) {
|
|
454
|
+
logger.debug('Failed to pull image:', error);
|
|
455
|
+
reject(error);
|
|
456
|
+
}
|
|
457
|
+
else {
|
|
458
|
+
// result contains an array of all the progress objects
|
|
459
|
+
logger.debug('Succesfully finished pulling image');
|
|
460
|
+
resolve(result);
|
|
461
|
+
}
|
|
462
|
+
}, (obj) => {
|
|
463
|
+
// console.log('Progress:', obj)
|
|
464
|
+
// { status: 'Preparing', progressDetail: {}, id: '82730adcaeb0' }
|
|
465
|
+
// { status: 'Layer already exists', progressDetail: {}, id: '7cd701fff13a' }
|
|
466
|
+
});
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
catch (err) {
|
|
470
|
+
throw new Error(`Failed to fetch docker image ${imageName} from target environment registry: ${err}`);
|
|
471
|
+
}
|
|
472
|
+
// Resolve the labels
|
|
473
|
+
try {
|
|
474
|
+
logger.debug('Get docker labels again (with pulled image)');
|
|
475
|
+
const localDockerImage = dockerApi.getImage(imageName);
|
|
476
|
+
imageLabels = (await localDockerImage.inspect()).Config.Labels || {};
|
|
477
|
+
}
|
|
478
|
+
catch (err) {
|
|
479
|
+
throw new Error(`Failed to resolve docker image metadata from pulled image ${imageName}: ${err}`);
|
|
480
|
+
}
|
|
475
481
|
}
|
|
476
482
|
// Try to resolve SDK version and Helm repo and chart version from the docker labels
|
|
477
483
|
// \note These only exist for SDK R28 and newer images
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stackapi.js
CHANGED
|
@@ -2,6 +2,7 @@ import { isValidFQDN, getGameserverAdminUrl } from './utils.js';
|
|
|
2
2
|
import { logger } from './logging.js';
|
|
3
3
|
import { dump } from 'js-yaml';
|
|
4
4
|
import { getUserinfo } from './auth.js';
|
|
5
|
+
import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr';
|
|
5
6
|
export class StackAPI {
|
|
6
7
|
accessToken;
|
|
7
8
|
_stackApiBaseUrl;
|
|
@@ -260,5 +261,42 @@ export class StackAPI {
|
|
|
260
261
|
}
|
|
261
262
|
return await response.json();
|
|
262
263
|
}
|
|
264
|
+
async getDockerCredentials(gameserverId) {
|
|
265
|
+
// Get environment info (for AWS region)
|
|
266
|
+
logger.debug('Get environment info');
|
|
267
|
+
const envInfo = await this.getEnvironmentDetails(gameserverId);
|
|
268
|
+
// Fetch AWS credentials from Metaplay cloud
|
|
269
|
+
logger.debug('Get AWS credentials from Metaplay');
|
|
270
|
+
const awsCredentials = await this.getAwsCredentials(gameserverId);
|
|
271
|
+
// Create ECR client with credentials
|
|
272
|
+
logger.debug('Create ECR client');
|
|
273
|
+
const client = new ECRClient({
|
|
274
|
+
credentials: {
|
|
275
|
+
accessKeyId: awsCredentials.AccessKeyId,
|
|
276
|
+
secretAccessKey: awsCredentials.SecretAccessKey,
|
|
277
|
+
sessionToken: awsCredentials.SessionToken
|
|
278
|
+
},
|
|
279
|
+
region: envInfo.deployment.aws_region
|
|
280
|
+
});
|
|
281
|
+
// Fetch the ECR docker authentication token
|
|
282
|
+
logger.debug('Fetch ECR login credentials from AWS');
|
|
283
|
+
const command = new GetAuthorizationTokenCommand({});
|
|
284
|
+
const response = await client.send(command);
|
|
285
|
+
if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken || !response.authorizationData[0].proxyEndpoint) {
|
|
286
|
+
throw new Error('Received an empty authorization token response for ECR repository');
|
|
287
|
+
}
|
|
288
|
+
// Parse username and password from the response (separated by a ':')
|
|
289
|
+
logger.debug('Parse ECR response');
|
|
290
|
+
const registryUrl = response.authorizationData[0].proxyEndpoint;
|
|
291
|
+
const authorization64 = response.authorizationData[0].authorizationToken;
|
|
292
|
+
const authorization = Buffer.from(authorization64, 'base64').toString();
|
|
293
|
+
const [username, password] = authorization.split(':');
|
|
294
|
+
logger.debug(`ECR: username=${username}, proxyEndpoint=${registryUrl}`);
|
|
295
|
+
return {
|
|
296
|
+
username,
|
|
297
|
+
password,
|
|
298
|
+
registryUrl
|
|
299
|
+
};
|
|
300
|
+
}
|
|
263
301
|
}
|
|
264
302
|
//# sourceMappingURL=stackapi.js.map
|
package/dist/src/stackapi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackapi.js","sourceRoot":"","sources":["../../src/stackapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"stackapi.js","sourceRoot":"","sources":["../../src/stackapi.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -7,7 +7,6 @@ import { checkGameServerDeployment } from './src/deployment.js'
|
|
|
7
7
|
import { logger, setLogLevel } from './src/logging.js'
|
|
8
8
|
import { isValidFQDN, executeCommand } from './src/utils.js'
|
|
9
9
|
import { exit } from 'process'
|
|
10
|
-
import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr'
|
|
11
10
|
import { tmpdir } from 'os'
|
|
12
11
|
import { join } from 'path'
|
|
13
12
|
import { randomBytes } from 'crypto'
|
|
@@ -45,7 +44,7 @@ const program = new Command()
|
|
|
45
44
|
program
|
|
46
45
|
.name('metaplay-auth')
|
|
47
46
|
.description('Authenticate with Metaplay and get AWS and Kubernetes credentials for game servers.')
|
|
48
|
-
.version('1.4.
|
|
47
|
+
.version('1.4.2')
|
|
49
48
|
.option('-d, --debug', 'enable debug output')
|
|
50
49
|
.hook('preAction', (thisCommand) => {
|
|
51
50
|
// Handle debug flag for all commands.
|
|
@@ -271,40 +270,15 @@ program.command('get-docker-login')
|
|
|
271
270
|
const stackApi = new StackAPI(tokens.access_token, options.stackApi)
|
|
272
271
|
const gameserverId = resolveGameserverId(gameserver, options)
|
|
273
272
|
|
|
274
|
-
// Fetch AWS credentials from Metaplay cloud
|
|
275
|
-
logger.debug('Get AWS credentials from Metaplay')
|
|
276
|
-
const credentials = await stackApi.getAwsCredentials(gameserverId)
|
|
277
|
-
|
|
278
273
|
// Get environment info (region is needed for ECR)
|
|
279
274
|
logger.debug('Get environment info')
|
|
280
275
|
const environment = await stackApi.getEnvironmentDetails(gameserverId)
|
|
281
|
-
const awsRegion = environment.deployment.aws_region
|
|
282
276
|
const dockerRepo = environment.deployment.ecr_repo
|
|
283
277
|
|
|
284
|
-
//
|
|
285
|
-
logger.debug('
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
accessKeyId: credentials.AccessKeyId,
|
|
289
|
-
secretAccessKey: credentials.SecretAccessKey,
|
|
290
|
-
sessionToken: credentials.SessionToken
|
|
291
|
-
},
|
|
292
|
-
region: awsRegion
|
|
293
|
-
})
|
|
294
|
-
|
|
295
|
-
// Fetch the ECR docker authentication token
|
|
296
|
-
logger.debug('Fetch ECR login credentials from AWS')
|
|
297
|
-
const command = new GetAuthorizationTokenCommand({})
|
|
298
|
-
const response = await client.send(command)
|
|
299
|
-
if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
|
|
300
|
-
throw new Error('Received an empty authorization token response for ECR repository')
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
// Parse username and password from the response (separated by a ':')
|
|
304
|
-
logger.debug('Parse ECR response')
|
|
305
|
-
const authorization64 = response.authorizationData[0].authorizationToken
|
|
306
|
-
const authorization = Buffer.from(authorization64, 'base64').toString()
|
|
307
|
-
const [username, password] = authorization.split(':')
|
|
278
|
+
// Resolve docker credentials for remote registry
|
|
279
|
+
logger.debug('Get docker credentials')
|
|
280
|
+
const dockerCredentials = await stackApi.getDockerCredentials(gameserverId)
|
|
281
|
+
const { username, password } = dockerCredentials
|
|
308
282
|
|
|
309
283
|
// Output the docker repo & credentials
|
|
310
284
|
if (options.format === 'env') {
|
|
@@ -367,40 +341,13 @@ program.command('push-docker-image')
|
|
|
367
341
|
const stackApi = new StackAPI(tokens.access_token, options.stackApi)
|
|
368
342
|
const gameserverId = resolveGameserverId(gameserver, options)
|
|
369
343
|
|
|
370
|
-
// Fetch AWS credentials from Metaplay cloud
|
|
371
|
-
logger.debug('Get AWS credentials from Metaplay')
|
|
372
|
-
const credentials = await stackApi.getAwsCredentials(gameserverId)
|
|
373
|
-
|
|
374
344
|
// Get environment info (region is needed for ECR)
|
|
375
345
|
logger.debug('Get environment info')
|
|
376
346
|
const envInfo = await stackApi.getEnvironmentDetails(gameserverId)
|
|
377
|
-
const awsRegion = envInfo.deployment.aws_region
|
|
378
|
-
|
|
379
|
-
// Create ECR client with credentials
|
|
380
|
-
logger.debug('Create ECR client')
|
|
381
|
-
const client = new ECRClient({
|
|
382
|
-
credentials: {
|
|
383
|
-
accessKeyId: credentials.AccessKeyId,
|
|
384
|
-
secretAccessKey: credentials.SecretAccessKey,
|
|
385
|
-
sessionToken: credentials.SessionToken
|
|
386
|
-
},
|
|
387
|
-
region: awsRegion
|
|
388
|
-
})
|
|
389
347
|
|
|
390
|
-
//
|
|
391
|
-
logger.debug('
|
|
392
|
-
const
|
|
393
|
-
const response = await client.send(command)
|
|
394
|
-
if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
|
|
395
|
-
throw new Error('Received an empty authorization token response for ECR repository')
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
// Parse username and password from the response (separated by a ':')
|
|
399
|
-
logger.debug('Parse ECR response')
|
|
400
|
-
const authorization64 = response.authorizationData[0].authorizationToken
|
|
401
|
-
const authorization = Buffer.from(authorization64, 'base64').toString()
|
|
402
|
-
const [username, password] = authorization.split(':')
|
|
403
|
-
const authConfig = { username, password, serveraddress: '' } // \todo serveraddress value? https://stackoverflow.com/questions/54252777/how-to-push-image-with-dockerode-image-not-pushed-but-no-error
|
|
348
|
+
// Resolve docker credentials for remote registry
|
|
349
|
+
logger.debug('Get docker credentials')
|
|
350
|
+
const dockerCredentials = await stackApi.getDockerCredentials(gameserverId)
|
|
404
351
|
|
|
405
352
|
// Resolve tag from src image
|
|
406
353
|
if (!imageName) {
|
|
@@ -428,10 +375,11 @@ program.command('push-docker-image')
|
|
|
428
375
|
// Push the image
|
|
429
376
|
logger.debug(`Push image ${dstImageName}`)
|
|
430
377
|
const dstDockerImage = dockerApi.getImage(dstImageName)
|
|
378
|
+
const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl }
|
|
431
379
|
const pushStream = await dstDockerImage.push({ authconfig: authConfig, tag: options.imageTag })
|
|
432
380
|
|
|
433
381
|
// Follow push progress & wait until completed
|
|
434
|
-
logger.debug('Following push stream...')
|
|
382
|
+
logger.debug('Following image push stream...')
|
|
435
383
|
await new Promise((resolve, reject) => {
|
|
436
384
|
dockerApi.modem.followProgress(
|
|
437
385
|
pushStream,
|
|
@@ -490,20 +438,76 @@ program.command('deploy-server')
|
|
|
490
438
|
}
|
|
491
439
|
|
|
492
440
|
if (!options.deploymentName) {
|
|
493
|
-
throw new Error(`Invalid Helm deployment name '${options.deploymentName}'`)
|
|
441
|
+
throw new Error(`Invalid Helm deployment name '${options.deploymentName}'; specify one with --deployment-name or use the default`)
|
|
494
442
|
}
|
|
495
443
|
|
|
444
|
+
// Fetch Docker credentials for target environment registry
|
|
445
|
+
const dockerCredentials = await stackApi.getDockerCredentials(gameserverId)
|
|
446
|
+
|
|
496
447
|
// Resolve information about docker image
|
|
448
|
+
// const dockerApi = new Docker({
|
|
449
|
+
// host: dockerCredentials.registryUrl,
|
|
450
|
+
// port: 443,
|
|
451
|
+
// protocol: 'https',
|
|
452
|
+
// username: dockerCredentials.username,
|
|
453
|
+
// headers: {
|
|
454
|
+
// Authorization: `Bearer ${dockerCredentials.password}`,
|
|
455
|
+
// Host: dockerCredentials.registryUrl.replace('https://', ''),
|
|
456
|
+
// }
|
|
457
|
+
// })
|
|
458
|
+
const dockerApi = new Docker()
|
|
497
459
|
const dockerRepo = envInfo.deployment.ecr_repo
|
|
498
460
|
const imageName = `${dockerRepo}:${imageTag}`
|
|
499
|
-
logger.debug(`Fetch docker image
|
|
461
|
+
logger.debug(`Fetch docker image labels for ${imageName}`)
|
|
500
462
|
let imageLabels
|
|
501
463
|
try {
|
|
502
|
-
const
|
|
503
|
-
|
|
504
|
-
imageLabels = (await dockerImage.inspect()).Config.Labels || {}
|
|
464
|
+
const localDockerImage = dockerApi.getImage(imageName)
|
|
465
|
+
imageLabels = (await localDockerImage.inspect()).Config.Labels || {}
|
|
505
466
|
} catch (err) {
|
|
506
|
-
|
|
467
|
+
logger.debug(`Failed to resolve docker image metadata from local image ${imageName}: ${err}`)
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// If wasn't able to resolve the images, pull image from the target environment registry & resolve labels
|
|
471
|
+
if (imageLabels === undefined) {
|
|
472
|
+
// Pull the image from remote registry
|
|
473
|
+
try {
|
|
474
|
+
console.log(`Image ${imageName} not found locally -- pulling docker image from target environment registry...`)
|
|
475
|
+
const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl }
|
|
476
|
+
const pullStream = await dockerApi.pull(imageName, { authconfig: authConfig })
|
|
477
|
+
|
|
478
|
+
// Follow pull progress & wait until completed
|
|
479
|
+
logger.debug('Following image pull stream...')
|
|
480
|
+
await new Promise((resolve, reject) => {
|
|
481
|
+
dockerApi.modem.followProgress(
|
|
482
|
+
pullStream,
|
|
483
|
+
(error: Error | null, result: any[]) => {
|
|
484
|
+
if (error) {
|
|
485
|
+
logger.debug('Failed to pull image:', error)
|
|
486
|
+
reject(error)
|
|
487
|
+
} else {
|
|
488
|
+
// result contains an array of all the progress objects
|
|
489
|
+
logger.debug('Succesfully finished pulling image')
|
|
490
|
+
resolve(result)
|
|
491
|
+
}
|
|
492
|
+
},
|
|
493
|
+
(obj: any) => {
|
|
494
|
+
// console.log('Progress:', obj)
|
|
495
|
+
// { status: 'Preparing', progressDetail: {}, id: '82730adcaeb0' }
|
|
496
|
+
// { status: 'Layer already exists', progressDetail: {}, id: '7cd701fff13a' }
|
|
497
|
+
})
|
|
498
|
+
})
|
|
499
|
+
} catch (err) {
|
|
500
|
+
throw new Error(`Failed to fetch docker image ${imageName} from target environment registry: ${err}`)
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
// Resolve the labels
|
|
504
|
+
try {
|
|
505
|
+
logger.debug('Get docker labels again (with pulled image)')
|
|
506
|
+
const localDockerImage = dockerApi.getImage(imageName)
|
|
507
|
+
imageLabels = (await localDockerImage.inspect()).Config.Labels || {}
|
|
508
|
+
} catch (err) {
|
|
509
|
+
throw new Error(`Failed to resolve docker image metadata from pulled image ${imageName}: ${err}`)
|
|
510
|
+
}
|
|
507
511
|
}
|
|
508
512
|
|
|
509
513
|
// Try to resolve SDK version and Helm repo and chart version from the docker labels
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaplay/metaplay-auth",
|
|
3
3
|
"description": "Utility CLI for authenticating with the Metaplay Auth and making authenticated calls to infrastructure endpoints.",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.2",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
7
7
|
"homepage": "https://metaplay.io",
|
package/src/stackapi.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { isValidFQDN, getGameserverAdminUrl } from './utils.js'
|
|
|
2
2
|
import { logger } from './logging.js'
|
|
3
3
|
import { dump } from 'js-yaml'
|
|
4
4
|
import { getUserinfo } from './auth.js'
|
|
5
|
+
import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr'
|
|
5
6
|
|
|
6
7
|
interface AwsCredentialsResponse {
|
|
7
8
|
AccessKeyId: string
|
|
@@ -71,6 +72,12 @@ interface KubeExecCredential {
|
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
|
|
75
|
+
export interface DockerCredentials {
|
|
76
|
+
username: string
|
|
77
|
+
password: string
|
|
78
|
+
registryUrl: string
|
|
79
|
+
}
|
|
80
|
+
|
|
74
81
|
export class StackAPI {
|
|
75
82
|
private readonly accessToken: string
|
|
76
83
|
|
|
@@ -342,4 +349,47 @@ export class StackAPI {
|
|
|
342
349
|
|
|
343
350
|
return await response.json()
|
|
344
351
|
}
|
|
352
|
+
|
|
353
|
+
async getDockerCredentials (gameserverId: GameserverId): Promise<DockerCredentials> {
|
|
354
|
+
// Get environment info (for AWS region)
|
|
355
|
+
logger.debug('Get environment info')
|
|
356
|
+
const envInfo = await this.getEnvironmentDetails(gameserverId)
|
|
357
|
+
|
|
358
|
+
// Fetch AWS credentials from Metaplay cloud
|
|
359
|
+
logger.debug('Get AWS credentials from Metaplay')
|
|
360
|
+
const awsCredentials = await this.getAwsCredentials(gameserverId)
|
|
361
|
+
|
|
362
|
+
// Create ECR client with credentials
|
|
363
|
+
logger.debug('Create ECR client')
|
|
364
|
+
const client = new ECRClient({
|
|
365
|
+
credentials: {
|
|
366
|
+
accessKeyId: awsCredentials.AccessKeyId,
|
|
367
|
+
secretAccessKey: awsCredentials.SecretAccessKey,
|
|
368
|
+
sessionToken: awsCredentials.SessionToken
|
|
369
|
+
},
|
|
370
|
+
region: envInfo.deployment.aws_region
|
|
371
|
+
})
|
|
372
|
+
|
|
373
|
+
// Fetch the ECR docker authentication token
|
|
374
|
+
logger.debug('Fetch ECR login credentials from AWS')
|
|
375
|
+
const command = new GetAuthorizationTokenCommand({})
|
|
376
|
+
const response = await client.send(command)
|
|
377
|
+
if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken || !response.authorizationData[0].proxyEndpoint) {
|
|
378
|
+
throw new Error('Received an empty authorization token response for ECR repository')
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Parse username and password from the response (separated by a ':')
|
|
382
|
+
logger.debug('Parse ECR response')
|
|
383
|
+
const registryUrl = response.authorizationData[0].proxyEndpoint
|
|
384
|
+
const authorization64 = response.authorizationData[0].authorizationToken
|
|
385
|
+
const authorization = Buffer.from(authorization64, 'base64').toString()
|
|
386
|
+
const [username, password] = authorization.split(':')
|
|
387
|
+
logger.debug(`ECR: username=${username}, proxyEndpoint=${registryUrl}`)
|
|
388
|
+
|
|
389
|
+
return {
|
|
390
|
+
username,
|
|
391
|
+
password,
|
|
392
|
+
registryUrl
|
|
393
|
+
} satisfies DockerCredentials
|
|
394
|
+
}
|
|
345
395
|
}
|