<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Headlamp on jyukki's Blog</title><link>https://jyukki.com/tags/headlamp/</link><description>Recent content in Headlamp on jyukki's Blog</description><generator>Hugo -- 0.147.0</generator><language>ko-kr</language><lastBuildDate>Fri, 17 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jyukki.com/tags/headlamp/index.xml" rel="self" type="application/rss+xml"/><item><title>2026 개발 트렌드: Kubernetes AI/ML Workload UI, Kubeflow 운영이 일반 클러스터 UI로 들어온다</title><link>https://jyukki.com/posts/2026-07-17-kubernetes-aiml-workload-ui-headlamp-trend/</link><pubDate>Fri, 17 Jul 2026 10:06:00 +0900</pubDate><guid>https://jyukki.com/posts/2026-07-17-kubernetes-aiml-workload-ui-headlamp-trend/</guid><description>Kubernetes 공식 블로그의 Headlamp Kubeflow 플러그인과 Dashboard 전환 흐름을 바탕으로, AI/ML 워크로드 운영이 전용 ML 대시보드에서 클러스터 진실을 보여주는 일반 Kubernetes UI로 이동하는 이유를 정리합니다.</description><content:encoded><![CDATA[<p>Kubernetes 위의 AI/ML 운영이 한 단계 더 현실적인 문제로 이동하고 있습니다. 예전에는 &ldquo;Kubeflow를 설치한다&rdquo;, &ldquo;GPU 노드를 붙인다&rdquo;, &ldquo;파이프라인을 돌린다&quot;가 중심이었다면, 이제는 장애가 났을 때 누가 어떤 화면에서 어떤 증거를 보고 판단할지가 중요해졌습니다. 노트북이 stuck인지, 파이프라인 run이 실패했는지, Katib 실험이 early stop됐는지, PyTorch TrainJob이 runtime을 잘못 참조했는지, SparkApplication이 어떤 Pod와 PVC를 만들었는지 보는 일이 운영 업무가 됐습니다.</p>
<p>2026년 7월 13일 Kubernetes 공식 블로그는 Headlamp Kubeflow 플러그인을 소개했습니다. 핵심은 Kubeflow의 Notebook, Pipeline, Katib, Training, Spark 리소스를 일반 Kubernetes UI 안에서 직접 보여주는 것입니다. 같은 날에는 Kubernetes Dashboard에서 Headlamp로 옮기는 단계별 가이드도 나왔고, 6월 25일에는 Volcano 워크로드를 Headlamp에서 보는 플러그인 글도 있었습니다. 한 줄로 보면 <strong>CRD-heavy 플랫폼의 운영 UI가 전용 콘솔에서 클러스터 진실을 보여주는 확장형 Kubernetes UI로 이동하는 흐름</strong>입니다.</p>
<p>이 글은 <a href="/learning/deep-dive/deep-dive-kubernetes-basics/">Kubernetes Basics</a>, <a href="/learning/deep-dive/deep-dive-kubernetes-rollouts/">Kubernetes Rollouts</a>, <a href="/learning/deep-dive/deep-dive-observability-baseline/">Observability Baseline</a>, <a href="/learning/deep-dive/deep-dive-workload-aware-queue-partitioning-fair-scheduling/">Workload-Aware Queue Partitioning</a>과 이어집니다. AI/ML 플랫폼이라고 해서 운영 원리가 완전히 달라지는 것은 아닙니다. 다만 리소스 종류가 늘어나고, 사용자 집단이 data scientist, ML engineer, SRE, platform engineer로 갈라지기 때문에 화면과 권한, runbook이 더 중요해집니다.</p>
<p>참고 신호:</p>
<ul>
<li>Kubernetes Blog, Operating AI/ML Workloads on Kubernetes: A Headlamp Plugin for Kubeflow: <a href="https://kubernetes.io/blog/2026/07/13/introducing-headlamp-plugin-for-kubeflow/">https://kubernetes.io/blog/2026/07/13/introducing-headlamp-plugin-for-kubeflow/</a></li>
<li>Kubernetes Blog, Kubernetes Dashboard to Headlamp: A Step-by-Step Guide: <a href="https://kubernetes.io/blog/2026/07/13/kubernetes-dashboard-to-headlamp/">https://kubernetes.io/blog/2026/07/13/kubernetes-dashboard-to-headlamp/</a></li>
<li>Kubernetes Blog, Inspect Volcano workloads faster with Headlamp: <a href="https://kubernetes.io/blog/2026/06/25/visual-context-volcano-headlamp-plugin/">https://kubernetes.io/blog/2026/06/25/visual-context-volcano-headlamp-plugin/</a></li>
<li>Kubernetes Blog, Kubernetes v1.36 release: <a href="https://kubernetes.io/blog/2026/04/22/kubernetes-v1-36-release/">https://kubernetes.io/blog/2026/04/22/kubernetes-v1-36-release/</a></li>
</ul>
<h2 id="이-글에서-얻는-것">이 글에서 얻는 것</h2>
<ul>
<li>AI/ML 워크로드 운영에서 전용 ML 대시보드만으로 부족해지는 지점을 이해합니다.</li>
<li>Kubeflow CRD, Pod condition, PVC, GPU request/limit, ownerReference, pipeline version diff가 왜 같은 화면에 있어야 하는지 정리합니다.</li>
<li>Headlamp 같은 확장형 Kubernetes UI를 도입할 때 RBAC, multi-cluster, plugin, audit 기준을 잡을 수 있습니다.</li>
<li>ML 플랫폼팀과 SRE가 장애를 함께 볼 때 필요한 실무 runbook과 의사결정 숫자를 가져갑니다.</li>
</ul>
<h2 id="핵심-개념이슈">핵심 개념/이슈</h2>
<h3 id="1-aiml-플랫폼은-kubernetes-crd-위에-세워진다">1) AI/ML 플랫폼은 Kubernetes CRD 위에 세워진다</h3>
<p>Kubeflow는 노트북, 파이프라인, 실험, 튜닝, 분산 학습을 Kubernetes-native 방식으로 모델링합니다. 겉으로는 &ldquo;실험 관리 도구&quot;처럼 보이지만 내부적으로는 Custom Resource Definition이 늘어나는 구조입니다. Notebook, Run, Experiment, Trial, TrainJob, SparkApplication 같은 리소스가 있고, 그 아래에는 결국 Pod, PVC, ConfigMap, Secret, ServiceAccount, Event가 있습니다.</p>
<p>이 구조의 장점은 Kubernetes 운영 모델을 재사용할 수 있다는 점입니다. namespace, RBAC, label, ownerReference, event, controller reconciliation이 그대로 적용됩니다. 단점은 장애 분석 시 화면이 갈라진다는 점입니다. Data scientist는 ML 대시보드에서 run 이름과 metric을 보고, SRE는 <code>kubectl describe pod</code>와 node event를 봅니다. 같은 사건을 다른 언어로 보는 셈입니다.</p>
<p>Headlamp Kubeflow 플러그인이 의미 있는 이유가 여기에 있습니다. ML 플랫폼 리소스를 일반 클러스터 UI 안으로 가져오면, &ldquo;이 실험이 실패했다&quot;와 &ldquo;이 Pod가 OOMKilled였다&quot;를 같은 흐름에서 볼 수 있습니다.</p>
<h3 id="2-운영자가-묻는-질문은-실험-ui와-다르다">2) 운영자가 묻는 질문은 실험 UI와 다르다</h3>
<p>ML 대시보드는 실험 제출, metric 비교, pipeline 실행에는 좋습니다. 하지만 운영자가 장애를 볼 때 묻는 질문은 다릅니다.</p>
<table>
  <thead>
      <tr>
          <th>질문</th>
          <th>필요한 Kubernetes 증거</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Notebook이 왜 안 뜨나</td>
          <td>Pod condition, ImagePullBackOff, PVC binding, node toleration</td>
      </tr>
      <tr>
          <td>Run이 왜 실패했나</td>
          <td>Run status, 관련 Pod event, container exit code</td>
      </tr>
      <tr>
          <td>튜닝이 왜 오래 걸리나</td>
          <td>Trial 상태, early stop, queue 대기, GPU quota</td>
      </tr>
      <tr>
          <td>학습 job이 왜 pending인가</td>
          <td>resource request, node capacity, priority, PodGroup</td>
      </tr>
      <tr>
          <td>파이프라인이 왜 예전 spec으로 돌았나</td>
          <td>PipelineVersion diff, RecurringRun schedule, controller event</td>
      </tr>
  </tbody>
</table>
<p>이 증거가 여러 콘솔과 CLI에 흩어져 있으면 MTTR이 늘어납니다. 특히 GPU가 부족하거나 PVC가 묶이지 않거나 image pull secret이 깨진 장애는 ML 코드 문제가 아니라 클러스터 운영 문제입니다. 반대로 SRE가 metric 이름만 보고 ML 의미를 모르면 잘못된 queue 조정이나 재시작을 할 수 있습니다.</p>
<h3 id="3-headlamp-흐름은-dashboard-교체보다-plugin-운영-모델이-핵심이다">3) Headlamp 흐름은 Dashboard 교체보다 plugin 운영 모델이 핵심이다</h3>
<p>Kubernetes Dashboard에서 Headlamp로 옮기는 가이드에서 중요한 포인트는 접근 모델입니다. Dashboard는 주로 in-cluster 웹앱으로 배포되고 service account token에 기대는 흐름이 강했습니다. Headlamp는 desktop에서 kubeconfig로 여러 클러스터를 볼 수도 있고, in-cluster로 배포해 ServiceAccount와 RBAC를 따를 수도 있습니다. 또한 plugin으로 CRD별 view를 추가할 수 있습니다.</p>
<p>이 차이는 단순 UI 취향이 아닙니다. AI/ML 플랫폼은 CRD가 많고 팀마다 보는 리소스가 다릅니다. Kubeflow 팀은 Notebook과 Pipeline을 보고, batch 플랫폼팀은 Volcano Job과 Queue를 보고, cluster lifecycle 팀은 Cluster API를 볼 수 있습니다. 하나의 거대한 콘솔을 새로 만드는 대신, 일반 Kubernetes UI에 도메인별 view를 붙이는 방향이 운영 비용을 줄입니다.</p>
<p>도입 기준은 아래처럼 잡을 수 있습니다.</p>
<ul>
<li>cluster 3개 이상 또는 namespace 20개 이상이면 multi-cluster UI 가치가 커진다.</li>
<li>Kubeflow/Volcano/Spark 같은 CRD가 10종 이상이면 plugin view가 CLI보다 빠르다.</li>
<li>ML 장애에서 SRE 호출이 월 3회 이상이면 공통 runbook 화면이 필요하다.</li>
<li>GPU 비용이 월 예산의 20% 이상이면 queue, pending, idle resource를 UI에서 추적해야 한다.</li>
<li>write 권한이 있는 UI는 staging에서 최소 2주 read-only 검증 후 제한적으로 연다.</li>
</ul>
<h3 id="4-volcano-플러그인은-aiml-스케줄링-운영의-다른-축을-보여준다">4) Volcano 플러그인은 AI/ML 스케줄링 운영의 다른 축을 보여준다</h3>
<p>Volcano는 Kubernetes batch scheduler로 HPC, AI/ML, batch workload에서 queue, priority, quota, gang scheduling을 다룹니다. 일반 Deployment 운영과 다르게 batch job은 여러 worker가 동시에 떠야 진행될 수 있고, GPU나 대용량 메모리 같은 제한 자원을 두고 경쟁합니다. Pod 하나만 보면 왜 pending인지 모를 때가 많습니다. Queue, PodGroup, Job 전체 상태를 함께 봐야 합니다.</p>
<p>Volcano Headlamp 플러그인 흐름은 Kubeflow 플러그인과 같은 메시지를 줍니다. AI/ML 운영은 Pod 목록만 봐서는 부족하고, 그렇다고 전용 도구 화면만 봐도 부족합니다. 도메인 리소스와 Kubernetes 기반 리소스를 연결해서 봐야 합니다. 이 관점은 <a href="/learning/deep-dive/deep-dive-workload-aware-queue-partitioning-fair-scheduling/">Workload-Aware Queue Partitioning</a>과 직접 연결됩니다. 공정성 문제는 코드 버그가 아니라 queue와 quota 정책 문제일 가능성이 큽니다.</p>
<h3 id="5-ui의-진짜-가치는-관계를-보여주는-것이다">5) UI의 진짜 가치는 &ldquo;관계&quot;를 보여주는 것이다</h3>
<p>운영 UI가 표만 잘 보여주면 충분하던 시절은 지났습니다. CRD-heavy 플랫폼에서는 리소스 관계가 중요합니다. Notebook은 Pod와 PVC를 만들고, Pipeline Run은 PipelineVersion과 artifact root를 참조하며, TrainJob은 TrainingRuntime과 Pod를 통해 실제 학습을 수행합니다. Volcano Job은 PodGroup, Queue, Pod event와 연결됩니다.</p>
<p>좋은 UI는 이 관계를 줄입니다. 운영자가 클릭 5번과 <code>kubectl describe</code> 4번을 거쳐야 하던 것을 하나의 흐름으로 보여줍니다. 특히 ownerReference 그래프, side-by-side YAML diff, Pod condition reason, Secret/ConfigMap 참조, GPU request/limit은 장애 판단 시간을 줄이는 데 바로 도움이 됩니다.</p>
<h2 id="실무-적용">실무 적용</h2>
<h3 id="1-aiml-리소스-inventory를-먼저-만든다">1) AI/ML 리소스 inventory를 먼저 만든다</h3>
<p>Headlamp나 다른 UI를 붙이기 전, 클러스터 안에 어떤 ML 리소스가 있는지 표로 만듭니다.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#ff79c6">ml_platform_inventory</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">clusters</span>:
</span></span><span style="display:flex;"><span>    - <span style="color:#ff79c6">name</span>: <span style="color:#f1fa8c">&#34;prod-ml-apne2&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">kubeflow_components</span>: [<span style="color:#f1fa8c">&#34;notebooks&#34;</span>, <span style="color:#f1fa8c">&#34;pipelines&#34;</span>, <span style="color:#f1fa8c">&#34;katib&#34;</span>, <span style="color:#f1fa8c">&#34;training&#34;</span>, <span style="color:#f1fa8c">&#34;spark&#34;</span>]
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">schedulers</span>: [<span style="color:#f1fa8c">&#34;default&#34;</span>, <span style="color:#f1fa8c">&#34;volcano&#34;</span>]
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">namespaces</span>: <span style="color:#bd93f9">34</span>
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">gpu_node_pools</span>: <span style="color:#bd93f9">3</span>
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">monthly_gpu_budget_ratio</span>: <span style="color:#f1fa8c">&#34;28%&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">sre_incidents_last_30d</span>: <span style="color:#bd93f9">5</span>
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">ui_mode_candidate</span>: <span style="color:#f1fa8c">&#34;headlamp-readonly-first&#34;</span>
</span></span></code></pre></div><p>이 표가 있어야 UI 도입 범위가 정해집니다. Kubeflow 일부만 쓰는 팀과 Volcano queue까지 운영하는 팀은 필요한 view가 다릅니다.</p>
<h3 id="2-장애-runbook을-화면-순서로-바꾼다">2) 장애 runbook을 화면 순서로 바꾼다</h3>
<p>ML 장애 runbook은 &ldquo;kubectl로 확인&quot;이 아니라 화면과 증거 순서로 써야 합니다.</p>
<ol>
<li>Notebook 또는 Run 상태를 확인한다.</li>
<li>연결된 Pod condition과 event를 본다.</li>
<li>PVC, Secret, ConfigMap 참조 오류를 확인한다.</li>
<li>GPU/CPU/memory request와 namespace quota를 비교한다.</li>
<li>Volcano를 쓰면 Queue와 PodGroup pending reason을 확인한다.</li>
<li>Pipeline이면 최신 PipelineVersion과 이전 spec diff를 본다.</li>
<li>해결 후 같은 리소스 graph에서 owner와 재발 방지 label을 남긴다.</li>
</ol>
<p>권장 숫자는 <code>stuck notebook triage 10분 이내</code>, <code>failed Run owner routing 15분 이내</code>, <code>queue pending 원인 분류 20분 이내</code>, <code>GPU idle-cost incident 30분 이내</code> 정도로 시작할 수 있습니다. SLA라기보다 runbook이 실제로 짧아졌는지 보는 기준입니다.</p>
<h3 id="3-rbac는-read-only부터-좁게-연다">3) RBAC는 read-only부터 좁게 연다</h3>
<p>운영 UI는 편한 만큼 위험합니다. 특히 AI/ML 플랫폼에는 Secret, volume mount, environment variable, artifact path, data source가 많이 걸립니다. UI가 이것을 보여준다면 보안 경계가 넓어집니다. 처음에는 read-only와 namespace 제한으로 시작합니다.</p>
<p>권장 단계:</p>
<table>
  <thead>
      <tr>
          <th>단계</th>
          <th>범위</th>
          <th>기준</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1단계</td>
          <td>staging read-only</td>
          <td>plugin 설치, secret masking, audit log 확인</td>
      </tr>
      <tr>
          <td>2단계</td>
          <td>prod read-only 일부 namespace</td>
          <td>SRE와 ML platform owner만 접근</td>
      </tr>
      <tr>
          <td>3단계</td>
          <td>prod read-only 전체 ML namespace</td>
          <td>incident runbook 검증 후 확대</td>
      </tr>
      <tr>
          <td>4단계</td>
          <td>제한적 write</td>
          <td>restart, scale, delete는 별도 승인과 receipt 필요</td>
      </tr>
  </tbody>
</table>
<p>write 버튼이 있는 UI는 꼭 조심해야 합니다. ML job 삭제, queue 조정, recurring run 중지는 비용과 데이터 재현성에 영향을 줍니다. 변경은 GitOps나 운영 API를 통해 남기고, UI write는 긴급 상황으로 제한하는 편이 안전합니다.</p>
<h3 id="4-플러그인은-공급망과-권한-표면으로-본다">4) 플러그인은 공급망과 권한 표면으로 본다</h3>
<p>Headlamp의 장점은 plugin입니다. 동시에 plugin은 UI 안에서 실행되는 확장 코드입니다. 따라서 &ldquo;공식 블로그에 나왔으니 바로 production&quot;이 아니라 플러그인 출처, license, 유지보수, 권한, secret 노출, API 호출 범위를 봐야 합니다.</p>
<p>검증 기준:</p>
<ul>
<li>plugin repository와 release 출처가 명확한가</li>
<li>Apache 2.0 등 license가 조직 정책과 맞는가</li>
<li>read-only view가 실제로 write API를 호출하지 않는가</li>
<li>Secret value, token, env 원문이 화면이나 로그에 노출되지 않는가</li>
<li>plugin 오류가 Headlamp 전체 장애로 번지지 않는가</li>
<li>cluster API 호출량이 apiserver에 부담을 주지 않는가</li>
</ul>
<p>특히 multi-cluster UI는 실수의 반경이 큽니다. dev cluster를 본다고 생각하고 prod cluster 리소스를 건드리는 사고를 막으려면 cluster name, environment badge, destructive action confirmation이 필요합니다.</p>
<h3 id="5-도입-전-게이트를-수치로-둔다">5) 도입 전 게이트를 수치로 둔다</h3>
<p>AI/ML 운영 UI는 &ldquo;좋아 보인다&quot;보다 &ldquo;어떤 장애 시간을 줄일 것인가&quot;로 판단해야 합니다. 아래 기준을 만족하지 못하면 먼저 label, ownerReference, event 보존, runbook을 정리하는 편이 낫습니다.</p>
<table>
  <thead>
      <tr>
          <th>게이트</th>
          <th>통과 기준</th>
          <th>보류 신호</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>사고 빈도</td>
          <td>최근 30일 ML 워크로드 장애 3건 이상</td>
          <td>장애 원인이 대부분 코드/데이터 품질 문제</td>
      </tr>
      <tr>
          <td>리소스 복잡도</td>
          <td>Kubeflow/Volcano/Spark/Training CRD 합산 8종 이상</td>
          <td>Notebook만 단일 팀이 사용</td>
      </tr>
      <tr>
          <td>권한 경계</td>
          <td>namespace별 read-only RBAC를 분리 가능</td>
          <td>cluster-admin token 공유 관행</td>
      </tr>
      <tr>
          <td>비용 영향</td>
          <td>GPU idle 또는 pending 비용을 월 1회 이상 리뷰</td>
          <td>비용 데이터와 queue 상태가 연결되지 않음</td>
      </tr>
      <tr>
          <td>운영 협업</td>
          <td>SRE와 ML 플랫폼팀이 같은 runbook을 쓴다</td>
          <td>팀마다 별도 콘솔과 별도 용어 사용</td>
      </tr>
  </tbody>
</table>
<p>이 표는 도입 승인 문서에도 그대로 넣을 수 있습니다. 핵심은 UI 도입을 &ldquo;새 화면 추가&quot;가 아니라 incident workflow 변경으로 보는 것입니다. 통과 기준이 3개 이상이면 staging read-only PoC를 열고, 2개 이하이면 먼저 리소스 taxonomy와 runbook을 정리합니다.</p>
<h3 id="6-운영-지표는-mttr만-보지-않는다">6) 운영 지표는 MTTR만 보지 않는다</h3>
<p>Headlamp류 UI의 효과는 배포 직후 체감되지만, 숫자로 확인하지 않으면 plugin이 늘어날수록 관리 비용만 커집니다. 다음 지표를 2주 단위로 봅니다.</p>
<ul>
<li><code>triage_to_owner_minutes</code>: 장애 감지 후 담당 팀을 찾는 데 걸린 시간</li>
<li><code>pending_reason_classification_rate</code>: pending 워크로드 중 원인을 quota, PVC, image, scheduler, node capacity로 분류한 비율</li>
<li><code>kubectl_handoff_count</code>: UI에서 본 뒤 CLI로 넘어간 횟수와 이유</li>
<li><code>secret_exposure_incidents</code>: UI, log, screenshot에 secret성 정보가 노출된 횟수</li>
<li><code>plugin_error_rate</code>: 플러그인 로딩 실패, 빈 화면, API timeout 비율</li>
<li><code>queue_policy_change_receipts</code>: queue, priority, quota 변경이 승인 기록과 연결된 비율</li>
</ul>
<p>좋은 목표는 <code>MTTR 20% 감소</code>처럼 큰 숫자 하나가 아닙니다. 처음에는 <code>owner routing 15분 이내 80%</code>, <code>pending reason 분류율 90%</code>, <code>UI write action 0건</code>, <code>secret exposure 0건</code>처럼 운영 습관을 바꾸는 지표가 더 안전합니다. 특히 production 첫 달에는 write action을 성과로 보지 말고 위험 신호로 보는 편이 좋습니다.</p>
<h2 id="트레이드오프주의점">트레이드오프/주의점</h2>
<p>첫째, UI가 좋아진다고 운영 책임이 사라지지 않습니다. 오히려 더 많은 사람이 클러스터 상태를 볼 수 있게 되므로 권한, 교육, 감사 로그가 중요해집니다. read-only라도 Secret 참조나 namespace 이름이 민감할 수 있습니다.</p>
<p>둘째, 전용 ML 대시보드를 버리자는 이야기가 아닙니다. Data scientist에게는 실험 metric, artifact, model registry 흐름이 여전히 필요합니다. Headlamp류 UI는 SRE와 플랫폼팀이 클러스터 증거를 보는 운영 화면에 가깝습니다.</p>
<p>셋째, CRD view가 많아지면 화면도 복잡해집니다. 모든 plugin을 켜면 오히려 찾기 어려울 수 있습니다. 팀별로 Notebook/Pipeline 중심, Queue 중심, Cluster lifecycle 중심처럼 sidebar와 권한을 나눠야 합니다.</p>
<p>넷째, UI는 재현 가능한 자동화를 대체하지 못합니다. 장애 원인 확인은 UI가 빠를 수 있지만, 수정은 GitOps PR, Helm values 변경, policy update, quota 조정 runbook으로 남겨야 합니다.</p>
<p>다섯째, AI/ML 리소스는 비용과 보안이 함께 걸립니다. GPU pending만 줄이려고 priority를 높이면 다른 팀 workload가 밀릴 수 있고, artifact path를 넓게 열면 데이터 경계가 흔들릴 수 있습니다. 판단 기준은 <strong>보안/RBAC &gt; 재현성 &gt; SLO 영향 &gt; GPU 비용 최적화</strong> 순서로 두는 편이 안전합니다.</p>
<h2 id="체크리스트-또는-연습">체크리스트 또는 연습</h2>
<ul>
<li><input disabled="" type="checkbox"> Kubeflow, Volcano, Spark, Training Operator 등 설치된 CRD 목록을 namespace별로 정리했다.</li>
<li><input disabled="" type="checkbox"> SRE가 Notebook, Run, TrainJob, SparkApplication에서 관련 Pod와 event로 이동할 수 있다.</li>
<li><input disabled="" type="checkbox"> GPU request/limit, namespace quota, queue pending reason을 한 runbook 안에서 확인한다.</li>
<li><input disabled="" type="checkbox"> Headlamp 또는 유사 UI의 production 접근은 read-only부터 시작한다.</li>
<li><input disabled="" type="checkbox"> Secret, ConfigMap, env var 표시 정책에 masking 기준이 있다.</li>
<li><input disabled="" type="checkbox"> plugin 설치 전 source, license, API 호출 범위, audit log를 확인한다.</li>
<li><input disabled="" type="checkbox"> multi-cluster UI에는 environment badge와 destructive action guard가 있다.</li>
<li><input disabled="" type="checkbox"> ML 대시보드와 Kubernetes UI의 책임 경계가 문서화되어 있다.</li>
</ul>
<p>연습은 간단합니다. 최근 실패한 ML run 하나를 골라 <code>ML 대시보드에서 보이는 정보</code>, <code>Kubernetes 리소스에서 보이는 정보</code>, <code>SRE가 실제로 필요했던 정보</code>를 세 칸으로 나눠 적어 보세요. Pod condition, PVC, queue, quota, version diff 중 두 개 이상이 별도 CLI 없이는 보이지 않았다면, CRD-aware Kubernetes UI 도입 가치를 검토할 시점입니다.</p>
]]></content:encoded></item></channel></rss>