mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-12 12:02:09 +08:00
Enhancement: support for Kubernetes gateway API (#4643)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> Co-authored-by: lyons <gittea.sand@gmail.com> Co-authored-by: Brett Dudo <brett@dudo.io>
This commit is contained in:
@@ -2,18 +2,21 @@ import path from "path";
|
||||
import { readFileSync } from "fs";
|
||||
|
||||
import yaml from "js-yaml";
|
||||
import { KubeConfig } from "@kubernetes/client-node";
|
||||
import { KubeConfig, ApiextensionsV1Api } from "@kubernetes/client-node";
|
||||
|
||||
import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config";
|
||||
|
||||
export default function getKubeConfig() {
|
||||
export function getKubernetes() {
|
||||
checkAndCopyConfig("kubernetes.yaml");
|
||||
|
||||
const configFile = path.join(CONF_DIR, "kubernetes.yaml");
|
||||
const rawConfigData = readFileSync(configFile, "utf8");
|
||||
const configData = substituteEnvironmentVars(rawConfigData);
|
||||
const config = yaml.load(configData);
|
||||
return yaml.load(configData);
|
||||
}
|
||||
|
||||
export const getKubeConfig = () => {
|
||||
const kc = new KubeConfig();
|
||||
const config = getKubernetes();
|
||||
|
||||
switch (config?.mode) {
|
||||
case "cluster":
|
||||
@@ -28,4 +31,31 @@ export default function getKubeConfig() {
|
||||
}
|
||||
|
||||
return kc;
|
||||
};
|
||||
|
||||
export async function checkCRD(name, kc, logger) {
|
||||
const apiExtensions = kc.makeApiClient(ApiextensionsV1Api);
|
||||
const exist = await apiExtensions
|
||||
.readCustomResourceDefinitionStatus({
|
||||
name,
|
||||
})
|
||||
.then(() => true)
|
||||
.catch(async (error) => {
|
||||
if (error.statusCode === 403) {
|
||||
logger.error(
|
||||
"Error checking if CRD %s exists. Make sure to add the following permission to your RBAC: %d %s %s",
|
||||
name,
|
||||
error.statusCode,
|
||||
error.body.message,
|
||||
);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
return exist;
|
||||
}
|
||||
|
||||
export const ANNOTATION_BASE = "gethomepage.dev";
|
||||
export const ANNOTATION_WIDGET_BASE = `${ANNOTATION_BASE}/widget.`;
|
||||
export const HTTPROUTE_API_GROUP = "gateway.networking.k8s.io";
|
||||
export const HTTPROUTE_API_VERSION = "v1";
|
||||
|
||||
Reference in New Issue
Block a user