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
|
||||
the `knative-serving` namespace. By default, we use Istio gateway 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
|
||||
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
|
||||
kind: IstioOperator
|
||||
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:
|
||||
ingressGateways:
|
||||
- name: custom-ingressgateway
|
||||
|
|
@ -47,7 +34,7 @@ spec:
|
|||
istio: custom-gateway
|
||||
```
|
||||
|
||||
## Step 2: Update Knative Gateway
|
||||
### Step 2: Update the Knative gateway
|
||||
|
||||
Update gateway instance `knative-ingress-gateway` under `knative-serving`
|
||||
namespace:
|
||||
|
|
@ -71,24 +58,112 @@ istio: custom-gateway
|
|||
If there is a change in service ports (compared with that of
|
||||
`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:
|
||||
|
||||
```bash
|
||||
kubectl edit configmap config-istio -n knative-serving
|
||||
```
|
||||
```bash
|
||||
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.
|
||||
|
||||
```
|
||||
gateway.knative-serving.knative-ingress-gateway: "istio-ingressgateway.istio-system.svc.cluster.local"
|
||||
```
|
||||
|
||||
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