mirror of https://github.com/istio/istio.io.git
113 lines
4.1 KiB
Bash
113 lines
4.1 KiB
Bash
#!/bin/bash
|
|
# shellcheck disable=SC2034,SC2153,SC2155,SC2164
|
|
|
|
# Copyright Istio Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
####################################################################################################
|
|
# WARNING: THIS IS AN AUTO-GENERATED FILE, DO NOT EDIT. PLEASE MODIFY THE ORIGINAL MARKDOWN FILE:
|
|
# docs/tasks/traffic-management/locality-load-balancing/failover/index.md
|
|
####################################################################################################
|
|
|
|
snip_configure_locality_failover_1() {
|
|
kubectl --context="${CTX_PRIMARY}" apply -n sample -f - <<EOF
|
|
apiVersion: networking.istio.io/v1beta1
|
|
kind: DestinationRule
|
|
metadata:
|
|
name: helloworld
|
|
spec:
|
|
host: helloworld.sample.svc.cluster.local
|
|
trafficPolicy:
|
|
connectionPool:
|
|
http:
|
|
maxRequestsPerConnection: 1
|
|
loadBalancer:
|
|
simple: ROUND_ROBIN
|
|
localityLbSetting:
|
|
enabled: true
|
|
failover:
|
|
- from: region1
|
|
to: region2
|
|
outlierDetection:
|
|
consecutive5xxErrors: 1
|
|
interval: 1s
|
|
baseEjectionTime: 1m
|
|
EOF
|
|
}
|
|
|
|
snip_verify_traffic_stays_in_region1zone1_1() {
|
|
kubectl exec --context="${CTX_R1_Z1}" -n sample -c sleep \
|
|
"$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
|
|
app=sleep -o jsonpath='{.items[0].metadata.name}')" \
|
|
-- curl -sSL helloworld.sample:5000/hello
|
|
}
|
|
|
|
! read -r -d '' snip_verify_traffic_stays_in_region1zone1_1_out <<\ENDSNIP
|
|
Hello version: region1.zone1, instance: helloworld-region1.zone1-86f77cd7b-cpxhv
|
|
ENDSNIP
|
|
|
|
snip_failover_to_region1zone2_1() {
|
|
kubectl --context="${CTX_R1_Z1}" exec \
|
|
"$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l app=helloworld \
|
|
-l version=region1.zone1 -o jsonpath='{.items[0].metadata.name}')" \
|
|
-n sample -c istio-proxy -- curl -sSL -X POST 127.0.0.1:15000/drain_listeners
|
|
}
|
|
|
|
snip_failover_to_region1zone2_2() {
|
|
kubectl exec --context="${CTX_R1_Z1}" -n sample -c sleep \
|
|
"$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
|
|
app=sleep -o jsonpath='{.items[0].metadata.name}')" \
|
|
-- curl -sSL helloworld.sample:5000/hello
|
|
}
|
|
|
|
! read -r -d '' snip_failover_to_region1zone2_2_out <<\ENDSNIP
|
|
Hello version: region1.zone2, instance: helloworld-region1.zone2-86f77cd7b-cpxhv
|
|
ENDSNIP
|
|
|
|
snip_failover_to_region2zone3_1() {
|
|
kubectl --context="${CTX_R1_Z2}" exec \
|
|
"$(kubectl get pod --context="${CTX_R1_Z2}" -n sample -l app=helloworld \
|
|
-l version=region1.zone2 -o jsonpath='{.items[0].metadata.name}')" \
|
|
-n sample -c istio-proxy -- curl -sSL -X POST 127.0.0.1:15000/drain_listeners
|
|
}
|
|
|
|
snip_failover_to_region2zone3_2() {
|
|
kubectl exec --context="${CTX_R1_Z1}" -n sample -c sleep \
|
|
"$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
|
|
app=sleep -o jsonpath='{.items[0].metadata.name}')" \
|
|
-- curl -sSL helloworld.sample:5000/hello
|
|
}
|
|
|
|
! read -r -d '' snip_failover_to_region2zone3_2_out <<\ENDSNIP
|
|
Hello version: region2.zone3, instance: helloworld-region2.zone3-86f77cd7b-cpxhv
|
|
ENDSNIP
|
|
|
|
snip_failover_to_region3zone4_1() {
|
|
kubectl --context="${CTX_R2_Z3}" exec \
|
|
"$(kubectl get pod --context="${CTX_R2_Z3}" -n sample -l app=helloworld \
|
|
-l version=region2.zone3 -o jsonpath='{.items[0].metadata.name}')" \
|
|
-n sample -c istio-proxy -- curl -sSL -X POST 127.0.0.1:15000/drain_listeners
|
|
}
|
|
|
|
snip_failover_to_region3zone4_2() {
|
|
kubectl exec --context="${CTX_R1_Z1}" -n sample -c sleep \
|
|
"$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
|
|
app=sleep -o jsonpath='{.items[0].metadata.name}')" \
|
|
-- curl -sSL helloworld.sample:5000/hello
|
|
}
|
|
|
|
! read -r -d '' snip_failover_to_region3zone4_2_out <<\ENDSNIP
|
|
Hello version: region3.zone4, instance: helloworld-region3.zone4-86f77cd7b-cpxhv
|
|
ENDSNIP
|