Skip to content

Commit c1c0171

Browse files
authored
Update kubernetes_deployment.md
fixes: kserve#383 Signed-off-by: Rajakavitha Kodhandapani <[email protected]>
1 parent 6aa3ac6 commit c1c0171

File tree

1 file changed

+38
-54
lines changed

1 file changed

+38
-54
lines changed

docs/admin/kubernetes_deployment.md

+38-54
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,54 @@
11
# Kubernetes Deployment Installation Guide
22
KServe supports `RawDeployment` mode to enable `InferenceService` deployment with Kubernetes resources [`Deployment`](https://kubernetes.io/docs/concepts/workloads/controllers/deployment), [`Service`](https://kubernetes.io/docs/concepts/services-networking/service), [`Ingress`](https://kubernetes.io/docs/concepts/services-networking/ingress) and [`Horizontal Pod Autoscaler`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale). Comparing to serverless deployment it unlocks Knative limitations such as mounting multiple volumes, on the other hand `Scale down and from Zero` is not supported in `RawDeployment` mode.
33

4-
Kubernetes 1.22 is the minimally required version and please check the following recommended Istio versions for the corresponding
5-
Kubernetes version.
6-
7-
## Recommended Version Matrix
8-
| Kubernetes Version | Recommended Istio Version |
9-
|:-------------------|:--------------------------|
10-
| 1.27 | 1.18, 1.19 |
11-
| 1.28 | 1.19, 1.20 |
12-
| 1.29 | 1.20, 1.21 |
13-
14-
## 1. Install Istio
15-
16-
The minimally required Istio version is 1.13 and you can refer to the [Istio install guide](https://istio.io/latest/docs/setup/install).
17-
18-
Once Istio is installed, create `IngressClass` resource for istio.
19-
```yaml
20-
apiVersion: networking.k8s.io/v1
21-
kind: IngressClass
22-
metadata:
23-
name: istio
24-
spec:
25-
controller: istio.io/ingress-controller
26-
```
27-
28-
29-
!!! note
30-
Istio ingress is recommended, but you can choose to install with other [Ingress controllers](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) and create `IngressClass` resource for your Ingress option.
31-
32-
33-
34-
## 2. Install Cert Manager
4+
## 1. Install Cert Manager
355
The minimally required Cert Manager version is 1.9.0 and you can refer to [Cert Manager installation guide](https://cert-manager.io/docs/installation/).
366

377
!!! note
388
Cert manager is required to provision webhook certs for production grade installation, alternatively you can run self signed certs generation script.
399

40-
## 3. Install KServe
10+
## 2. Install KServe
4111
!!! note
42-
The default KServe deployment mode is `Serverless` which depends on Knative. The following step changes the default deployment mode to `RawDeployment` before installing KServe.
43-
12+
The default KServe deployment mode is `Serverless` which depends on Knative. The following step changes the default deployment mode to `RawDeployment` before installing KServe and the `RawDeployment` mode does not have any dependecy on Knative.
4413

45-
**i. Install KServe**
14+
**i. Create a yaml file**
15+
Open an editor of your choice and create `kustomization.yaml` file.
16+
```
17+
apiVersion: kustomize.config.k8s.io/v1beta1
18+
kind: Kustomization
19+
20+
namespace: kserve
21+
22+
resources:
23+
- https://github.com/kserve/kserve/releases/download/v0.13.0/kserve.yaml
24+
25+
patches:
26+
- target:
27+
kind: ConfigMap
28+
name: inferenceservice-config
29+
patch: |
30+
- path: /data/deploy
31+
op: replace
32+
value: |-
33+
{
34+
"defaultDeploymentMode": "RawDeployment"
35+
}
36+
- path: /data/ingress
37+
op: replace
38+
value: |-
39+
{
40+
"disableIstioVirtualHost": true,
41+
"disableIngressCreation": true,
42+
"ingressDomain": "svc.cluster.local",
43+
"ingressGateway" : "disabled",
44+
"ingressService" : "disabled"
45+
}
46+
47+
**ii. Install KServe**
4648

4749
=== "kubectl"
4850
```bash
49-
kubectl apply -f https://github.com/kserve/kserve/releases/download/v0.13.0/kserve.yaml
51+
kubectl apply -f kustomization.yaml
5052
```
5153

5254
Install KServe default serving runtimes:
@@ -55,21 +57,3 @@ Install KServe default serving runtimes:
5557
```bash
5658
kubectl apply -f https://github.com/kserve/kserve/releases/download/v0.13.0/kserve-cluster-resources.yaml
5759
```
58-
59-
**ii. Change default deployment mode and ingress option**
60-
61-
First in ConfigMap `inferenceservice-config` modify the `defaultDeploymentMode` in the `deploy` section,
62-
63-
=== "kubectl"
64-
```bash
65-
kubectl patch configmap/inferenceservice-config -n kserve --type=strategic -p '{"data": {"deploy": "{\"defaultDeploymentMode\": \"RawDeployment\"}"}}'
66-
```
67-
68-
then modify the `ingressClassName` in `ingress` section to point to `IngressClass` name created in [step 1](#1-install-istio).
69-
```yaml
70-
ingress: |-
71-
{
72-
"ingressClassName" : "your-ingress-class",
73-
}
74-
```
75-

0 commit comments

Comments
 (0)