mirror of https://github.com/knative/docs.git
Add instruction for custom istio gateway (#3802)
* Add instruction for custom istio gateway This patch adds the instruction to use custom Istio Gateway. Current doc has a similar instruction "customize Istio Gateway Service". This doc is very similar but for "customize Istio Gateway". * Fix format * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * Update docs/serving/setting-up-custom-ingress-gateway.md Co-authored-by: Samia Nneji <snneji@vmware.com> * use list format * Use add instead of replace Co-authored-by: Samia Nneji <snneji@vmware.com>
This commit is contained in:
parent
73fb07f1fd
commit
be72eae9bb
|
|
@ -11,9 +11,11 @@ Knative uses a shared ingress Gateway to serve all incoming traffic within
|
||||||
Knative service mesh, which is the `knative-ingress-gateway` Gateway under
|
Knative service mesh, which is the `knative-ingress-gateway` Gateway under
|
||||||
the `knative-serving` namespace. By default, we use Istio gateway service
|
the `knative-serving` namespace. By default, we use Istio gateway service
|
||||||
`istio-ingressgateway` under `istio-system` namespace as its underlying service.
|
`istio-ingressgateway` under `istio-system` namespace as its underlying service.
|
||||||
You can replace the service with that of your own as follows.
|
You can replace the service and the gateway with that of your own as follows.
|
||||||
|
|
||||||
## Step 1: Create Gateway Service and Deployment Instance
|
## Replace the default `istio-ingressgateway` service
|
||||||
|
|
||||||
|
### Step 1: Create the gateway service and deployment instance
|
||||||
|
|
||||||
You'll need to create the gateway service and deployment instance to handle
|
You'll need to create the gateway service and deployment instance to handle
|
||||||
traffic first. Let's say you customized the default `istio-ingressgateway` to
|
traffic first. Let's say you customized the default `istio-ingressgateway` to
|
||||||
|
|
@ -23,21 +25,6 @@ traffic first. Let's say you customized the default `istio-ingressgateway` to
|
||||||
apiVersion: install.istio.io/v1alpha1
|
apiVersion: install.istio.io/v1alpha1
|
||||||
kind: IstioOperator
|
kind: IstioOperator
|
||||||
spec:
|
spec:
|
||||||
values:
|
|
||||||
global:
|
|
||||||
proxy:
|
|
||||||
autoInject: disabled
|
|
||||||
useMCP: false
|
|
||||||
# The third-party-jwt is not enabled on all k8s.
|
|
||||||
# See: https://istio.io/docs/ops/best-practices/security/#configure-third-party-service-account-tokens
|
|
||||||
jwtPolicy: first-party-jwt
|
|
||||||
|
|
||||||
addonComponents:
|
|
||||||
pilot:
|
|
||||||
enabled: true
|
|
||||||
prometheus:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
components:
|
components:
|
||||||
ingressGateways:
|
ingressGateways:
|
||||||
- name: custom-ingressgateway
|
- name: custom-ingressgateway
|
||||||
|
|
@ -47,7 +34,7 @@ spec:
|
||||||
istio: custom-gateway
|
istio: custom-gateway
|
||||||
```
|
```
|
||||||
|
|
||||||
## Step 2: Update Knative Gateway
|
### Step 2: Update the Knative gateway
|
||||||
|
|
||||||
Update gateway instance `knative-ingress-gateway` under `knative-serving`
|
Update gateway instance `knative-ingress-gateway` under `knative-serving`
|
||||||
namespace:
|
namespace:
|
||||||
|
|
@ -71,24 +58,112 @@ istio: custom-gateway
|
||||||
If there is a change in service ports (compared with that of
|
If there is a change in service ports (compared with that of
|
||||||
`istio-ingressgateway`), update the port info in the gateway accordingly.
|
`istio-ingressgateway`), update the port info in the gateway accordingly.
|
||||||
|
|
||||||
## Step 3: Update Gateway Configmap
|
### Step 3: Update the gateway ConfigMap
|
||||||
|
|
||||||
Update gateway configmap `config-istio` under `knative-serving`
|
1. Update gateway configmap `config-istio` under `knative-serving`
|
||||||
namespace:
|
namespace:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl edit configmap config-istio -n knative-serving
|
kubectl edit configmap config-istio -n knative-serving
|
||||||
```
|
```
|
||||||
|
|
||||||
Replace the `istio-ingressgateway.istio-system.svc.cluster.local` field with
|
This command opens your default text editor and allows you to edit the config-istio ConfigMap.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
_example: |
|
||||||
|
################################
|
||||||
|
# #
|
||||||
|
# EXAMPLE CONFIGURATION #
|
||||||
|
# #
|
||||||
|
################################
|
||||||
|
# ...
|
||||||
|
gateway.knative-serving.knative-ingress-gateway: "istio-ingressgateway.istio-system.svc.cluster.local"
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Edit the file to add the `gateway.knative-serving.knative-ingress-gateway: <ingress_name>.<ingress_namespace>.svc.cluster.local` field with
|
||||||
the fully qualified url of your service.
|
the fully qualified url of your service.
|
||||||
|
|
||||||
```
|
|
||||||
gateway.knative-serving.knative-ingress-gateway: "istio-ingressgateway.istio-system.svc.cluster.local"
|
|
||||||
```
|
|
||||||
|
|
||||||
For the service above, it should be updated to:
|
For the service above, it should be updated to:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
gateway.knative-serving.knative-ingress-gateway: custom-ingressgateway.custom-ns.svc.cluster.local
|
||||||
|
kind: ConfigMap
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Replace the `knative-ingress-gateway` gateway
|
||||||
|
|
||||||
|
We customized the gateway service so far, but we may also want to use our own gateway.
|
||||||
|
We can replace the default gateway with our own gateway with following steps.
|
||||||
|
|
||||||
|
### Step 1: Create the gateway
|
||||||
|
|
||||||
|
Let's say you replace the default `knative-ingress-gateway` gateway with
|
||||||
|
`knative-custom-gateway` in `custom-ns`.
|
||||||
|
First, we create the `knative-custom-gateway` gateway.
|
||||||
|
|
||||||
```
|
```
|
||||||
gateway.knative-serving.knative-ingress-gateway: custom-ingressgateway.custom-ns.svc.cluster.local
|
cat <<EOF | kubectl apply -f -
|
||||||
|
apiVersion: networking.istio.io/v1alpha3
|
||||||
|
kind: Gateway
|
||||||
|
metadata:
|
||||||
|
name: knative-custom-gateway
|
||||||
|
namespace: custom-ns
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
istio: ingressgateway
|
||||||
|
servers:
|
||||||
|
- port:
|
||||||
|
number: 80
|
||||||
|
name: http
|
||||||
|
protocol: HTTP
|
||||||
|
hosts:
|
||||||
|
- "*"
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Replace the label selector `istio: ingressgateway` with the label of your service.
|
||||||
|
|
||||||
|
### Step 2: Update the gateway ConfigMap
|
||||||
|
|
||||||
|
1. Update gateway configmap `config-istio` under `knative-serving`
|
||||||
|
namespace:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl edit configmap config-istio -n knative-serving
|
||||||
|
```
|
||||||
|
|
||||||
|
This command opens your default text editor and allows you to edit the config-istio ConfigMap.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
_example: |
|
||||||
|
################################
|
||||||
|
# #
|
||||||
|
# EXAMPLE CONFIGURATION #
|
||||||
|
# #
|
||||||
|
################################
|
||||||
|
# ...
|
||||||
|
gateway.knative-serving.knative-ingress-gateway: "istio-ingressgateway.istio-system.svc.cluster.local"
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Edit the file to add the `gateway.<gateway-namespace>.<gateway-name>: istio-ingressgateway.istio-system.svc.cluster.local` field with
|
||||||
|
the customized gateway.
|
||||||
|
For the gateway above, it should be updated to:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
gateway.custom-ns.knative-custom-gateway: "istio-ingressgateway.istio-system.svc.cluster.local"
|
||||||
|
kind: ConfigMap
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
The configuration format should be `gateway.<gateway-namespace>.<gateway-name>`.
|
||||||
|
`<gateway-namespace>` is optional. When it is omitted, the system searches for
|
||||||
|
the gateway in the serving system namespace `knative-serving`.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue