mirror of https://github.com/istio/istio.io.git
Helm and gateway tests (#11276)
* add tests to gateway setup * manually cleanup the minimal istio install * Add canary upgrade test * convert rewrite-repo to a helper function * upgrade helm test * lint fixes * left over validatingwebhook from a prior test * remove boilerplate check * undo elided pod names * gen snip * Remove validatingwebhookconfigurations deletion * remove webhook configs pending fix in istio * remove webhook configs pending fix in istio * revert some changes * remove temp webhook removals * remove revision labeled mutating webhooks * revert revision-tags-middle change * make gen
This commit is contained in:
parent
a690ea9c7a
commit
63d5724fde
|
@ -18,4 +18,4 @@ prod-stable 1-9-5 ...
|
||||||
|
|
||||||
After the cluster operator is satisfied with the stability of the control plane tagged with `prod-canary`, namespaces labeled
|
After the cluster operator is satisfied with the stability of the control plane tagged with `prod-canary`, namespaces labeled
|
||||||
`istio.io/rev=prod-stable` can be updated with one action by modifying the `prod-stable` revision tag to point to the newer
|
`istio.io/rev=prod-stable` can be updated with one action by modifying the `prod-stable` revision tag to point to the newer
|
||||||
`1-10-0` revision.
|
`1-10-0` revision.
|
||||||
|
|
|
@ -4,7 +4,7 @@ description: Install and customize Istio Gateways.
|
||||||
weight: 40
|
weight: 40
|
||||||
keywords: [install,gateway,kubernetes]
|
keywords: [install,gateway,kubernetes]
|
||||||
owner: istio/wg-environments-maintainers
|
owner: istio/wg-environments-maintainers
|
||||||
test: no
|
test: yes
|
||||||
---
|
---
|
||||||
|
|
||||||
Along with creating a service mesh, Istio allows you to manage [gateways](/docs/concepts/traffic-management/#gateways),
|
Along with creating a service mesh, Istio allows you to manage [gateways](/docs/concepts/traffic-management/#gateways),
|
||||||
|
@ -291,9 +291,9 @@ spec:
|
||||||
When this deployment is created, you will then have two versions of the gateway, both selected by the same Service:
|
When this deployment is created, you will then have two versions of the gateway, both selected by the same Service:
|
||||||
|
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ kubectl get endpoints -o "custom-columns=NAME:.metadata.name,PODS:.subsets[*].addresses[*].targetRef.name"
|
$ kubectl get endpoints -n istio-ingress -o "custom-columns=NAME:.metadata.name,PODS:.subsets[*].addresses[*].targetRef.name"
|
||||||
NAME PODS
|
NAME PODS
|
||||||
istio-ingressgateway istio-ingressgateway-788854c955-8gv96,istio-ingressgateway-canary-b78944cbd-mq2qf
|
istio-ingressgateway istio-ingressgateway-...,istio-ingressgateway-canary-...
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
{{< image width="50%" link="canary-upgrade.svg" caption="Canary upgrade in progress" >}}
|
{{< image width="50%" link="canary-upgrade.svg" caption="Canary upgrade in progress" >}}
|
||||||
|
|
|
@ -0,0 +1,167 @@
|
||||||
|
#!/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/setup/additional-setup/gateway/index.md
|
||||||
|
####################################################################################################
|
||||||
|
|
||||||
|
! read -r -d '' snip_deploying_a_gateway_1 <<\ENDSNIP
|
||||||
|
apiVersion: install.istio.io/v1alpha1
|
||||||
|
kind: IstioOperator
|
||||||
|
metadata:
|
||||||
|
name: ingress
|
||||||
|
spec:
|
||||||
|
profile: empty # Do not install CRDs or the control plane
|
||||||
|
components:
|
||||||
|
ingressGateways:
|
||||||
|
- name: ingressgateway
|
||||||
|
namespace: istio-ingress
|
||||||
|
enabled: true
|
||||||
|
label:
|
||||||
|
# Set a unique label for the gateway. This is required to ensure Gateways
|
||||||
|
# can select this workload
|
||||||
|
istio: ingressgateway
|
||||||
|
values:
|
||||||
|
gateways:
|
||||||
|
istio-ingressgateway:
|
||||||
|
# Enable gateway injection
|
||||||
|
injectionTemplate: gateway
|
||||||
|
ENDSNIP
|
||||||
|
|
||||||
|
snip_deploying_a_gateway_2() {
|
||||||
|
kubectl create namespace istio-ingress
|
||||||
|
istioctl install -f ingress.yaml
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_deploying_a_gateway_3() {
|
||||||
|
kubectl create namespace istio-ingress
|
||||||
|
helm install istio-ingress istio/gateway -n istio-ingress
|
||||||
|
}
|
||||||
|
|
||||||
|
! read -r -d '' snip_deploying_a_gateway_4 <<\ENDSNIP
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: istio-ingressgateway
|
||||||
|
namespace: istio-ingress
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
selector:
|
||||||
|
istio: ingressgateway
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
name: http
|
||||||
|
- port: 443
|
||||||
|
name: https
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: istio-ingressgateway
|
||||||
|
namespace: istio-ingress
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
istio: ingressgateway
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
# Select the gateway injection template (rather than the default sidecar template)
|
||||||
|
inject.istio.io/templates: gateway
|
||||||
|
labels:
|
||||||
|
# Set a unique label for the gateway. This is required to ensure Gateways can select this workload
|
||||||
|
istio: ingressgateway
|
||||||
|
# Enable gateway injection. If connecting to a revisioned control plane, replace with "istio.io/rev: revision-name"
|
||||||
|
sidecar.istio.io/inject: "true"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: istio-proxy
|
||||||
|
image: auto # The image will automatically update each time the pod starts.
|
||||||
|
---
|
||||||
|
# Set up roles to allow reading credentials for TLS
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: istio-ingressgateway-sds
|
||||||
|
namespace: istio-ingress
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["secrets"]
|
||||||
|
verbs: ["get", "watch", "list"]
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: istio-ingressgateway-sds
|
||||||
|
namespace: istio-ingress
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: istio-ingressgateway-sds
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: default
|
||||||
|
ENDSNIP
|
||||||
|
|
||||||
|
snip_deploying_a_gateway_5() {
|
||||||
|
kubectl create namespace istio-ingress
|
||||||
|
kubectl apply -f ingress.yaml
|
||||||
|
}
|
||||||
|
|
||||||
|
! read -r -d '' snip_gateway_selectors_1 <<\ENDSNIP
|
||||||
|
apiVersion: networking.istio.io/v1beta1
|
||||||
|
kind: Gateway
|
||||||
|
metadata:
|
||||||
|
name: gateway
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
istio: ingressgateway
|
||||||
|
...
|
||||||
|
ENDSNIP
|
||||||
|
|
||||||
|
! read -r -d '' snip_canary_upgrade_advanced_1 <<\ENDSNIP
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: istio-ingressgateway-canary
|
||||||
|
namespace: istio-ingress
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
istio: ingressgateway
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
inject.istio.io/templates: gateway
|
||||||
|
labels:
|
||||||
|
istio: ingressgateway
|
||||||
|
istio.io/rev: canary # Set to the control plane revision you want to deploy
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: istio-proxy
|
||||||
|
image: auto
|
||||||
|
ENDSNIP
|
||||||
|
|
||||||
|
snip_canary_upgrade_advanced_2() {
|
||||||
|
kubectl get endpoints -n istio-ingress -o "custom-columns=NAME:.metadata.name,PODS:.subsets[*].addresses[*].targetRef.name"
|
||||||
|
}
|
||||||
|
|
||||||
|
! read -r -d '' snip_canary_upgrade_advanced_2_out <<\ENDSNIP
|
||||||
|
NAME PODS
|
||||||
|
istio-ingressgateway istio-ingressgateway-...,istio-ingressgateway-canary-...
|
||||||
|
ENDSNIP
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright Istio Authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# @setup profile=none
|
||||||
|
function rebuild() {
|
||||||
|
istioctl x uninstall --purge --skip-confirmation
|
||||||
|
kubectl delete namespace istio-ingress
|
||||||
|
istioctl install --skip-confirmation --set profile=minimal
|
||||||
|
}
|
||||||
|
|
||||||
|
istioctl install --skip-confirmation --set profile=minimal
|
||||||
|
_wait_for_deployment istio-system istiod
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
cat <<EOF >ingress.yaml
|
||||||
|
$snip_deploying_a_gateway_1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo y | snip_deploying_a_gateway_2
|
||||||
|
_wait_for_deployment istio-ingress ingressgateway
|
||||||
|
|
||||||
|
rebuild
|
||||||
|
_rewrite_helm_repo snip_deploying_a_gateway_3
|
||||||
|
_wait_for_deployment istio-ingress istio-ingress
|
||||||
|
|
||||||
|
rebuild
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
cat <<EOF >ingress.yaml
|
||||||
|
$snip_deploying_a_gateway_4
|
||||||
|
EOF
|
||||||
|
snip_deploying_a_gateway_5
|
||||||
|
_wait_for_deployment istio-ingress istio-ingressgateway
|
||||||
|
|
||||||
|
istioctl install --skip-confirmation --set profile=minimal --set revision=canary
|
||||||
|
_wait_for_deployment istio-system istiod-canary
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
cat <<EOF | kubectl apply -f -
|
||||||
|
$snip_canary_upgrade_advanced_1
|
||||||
|
EOF
|
||||||
|
_wait_for_deployment istio-ingress istio-ingressgateway-canary
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
_verify_like snip_canary_upgrade_advanced_2 "${snip_canary_upgrade_advanced_2_out}"
|
||||||
|
|
||||||
|
# @cleanup
|
||||||
|
|
||||||
|
istioctl x uninstall --purge --skip-confirmation
|
||||||
|
kubectl delete namespace istio-system
|
||||||
|
kubectl delete namespace istio-ingress
|
|
@ -21,18 +21,6 @@ set -e
|
||||||
set -u
|
set -u
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
# rewrite-repo invokes bash make to rewrite a snippet to avoid installing from a real helm repository, and instead uses
|
|
||||||
# local files
|
|
||||||
# shellcheck disable=SC2001
|
|
||||||
function rewrite-repo() {
|
|
||||||
# get function definition: https://stackoverflow.com/a/6916952/374797
|
|
||||||
cmd="$(type "${1:?snip}" | sed '1,3d;$d')"
|
|
||||||
cmd="$(echo "${cmd}" | sed 's|istio/base|manifests/charts/base|')"
|
|
||||||
cmd="$(echo "${cmd}" | sed 's|istio/istiod|manifests/charts/istio-control/istio-discovery|')"
|
|
||||||
cmd="$(echo "${cmd}" | sed 's|istio/gateway|manifests/charts/gateway|')"
|
|
||||||
eval "${cmd}"
|
|
||||||
}
|
|
||||||
|
|
||||||
kubectl_get_egress_gateway_for_remote_cluster() {
|
kubectl_get_egress_gateway_for_remote_cluster() {
|
||||||
response=$(kubectl get pod -l app=istio-egressgateway -n external-istiod --context="${CTX_REMOTE_CLUSTER}" -o jsonpath="{.items[*].status.phase}")
|
response=$(kubectl get pod -l app=istio-egressgateway -n external-istiod --context="${CTX_REMOTE_CLUSTER}" -o jsonpath="{.items[*].status.phase}")
|
||||||
echo "$response"
|
echo "$response"
|
||||||
|
@ -122,7 +110,7 @@ _verify_contains snip_deploy_a_sample_application_4 "Hello version: v1"
|
||||||
echo y | snip_enable_gateways_1
|
echo y | snip_enable_gateways_1
|
||||||
|
|
||||||
# And egress with helm
|
# And egress with helm
|
||||||
rewrite-repo snip_enable_gateways_4
|
_rewrite_helm_repo snip_enable_gateways_4
|
||||||
|
|
||||||
_verify_same kubectl_get_egress_gateway_for_remote_cluster "Running"
|
_verify_same kubectl_get_egress_gateway_for_remote_cluster "Running"
|
||||||
|
|
||||||
|
|
|
@ -18,30 +18,18 @@ set -u
|
||||||
|
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
# rewrite-repo invokes bash make to rewrite a snippet to avoid installing from a real helm repository, and instead uses
|
|
||||||
# local files
|
|
||||||
# shellcheck disable=SC2001
|
|
||||||
function rewrite-repo() {
|
|
||||||
# get function definition: https://stackoverflow.com/a/6916952/374797
|
|
||||||
cmd="$(type "${1:?snip}" | sed '1,3d;$d')"
|
|
||||||
cmd="$(echo "${cmd}" | sed 's|istio/base|manifests/charts/base|')"
|
|
||||||
cmd="$(echo "${cmd}" | sed 's|istio/istiod|manifests/charts/istio-control/istio-discovery|')"
|
|
||||||
cmd="$(echo "${cmd}" | sed 's|istio/gateway|manifests/charts/gateway|')"
|
|
||||||
eval "${cmd} --set global.tag=${ISTIO_IMAGE_VERSION=SHOULD_BE_SET}.${ISTIO_LONG_SHA=latest}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# @setup profile=none
|
# @setup profile=none
|
||||||
|
|
||||||
# Delete a vailidatingwebhookconfiguration that seems to have been left around from a prior test.
|
# Delete a vailidatingwebhookconfiguration that seems to have been left around from a prior test.
|
||||||
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io istiod-default-validator --ignore-not-found
|
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io istiod-default-validator --ignore-not-found
|
||||||
|
|
||||||
snip_create_istio_system_namespace
|
snip_create_istio_system_namespace
|
||||||
rewrite-repo snip_install_base
|
_rewrite_helm_repo snip_install_base
|
||||||
|
|
||||||
rewrite-repo snip_install_discovery
|
_rewrite_helm_repo snip_install_discovery
|
||||||
_wait_for_deployment istio-system istiod
|
_wait_for_deployment istio-system istiod
|
||||||
|
|
||||||
rewrite-repo snip_install_ingressgateway
|
_rewrite_helm_repo snip_install_ingressgateway
|
||||||
_wait_for_deployment istio-ingress istio-ingress
|
_wait_for_deployment istio-ingress istio-ingress
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright Istio Authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
source "content/en/docs/setup/upgrade/helm/common.sh"
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# @setup profile=none
|
||||||
|
|
||||||
|
_install_istio_helm
|
||||||
|
|
||||||
|
snip_canary_upgrade_recommended_1
|
||||||
|
_rewrite_helm_repo snip_canary_upgrade_recommended_2
|
||||||
|
_wait_for_deployment istio-system istiod-canary
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
_verify_like snip_canary_upgrade_recommended_3 "${snip_canary_upgrade_recommended_3_out}"
|
||||||
|
|
||||||
|
snip_canary_upgrade_recommended_4
|
||||||
|
_rewrite_helm_repo snip_canary_upgrade_recommended_5
|
||||||
|
|
||||||
|
_rewrite_helm_repo helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-stable}" --set revision=1-9-5 -n istio-system | kubectl delete -f -
|
||||||
|
_rewrite_helm_repo helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-canary}" --set revision=1-10-0 -n istio-system | kubectl delete -f -
|
||||||
|
helm uninstall istiod-canary -n istio-system
|
||||||
|
_remove_istio_helm
|
||||||
|
|
||||||
|
# @cleanup
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright Istio Authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
source "content/en/docs/setup/install/helm/snips.sh"
|
||||||
|
|
||||||
|
_install_istio_helm() {
|
||||||
|
_rewrite_helm_repo snip_create_istio_system_namespace
|
||||||
|
_rewrite_helm_repo snip_install_base
|
||||||
|
_rewrite_helm_repo snip_install_discovery
|
||||||
|
_rewrite_helm_repo snip_install_ingressgateway
|
||||||
|
_wait_for_deployment istio-system istiod
|
||||||
|
_wait_for_deployment istio-ingress istio-ingress
|
||||||
|
}
|
||||||
|
|
||||||
|
_remove_istio_helm() {
|
||||||
|
snip_delete_delete_gateway_charts
|
||||||
|
snip_helm_delete_discovery_chart
|
||||||
|
snip_helm_delete_base_chart
|
||||||
|
snip_delete_istio_system_namespace
|
||||||
|
snip_delete_crds
|
||||||
|
}
|
|
@ -5,7 +5,7 @@ description: Upgrade and configure Istio for in-depth evaluation.
|
||||||
weight: 27
|
weight: 27
|
||||||
keywords: [kubernetes,helm]
|
keywords: [kubernetes,helm]
|
||||||
owner: istio/wg-environments-maintainers
|
owner: istio/wg-environments-maintainers
|
||||||
test: no
|
test: yes
|
||||||
---
|
---
|
||||||
|
|
||||||
Follow this guide to upgrade and configure an Istio mesh using
|
Follow this guide to upgrade and configure an Istio mesh using
|
||||||
|
@ -23,7 +23,7 @@ Before upgrading Istio, it is recommended to run the `istioctl x precheck` comma
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ istioctl x precheck
|
$ istioctl x precheck
|
||||||
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
|
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
|
||||||
To get started, check out https://istio.io/latest/docs/setup/getting-started/
|
To get started, check out <https://istio.io/latest/docs/setup/getting-started/>
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
|
@ -79,7 +79,7 @@ primary and canary installations.
|
||||||
1. Upgrade the Istio base chart, making the new revision the default.
|
1. Upgrade the Istio base chart, making the new revision the default.
|
||||||
|
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ helm upgrade istio-base istio/base --defaultRevision canary -n istio-system --skip-crds
|
$ helm upgrade istio-base istio/base --set defaultRevision=canary -n istio-system --skip-crds
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
### Stable revision labels (experimental)
|
### Stable revision labels (experimental)
|
||||||
|
@ -91,8 +91,8 @@ primary and canary installations.
|
||||||
{{< boilerplate revision-tags-usage >}}
|
{{< boilerplate revision-tags-usage >}}
|
||||||
|
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={prod-stable} --set revision=1-9-5 -n istio-system | kubectl apply -f -
|
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-stable}" --set revision=1-9-5 -n istio-system | kubectl apply -f -
|
||||||
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={prod-canary} --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-canary}" --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
|
@ -103,7 +103,7 @@ below to uninstall revision tags.
|
||||||
{{< boilerplate revision-tags-middle >}}
|
{{< boilerplate revision-tags-middle >}}
|
||||||
|
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={prod-stable} --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-stable}" --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
{{< boilerplate revision-tags-prologue >}}
|
{{< boilerplate revision-tags-prologue >}}
|
||||||
|
@ -113,7 +113,7 @@ $ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisi
|
||||||
{{< boilerplate revision-tags-default-intro >}}
|
{{< boilerplate revision-tags-default-intro >}}
|
||||||
|
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={default} --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
$ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{default}" --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
{{< boilerplate revision-tags-default-outro >}}
|
{{< boilerplate revision-tags-default-outro >}}
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright Istio Authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
source "content/en/docs/setup/upgrade/helm/common.sh"
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# @setup profile=none
|
||||||
|
_install_istio_helm
|
||||||
|
|
||||||
|
_rewrite_helm_repo snip_in_place_upgrade_1
|
||||||
|
_rewrite_helm_repo snip_in_place_upgrade_2
|
||||||
|
_rewrite_helm_repo snip_in_place_upgrade_3
|
||||||
|
_rewrite_helm_repo snip_in_place_upgrade_4
|
||||||
|
|
||||||
|
_remove_istio_helm
|
||||||
|
# @cleanup
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright Istio Authors
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
source "content/en/docs/setup/upgrade/helm/common.sh"
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# @setup profile=none
|
||||||
|
_install_istio_helm
|
||||||
|
|
||||||
|
_rewrite_helm_repo snip_usage_1
|
||||||
|
|
||||||
|
_rewrite_helm_repo snip_usage_2
|
||||||
|
_rewrite_helm_repo snip_default_tag_1
|
||||||
|
|
||||||
|
_remove_istio_helm
|
||||||
|
|
||||||
|
kubectl delete mutatingwebhookconfiguration istio-revision-tag-default
|
||||||
|
kubectl delete mutatingwebhookconfiguration istio-revision-tag-prod-canary
|
||||||
|
kubectl delete mutatingwebhookconfiguration istio-revision-tag-prod-stable
|
||||||
|
|
||||||
|
# @cleanup
|
|
@ -0,0 +1,90 @@
|
||||||
|
#!/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/setup/upgrade/helm/index.md
|
||||||
|
####################################################################################################
|
||||||
|
source "content/en/boilerplates/snips/helm-prereqs.sh"
|
||||||
|
source "content/en/boilerplates/snips/revision-tags-middle.sh"
|
||||||
|
source "content/en/boilerplates/snips/revision-tags-prologue.sh"
|
||||||
|
|
||||||
|
snip_upgrade_steps_1() {
|
||||||
|
istioctl x precheck
|
||||||
|
}
|
||||||
|
|
||||||
|
! read -r -d '' snip_upgrade_steps_1_out <<\ENDSNIP
|
||||||
|
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
|
||||||
|
To get started, check out <https://istio.io/latest/docs/setup/getting-started/>
|
||||||
|
ENDSNIP
|
||||||
|
|
||||||
|
snip_canary_upgrade_recommended_1() {
|
||||||
|
kubectl apply -f manifests/charts/base/crds
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_canary_upgrade_recommended_2() {
|
||||||
|
helm install istiod-canary istio/istiod \
|
||||||
|
--set revision=canary \
|
||||||
|
-n istio-system
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_canary_upgrade_recommended_3() {
|
||||||
|
kubectl get pods -l app=istiod -L istio.io/rev -n istio-system
|
||||||
|
}
|
||||||
|
|
||||||
|
! read -r -d '' snip_canary_upgrade_recommended_3_out <<\ENDSNIP
|
||||||
|
NAME READY STATUS RESTARTS AGE REV
|
||||||
|
istiod-5649c48ddc-dlkh8 1/1 Running 0 71m default
|
||||||
|
istiod-canary-9cc9fd96f-jpc7n 1/1 Running 0 34m canary
|
||||||
|
ENDSNIP
|
||||||
|
|
||||||
|
snip_canary_upgrade_recommended_4() {
|
||||||
|
helm delete istiod -n istio-system
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_canary_upgrade_recommended_5() {
|
||||||
|
helm upgrade istio-base istio/base --set defaultRevision=canary -n istio-system --skip-crds
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_usage_1() {
|
||||||
|
helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-stable}" --set revision=1-9-5 -n istio-system | kubectl apply -f -
|
||||||
|
helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-canary}" --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_usage_2() {
|
||||||
|
helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{prod-stable}" --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_default_tag_1() {
|
||||||
|
helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags="{default}" --set revision=1-10-0 -n istio-system | kubectl apply -f -
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_in_place_upgrade_1() {
|
||||||
|
kubectl apply -f manifests/charts/base/crds
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_in_place_upgrade_2() {
|
||||||
|
helm upgrade istio-base manifests/charts/base -n istio-system --skip-crds
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_in_place_upgrade_3() {
|
||||||
|
helm upgrade istiod istio/istiod -n istio-system
|
||||||
|
}
|
||||||
|
|
||||||
|
snip_in_place_upgrade_4() {
|
||||||
|
helm upgrade istio-ingress istio/gateway -n istio-ingress
|
||||||
|
}
|
|
@ -112,3 +112,17 @@ _wait_for_istio() {
|
||||||
_urlencode() {
|
_urlencode() {
|
||||||
python3 -c "import urllib.parse; print(urllib.parse.quote('''$1'''))"
|
python3 -c "import urllib.parse; print(urllib.parse.quote('''$1'''))"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Invokes bash make to rewrite a snippet to avoid installing from a real helm repository, and instead uses
|
||||||
|
# local files
|
||||||
|
# usage: _rewrite_helm_repo <commands>
|
||||||
|
# shellcheck disable=SC2001
|
||||||
|
_rewrite_helm_repo() {
|
||||||
|
# get function definition: https://stackoverflow.com/a/6916952/374797
|
||||||
|
cmd="$(type "${1:?snip}" | sed '1,3d;$d')"
|
||||||
|
cmd="$(echo "${cmd}" | sed 's|istio/base|manifests/charts/base|')"
|
||||||
|
cmd="$(echo "${cmd}" | sed 's|istio/istiod|manifests/charts/istio-control/istio-discovery|')"
|
||||||
|
cmd="$(echo "${cmd}" | sed 's|istio/gateway|manifests/charts/gateway|')"
|
||||||
|
cmd="$(echo "${cmd}" | sed -E "s|(helm[[:space:]]+[^[:space:]]+)|\1 --set global.tag=${ISTIO_IMAGE_VERSION=SHOULD_BE_SET}.${ISTIO_LONG_SHA=latest}|g")"
|
||||||
|
eval "${cmd}"
|
||||||
|
}
|
Loading…
Reference in New Issue