fix(k8s): Deployment 存储挂载六种卷类型 YAML 双向映射
- 抽取 deployment-volume-utils,修正 PVC/NFS/CM/Secret/HostPath/EmptyDir 读写 - 保存时保留系统卷与 serviceAccount 挂载,合并用户卷与挂载点 - 挂载支持 subPath;ConfigMap/Secret items 支持 key:path 简写
This commit is contained in:
1 parent
5fad2db0c6
commit
a8305de0f5
98 files changed
+453
-250
No files matched your search
@@ -0,0 +1,20 @@
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PodFileBrowser-BPio7wxi.js","assets/vendor-codemirror-C7mXSpXt.js","assets/index-EF2TDvxx.js","assets/vendor-icons-Aso0-eeY.js","assets/index-7YeEJX-w.css","assets/use-toast-CkA38LVP.js","assets/index-CYw3SC6I.js","assets/select-DbRZUnPK.js","assets/index-CYARH0Cq.js","assets/vendor-xterm-20M9KZE1.js","assets/vendor-xterm-DXOU9pbP.css","assets/badge-BodqHT_V.js"])))=>i.map(i=>d[i]);
|
||||
import{j as e,r as p}from"./vendor-codemirror-C7mXSpXt.js";import{B as u,f as st,o as kt,i as Qt,a8 as Ns,g as fs}from"./index-EF2TDvxx.js";import{C as F,a as q,b as me,c as xe}from"./card-BVNSlZ0C.js";import{B as te}from"./badge-BodqHT_V.js";import{k as de}from"./index-CYw3SC6I.js";import{u as Te}from"./use-toast-CkA38LVP.js";import{S as Ce,g as Ss,f as Ve,h as Es,s as pt,e as Cs,d as Ot,Y as Lt,P as Ds,a as ws}from"./PodFileBrowser-BPio7wxi.js";import{I as y}from"./input--Xdj49es.js";import{Q as Zt,f as es,F as gt,r as ts,H as ss,L as be,N as Ae,E as Ps,A as ns,b as os,n as As,k as nt,P as ne,aq as Ts,s as jt,b8 as Hs,aN as as,b9 as mt,T as ue,$ as ot,g as Ms,ba as Bs,a4 as rs,j as cs,am as Rs,aK as ls,bb as Is,z as ds,D as Ze,b2 as Os,h as Nt,aM as Ls,aL as xt,G as _s,M as zs,R as at,p as bt,y as yt,d as _t,J as ht,X as is,l as ps,a as $s,m as Ws,aD as zt,bc as Gs,ar as Vs}from"./vendor-icons-Aso0-eeY.js";import{T as Ie,a as Oe,b as Ne,c as X,d as Le,e as Q}from"./table-CUnn2-lp.js";import{L as M}from"./label-DZckFZd3.js";import{T as et}from"./textarea-JgdELMPr.js";import{S as $e,a as We,b as tt,c as Ge,d as ke}from"./select-DbRZUnPK.js";import{S as ft}from"./switch-DYISEUSP.js";import{R as Fs}from"./ResourceVisualEditor-BXksS6e2.js";import"./vendor-xterm-20M9KZE1.js";import"./index-CYARH0Cq.js";function ms(t){const n=t.conditions||t.pod_conditions||[],o=s=>n.find(c=>(c.type||c.Type)===s),a=s=>s?.lastTransitionTime||s?.LastTransitionTime||s?.last_transition_time;return{scheduled:a(o("PodScheduled")||{}),initialized:a(o("Initialized")||{}),containersReady:a(o("ContainersReady")||{}),ready:a(o("Ready")||{}),startTime:t.start_time||t.startTime}}function Be({label:t,value:n}){return e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:25:5",children:[e.jsx("p",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:26:7",className:"text-xs text-[var(--dg-text-muted)] mb-1",children:t}),e.jsx("div",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:27:7",className:"text-sm text-[var(--dg-text-primary)]",children:n})]})}function xs({pod:t}){const n=ms(t),o=[{label:"已调度",ts:n.scheduled,color:Ce.blue},{label:"已初始化",ts:n.initialized,color:Ce.orange},{label:"容器已就绪",ts:n.containersReady,color:Ce.green},{label:"容器组已就绪",ts:n.ready,color:Ce.green}];return e.jsx("div",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:42:5",className:"flex items-center gap-2 overflow-x-auto",children:o.map((a,s)=>{const c=o[s-1],d=Ss(c?.ts,a.ts);return e.jsxs(p.Fragment,{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:47:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:48:13",className:"flex flex-col items-center min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:49:15",className:"h-2 w-2 rounded-full",style:{background:a.ts?a.color:"#334155"}}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:50:15",className:"text-[10px] mt-1 font-medium",style:{color:a.ts?a.color:"#475569"},children:a.label}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:51:15",className:"text-[9px] text-[var(--dg-text-muted)]",children:a.ts?Ve(a.ts):"-"})]}),s<o.length-1&&e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:54:15",className:"flex flex-col items-center mx-0.5 min-w-[30px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:55:17",className:"h-0.5 w-8 bg-[var(--dg-border)]"}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-view/helpers.tsx:56:17",className:"text-[9px] text-[var(--dg-text-muted)] mt-0.5",children:d!=null?Es(d):""})]})]},a.label)})})}function qs({clusterCode:t,pods:n,onShowPodLogs:o,onShowPodTerminal:a,onShowPodFileBrowser:s,expandedPod:c,setExpandedPod:d}){return n.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/deployment-view/PodsTab.tsx:17:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无容器组"}):e.jsx("div",{"code-path":"src/components/kubernetes/deployment-view/PodsTab.tsx:20:5",className:"space-y-2",children:n.map(i=>{const D=ms(i),l=c===i.name,v=i.node_name||i.node;return e.jsx(F,{"code-path":"src/components/kubernetes/deployment-view/PodsTab.tsx:26:11",className:"dg-card",children:e.jsxs(q,{"code-path":"src/components/kubernetes/deployment-view/PodsTab.tsx:27:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-view/PodsTab.tsx:29:15",className:"flex items-center gap-3",children:[e.jsx(u,{"code-path":"src/components/kubernetes/deployment-view/PodsTab.tsx:30:17",variant:"ghost",size:"icon",className:"h-6 w-6 text-[var(--dg-text-muted)]",onClick:()=>d(l?null:i.name),children:l?e.jsx(Zt,{"code-path":"src/components/kubernetes/deployment-view/PodsTab.tsx:31:31",className:Line truncated
|
||||
`):s.exec?.command||"",initialDelaySeconds:s.initialDelaySeconds,periodSeconds:s.periodSeconds,timeoutSeconds:s.timeoutSeconds,successThreshold:s.successThreshold,failureThreshold:s.failureThreshold}},o=s=>{if(!s)return{type:"none"};let c="none";return s.exec?c="exec":s.httpGet?c="httpGet":s.tcpSocket&&(c="tcpSocket"),{type:c,execCommand:Array.isArray(s.exec?.command)?s.exec.command.join(`
|
||||
`):"",httpPath:s.httpGet?.path||"",httpPort:s.httpGet?.port??"",tcpPort:s.tcpSocket?.port??""}},a=t.securityContext;return{name:t.name||"",image:t.image||"",imagePullPolicy:t.imagePullPolicy||"",command:Array.isArray(t.command)?t.command:[],args:Array.isArray(t.args)?t.args:[],workingDir:t.workingDir||"",env:(Array.isArray(t.env)?t.env:[]).map(s=>({name:s.name||"",value:s.value??""})),ports:(Array.isArray(t.ports)?t.ports:[]).map(s=>({name:s.name||"",containerPort:s.containerPort??"",protocol:s.protocol||"TCP"})),resources:{requests:t.resources?.requests||{},limits:t.resources?.limits||{}},livenessProbe:n(t.livenessProbe),readinessProbe:n(t.readinessProbe),startupProbe:n(t.startupProbe),lifecycle:t.lifecycle?{postStart:t.lifecycle.postStart?o(t.lifecycle.postStart):void 0,preStop:t.lifecycle.preStop?o(t.lifecycle.preStop):void 0}:null,securityContext:a?{runAsUser:a.runAsUser,runAsGroup:a.runAsGroup,runAsNonRoot:a.runAsNonRoot,privileged:a.privileged,readOnlyRootFilesystem:a.readOnlyRootFilesystem,allowPrivilegeEscalation:a.allowPrivilegeEscalation,capabilitiesAdd:a.capabilities?.add||[],capabilitiesDrop:a.capabilities?.drop||[]}:null,volumeMounts:(Array.isArray(t.volumeMounts)?t.volumeMounts:[]).map(s=>({name:s.name||"",mountPath:s.mountPath||"",subPath:s.subPath||"",readOnly:s.readOnly||!1}))}}function Wt(t=""){return{name:t,image:"",imagePullPolicy:"IfNotPresent",command:[],args:[],workingDir:"",env:[],ports:[],resources:{},livenessProbe:null,readinessProbe:null,startupProbe:null,lifecycle:null,securityContext:null,volumeMounts:[]}}function ut(t){if(!t||t.type==="none"||!t.type)return;const n={};if(t.type==="httpGet")n.httpGet={},t.httpPath&&(n.httpGet.path=t.httpPath),t.httpPort!==""&&t.httpPort!=null&&(n.httpGet.port=typeof t.httpPort=="number"?t.httpPort:Number(t.httpPort)),t.httpHost&&(n.httpGet.host=t.httpHost);else if(t.type==="tcpSocket")n.tcpSocket={},t.tcpPort!==""&&t.tcpPort!=null&&(n.tcpSocket.port=typeof t.tcpPort=="number"?t.tcpPort:Number(t.tcpPort));else if(t.type==="exec"){const o=(t.execCommand||"").split(`
|
||||
`).map(a=>a.trim()).filter(Boolean);o.length&&(n.exec={command:o})}return t.initialDelaySeconds!=null&&(n.initialDelaySeconds=t.initialDelaySeconds),t.periodSeconds!=null&&(n.periodSeconds=t.periodSeconds),t.timeoutSeconds!=null&&(n.timeoutSeconds=t.timeoutSeconds),t.successThreshold!=null&&(n.successThreshold=t.successThreshold),t.failureThreshold!=null&&(n.failureThreshold=t.failureThreshold),Object.keys(n).length>0?n:void 0}function Gt(t){if(!(!t||t.type==="none"||!t.type)){if(t.type==="exec"){const n=(t.execCommand||"").split(`
|
||||
`).map(o=>o.trim()).filter(Boolean);return n.length?{exec:{command:n}}:void 0}if(t.type==="httpGet"){const n={httpGet:{}};return t.httpPath&&(n.httpGet.path=t.httpPath),t.httpPort!==""&&t.httpPort!=null&&(n.httpGet.port=Number(t.httpPort)),n}if(t.type==="tcpSocket"){const n={tcpSocket:{}};return t.tcpPort!==""&&t.tcpPort!=null&&(n.tcpSocket.port=Number(t.tcpPort)),n}}}function Vt(t){const n={name:t.name};t.image&&(n.image=t.image),t.imagePullPolicy&&(n.imagePullPolicy=t.imagePullPolicy),t.workingDir&&(n.workingDir=t.workingDir),t.command.length>0&&(n.command=t.command),t.args.length>0&&(n.args=t.args),t.env.length>0&&(n.env=t.env.filter(l=>l.name.trim()).map(l=>{const v={name:l.name};return l.value!=null&&(v.value=l.value),v})),t.ports.length>0&&(n.ports=t.ports.filter(l=>l.containerPort!=="").map(l=>{const v={containerPort:typeof l.containerPort=="number"?l.containerPort:Number(l.containerPort)};return l.name&&(v.name=l.name),l.protocol&&(v.protocol=l.protocol),v}));const o=t.resources.requests,a=t.resources.limits,s=o&&Object.values(o).some(l=>l&&l.trim()),c=a&&Object.values(a).some(l=>l&&l.trim());(s||c)&&(n.resources={},s&&(n.resources.requests={},o.cpu?.trim()&&(n.resources.requests.cpu=o.cpu),o.memory?.trim()&&(n.resources.requests.memory=o.memory)),c&&(n.resources.limits={},a.cpu?.trim()&&(n.resources.limits.cpu=a.cpu),a.memory?.trim()&&(n.resources.limits.memory=a.memory)));const d=ut(t.livenessProbe);d&&(n.livenessProbe=d);const i=ut(t.readinessProbe);i&&(n.readinessProbe=i);const D=ut(t.startupProbe);if(D&&(n.startupProbe=D),t.lifecycle){const l={},v=Gt(t.lifecycle.postStart);v&&(l.postStart=v);const j=Gt(t.lifecycle.preStop);j&&(l.preStop=j),Object.keys(l).length>0&&(n.lifecycle=l)}if(t.securityContext){const l=t.securityContext,v={};l.runAsUser!==""&&l.runAsUser!=null&&(v.runAsUser=Number(l.runAsUser)),l.runAsGroup!==""&&l.runAsGroup!=null&&(v.runAsGroup=Number(l.runAsGroup)),l.runAsNonRoot!=null&&(v.runAsNonRoot=l.runAsNonRoot),l.privileged!=null&&(v.privileged=l.privileged),l.readOnlyRootFilesystem!=null&&(v.readOnlyRootFilesystem=l.readOnlyRootFilesystem),l.allowPrivilegeEscalation!=null&&(v.allowPrivilegeEscalation=l.allowPrivilegeEscalation);const j=(l.capabilitiesAdd||[]).filter(Boolean),T=(l.capabilitiesDrop||[]).filter(Boolean);(j.length||T.length)&&(v.capabilities={},j.length&&(v.capabilities.add=j),T.length&&(v.capabilities.drop=T)),Object.keys(v).length>0&&(n.securityContext=v)}return t.volumeMounts.length>0&&(n.volumeMounts=t.volumeMounts.filter(l=>l.name.trim()&&l.mountPath.trim()).map(l=>{const v={name:l.name,mountPath:l.mountPath};return l.subPath&&(v.subPath=l.subPath),l.readOnly&&(v.readOnly=!0),v})),n}function Ft(t){return t.join(`
|
||||
`)}function qt(t){return t.split(`
|
||||
`).map(n=>n.trim()).filter(Boolean)}function Zs({container:t,onUpdate:n}){const o=t,a="flex items-center gap-1.5 text-xs font-semibold text-slate-300 mb-2";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:36:7",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:37:9",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:38:11",className:"text-slate-400 text-xs",children:"容器名称"}),e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:39:11",value:o.name,onChange:s=>n({name:s.target.value}),placeholder:"my-app",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:43:9",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:44:11",className:"text-slate-400 text-xs",children:"容器镜像"}),e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:45:11",value:o.image,onChange:s=>n({image:s.target.value}),placeholder:"nginx:1.25",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:49:9",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:50:11",className:"text-slate-400 text-xs",children:"镜像拉取策略"}),e.jsxs($e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:51:11",value:o.imagePullPolicy||"__none",onValueChange:s=>n({imagePullPolicy:s==="__none"?"":s}),children:[e.jsx(We,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:52:13",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 text-xs h-8",children:e.jsx(tt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:53:15"})}),e.jsxs(Ge,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:55:13",className:"bg-slate-900 border-slate-700",children:[e.jsx(ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:56:15",value:"__none",className:"text-slate-400",children:"不设置(默认 IfNotPresent)"}),e.jsx(ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:57:15",value:"Always",className:"text-slate-200",children:"Always"}),e.jsx(ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:58:15",value:"IfNotPresent",className:"text-slate-200",children:"IfNotPresent"}),e.jsx(ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:59:15",value:"Never",className:"text-slate-200",children:"Never"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:63:9",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:64:11",className:"text-slate-400 text-xs",children:"工作目录 (workingDir)"}),e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:65:11",value:o.workingDir||"",onChange:s=>n({workingDir:s.target.value}),placeholder:"/app",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:72:7",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:73:9",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:74:11",className:"text-slate-400 text-xs",children:"启动命令 (command) — 每行一个"}),e.jsx(et,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:75:11",value:Ft(o.command),placeholder:`/bin/sh
|
||||
-c`,onChange:s=>n({command:qt(s.target.value)}),className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs min-h-[60px]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:79:9",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:80:11",className:"text-slate-400 text-xs",children:"启动参数 (args) — 每行一个"}),e.jsx(et,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:81:11",value:Ft(o.args),placeholder:`--config=/etc/app.yaml
|
||||
--debug`,onChange:s=>n({args:qt(s.target.value)}),className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs min-h-[60px]"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:88:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:89:9",className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:90:11",className:a,children:[e.jsx(ts,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:90:39",className:"h-3.5 w-3.5 text-cyan-400"})," 环境变量"]}),e.jsxs(u,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:91:11",size:"sm",variant:"outline",className:"h-6 border-slate-700 text-slate-300 text-[11px]",onClick:()=>n({env:[...o.env,{name:"",value:""}]}),children:[e.jsx(ne,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:93:13",className:"h-3 w-3 mr-1"}),"新增"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:96:9",className:"space-y-1.5",children:[o.env.map((s,c)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:98:13",className:"grid grid-cols-[1fr_1.4fr_auto] gap-2",children:[e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:99:15",value:s.name,placeholder:"KEY",onChange:d=>{const i=[...o.env];i[c]={...s,name:d.target.value},n({env:i})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:102:15",value:s.value||"",placeholder:"value",onChange:d=>{const i=[...o.env];i[c]={...s,value:d.target.value},n({env:i})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(u,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:105:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400",onClick:()=>n({env:o.env.filter((d,i)=>i!==c)}),children:e.jsx(ue,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:107:17",className:"h-3.5 w-3.5"})})]},c)),o.env.length===0&&e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:111:34",className:"text-[11px] text-slate-600",children:"无环境变量"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:116:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:117:9",className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:118:11",className:a,children:[e.jsx(Ae,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:118:39",className:"h-3.5 w-3.5 text-indigo-400"})," 端口"]}),e.jsxs(u,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:119:11",size:"sm",variant:"outline",className:"h-6 border-slate-700 text-slate-300 text-[11px]",onClick:()=>n({ports:[...o.ports,{name:"",containerPort:"",protocol:"TCP"}]}),children:[e.jsx(ne,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:121:13",className:"h-3 w-3 mr-1"}),"新增"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:124:9",className:"space-y-1.5",children:[o.ports.map((s,c)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:126:13",className:"grid grid-cols-[1fr_1fr_100px_auto] gap-2",children:[e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:127:15",value:s.name||"",placeholder:"http",onChange:d=>{const i=[...o.ports];i[c]={...s,name:d.target.value},n({ports:i})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:130:15",type:"number",value:s.containerPort,placeholder:"8080",onChange:d=>{const i=[...o.ports];i[c]={...s,containerPort:d.target.value},n({ports:i})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsxs($e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:133:15",value:s.protocol||"TCP",onValueChange:d=>{const i=[...o.ports];i[c]={...s,protocol:d},n({ports:i})},children:[e.jsx(We,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:134:17",className:"bg-slate-800 border-slate-700 text-slate-200 text-xs h-8",children:e.jsx(tt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:135:19"})}),e.jsxs(Ge,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:137:17",className:"bg-slate-900 border-slate-700",children:[e.jsx(ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.ts
Line truncated
|
||||
114.114.114.114`,rows:3,className:"w-full mt-1 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 font-mono p-2 resize-y"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:74:13",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:75:15",className:"text-slate-500 text-xs",children:"searches(搜索域,每行一个)"}),e.jsx("textarea",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:76:15",value:o,onChange:w=>a(w.target.value),placeholder:`svc.cluster.local
|
||||
cluster.local`,rows:3,className:"w-full mt-1 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 font-mono p-2 resize-y"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:85:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:86:13",className:"flex items-center justify-between mb-1",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:87:15",className:"text-slate-400 text-xs",children:"options(DNS 选项)"}),e.jsxs(u,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:88:15",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400",onClick:D,children:[e.jsx(ne,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:89:17",className:"h-3 w-3 mr-1"}),"添加"]})]}),s.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:93:15",className:"text-xs text-slate-600 italic",children:"未配置"}):s.map((w,E)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:96:17",className:"flex items-center gap-2 mb-1.5",children:[e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:97:19",value:w.name,onChange:C=>l(E,{name:C.target.value}),placeholder:"ndots",className:"flex-1 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:103:19",className:"text-slate-600",children:":"}),e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:104:19",value:w.value,onChange:C=>l(E,{value:C.target.value}),placeholder:"5(可留空)",className:"flex-1 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(u,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:110:19",size:"icon",variant:"ghost",className:"h-6 w-6 text-red-400",onClick:()=>v(E),children:e.jsx(ue,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:111:21",className:"h-3 w-3"})})]},E))]})]})]}),e.jsxs(F,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:120:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(me,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:121:9",className:"pb-3",children:e.jsxs(xe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:122:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(zs,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:123:13",className:"h-4 w-4 text-amber-400"}),"主机别名 (hostAliases)"]})}),e.jsxs(q,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:126:9",className:"pt-0 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:127:11",className:"flex items-center justify-between mb-1",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:128:13",className:"text-slate-400 text-xs",children:"IP → 主机名映射(注入 Pod 的 /etc/hosts)"}),e.jsxs(u,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:129:13",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400",onClick:j,children:[e.jsx(ne,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:130:15",className:"h-3 w-3 mr-1"}),"添加"]})]}),d.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:134:13",className:"text-xs text-slate-600 italic",children:"未配置"}):d.map((w,E)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:137:15",className:"flex items-center gap-2",children:[e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:138:17",value:w.ip,onChange:C=>T(E,{ip:C.target.value}),placeholder:"10.10.10.72",className:"w-40 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:144:17",className:"text-slate-600",children:"→"}),e.jsx(y,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:145:17",value:w.hostnames,onChange:C=>T(E,{hostnames:C.target.value}),placeholder:"gitlab.local, registry.local",className:"flex-1 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(u,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:151:17",size:"icon",variant:"ghost",className:"h-6 w-6 text-red-400",onClick:()=>b(E),children:e.jsx(ue,{"code-path":"src/compone
Line truncated
|
||||
`):""),Ht(Array.isArray(re.searches)?re.searches.join(`
|
||||
`):"");const dt=Array.isArray(re.options)?re.options:[];Bt(dt.map(pe=>({name:pe.name||"",value:pe.value||""}))),v(!1)},[a]);const bs=()=>U(N=>[...N,{key:"",value:""}]),ys=N=>U(A=>A.filter((V,ae)=>ae!==N)),vs=(N,A)=>U(V=>V.map((ae,le)=>le===N?{...ae,...A}:ae)),ks=async()=>{D(!0);try{const N=JSON.parse(JSON.stringify(j));N.spec=N.spec||{},N.spec.template=N.spec.template||{},N.spec.template.spec=N.spec.template.spec||{};const A=N.spec.template.spec;if(N.spec.strategy={type:b},b==="RollingUpdate"&&(N.spec.strategy.rollingUpdate={maxSurge:E,maxUnavailable:z}),se&&(N.spec.revisionHistoryLimit=Number(se)),oe&&(N.spec.progressDeadlineSeconds=Number(oe)),O==="nodeName"&&ee.trim())A.nodeName=ee.trim(),delete A.nodeSelector,A.affinity&&delete A.affinity.nodeAffinity;else if(O==="nodeSelector"){const $={};for(const{key:re,value:dt}of B){const pe=re.trim();pe&&($[pe]=dt)}Object.keys($).length>0?A.nodeSelector=$:delete A.nodeSelector,A.nodeName&&delete A.nodeName,A.affinity&&delete A.affinity.nodeAffinity}else if(O==="nodeAffinity"){const $=B.filter(re=>re.key.trim()).map(re=>({key:re.key.trim(),operator:"In",values:[re.value]}));$.length>0?(A.affinity=A.affinity||{},A.affinity.nodeAffinity={requiredDuringSchedulingIgnoredDuringExecution:{nodeSelectorTerms:[{matchExpressions:$}]}}):A.affinity&&delete A.affinity.nodeAffinity,delete A.nodeSelector,A.nodeName&&delete A.nodeName}const V=m.filter($=>$.key||$.operator==="Exists").map($=>{const re={};return $.key&&(re.key=$.key),$.operator&&(re.operator=$.operator),$.value&&$.operator!=="Exists"&&(re.value=$.value),$.effect&&(re.effect=$.effect),$.tolerationSeconds&&$.effect==="NoExecute"&&(re.tolerationSeconds=Number($.tolerationSeconds)),re});V.length>0?A.tolerations=V:delete A.tolerations,r&&(A.dnsPolicy=r),S&&(A.restartPolicy=S),R&&(A.schedulerName=R),ie&&(A.terminationGracePeriodSeconds=Number(ie)),he&&(A.serviceAccountName=he);const ae={};ce&&(ae.fsGroup=Number(ce)),Se&&(ae.runAsUser=Number(Se)),ye&&(ae.runAsGroup=Number(ye)),je&&(ae.runAsNonRoot=!0),Object.keys(ae).length>0?A.securityContext=ae:delete A.securityContext,ct?A.hostNetwork=!0:delete A.hostNetwork,lt?A.hostIPC=!0:delete A.hostIPC,Pe?A.hostPID=!0:delete A.hostPID,Et?A.shareProcessNamespace=!0:delete A.shareProcessNamespace;const le=Dt.filter($=>$.ip.trim()).map($=>({ip:$.ip.trim(),hostnames:$.hostnames.split(/[,\s]+/).map(re=>re.trim()).filter(Boolean)})).filter($=>$.hostnames.length>0);le.length>0?A.hostAliases=le:delete A.hostAliases;const ve={},_e=Pt.split(`
|
||||
`).map($=>$.trim()).filter(Boolean);_e.length>0&&(ve.nameservers=_e);const Ue=Tt.split(`
|
||||
`).map($=>$.trim()).filter(Boolean);Ue.length>0&&(ve.searches=Ue);const Ee=Mt.filter($=>$.name.trim()).map($=>{const re={name:$.name.trim()};return $.value.trim()&&(re.value=$.value.trim()),re});Ee.length>0&&(ve.options=Ee),Object.keys(ve).length>0?A.dnsConfig=ve:delete A.dnsConfig,await rt(t,n,o,N),d({title:"高级设置已保存",description:`${o} 更新已提交`}),s(N)}catch(N){d({title:"保存失败",description:N?.message||String(N),variant:"destructive"})}finally{D(!1)}};return l?e.jsx(F,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:322:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(q,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:323:9",className:"p-12 text-center",children:[e.jsx(be,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:324:11",className:"h-6 w-6 animate-spin mx-auto text-slate-500"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:325:11",className:"text-slate-500 mt-3 text-sm",children:"加载中..."})]})}):a?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:342:5",className:"space-y-4",children:[e.jsxs(F,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:344:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(me,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:345:9",className:"pb-3",children:e.jsxs(xe,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:346:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(at,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:347:13",className:"h-4 w-4 text-blue-400"}),"更新策略 (Strategy)"]})}),e.jsxs(q,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:350:9",className:"pt-0 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:351:11",className:"flex items-center gap-4",children:[e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:352:13",className:"flex items-center gap-1.5 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:353:15",type:"radio",checked:b==="RollingUpdate",onChange:()=>w("RollingUpdate"),className:"accent-blue-500"}),"RollingUpdate(滚动更新)"]}),e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:357:13",className:"flex items-center gap-1.5 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:358:15",type:"radio",checked:b==="Recreate",onChange:()=>w("Recreate"),className:"accent-blue-500"}),"Recreate(重建)"]})]}),b==="RollingUpdate"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:364:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:365:15",children:[e.jsx(M,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:366:17",className:"text-slate-500 text-xs",children:"maxSurge(整数或百分比,超出期望副本数)"}),e.jsx(y,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:367:17",value:E,onChange:N=>C(N.target.value),placeholder:"25%",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:370:15",children:[e.jsx(M,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:371:17",className:"text-slate-500 text-xs",children:"maxUnavailable(整数或百分比,不可用上限)"}),e.jsx(y,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:372:17",value:z,onChange:N=>L(N.target.value),placeholder:"25%",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]})]})]})]}),e.jsxs(F,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:381:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(me,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:382:9",className:"pb-3",children:e.jsxs(xe,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:383:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(os,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:384:13",className:"h-4 w-4 text-amber-400"}),"历史版本 & 进度"]})}),e.jsxs(q,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:387:9",className:"pt-0 grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:388:11",children:[e.jsx(M,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:389:13",className:"text-slate-500 text-xs",children:"revisionHistoryLimit(保留 RS 历史)"}),e.jsx(y,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:390:13",type:"numbe
Line truncated
|
||||
bg-slate-800 border border-slate-700 text-slate-300 hover:border-blue-500/50 hover:text-blue-300 transition-colors`,children:[e.jsx(rs,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:424:23",className:"h-2.5 w-2.5"}),m.label,e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:426:23",className:"text-slate-500 text-[9px]",children:[m.protocol," ",m.port,":",m.targetPort]})]},m.name))})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:433:15",className:"space-y-2",children:[e.jsxs(M,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:434:17",className:"text-slate-500 text-[11px]",children:["端口配置 ",e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:435:24",className:"text-slate-600",children:["(",Y.ports.length," 个端口)"]})]}),Y.ports.map((m,g)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:438:19",className:"flex items-center gap-1.5 p-2 rounded bg-slate-800/50 border border-slate-700/50",children:[e.jsx(y,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:440:21",value:m.name,onChange:r=>ee(g,"name",r.target.value),placeholder:"http",className:"h-7 w-[72px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:444:21",value:m.protocol,onChange:r=>ee(g,"protocol",r.target.value),className:"h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5 w-16",children:[e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:446:23",value:"TCP",children:"TCP"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:447:23",value:"UDP",children:"UDP"})]}),e.jsx(y,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:450:21",value:m.port,onChange:r=>ee(g,"port",r.target.value),type:"number",placeholder:"port",className:"h-7 w-[72px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:453:21",className:"text-slate-600 text-[10px]",children:"→"}),e.jsx(y,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:454:21",value:m.targetPort,onChange:r=>ee(g,"targetPort",r.target.value),type:"number",placeholder:"targetPort",className:"h-7 w-[72px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),Y.type==="NodePort"&&e.jsx(y,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:459:23",value:m.nodePort,onChange:r=>ee(g,"nodePort",r.target.value),type:"number",placeholder:"30000-32767",className:"h-7 w-[80px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:464:21",size:"icon",variant:"ghost",className:"h-6 w-6 text-slate-500 hover:text-red-400",onClick:()=>Z(g),disabled:Y.ports.length<=1,children:e.jsx(jt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:466:23",className:"h-3 w-3"})})]},g)),e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:471:17",size:"sm",variant:"outline",className:"h-7 w-full border-dashed border-slate-700 text-slate-400 text-xs",onClick:()=>J(),children:[e.jsx(ne,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:473:19",className:"h-3 w-3 mr-1"}),"添加自定义端口"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:478:15",className:"text-[10px] text-slate-500 border-t border-slate-700/50 pt-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:479:17",className:"text-slate-600",children:"selector (自动检测): "}),Object.keys(w).length>0?Object.entries(w).map(([m,g])=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:482:21",className:"bg-slate-800 px-1 py-0.5 rounded text-slate-400 ml-1",children:[m,"=",g]},m)):e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:485:19",className:"text-slate-600 italic",children:"未检测到"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:489:15",className:"flex justify-end gap-2 pt-1",children:[e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:490:17",size:"sm",variant:"ghost",className:"h-7 text-xs text-slate-400",onClick:()=>se(null),children:"取消"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:491:17",size:"sm",className:"h-7 bg-blue-600 hover:bg-blue-700 text-xs",onClick:U,children:"创建"})]})]})]})]}),e.jsxs(F,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:499:7",className:"bg-slate-900 border-slate-800",children:[e.jsxs(me,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:500:9",className:"pb-3",children:[e.jsxs("div",{"code-path":"src/components
Line truncated
|
||||
-H 'Authorization: Bearer ${s?s.substring(0,16)+"...":"YOUR_TOKEN"}' \\
|
||||
-H 'Content-Type: application/json' \\
|
||||
-d '{"image": "harbor.example.com/app:v1.0", "container": "your-container-name"}'`,i=D=>{navigator.clipboard.writeText(D).then(()=>a({title:"已复制"})).catch(()=>{})};return e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:28:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:29:7",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:30:9",className:"text-slate-400 text-sm",children:"Webhook URL"}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:31:9",className:"flex items-center gap-2 mt-1",children:[e.jsx("code",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:32:11",className:"flex-1 text-xs text-slate-300 bg-slate-800 rounded px-3 py-2 break-all font-mono",children:c}),e.jsx(u,{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:33:11",variant:"outline",size:"sm",className:"border-slate-700 text-slate-400 shrink-0",onClick:()=>i(c),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:36:7",children:[e.jsx(M,{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:37:9",className:"text-slate-400 text-sm",children:"curl 示例"}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:38:9",className:"relative mt-1",children:[e.jsx("pre",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:39:11",className:"text-xs text-slate-300 bg-slate-800 rounded p-3 overflow-x-auto font-mono whitespace-pre-wrap",children:d}),e.jsx(u,{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:40:11",variant:"outline",size:"sm",className:"absolute top-2 right-2 border-slate-700 text-slate-400",onClick:()=>i(d),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:43:7",className:"text-xs text-slate-500 space-y-1",children:[e.jsx("p",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:44:9",children:"• 使用 Bearer Token 认证(JWT 登录令牌)"}),e.jsxs("p",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:45:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:45:14",className:"text-slate-400",children:"image"})," 必填,指定新镜像地址"]}),e.jsxs("p",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:46:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/deployment-workload/CICDWebhookContent.tsx:46:14",className:"text-slate-400",children:"container"})," 可选,不填则更新第一个容器"]})]})]})}function Qe({title:t,children:n,onClose:o}){return e.jsx("div",{"code-path":"src/components/kubernetes/deployment-workload/ModalShell.tsx:14:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:o,children:e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/ModalShell.tsx:15:7",className:"bg-slate-900 border border-slate-700 rounded-xl p-6 w-[460px] max-w-[90vw] shadow-2xl",onClick:a=>a.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-workload/ModalShell.tsx:16:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h2",{"code-path":"src/components/kubernetes/deployment-workload/ModalShell.tsx:17:11",className:"text-base font-bold text-slate-100",children:t}),e.jsx(u,{"code-path":"src/components/kubernetes/deployment-workload/ModalShell.tsx:18:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:o,children:e.jsx(is,{"code-path":"src/components/kubernetes/deployment-workload/ModalShell.tsx:18:100",className:"h-4 w-4"})})]}),n]})})}function kn({clusterCode:t,namespace:n,podName:o,containers:a,onClose:s}){const{toast:c}=Te(),[d,i]=p.useState(""),[D,l]=p.useState(200),[v,j]=p.useState(a[0]||""),[T,b]=p.useState(!1),[w,E]=p.useState(!1),C=async()=>{b(!0);try{const L=await de.getPodLogs(t,n,o,D,v||void 0);i(L?.data?.logs||L?.logs||L||"无日志")}catch{i("获取日志失败")}finally{b(!1)}};p.useEffect(()=>{C()},[v,D]);const z=async()=>{E(!0);const L=kt.getState().token||"",se="",Y=v?`&container=${encodeURIComponent(v)}`:"",oe=`${se}/api/v1/kubernetes/${t}/namespace/${n}/pods/${o}/logs?tail=${D}&stream=true${Y}`;try{const O=(await fetch(oe,{headers:{Authorization:`Bearer ${L}`}})).body?.getReader();if(!O)return;const J=new TextDecoder;let ee="";for(;;){const{done:Z,value:k}=await O.read();if(Z)break;ee+=J.decode(k,{stream:!0}),i(ee)}}catch{c({title:"流式日志连接中断",variant:"destructive"})}finally{E(!1)}};return e.jsx("div",{"code-path":"src/components
Line truncated
|
||||
Reference in new issue
Block a user