Skip to content

Commit f4875f7

Browse files
committed
Adopt Mitch's changes
Signed-off-by: Keith Mattix II <[email protected]>
1 parent af221a1 commit f4875f7

File tree

16 files changed

+294
-148
lines changed

16 files changed

+294
-148
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,9 @@ archived_version
4141

4242
# Local Netlify folder
4343
.netlify
44+
45+
# Local artifacts when running tests
46+
artifacts
47+
48+
# Certs generated during tests
49+
certs

.spelling

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ ISTIO-SECURITY-2024-007
704704
istio-system
705705
istio.io
706706
istio.io.
707+
istio.io/rev
707708
IstioBirthday
708709
IstioCon
709710
istioctl

content/en/docs/ambient/install/multicluster/_index.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,42 +32,45 @@ the current state and limitations of this feature:
3232

3333
### Supported Configurations
3434

35-
Currently, ambient multicluster **only supports**:
36-
- **Multi-network topologies** with multiple primary clusters
37-
- **Double HBONE encapsulation** for cross-cluster traffic
35+
Currently, ambient multicluster only supports:
36+
- **Multi-network topologies** with each cluster acting as a primary cluster.
3837
- **Universal waypoint deployments** across all clusters with identical names
3938

4039
### Critical Limitations
4140

4241
#### Network Topology Restrictions
43-
- **Multi-cluster single-network configurations are untested, broken, and pre-experimental**
44-
- Do not attempt to deploy ambient across clusters that share the same network
42+
43+
**Multi-cluster single-network configurations are untested, and may be broken**
44+
- Use caution when deploying ambient across clusters that share the same network
4545
- Only multi-network configurations are supported
4646

47-
#### Control Plane Limitations
48-
- **Primary remote configuration is not currently supported**
47+
#### Control Plane Limitations
48+
49+
**Primary remote configuration is not currently supported**
4950
- You can only have multiple primary clusters
5051
- Configurations with one or more remote clusters will not work correctly
5152

5253
#### Waypoint Requirements
53-
- **Universal waypoint deployments are assumed across clusters**
54+
55+
**Universal waypoint deployments are assumed across clusters**
5456
- All clusters must have identically named waypoint deployments
55-
- Waypoint configurations must be synchronized manually across clusters
57+
- Waypoint configurations must be synchronized manually across clusters (e.g. using Flux, ArgoCD, or similar tools)
5658
- Traffic routing relies on consistent waypoint naming conventions
5759

5860
#### Service Visibility and Scoping
59-
- **Service scope configurations are not read from across clusters**
61+
62+
**Service scope configurations are not read from across clusters**
6063
- Only the local cluster's service scope configuration is used as the source of truth
61-
- Remote cluster service scopes are ignored, which can lead to unexpected traffic behavior
64+
- Remote cluster service scopes are not respected, which can lead to unexpected traffic behavior
6265
- Cross-cluster service discovery may not respect intended service boundaries
6366

6467
#### Gateway Limitations
65-
- **Ambient east-west gateways only support double HBONE**
66-
- Cannot expose `istiod` across networks using ambient east-west gateways
6768

69+
**Ambient east-west gateways only support double HBONE**
70+
- Cannot expose `istiod` across networks using ambient east-west gateways
6871

6972
{{< tip >}}
7073
As ambient multicluster matures, many of these limitations will be addressed.
71-
Check the [Istio release notes](https://istio.io/latest/news/) for updates on
74+
Check the [Istio release notes](https://istio.io/news/) for updates on
7275
ambient multicluster capabilities.
7376
{{< /tip >}}

content/en/docs/ambient/install/multicluster/before-you-begin/index.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ This guide requires that you have two Kubernetes clusters with any of the
2626

2727
The API Server in each cluster must be accessible to the other clusters in the
2828
mesh. Many cloud providers make API Servers publicly accessible via network
29-
load balancers (NLB). The ambient east-west gateway cannot be used to expose
29+
load balancers (NLB). The ambient east-west gateway cannot be used to expose
3030
the API server as it only supports double HBONE traffic. A non-ambient
3131
[east-west](https://en.wikipedia.org/wiki/East-west_traffic) gateway could be
3232
used to enable access to the API Server.
@@ -75,11 +75,7 @@ below may have to be altered based on your choice of CA.
7575

7676
## Next steps
7777

78-
You're now ready to install an Istio ambient mesh across multiple clusters. The
79-
particular steps will depend on your requirements for network and
80-
control plane topology.
81-
82-
Choose the installation that best fits your needs:
78+
You're now ready to install an Istio ambient mesh across multiple clusters.
8379

8480
- [Install Multi-Primary on Different Networks](/docs/ambient/install/multicluster/multi-primary_multi-network)
8581

content/en/docs/ambient/install/multicluster/common.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ function cleanup_istioctl
8181
cleanup_cluster1_istioctl &
8282
cleanup_cluster2_istioctl &
8383
wait
84+
snip_delete_crds
8485
}
8586

8687
# cleanup_cluster1_istioctl removes the istio-system and sample namespaces on CLUSTER1 with istioctl.
@@ -123,6 +124,12 @@ function verify_load_balancing
123124
_wait_for_deployment sample helloworld-v2 "${CTX_CLUSTER2}"
124125
_wait_for_deployment sample curl "${CTX_CLUSTER2}"
125126

127+
# Expose the helloworld service in both clusters.
128+
echo "Exposing helloworld in cluster1"
129+
kubectl --context="${CTX_CLUSTER1}" label svc helloworld -n sample istio.io/global="true"
130+
echo "Exposing helloworld in cluster2"
131+
kubectl --context="${CTX_CLUSTER2}" label svc helloworld -n sample istio.io/global="true"
132+
126133
# Verify everything is deployed as expected.
127134
VERIFY_TIMEOUT=0 # Don't retry.
128135
echo "Verifying helloworld v1 deployment"

content/en/docs/ambient/install/multicluster/multi-primary_multi-network/helm_test.sh

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,38 +21,52 @@ set -e
2121
set -u
2222
set -o pipefail
2323

24-
source content/en/docs/setup/install/multicluster/common.sh
24+
source content/en/docs/ambient/install/multicluster/common.sh
25+
source "tests/util/gateway-api.sh"
26+
2527
set_multi_network_vars
2628
setup_helm_repo
2729

2830
function install_istio_on_cluster1_helm {
31+
echo "Installing Gateway API CRDs on Primary cluster: ${CTX_CLUSTER1}"
32+
install_gateway_api_crds "${CTX_CLUSTER1}"
33+
2934
echo "Installing Istio on Primary cluster: ${CTX_CLUSTER1}"
3035

3136
snip_set_the_default_network_for_cluster1_1
3237

33-
snip_configure_cluster1_as_a_primary_3
34-
snip_configure_cluster1_as_a_primary_4
38+
_rewrite_helm_repo snip_configure_cluster1_as_a_primary_3
39+
_rewrite_helm_repo snip_configure_cluster1_as_a_primary_4
40+
_rewrite_helm_repo snip_install_cni_cluster1
41+
_rewrite_helm_repo snip_install_ztunnel_cluster1
3542

3643
echo "Creating the east-west gateway"
37-
snip_install_the_eastwest_gateway_in_cluster1_2
44+
snip_install_the_eastwest_gateway_2
45+
snip_install_the_eastwest_gateway_3
3846

3947
echo "Waiting for the east-west gateway to have an external IP"
40-
_verify_like snip_install_the_eastwest_gateway_in_cluster1_3 "$snip_install_the_eastwest_gateway_in_cluster1_3_out"
48+
_verify_like snip_install_the_eastwest_gateway_4 "$snip_install_the_eastwest_gateway_4_out"
4149
}
4250

4351
function install_istio_on_cluster2_helm {
52+
echo "Installing Gateway API CRDs on Primary cluster: ${CTX_CLUSTER2}"
53+
install_gateway_api_crds "${CTX_CLUSTER2}"
54+
4455
echo "Installing Istio on Primary cluster: ${CTX_CLUSTER2}"
4556

4657
snip_set_the_default_network_for_cluster2_1
4758

48-
snip_configure_cluster2_as_a_primary_3
49-
snip_configure_cluster2_as_a_primary_4
59+
_rewrite_helm_repo snip_configure_cluster2_as_a_primary_3
60+
_rewrite_helm_repo snip_configure_cluster2_as_a_primary_4
61+
_rewrite_helm_repo snip_install_cni_cluster2
62+
_rewrite_helm_repo snip_install_ztunnel_cluster2
5063

5164
echo "Creating the east-west gateway"
5265
snip_install_the_eastwest_gateway_in_cluster2_2
66+
snip_install_the_eastwest_gateway_in_cluster2_3
5367

5468
echo "Waiting for the east-west gateway to have an external IP"
55-
_verify_like snip_install_the_eastwest_gateway_in_cluster2_3 "$snip_install_the_eastwest_gateway_in_cluster2_3_out"
69+
_verify_like snip_install_the_eastwest_gateway_in_cluster2_4 "$snip_install_the_eastwest_gateway_in_cluster2_4_out"
5670
}
5771

5872
function install_istio_helm {
@@ -68,11 +82,7 @@ function enable_endpoint_discovery {
6882
snip_enable_endpoint_discovery_2
6983
}
7084

71-
function delete_crds_cluster_1() {
72-
kubectl get crd -oname --context "${CTX_CLUSTER1}" | grep --color=never 'istio.io' | xargs kubectl delete --context "${CTX_CLUSTER1}"
73-
}
7485

75-
time delete_crds_cluster_1
7686
time configure_trust
7787
time install_istio_helm
7888
time enable_endpoint_discovery
@@ -98,6 +108,7 @@ function cleanup_helm {
98108
cleanup_cluster1_helm
99109
cleanup_cluster2_helm
100110
snip_delete_crds
111+
snip_delete_gateway_crds
101112
}
102113

103114
time cleanup_helm

0 commit comments

Comments
 (0)