This is an automated email from the ASF dual-hosted git repository.

tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git


The following commit(s) were added to refs/heads/main by this push:
     new 4e89c9b22d9 kie-issues#1925: Kubernetes requests not complying with 
the insecurelyDisableTlsCertificateValidation flag on KIE Sandbox (#3063)
4e89c9b22d9 is described below

commit 4e89c9b22d9597d03bacffb78e72be67fcdfba28
Author: Thiago Lugli <[email protected]>
AuthorDate: Wed Apr 16 13:29:05 2025 -0300

    kie-issues#1925: Kubernetes requests not complying with the 
insecurelyDisableTlsCertificateValidation flag on KIE Sandbox (#3063)
---
 .../k8s-yaml-to-apiserver-requests/dev/main.ts     |  1 +
 .../k8s-yaml-to-apiserver-requests/package.json    |  1 +
 .../src/k8sApiServerCalls.ts                       |  9 ++++++++
 .../src/k8sApiServerEndpointsByResourceKind.ts     | 25 ++++++++++++++++++----
 .../devDeployments/services/KubernetesService.ts   | 21 ++++++++++++++++--
 pnpm-lock.yaml                                     |  5 ++++-
 repo/graph.dot                                     |  4 +---
 repo/graph.json                                    | 12 +----------
 8 files changed, 57 insertions(+), 21 deletions(-)

diff --git a/packages/k8s-yaml-to-apiserver-requests/dev/main.ts 
b/packages/k8s-yaml-to-apiserver-requests/dev/main.ts
index 6b1167661b0..6bfc7b8d1dc 100644
--- a/packages/k8s-yaml-to-apiserver-requests/dev/main.ts
+++ b/packages/k8s-yaml-to-apiserver-requests/dev/main.ts
@@ -63,6 +63,7 @@ pnpm start https://api.to.my.openshift.cluster.com:6443 
my-project sha256~MGnPXM
   console.info("Start mapping API Server endpoints by Resource kinds...");
   const k8sApiServerEndpointsByResourceKind = await 
buildK8sApiServerEndpointsByResourceKind(
     args.k8sApiServerUrl,
+    false,
     args.k8sServiceAccountToken
   );
   console.info("Done.");
diff --git a/packages/k8s-yaml-to-apiserver-requests/package.json 
b/packages/k8s-yaml-to-apiserver-requests/package.json
index 84759ffecf1..b6e89c26083 100644
--- a/packages/k8s-yaml-to-apiserver-requests/package.json
+++ b/packages/k8s-yaml-to-apiserver-requests/package.json
@@ -30,6 +30,7 @@
     "@babel/core": "^7.16.0",
     "@babel/preset-env": "^7.16.0",
     "@babel/preset-react": "^7.16.0",
+    "@kie-tools/cors-proxy-api": "workspace:*",
     "@kie-tools/eslint": "workspace:*",
     "@kie-tools/root-env": "workspace:*",
     "@kie-tools/tsconfig": "workspace:*",
diff --git a/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerCalls.ts 
b/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerCalls.ts
index 6e658b7b4ea..b5d98066500 100644
--- a/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerCalls.ts
+++ b/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerCalls.ts
@@ -19,6 +19,7 @@
 
 import * as jsYaml from "js-yaml";
 import { K8sApiServerEndpointByResourceKind, K8sResourceYaml, 
consoleDebugMessage } from "./common";
+import { CorsProxyHeaderKeys } from "@kie-tools/cors-proxy-api";
 
 export async function callK8sApiServer(args: {
   k8sApiServerEndpointsByResourceKind: K8sApiServerEndpointByResourceKind;
@@ -26,6 +27,7 @@ export async function callK8sApiServer(args: {
   k8sApiServerUrl: string;
   k8sNamespace: string;
   k8sServiceAccountToken: string;
+  insecurelyDisableTlsCertificateValidation?: boolean;
 }) {
   const apiCalls = args.k8sResourceYamls.map((yamlDocument) => {
     const rawEndpoints = args.k8sApiServerEndpointsByResourceKind
@@ -66,6 +68,13 @@ export async function callK8sApiServer(args: {
         headers: {
           Authorization: `Bearer ${args.k8sServiceAccountToken}`,
           "Content-Type": "application/yaml",
+          ...(args.insecurelyDisableTlsCertificateValidation
+            ? {
+                
[CorsProxyHeaderKeys.INSECURELY_DISABLE_TLS_CERTIFICATE_VALIDATION]: Boolean(
+                  args.insecurelyDisableTlsCertificateValidation
+                ).toString(),
+              }
+            : {}),
         },
         method: "POST",
         body: jsYaml.dump(apiCall.yaml),
diff --git 
a/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerEndpointsByResourceKind.ts
 
b/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerEndpointsByResourceKind.ts
index e22b1199163..234c6f894b5 100644
--- 
a/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerEndpointsByResourceKind.ts
+++ 
b/packages/k8s-yaml-to-apiserver-requests/src/k8sApiServerEndpointsByResourceKind.ts
@@ -18,6 +18,7 @@
  */
 
 import { K8sApiServerEndpointByResourceKind, consoleDebugMessage } from 
"./common";
+import { CorsProxyHeaderKeys } from "@kie-tools/cors-proxy-api";
 
 type K8sApiResourceList = {
   resources: Array<{
@@ -32,10 +33,26 @@ type K8sApiGroups = {
   groups: Array<{ versions: { groupVersion: string } }>;
 };
 
-export async function 
buildK8sApiServerEndpointsByResourceKind(kubeApiServerUrl: string, token?: 
string) {
-  const fetchOpts = token // Optional, as local k8s won't require 
authentication...
-    ? { headers: { Authorization: `Bearer ${token}` } }
-    : {};
+export async function buildK8sApiServerEndpointsByResourceKind(
+  kubeApiServerUrl: string,
+  insecurelyDisableTlsCertificateValidation?: boolean,
+  token?: string
+) {
+  const fetchOpts =
+    token || insecurelyDisableTlsCertificateValidation // Optional, as local 
k8s won't require authentication...
+      ? {
+          headers: {
+            ...(token ? { Authorization: `Bearer ${token}` } : {}),
+            ...(insecurelyDisableTlsCertificateValidation
+              ? {
+                  
[CorsProxyHeaderKeys.INSECURELY_DISABLE_TLS_CERTIFICATE_VALIDATION]: Boolean(
+                    insecurelyDisableTlsCertificateValidation
+                  ).toString(),
+                }
+              : {}),
+          },
+        }
+      : {};
 
   // Resource kind --> API Group version --> URLs (global and namespaced)
   const map: K8sApiServerEndpointByResourceKind = new Map();
diff --git 
a/packages/online-editor/src/devDeployments/services/KubernetesService.ts 
b/packages/online-editor/src/devDeployments/services/KubernetesService.ts
index dce15a3ffeb..716e3ec1a90 100644
--- a/packages/online-editor/src/devDeployments/services/KubernetesService.ts
+++ b/packages/online-editor/src/devDeployments/services/KubernetesService.ts
@@ -31,6 +31,7 @@ import {
 import Path from "path";
 import { DeploymentState } from "./common";
 import { ResourceActions } from "./types";
+import { CorsProxyHeaderKeys } from "@kie-tools/cors-proxy-api";
 
 export interface KubernetesConnection {
   namespace: string;
@@ -185,7 +186,11 @@ export class KubernetesService {
     args: Omit<KubernetesServiceArgs, "k8sApiServerEndpointsByResourceKind">
   ) {
     const baseUrl = KubernetesService.getBaseUrl(args);
-    return await buildK8sApiServerEndpointsByResourceKind(baseUrl, 
args.connection.token);
+    return await buildK8sApiServerEndpointsByResourceKind(
+      baseUrl,
+      args.connection.insecurelyDisableTlsCertificateValidation,
+      args.connection.token
+    );
   }
 
   public static getBaseUrl(args: Omit<KubernetesServiceArgs, 
"k8sApiServerEndpointsByResourceKind">) {
@@ -194,8 +199,19 @@ export class KubernetesService {
 
   public async kubernetesFetch(path: string, init?: RequestInit): 
Promise<Response> {
     const url = new URL(Path.join(this.baseUrl, path));
+    const headers = {
+      Authorization: `Bearer ${this.args.connection.token}`,
+      ...(this.args.connection.insecurelyDisableTlsCertificateValidation
+        ? {
+            
[CorsProxyHeaderKeys.INSECURELY_DISABLE_TLS_CERTIFICATE_VALIDATION]: Boolean(
+              this.args.connection.insecurelyDisableTlsCertificateValidation
+            ).toString(),
+          }
+        : {}),
+      ...init?.headers,
+    };
     return await fetch(url, {
-      headers: { Authorization: `Bearer ${this.args.connection.token}`, 
...init?.headers },
+      headers,
       ...init,
     });
   }
@@ -235,6 +251,7 @@ export class KubernetesService {
       k8sApiServerUrl: this.args.connection.host,
       k8sNamespace: this.args.connection.namespace,
       k8sServiceAccountToken: this.args.connection.token,
+      insecurelyDisableTlsCertificateValidation: 
this.args.connection.insecurelyDisableTlsCertificateValidation,
     });
   }
 
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c08936ce399..f965bed5612 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6523,6 +6523,9 @@ importers:
       '@babel/preset-react':
         specifier: ^7.16.0
         version: 7.22.15(@babel/[email protected])
+      '@kie-tools/cors-proxy-api':
+        specifier: workspace:*
+        version: link:../cors-proxy-api
       '@kie-tools/eslint':
         specifier: workspace:*
         version: link:../eslint
@@ -57528,7 +57531,7 @@ snapshots:
       '@tsconfig/node14': 1.0.3
       '@tsconfig/node16': 1.0.3
       '@types/node': 22.10.7
-      acorn: 8.12.1
+      acorn: 8.10.0
       acorn-walk: 8.2.0
       arg: 4.1.0
       create-require: 1.1.1
diff --git a/repo/graph.dot b/repo/graph.dot
index 938067d671c..3a5ffe57add 100644
--- a/repo/graph.dot
+++ b/repo/graph.dot
@@ -445,9 +445,7 @@ digraph G {
   "@kie-tools/jest-base" -> "@kie-tools/root-env" [ style = "dashed", color = 
"blue" ];
   "@kie-tools/jobs-service-webapp" -> "@kie-tools-core/webpack-base" [ style = 
"dashed", color = "blue" ];
   "@kie-tools/json-yaml-language-service" -> "@kie-tools/yaml-language-server" 
[ style = "solid", color = "blue" ];
-  "@kie-tools-core/k8s-yaml-to-apiserver-requests" -> "@kie-tools/eslint" [ 
style = "dashed", color = "purple" ];
-  "@kie-tools-core/k8s-yaml-to-apiserver-requests" -> "@kie-tools/root-env" [ 
style = "dashed", color = "purple" ];
-  "@kie-tools-core/k8s-yaml-to-apiserver-requests" -> "@kie-tools/tsconfig" [ 
style = "dashed", color = "purple" ];
+  "@kie-tools-core/k8s-yaml-to-apiserver-requests" -> 
"@kie-tools/cors-proxy-api" [ style = "dashed", color = "purple" ];
   "@kie-tools-core/keyboard-shortcuts" -> "@kie-tools-core/envelope-bus" [ 
style = "solid", color = "purple" ];
   "@kie-tools-core/keyboard-shortcuts" -> "@kie-tools-core/operating-system" [ 
style = "solid", color = "purple" ];
   "@kie-tools/kie-bc-editors" -> "@kie-tools-core/editor" [ style = "solid", 
color = "blue" ];
diff --git a/repo/graph.json b/repo/graph.json
index 854d2edffbe..ecb034a1fa3 100644
--- a/repo/graph.json
+++ b/repo/graph.json
@@ -1835,17 +1835,7 @@
       },
       {
         "source": "@kie-tools-core/k8s-yaml-to-apiserver-requests",
-        "target": "@kie-tools/eslint",
-        "weight": 1
-      },
-      {
-        "source": "@kie-tools-core/k8s-yaml-to-apiserver-requests",
-        "target": "@kie-tools/root-env",
-        "weight": 1
-      },
-      {
-        "source": "@kie-tools-core/k8s-yaml-to-apiserver-requests",
-        "target": "@kie-tools/tsconfig",
+        "target": "@kie-tools/cors-proxy-api",
         "weight": 1
       },
       {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to