forked from platform-mesh/resource-broker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun.bash
More file actions
executable file
·120 lines (96 loc) · 5.19 KB
/
run.bash
File metadata and controls
executable file
·120 lines (96 loc) · 5.19 KB
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
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/env bash
# cd into repo root
example_dir="$(dirname "$0")"
cd "$(dirname "$0")/../.."
source "./hack/lib.bash"
kubeconfigs="$PWD/kubeconfigs"
log "Using directory for kubeconfigs: $kubeconfigs"
kind_platform="$kubeconfigs/platform.kubeconfig"
kind_consumer="$kubeconfigs/consumer.kubeconfig"
kind_internalca="$kubeconfigs/internalca.kubeconfig"
kind_externalca="$kubeconfigs/externalca.kubeconfig"
_setup() {
log "Setting up platform cluster"
kind::cluster platform "$kind_platform"
# Platform only needs the Migration and MigrationConfiguration CRDs but
# mcmanager currently requires all to be installed (see #132)
kubectl::apply "$kind_platform" \
./config/broker/crd/broker.platform-mesh.io_acceptapis.yaml \
./config/broker/crd/broker.platform-mesh.io_migrationconfigurations.yaml \
./config/broker/crd/broker.platform-mesh.io_migrations.yaml \
./config/example/crd/example.platform-mesh.io_certificates.yaml
log "Setting up provider internalca"
kind::cluster internalca "$kind_internalca"
helm::install::kro "$kind_internalca"
helm::install::certmanager "$kind_internalca"
kubectl::kustomize "$kind_internalca" "$example_dir/internalca"
kubectl::apply "$kind_internalca" "$example_dir/provider-rbac.yaml"
log "Setting up provider externalca"
kind::cluster externalca "$kind_externalca"
helm::install::kro "$kind_externalca"
helm::install::certmanager "$kind_externalca"
kubectl::kustomize "$kind_externalca" "$example_dir/externalca"
kubectl::apply "$kind_externalca" "$example_dir/provider-rbac.yaml"
log "Setting up consumer consumer"
kind::cluster consumer "$kind_consumer"
kubectl::kustomize "$kind_consumer" "$example_dir/consumer"
kubectl::apply "$kind_consumer" "$example_dir/consumer/broker-rbac.yaml"
}
_start_broker() {
log "Starting broker"
if [[ -z "$CI" ]]; then
make docker-build docker-build-operator || die "Failed to build docker images"
fi
make kind-load kind-load-operator KIND_CLUSTER=broker-platform \
|| die "Failed to load images into kind cluster"
make deploy-operator KUBECONFIG="$kind_platform" || die "Failed to deploy resource-broker-operator"
kubectl::kubeconfig::secret "$kind_platform" "$kind_platform" platform resource-broker-system broker-platform-control-plane:6443
local sa_consumer="$kubeconfigs/consumer-sa.kubeconfig"
kubectl::serviceaccount::kubeconfig "$kind_consumer" resource-broker default "$sa_consumer" broker-consumer-control-plane:6443
kubectl::kubeconfig::secret "$kind_platform" "$sa_consumer" consumer resource-broker-system
local sa_internalca="$kubeconfigs/internalca-sa.kubeconfig"
kubectl::serviceaccount::kubeconfig "$kind_internalca" resource-broker default "$sa_internalca" broker-internalca-control-plane:6443
kubectl::kubeconfig::secret "$kind_platform" "$sa_internalca" internalca resource-broker-system
local sa_externalca="$kubeconfigs/externalca-sa.kubeconfig"
kubectl::serviceaccount::kubeconfig "$kind_externalca" resource-broker default "$sa_externalca" broker-externalca-control-plane:6443
kubectl::kubeconfig::secret "$kind_platform" "$sa_externalca" externalca resource-broker-system
kubectl::kustomize "$kind_platform" "$example_dir/platform"
kubectl::wait "$kind_platform" broker/resource-broker resource-broker-system condition=Available
}
_stop_broker() {
kubectl --kubeconfig "$kind_platform" delete -n resource-broker-system broker/resource-broker
}
_cleanup() {
local consumer_cluster
consumer_cluster="consumer#$(kubectl --kubeconfig "$kind_consumer" config current-context)"
local hash
hash=$(echo -n "$consumer_cluster" | sha256sum | cut -c1-12)
local provider_cert="${hash}-cert-from-consumer"
kubectl::delete "$kind_consumer" \
certificates.example.platform-mesh.io/cert-from-consumer \
secret/cert-from-consumer
kubectl::delete "$kind_internalca" \
"certificates.example.platform-mesh.io/$provider_cert" \
"secret/$provider_cert"
kubectl::delete "$kind_externalca" \
"certificates.example.platform-mesh.io/$provider_cert" \
"secret/$provider_cert"
return 0
}
_ci() {
kubectl --kubeconfig "$kind_platform" logs -n resource-broker-system deployment/resource-broker-operator > resource-broker-operator.log
kubectl --kubeconfig "$kind_platform" logs -n resource-broker-system deployment/resource-broker > resource-broker.log
kubectl --kubeconfig "$kind_consumer" get certificates.example.platform-mesh.io -A -o yaml > consumer-certificates.yaml
kubectl --kubeconfig "$kind_internalca" logs deployment/cert-manager > internalca-cert-manager.log
kubectl --kubeconfig "$kind_internalca" get certificates.example.platform-mesh.io -A -o yaml > internalca-certificates.yaml
kubectl --kubeconfig "$kind_externalca" logs deployment/cert-manager > externalca-cert-manager.log
kubectl --kubeconfig "$kind_externalca" get certificates.example.platform-mesh.io -A -o yaml > externalca-certificates.yaml
}
case "$1" in
(setup) _setup ;;
(cleanup) _cleanup ;;
(start-broker) _start_broker ;;
(stop-broker) _stop_broker ;;
(ci) _ci;;
(*) die "Unknown command: $1" ;;
esac