Обход Dex в KubeFlow для доступа к модели seldon через curl

Я следовал примеру по адресу: https://github.com/SeldonIO/seldon-core/tree/master/examples/kubeflow .

Шаги Сделано:

  1. kubectl port-forward $(kubectl get pods -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].metadata.name}') -n istio-system 8005:80
  2. kubectl создать пространство имен kubeflow-user-example-com
  3. kubectl config set-context $(kubectl config current-context) --namespace=kubeflow-user-example-com
  4. Создайте языковую оболочку для модели seldon.
  5. Загрузил его в реестр докеров

Я хотел бы свернуть свой SeldonDeployment в Kubeflow:

      apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
  labels:
    app: seldon
  name: seldon-sentiment
  namespace: kubeflow-user-example-com
spec:
  annotations:
    project_name: NLP Pipeline
    deployment_version: v1
  name: seldon-sentiment
  predictors:
    - componentSpecs:
        - spec:
            containers:
              - image: 'localhost:5000/seldon-sentiment:0.1'
                imagePullPolicy: IfNotPresent
                name: sentiment
                resources:
                  requests:
                    memory: 1Mi
            terminationGracePeriodSeconds: 20
      graph:
        children: []
        endpoint:
          type: REST
        name: sentiment
        type: MODEL
      name: sentiment
      replicas: 1
      annotations:
        predictor_version: v1

Когда я пытаюсь запросить развертывание через curl, меня перенаправляют на Dex.

      curl -k -O http://localhost:8005/seldon/kubeflow-user-example-com/seldon-sentiment-sentiment-0-sentiment/api/v0.1/predictions -d "{'data': { 'ndarray': ['Hello world this is a test']}}" -H 'Content-Type: application/json'

*   Trying ::1:8005...
* TCP_NODELAY set
* Connected to localhost (::1) port 8005 (#0)
> POST /seldon-sentiment-sentiment-0-sentiment/api/v0.1/predictions HTTP/1.1
> Host: localhost:8005
> User-Agent: curl/7.68.0
> Accept: */*
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 54
>
* upload completely sent off: 54 out of 54 bytes
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< location: /dex/auth?client_id=kubeflow-oidc-authservice&redirect_uri=%2Flogin%2Foidc&response_type=code&scope=profile+email+groups+openid&state=MTY2NTk2MTY
< date: Sun, 16 Oct 2022 23:07:52 GMT
< x-envoy-upstream-service-time: 2
< server: istio-envoy
< content-length: 0
<
* Connection #0 to host localhost left intact

1 ответ

Вам нужно будет предоставить токен аутентификации, если вы хотите свернуть API. Это можно сделать, получив токен, сгенерированный в файле cookie. У Dex есть коды Python для получения токена, а затем вы можете свернуть URL-адрес с полученным токеном в заголовках.

Другие вопросы по тегам