@@ -45,6 +45,11 @@ export class KubeConfig {
45
45
*/
46
46
public 'currentContext' : string ;
47
47
48
+ /**
49
+ * Root directory for a config file driven config. Used for loading relative cert paths.
50
+ */
51
+ public 'rootDirectory' : string ;
52
+
48
53
public getContexts ( ) {
49
54
return this . contexts ;
50
55
}
@@ -97,6 +102,7 @@ export class KubeConfig {
97
102
}
98
103
99
104
public loadFromFile ( file : string ) {
105
+ this . rootDirectory = path . dirname ( file ) ;
100
106
this . loadFromString ( fs . readFileSync ( file , 'utf8' ) ) ;
101
107
}
102
108
@@ -255,15 +261,18 @@ export class KubeConfig {
255
261
if ( cluster != null && cluster . skipTLSVerify ) {
256
262
opts . rejectUnauthorized = false ;
257
263
}
258
- const ca = cluster != null ? bufferFromFileOrString ( cluster . caFile , cluster . caData ) : null ;
264
+ const ca =
265
+ cluster != null
266
+ ? bufferFromFileOrString ( this . rootDirectory , cluster . caFile , cluster . caData )
267
+ : null ;
259
268
if ( ca ) {
260
269
opts . ca = ca ;
261
270
}
262
- const cert = bufferFromFileOrString ( user . certFile , user . certData ) ;
271
+ const cert = bufferFromFileOrString ( this . rootDirectory , user . certFile , user . certData ) ;
263
272
if ( cert ) {
264
273
opts . cert = cert ;
265
274
}
266
- const key = bufferFromFileOrString ( user . keyFile , user . keyData ) ;
275
+ const key = bufferFromFileOrString ( this . rootDirectory , user . keyFile , user . keyData ) ;
267
276
if ( key ) {
268
277
opts . key = key ;
269
278
}
@@ -355,8 +364,11 @@ export class Config {
355
364
}
356
365
357
366
// This is public really only for testing.
358
- export function bufferFromFileOrString ( file ?: string , data ?: string ) : Buffer | null {
367
+ export function bufferFromFileOrString ( root ?: string , file ?: string , data ?: string ) : Buffer | null {
359
368
if ( file ) {
369
+ if ( ! path . isAbsolute ( file ) && root ) {
370
+ file = path . join ( root , file ) ;
371
+ }
360
372
return fs . readFileSync ( file ) ;
361
373
}
362
374
if ( data ) {
0 commit comments