Запуск JupyterLab/Elyra параллельно с пользовательским интерфейсом Kubeflow Pipelines на одном контроллере Ingress

Я установил Elyra (это JupyerLab + некоторые расширения, ориентированные на ИИ, включая визуальный редактор для создания конвейеров Kubeflow) и конвейеры KubeFlow параллельно в кластере KIND (Kubernetes In Docker).

Сначала я установил Kubeflow Pipelines, как описано здесь.

export
PIPELINE_VERSION=1.4.1kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/cluster-scoped-resources?ref=$PIPELINE_VERSION"
kubectl wait --for condition= installed --timeout=60s crd / applications .app.k8s.io
kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/platform-agnostic-pns?ref=$PIPELINE_VERSION"

Затем я установил NGINX Ingress Controller, как описано здесь.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml

Наконец, я установил Elyra / JupyterLab, выполнив следующие действия.

Итак, для всех пользовательских интерфейсов, которые мне нужны, уже созданы соответствующие службы:

k получить svc
ИМЯ ТИП КЛАСТЕР-IP ВНЕШНИЙ IP-ПОРТ (
-а ) Возраст elyra-ai NodePort 10.96.84.31 8888:32111 / TCP 94m
kubernetes ClusterIP 10.96.0.1 443 / TCP 105m

k получить svc -n kubeflow | grep ml-pipeline-ui
ml-pipeline-ui ClusterIP 10.96.132.233 80 / TCP 105m

Поэтому я создал ingress.yaml, чтобы обеспечить доступ к JupyterLab / Elyra.

Как видите, я добавляю много записей пути, таких как login, elyra, git, lsp, lab, kernelspecs, static, ...

Итак, теперь я застрял в двух измерениях.

  1. Я не хочу добавлять записи пути для каждого устанавливаемого расширения JupyterLab.
  2. Я не могу найти способ сделать пользовательский интерфейс Kubeflow Pipelines доступным извне кластера.

Редактор Elyra Pipeline Editor может получить доступ к конечной точке Kubeflow Pipelines через ClusterIP, но было бы неплохо иметь доступ и к пользовательскому интерфейсу Kubeflow Pipelines ...

1 ответ

Самый простой способ - использовать виртуальные хосты. Так что либо в DNS, либо в вашем файле / etc / hosts добавьте, например:

127.0.0.1 elyra.local.host
127.0.0.1 kubeflow.local.host

Тогда два service.yaml становятся простыми для Elyra / JupyteLab:

      apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: elyra-ingress
spec:
  rules:
  - host: "elyra.local.host"
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: elyra-ai
            port:
              number: 8888

Для трубопроводов Kubeflow:

      apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kfp-ingress
spec:
  rules:
  - host: "kubeflow.local.host"
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: ml-pipeline-ui
            port:
              number: 80
Другие вопросы по тегам