use @kubernetes/client-node to generate default config (#51)

This commit is contained in:
Sigurd Fosseng
2022-06-22 16:58:10 +02:00
committed by GitHub
parent b19619f34c
commit e972a5b196
4 changed files with 2248 additions and 9338 deletions

11424
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -18,16 +18,16 @@
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.0",
"@actions/tool-cache": "^1.0.0",
"@actions/io": "^1.1.2",
"@kubernetes/client-node": "^0.16.0",
"js-yaml": "^3.13.1"
"js-yaml": "^4.1.0"
},
"devDependencies": {
"@types/jest": "^25.2.2",
"@types/jest": "^28.1.2",
"@types/js-yaml": "^4.0.4",
"@types/node": "^12.0.4",
"jest": "^26.6.3",
"ts-jest": "^25.5.1",
"typescript": "3.9.2"
"@types/node": "^16.0.0",
"jest": "^28.1.1",
"ts-jest": "^28.0.5",
"typescript": "4.7.4"
}
}

View File

@ -14,19 +14,27 @@ describe("Default kubeconfig", () => {
kind: "Config",
clusters: [
{
name: "default",
cluster: {
"certificate-authority-data": certAuth,
server: clusterUrl,
"certificate-authority-data": certAuth,
"insecure-skip-tls-verify": false,
},
},
],
users: [
users: [{ name: "default-user", user: { token } }],
contexts: [
{
user: {
token: token,
name: "loaded-context",
context: {
cluster: "default",
user: "default-user",
name: "loaded-context",
},
},
],
preferences: {},
"current-context": "loaded-context",
});
expect(kc).toBe(expected);
@ -108,20 +116,34 @@ describe("Default kubeconfig", () => {
kind: "Config",
clusters: [
{
name: "default",
cluster: {
"certificate-authority-data": cert,
server: k8sUrl,
"certificate-authority-data": cert,
"insecure-skip-tls-verify": false,
},
},
],
users: [
{
user: {
token: Buffer.from(token, "base64").toString(),
name: "default-user",
user: { token: Buffer.from(token, "base64").toString() },
},
],
contexts: [
{
name: "loaded-context",
context: {
cluster: "default",
user: "default-user",
name: "loaded-context",
},
},
],
preferences: {},
"current-context": "loaded-context",
});
expect(getDefaultKubeconfig()).toBe(expectedConfig);
});
});

View File

@ -1,5 +1,6 @@
import * as core from "@actions/core";
import * as jsyaml from "js-yaml";
import { KubeConfig } from "@kubernetes/client-node";
import { K8sSecret, parseK8sSecret } from "../types/k8sSecret";
import { Method, parseMethod } from "../types/method";
@ -58,25 +59,18 @@ export function createKubeconfig(
token: string,
clusterUrl: string
): string {
const kubeconfig = {
apiVersion: "v1",
kind: "Config",
clusters: [
const kc = new KubeConfig();
kc.loadFromClusterAndUser(
{
cluster: {
"certificate-authority-data": certAuth,
name: "default",
server: clusterUrl,
caData: certAuth,
skipTLSVerify: false,
},
},
],
users: [
{
user: {
token: token,
},
},
],
};
return JSON.stringify(kubeconfig);
name: "default-user",
token,
}
);
return kc.exportConfig();
}