mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
more dependencies
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
dcd58a7cbc
commit
5176970438
@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { KubeAuthProxy, KubeAuthProxyDependencies } from "./kube-auth-proxy";
|
import { KubeAuthProxy, KubeAuthProxyDependencies } from "./kube-auth-proxy";
|
||||||
|
import { spawn } from "child_process";
|
||||||
import type { Cluster } from "../../common/cluster/cluster";
|
import type { Cluster } from "../../common/cluster/cluster";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { getBinaryName } from "../../common/vars";
|
import { getBinaryName } from "../../common/vars";
|
||||||
@ -18,6 +19,7 @@ const createKubeAuthProxyInjectable = getInjectable({
|
|||||||
const dependencies: KubeAuthProxyDependencies = {
|
const dependencies: KubeAuthProxyDependencies = {
|
||||||
proxyBinPath: path.join(di.inject(directoryForBundledBinariesInjectable), binaryName),
|
proxyBinPath: path.join(di.inject(directoryForBundledBinariesInjectable), binaryName),
|
||||||
proxyCertPath: di.inject(getKubeAuthProxyCertDirInjectable),
|
proxyCertPath: di.inject(getKubeAuthProxyCertDirInjectable),
|
||||||
|
spawn,
|
||||||
};
|
};
|
||||||
|
|
||||||
return (cluster: Cluster, environmentVariables: NodeJS.ProcessEnv) => (
|
return (cluster: Cluster, environmentVariables: NodeJS.ProcessEnv) => (
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
import { createKubeAuthProxyCertificateFiles, getKubeAuthProxyCertificatePath } from "./kube-auth-proxy-cert";
|
import { createKubeAuthProxyCertificateFiles, getKubeAuthProxyCertificatePath } from "./kube-auth-proxy-cert";
|
||||||
|
import * as selfsigned from "selfsigned";
|
||||||
|
|
||||||
const getKubeAuthProxyCertDirInjectable = getInjectable({
|
const getKubeAuthProxyCertDirInjectable = getInjectable({
|
||||||
id: "get-kube-auth-proxy-cert-dir",
|
id: "get-kube-auth-proxy-cert-dir",
|
||||||
@ -13,7 +14,7 @@ const getKubeAuthProxyCertDirInjectable = getInjectable({
|
|||||||
const userData = await di.inject(directoryForUserDataInjectable);
|
const userData = await di.inject(directoryForUserDataInjectable);
|
||||||
const certPath = getKubeAuthProxyCertificatePath(userData);
|
const certPath = getKubeAuthProxyCertificatePath(userData);
|
||||||
|
|
||||||
await createKubeAuthProxyCertificateFiles(certPath);
|
await createKubeAuthProxyCertificateFiles(certPath, selfsigned.generate);
|
||||||
},
|
},
|
||||||
|
|
||||||
instantiate: (di) => getKubeAuthProxyCertificatePath(di.inject(directoryForUserDataInjectable)),
|
instantiate: (di) => getKubeAuthProxyCertificatePath(di.inject(directoryForUserDataInjectable)),
|
||||||
|
|||||||
@ -5,15 +5,17 @@
|
|||||||
|
|
||||||
import { access, mkdir, writeFile } from "fs/promises";
|
import { access, mkdir, writeFile } from "fs/promises";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import * as selfsigned from "selfsigned";
|
import type * as selfsigned from "selfsigned";
|
||||||
|
|
||||||
export function getKubeAuthProxyCertificate(): selfsigned.SelfSignedCert {
|
type SelfSignedGenerate = typeof selfsigned.generate;
|
||||||
|
|
||||||
|
export function getKubeAuthProxyCertificate(generate: SelfSignedGenerate): selfsigned.SelfSignedCert {
|
||||||
const opts = [
|
const opts = [
|
||||||
{ name: "commonName", value: "Lens Certificate Authority" },
|
{ name: "commonName", value: "Lens Certificate Authority" },
|
||||||
{ name: "organizationName", value: "Lens" },
|
{ name: "organizationName", value: "Lens" },
|
||||||
];
|
];
|
||||||
|
|
||||||
return selfsigned.generate(opts, {
|
return generate(opts, {
|
||||||
keySize: 2048,
|
keySize: 2048,
|
||||||
algorithm: "sha256",
|
algorithm: "sha256",
|
||||||
days: 365,
|
days: 365,
|
||||||
@ -31,8 +33,8 @@ export function getKubeAuthProxyCertificatePath(baseDir: string) {
|
|||||||
return path.join(baseDir, "kube-auth-proxy");
|
return path.join(baseDir, "kube-auth-proxy");
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createKubeAuthProxyCertificateFiles(dir: string): Promise<string> {
|
export async function createKubeAuthProxyCertificateFiles(dir: string, generateFunc: SelfSignedGenerate): Promise<string> {
|
||||||
const cert = getKubeAuthProxyCertificate();
|
const cert = getKubeAuthProxyCertificate(generateFunc);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await access(dir);
|
await access(dir);
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ChildProcess, spawn } from "child_process";
|
import type { ChildProcess, spawn } from "child_process";
|
||||||
import { waitUntilUsed } from "tcp-port-used";
|
import { waitUntilUsed } from "tcp-port-used";
|
||||||
import { randomBytes } from "crypto";
|
import { randomBytes } from "crypto";
|
||||||
import type { Cluster } from "../../common/cluster/cluster";
|
import type { Cluster } from "../../common/cluster/cluster";
|
||||||
@ -16,6 +16,7 @@ const startingServeRegex = /starting to serve on (?<address>.+)/i;
|
|||||||
export interface KubeAuthProxyDependencies {
|
export interface KubeAuthProxyDependencies {
|
||||||
proxyBinPath: string;
|
proxyBinPath: string;
|
||||||
proxyCertPath: string;
|
proxyCertPath: string;
|
||||||
|
spawn: typeof spawn;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class KubeAuthProxy {
|
export class KubeAuthProxy {
|
||||||
@ -45,7 +46,7 @@ export class KubeAuthProxy {
|
|||||||
const proxyBin = this.dependencies.proxyBinPath;
|
const proxyBin = this.dependencies.proxyBinPath;
|
||||||
const certPath = await this.dependencies.proxyCertPath;
|
const certPath = await this.dependencies.proxyCertPath;
|
||||||
|
|
||||||
this.proxyProcess = spawn(proxyBin, [], {
|
this.proxyProcess = this.dependencies.spawn(proxyBin, [], {
|
||||||
env: {
|
env: {
|
||||||
...this.env,
|
...this.env,
|
||||||
KUBECONFIG: this.cluster.kubeConfigPath,
|
KUBECONFIG: this.cluster.kubeConfigPath,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user