diff --git a/frontend/providers/applaunchpad/src/constants/editApp.ts b/frontend/providers/applaunchpad/src/constants/editApp.ts
index 48801cbfbfa..25c24670b68 100644
--- a/frontend/providers/applaunchpad/src/constants/editApp.ts
+++ b/frontend/providers/applaunchpad/src/constants/editApp.ts
@@ -38,7 +38,8 @@ export const defaultEditVal: AppEditType = {
protocol: 'HTTP',
openPublicDomain: false,
publicDomain: '',
- customDomain: ''
+ customDomain: '',
+ isLegacy: false
}
],
envs: [],
diff --git a/frontend/providers/applaunchpad/src/mock/apps.ts b/frontend/providers/applaunchpad/src/mock/apps.ts
index ae0b03fe78e..c8bc5fc5161 100644
--- a/frontend/providers/applaunchpad/src/mock/apps.ts
+++ b/frontend/providers/applaunchpad/src/mock/apps.ts
@@ -268,7 +268,8 @@ export const MOCK_APP_DETAIL: AppDetailType = {
protocol: 'HTTP',
openPublicDomain: false,
publicDomain: '',
- customDomain: ''
+ customDomain: '',
+ isLegacy: false
}
],
envs: [],
diff --git a/frontend/providers/applaunchpad/src/pages/api/platform/getInitData.ts b/frontend/providers/applaunchpad/src/pages/api/platform/getInitData.ts
index 9bdde7bf9b4..3c785a52706 100644
--- a/frontend/providers/applaunchpad/src/pages/api/platform/getInitData.ts
+++ b/frontend/providers/applaunchpad/src/pages/api/platform/getInitData.ts
@@ -15,12 +15,14 @@ export type Response = {
CURRENCY: Coin;
guideEnabled: boolean;
fileMangerConfig: FileMangerType;
+ SEALOS_USER_DOMAIN: string;
};
export const defaultAppConfig: AppConfigType = {
cloud: {
domain: 'cloud.sealos.io',
- port: ''
+ port: '',
+ userDomain: 'cloud.sealos.io'
},
common: {
guideEnabled: false,
@@ -76,7 +78,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
FORM_SLIDER_LIST_CONFIG: global.AppConfig.launchpad.appResourceFormSliderConfig,
guideEnabled: global.AppConfig.common.guideEnabled,
fileMangerConfig: global.AppConfig.launchpad.fileManger,
- CURRENCY: Coin.shellCoin
+ CURRENCY: Coin.shellCoin,
+ SEALOS_USER_DOMAIN: global.AppConfig.cloud.userDomain
}
});
} catch (error) {
diff --git a/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx b/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx
index 843871bc4b7..ed1d48f33d8 100644
--- a/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx
+++ b/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx
@@ -5,7 +5,7 @@ import { defaultSliderKey, ProtocolList } from '@/constants/app';
import { GpuAmountMarkList } from '@/constants/editApp';
import { useToast } from '@/hooks/useToast';
import { useGlobalStore } from '@/store/global';
-import { SEALOS_DOMAIN } from '@/store/static';
+import { SEALOS_DOMAIN, SEALOS_USER_DOMAIN } from '@/store/static';
import { useUserStore } from '@/store/user';
import type { QueryType } from '@/types';
import type { AppEditType } from '@/types/app';
@@ -801,7 +801,8 @@ const Form = ({
protocol: 'HTTP',
openPublicDomain: false,
publicDomain: '',
- customDomain: ''
+ customDomain: '',
+ isLegacy: false
})
}
>
@@ -866,7 +867,9 @@ const Form = ({
{network.customDomain
? network.customDomain
- : `${network.publicDomain}.${SEALOS_DOMAIN}`}
+ : `${network.publicDomain}.${
+ network.isLegacy ? SEALOS_DOMAIN : SEALOS_USER_DOMAIN
+ }`}
{
try {
const res = await getInitData();
SEALOS_DOMAIN = res.SEALOS_DOMAIN;
+ SEALOS_USER_DOMAIN = res.SEALOS_USER_DOMAIN;
DOMAIN_PORT = res.DOMAIN_PORT;
INGRESS_SECRET = res.INGRESS_SECRET;
SHOW_EVENT_ANALYZE = res.SHOW_EVENT_ANALYZE;
diff --git a/frontend/providers/applaunchpad/src/types/app.d.ts b/frontend/providers/applaunchpad/src/types/app.d.ts
index b8889331587..d2593e41051 100644
--- a/frontend/providers/applaunchpad/src/types/app.d.ts
+++ b/frontend/providers/applaunchpad/src/types/app.d.ts
@@ -78,6 +78,7 @@ export interface AppEditType {
openPublicDomain: boolean;
publicDomain: string; // default domain
customDomain: string; // custom domain
+ isLegacy: boolean;
}[];
envs: {
key: string;
diff --git a/frontend/providers/applaunchpad/src/types/index.d.ts b/frontend/providers/applaunchpad/src/types/index.d.ts
index 3f700cf0d14..18eb8761250 100644
--- a/frontend/providers/applaunchpad/src/types/index.d.ts
+++ b/frontend/providers/applaunchpad/src/types/index.d.ts
@@ -27,6 +27,7 @@ export type AppConfigType = {
cloud: {
domain: string;
port?: string;
+ userDomain: string;
};
common: {
guideEnabled: boolean;
diff --git a/frontend/providers/applaunchpad/src/utils/adapt.ts b/frontend/providers/applaunchpad/src/utils/adapt.ts
index bff96e334a9..54b1888bb12 100644
--- a/frontend/providers/applaunchpad/src/utils/adapt.ts
+++ b/frontend/providers/applaunchpad/src/utils/adapt.ts
@@ -219,7 +219,7 @@ export enum YamlKindEnum {
}
export const adaptAppDetail = async (configs: DeployKindsType[]): Promise => {
- const { SEALOS_DOMAIN } = await getInitData();
+ const { SEALOS_DOMAIN, SEALOS_USER_DOMAIN } = await getInitData();
const deployKindsMap: {
[YamlKindEnum.StatefulSet]?: V1StatefulSet;
[YamlKindEnum.Deployment]?: V1Deployment;
@@ -312,21 +312,22 @@ export const adaptAppDetail = async (configs: DeployKindsType[]): Promise {
return res as AppEditType;
};
-// yaml file adapt to edit form
-export const adaptYamlToEdit = (yamlList: string[]) => {
- const configs = yamlList.map((item) => yaml.loadAll(item) as DeployKindsType).flat();
-
- const deployKindsMap: {
- [YamlKindEnum.Deployment]?: V1Deployment;
- [YamlKindEnum.Service]?: V1Service;
- [YamlKindEnum.ConfigMap]?: V1ConfigMap;
- [YamlKindEnum.Ingress]?: V1Ingress;
- [YamlKindEnum.HorizontalPodAutoscaler]?: V2HorizontalPodAutoscaler;
- [YamlKindEnum.Secret]?: V1Secret;
- } = {};
-
- configs.forEach((item) => {
- if (item.kind) {
- // @ts-ignore
- deployKindsMap[item.kind] = item;
- }
- });
-
- const domain = deployKindsMap?.Ingress?.spec?.rules?.[0].host;
- const cpuStr =
- deployKindsMap?.Deployment?.spec?.template?.spec?.containers?.[0]?.resources?.requests?.cpu;
- const memoryStr =
- deployKindsMap?.Deployment?.spec?.template?.spec?.containers?.[0]?.resources?.requests?.memory;
-
- const res: Record = {
- imageName: deployKindsMap?.Deployment?.spec?.template?.spec?.containers?.[0]?.image,
- runCMD:
- deployKindsMap?.Deployment?.spec?.template?.spec?.containers?.[0]?.command?.join(' ') || '',
- cmdParam:
- deployKindsMap?.Deployment?.spec?.template?.spec?.containers?.[0]?.args?.join(' ') || '',
- replicas: deployKindsMap?.Deployment?.spec?.replicas,
- cpu: cpuStr ? cpuFormatToM(cpuStr) : undefined,
- memory: memoryStr ? memoryFormatToMi(memoryStr) : undefined,
- accessExternal: deployKindsMap?.Ingress
- ? {
- use: true,
- outDomain: domain?.split('.')[0],
- selfDomain: domain
- }
- : undefined,
- containerOutPort:
- deployKindsMap?.Deployment?.spec?.template?.spec?.containers?.[0]?.ports?.[0]?.containerPort,
- envs:
- deployKindsMap?.Deployment?.spec?.template?.spec?.containers?.[0]?.env?.map((env) => ({
- key: env.name,
- value: env.value
- })) || undefined,
- hpa: deployKindsMap.HorizontalPodAutoscaler?.spec
- ? {
- use: true,
- target:
- (deployKindsMap.HorizontalPodAutoscaler.spec.metrics?.[0]?.resource
- ?.name as HpaTarget) || 'cpu',
- value:
- deployKindsMap.HorizontalPodAutoscaler.spec.metrics?.[0]?.resource?.target
- ?.averageUtilization || 50,
- minReplicas: deployKindsMap.HorizontalPodAutoscaler.spec?.maxReplicas,
- maxReplicas: deployKindsMap.HorizontalPodAutoscaler.spec?.minReplicas
- }
- : undefined,
- configMapList: deployKindsMap?.ConfigMap?.data
- ? Object.entries(deployKindsMap?.ConfigMap.data).map(([key, value]) => ({
- mountPath: key,
- value
- }))
- : undefined,
- secret: deployKindsMap.Secret
- ? {
- ...defaultEditVal.secret,
- use: true
- }
- : undefined
- };
-
- for (const key in res) {
- if (res[key] === undefined) {
- delete res[key];
- }
- }
-
- return res;
-};
-
export const sliderNumber2MarkList = ({
val,
type,
diff --git a/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts b/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts
index d477717d8d2..3619dd41b6a 100644
--- a/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts
+++ b/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts
@@ -7,7 +7,7 @@ import {
minReplicasKey,
publicDomainKey
} from '@/constants/app';
-import { INGRESS_SECRET, SEALOS_DOMAIN } from '@/store/static';
+import { INGRESS_SECRET, SEALOS_DOMAIN, SEALOS_USER_DOMAIN } from '@/store/static';
import type { AppEditType } from '@/types/app';
import { pathFormat, pathToNameFormat, str2Num, strToBase64 } from '@/utils/tools';
import dayjs from 'dayjs';
@@ -270,9 +270,11 @@ export const json2Ingress = (data: AppEditType) => {
const result = data.networks
.filter((item) => item.openPublicDomain)
.map((network, i) => {
+ console.log(network, 'network');
+
const host = network.customDomain
? network.customDomain
- : `${network.publicDomain}.${SEALOS_DOMAIN}`;
+ : `${network.publicDomain}.${network.isLegacy ? SEALOS_DOMAIN : SEALOS_USER_DOMAIN}`;
const secretName = network.customDomain ? network.networkName : INGRESS_SECRET;