참고한 블로그 - https://medium.com/dkatalis/kubeflow-with-mlflow-702cf2ebf3bf
앞선 포스팅에서 Kubeflow를 설치했다. 그리고 MLflow도 설치했다.
이번 포스팅의 목적은 Kubeflow 대시보드에 MLFlow가 하나의 탭으로 추가하는 것이다.
Kubeflow의 Central Dashboard에서 하나의 탭을 클릭할 때 다양한 엔드포인트로 라우팅 하기 위해 VirtualService를 사용한다. (주피터, Katib, pipeline 등)
우리의 목적은 mlflow 버튼을 클릭하면 mlflow tracker UI로 라우팅 해야 하므로 추가로 virtual service를 생성해야 한다.
아래 yaml을 배포하자.
kubectl apply -f mlflow_virtual_service.yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: mlflow
namespace: kubeflow
spec:
gateways:
- kubeflow/kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /mlflow/
rewrite:
uri: /
route:
- destination:
host: mlflow-tracking.mlflow.svc.cluster.local
port:
number: 80
이제 /mlflow/
라는 라우터에 접근 시 mlflow-tracking.mlflow.svc.cluster.local:80 로부터 요청을 받아온다.
그리고 Central Dashboard에 버튼을 추가해줘야 하는데, 이건 configmap으로 정의되어 있다. 이걸 수정해 주자.
kubectl edit cm centraldashboard-config -n kubeflow
추가한 내용
{
"type": "item",
"link": "/mlflow/",
"text": "mlflow",
"icon": "device:access-alarm"
}
아래와 같이 추가하면 된다.
이제 마지막으로 Central Dashboard를 재시작해주자.
kubectl rollout restart deploy centraldashboard -n kubeflow
이제 다시 대시보드에 접근해 보자.
성공했다!