Skip to content

Adds kfserving ingressgateway for Istio 1.1.6#949

Merged
k8s-ci-robot merged 6 commits into
kubeflow:masterfrom
krishnadurai:kfserving-gateway-1-1-6
Mar 9, 2020
Merged

Adds kfserving ingressgateway for Istio 1.1.6#949
k8s-ci-robot merged 6 commits into
kubeflow:masterfrom
krishnadurai:kfserving-gateway-1-1-6

Conversation

@krishnadurai

@krishnadurai krishnadurai commented Feb 25, 2020

Copy link
Copy Markdown
Contributor

Modifies KFServing and KNative Serving config-maps to use this gateway

Which issue is resolved by this Pull Request:
Addresses: #924

Description of your changes:
This implementation introduces an alternative Kubeflow ingress-gateway for KFServing. This route was chosen because the existing Kubeflow gateway is protected by Auth in several configurations. The Knative service readiness prober requests fail when they try to probe a KFServing InferenceService since those prober requests are not backed with Authentication credentials.

This implementation is a temporary solution until KNative introduces a solution for probing services behind an authenticated gateway as mentioned in this issue: knative/serving#6829

Related issues:
kserve/kserve#668

/cc @yuzisun @animeshsingh

/hold for testing

Checklist:

  • Unit tests have been rebuilt:
    1. cd manifests/tests
    2. make generate-changed-only
    3. make test

This change is Reviewable

Modifies KFServing and KNative Serving config-maps to use this gateway
@krishnadurai

Copy link
Copy Markdown
Contributor Author

/hold cancel

/assign @yuzisun @animeshsingh

@krishnadurai

Copy link
Copy Markdown
Contributor Author

Note that PR for Istio 1.3.1 will be raised separately. This has been verfied in kfctl_k8s_istio and kfctl_gcp_iap configurations.

@animeshsingh animeshsingh left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks @krishnadurai
cc @Tomcli

/lgtm

port: 15030
targetPort: 15030
- name: http2-grafana
port: 15031

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are these ports for kiali/grafana/prometheus always constant? do we deploy them with kubeflow?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@animeshsingh yes they are associated with the deployment config and are constant. We do deploy these services with Istio in Kubeflow.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thaks - great to know. What's the total infra cost of these 3 services - believe a container each? Are any customized Kubeflow metrics configured to flow to them

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@animeshsingh These require a container each. Prometheus, Graphana etc do come with the default istio install in Kubeflow.

Kubeflow does report Prometheus metrics through various operators or services like tfjob-operator or profile-controller. Likewise, the gateway container istio-proxy also reports metrics.

These ports in question are ports which the istio-proxy container exposes. The container istio-proxy is a part of the deployment servicing kfserving-gateway. These ports host https end-points for each of these services like Prometheus to poll these (gateway) services for metrics.

app: kfserving-ingressgateway
kfserving: ingressgateway
spec:
type: LoadBalancer

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks the kubeflow istio ingressgateway is using NodePort https://github.com/kubeflow/manifests/blob/master/istio/istio-install/base/istio-noauth.yaml#L14047
Would this work for on prem setup?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yuzisun The reason for istio-ingressgateway being NodePort is because of Google's IAP needing it to be NodePort.

Would this work for on prem setup?

If an on-premise setup has some component to provision a LoadBalancer, then LoadBalancer will get its IP. If not, the NodePorts are still accessible though the IP field for LoadBalancer will be in state.

NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                                                                                      AGE
istio-ingressgateway   LoadBalancer   10.103.151.45   <pending>     15020:30047/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:30370/TCP,15030:31766/TCP,15031:32168/TCP,15032:31581/TCP,15443:30268/TCP   2d12h

IMO, This should be acceptable. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we are using this ingress gateway in GCP IAP setup, so that's ok ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In istio-ingressgateway for GCP IAP, the ingress gateway service is exposed to an Identity Aware Proxy (which has auth checking) by the NodePort and the intention is to disallow access through any other mechanism other than this proxy.
Since we don't want to have auth checks, LoadBalancer should be alright.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

got it, thanks for the explanation! btw we also need to also add the HPA for this ingress gateway?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good suggestion @yuzisun. I'll include the definition for HPA.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yuzisun I've included an HPA.

@k8s-ci-robot k8s-ci-robot removed the lgtm label Mar 4, 2020
@yuzisun

yuzisun commented Mar 4, 2020

Copy link
Copy Markdown
Member

Thanks @krishnadurai! This is awesome and removes the biggest road block for kubeflow integration!

/lgtm

@krishnadurai

Copy link
Copy Markdown
Contributor Author

Thanks @yuzisun! You have been super helpful throughout.

@animeshsingh could you please take another look to get this in soon?

@krishnadurai

Copy link
Copy Markdown
Contributor Author

@animeshsingh can you PTAL at this again?

@animeshsingh

Copy link
Copy Markdown
Contributor

/lgtm
/approve

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: animeshsingh

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@krishnadurai

Copy link
Copy Markdown
Contributor Author

/retest

1 similar comment
@yuzisun

yuzisun commented Mar 9, 2020

Copy link
Copy Markdown
Member

/retest

@k8s-ci-robot k8s-ci-robot merged commit 3f8c358 into kubeflow:master Mar 9, 2020
@krishnadurai krishnadurai deleted the kfserving-gateway-1-1-6 branch March 11, 2020 12:35
richardsliu added a commit to richardsliu/manifests that referenced this pull request Mar 18, 2020
k8s-ci-robot pushed a commit that referenced this pull request Mar 18, 2020
…o 1.1.6 Modifies Cherry pick of #949 on v1.0-branch. #949: Adds kfserving ingressgateway for Istio 1.1.6 Modifies (#1027)

* Adds kfserving ingressgateway for Istio 1.1.6 Modifies KFServing and KNative Serving config-maps to use this gateway

* Updates configs for Istio 1.1.6

* Updates tests for istio 1.1.6

* Adding kfserving gateway to kfdefs having istio-1-1-6

* Gateway name correction for kfserving config

* Adds HPA config to gateway

Co-authored-by: krishnadurai <krishnadurai20@gmail.com>
kunmingg added a commit to kunmingg/manifests that referenced this pull request Mar 20, 2020
…gateway for Istio 1.1.6 Modifies Cherry pick of kubeflow#949 on v1.0-branch. kubeflow#949: Adds kfserving ingressgateway for Istio 1.1.6 Modifies (kubeflow#1027)"

This reverts commit 6cb83f8.
k8s-ci-robot pushed a commit that referenced this pull request Mar 20, 2020
…for Istio 1.1.6 Modifies Cherry pick of #949 on v1.0-branch. #949: Adds kfserving ingressgateway for Istio 1.1.6 Modifies (#1027)" (#1037)

This reverts commit 6cb83f8.
richardsliu pushed a commit to richardsliu/manifests that referenced this pull request Apr 2, 2020
* Adds kfserving ingressgateway for Istio 1.1.6
Modifies KFServing and KNative Serving config-maps to use this gateway

* Updates configs for Istio 1.1.6

* Updates tests for istio 1.1.6

* Adding kfserving gateway to kfdefs having istio-1-1-6

* Gateway name correction for kfserving config

* Adds HPA config to gateway
k8s-ci-robot pushed a commit that referenced this pull request Apr 7, 2020
* Adds kfserving ingressgateway for Istio 1.1.6 (#949)

* Adds kfserving ingressgateway for Istio 1.1.6
Modifies KFServing and KNative Serving config-maps to use this gateway

* Updates configs for Istio 1.1.6

* Updates tests for istio 1.1.6

* Adding kfserving gateway to kfdefs having istio-1-1-6

* Gateway name correction for kfserving config

* Adds HPA config to gateway

* revert changes to kfdef

Co-authored-by: Krishna Durai <krishnadurai20@gmail.com>
Jeffwan added a commit to Jeffwan/manifests that referenced this pull request Apr 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants