forked from GoogleCloudPlatform/gke-networking-recipes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.sh
executable file
·110 lines (96 loc) · 3.92 KB
/
setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/bin/bash
# Copyright 2023 Google LLC
#
# 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 -o errexit;
set -o nounset;
set -o pipefail;
set -o xtrace;
if [[ -z "${SUPPORT_EMAIL-}" ]]; then
echo "Required environment variable is not set. See ingress-asm-multi-backendconfig/REAME.md for details."
exit 0
fi
source ./test/helper.sh
test_name="ingress-asm-multi-backendconfig"
project=$( gcloud config get-value project 2>&1 | head -n 1 )
suffix=$(get_hash "${test_name}")
resource_name="gke-net-recipes-${suffix}"
network="${resource_name}"
subnet="${resource_name}"
instance="${resource_name}"
cluster="${resource_name}"
gcloud compute networks create "${network}" --subnet-mode="custom"
gcloud compute networks subnets create "${subnet}" \
--network="${network}" \
--region="${REGION}" \
--range="10.1.2.0/24"
gcloud compute instances create "${instance}" \
--zone="${ZONE}" \
--network="${network}" \
--subnet="${subnet}" \
--image-family="debian-11" \
--image-project="debian-cloud" \
--tags="allow-ssh"
gcloud container clusters create "${cluster}" \
--zone="${ZONE}" \
--enable-ip-alias \
--machine-type="e2-standard-4" \
--workload-pool="${project}.svc.id.goog" \
--release-channel rapid \
--network="${network}" \
--subnetwork="${subnet}"
gcloud container clusters get-credentials "${cluster}" --zone="${ZONE}"
context=$(get_context "${test_name}")
if [[ -z "${context}" ]]; then
exit 1
fi
kubectl --context "${context}" create namespace "${test_name}"
# Install Gateway CRD with istioctl.
curl -L https://istio.io/downloadIstio | sh -
export PATH=$PWD/istio-1.19.3/bin:$PATH
istioctl install --set profile=demo -y
# Install ASM CLI.
asmcli="ingress/single-cluster/ingress-asm-multi-backendconfig/asmcli"
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.18 > "${asmcli}"
chmod +x "${asmcli}"
# Install ASM into the cluster.
echo "y" | ./"${asmcli}" install \
--project_id "${project}" \
--cluster_location us-west1-a \
--cluster_name "${cluster}" \
--enable_all \
--output_dir "ingress/single-cluster/ingress-asm-multi-backendconfig/asm"
brand=$(get_or_create_oauth_brand "${SUPPORT_EMAIL}")
result=( $(get_oauth_client "${brand}" "${test_name}") )
client_id="${result[1]}"
secret="${result[2]}"
kubectl --context "${context}" create secret generic my-secret \
--from-literal=client_id="${client_id}" \
--from-literal=client_secret="${secret}" \
-n "${test_name}"
openssl req -newkey rsa:2048 -nodes \
-keyout key.pem -x509 \
-days 365 -out certificate.pem \
-subj "/CN=foo.example.com" \
-addext "subjectAltName=DNS:foo.example.com,DNS:bar.example.com"
kubectl --context "${context}" create secret tls my-cert \
--key=key.pem \
--cert=certificate.pem \
-n "${test_name}"
kubectl --context "${context}" label namespace "${test_name}" istio-injection=enabled --overwrite
kubectl --context "${context}" apply \
-n "${test_name}" \
-f ingress/single-cluster/ingress-asm-multi-backendconfig/asm/samples/gateways/istio-ingressgateway/serviceaccount.yaml \
-f ingress/single-cluster/ingress-asm-multi-backendconfig/asm/samples/gateways/istio-ingressgateway/role.yaml \
-f ingress/single-cluster/ingress-asm-multi-backendconfig/asm/samples/gateways/istio-ingressgateway/deployment.yaml \
-f ingress/single-cluster/ingress-asm-multi-backendconfig/istio-ingressgateway-service.yaml