|
2 | 2 |
|
3 | 3 | K8S_NAMESPACE="${K8S_NAMESPACE:-istio-system}" |
4 | 4 | CERT_MANAGER_VERSION="${CERT_MANAGER_VERSION:-1.4.0}" |
5 | | -ISTIO_AGENT_IMAGE="${CERT_MANAGER_ISTIO_AGENT_IMAGE:-localhost:5000/cert-manager-istio-csr:v0.2.0}" |
| 5 | +ISTIO_AGENT_IMAGE="${CERT_MANAGER_ISTIO_AGENT_IMAGE:-quay.io/jetstack/cert-manager-istio-csr:canary}" |
6 | 6 | KUBECTL_BIN="${KUBECTL_BIN:-./bin/kubectl}" |
7 | 7 | HELM_BIN="${HELM_BIN:-./bin/helm}" |
8 | 8 | KIND_BIN="${KIND_BIN:-./bin/kind}" |
9 | 9 |
|
10 | | -./hack/demo/kind-with-registry.sh $1 |
11 | | - |
12 | | -echo ">> docker build -t ${ISTIO_AGENT_IMAGE} ." |
13 | | -docker build -t ${ISTIO_AGENT_IMAGE} . |
14 | | - |
15 | | -echo ">> docker push ${ISTIO_AGENT_IMAGE}" |
16 | | -docker push $ISTIO_AGENT_IMAGE |
17 | | - |
18 | | -apply_cert-manager_bootstrap_manifests() { |
19 | | - $KUBECTL_BIN apply -n $K8S_NAMESPACE -f ./hack/demo/cert-manager-bootstrap-resources.yaml |
20 | | - return $? |
21 | | -} |
| 10 | +echo ">> building istio-csr binary..." |
| 11 | +GOARCH=$(go env GOARCH) GOOS=linux CGO_ENABLED=0 go build -o ./bin/istio-csr-linux ./cmd/. |
| 12 | + |
| 13 | +echo ">> building docker image..." |
| 14 | +docker build -t $ISTIO_AGENT_IMAGE . |
| 15 | + |
| 16 | +echo ">> creating kind cluster..." |
| 17 | +$KIND_BIN delete cluster --name istio-demo |
| 18 | +cat <<EOF | $KIND_BIN create cluster --name istio-demo --config=- |
| 19 | +apiVersion: kind.x-k8s.io/v1alpha4 |
| 20 | +kind: Cluster |
| 21 | +nodes: |
| 22 | +- role: control-plane |
| 23 | + extraPortMappings: |
| 24 | + - containerPort: 30443 |
| 25 | + hostPort: 30443 |
| 26 | + listenAddress: "0.0.0.0" |
| 27 | + protocol: tcp |
| 28 | +kubeadmConfigPatches: |
| 29 | + - | |
| 30 | + # config generated by kind |
| 31 | + apiVersion: kubeadm.k8s.io/v1beta2 |
| 32 | + kind: ClusterConfiguration |
| 33 | + metadata: |
| 34 | + name: config |
| 35 | + networking: |
| 36 | + serviceSubnet: 10.0.0.0/16 |
| 37 | +EOF |
22 | 38 |
|
23 | | -echo ">> loading demo container images into kind" |
24 | | -IMAGES=("quay.io/joshvanl_jetstack/httpbin:latest" "quay.io/joshvanl_jetstack/curl") |
25 | | -IMAGES+=("gcr.io/istio-release/pilot:$2" "gcr.io/istio-release/proxyv2:$2") |
26 | | -for image in ${IMAGES[@]}; do |
27 | | - docker pull $image |
28 | | - $KIND_BIN load docker-image $image --name istio-demo |
29 | | -done |
| 39 | +echo ">> loading docker image..." |
| 40 | +$KIND_BIN load docker-image $ISTIO_AGENT_IMAGE --name istio-demo |
30 | 41 |
|
31 | 42 | echo ">> installing cert-manager" |
32 | | -$KUBECTL_BIN apply -f https://github.com/jetstack/cert-manager/releases/download/v$CERT_MANAGER_VERSION/cert-manager.yaml |
33 | | - |
34 | | -$KUBECTL_BIN rollout status deploy -n cert-manager cert-manager |
35 | | -$KUBECTL_BIN rollout status deploy -n cert-manager cert-manager-cainjector |
36 | | -$KUBECTL_BIN rollout status deploy -n cert-manager cert-manager-webhook |
37 | | - |
| 43 | +$HELM_BIN repo add jetstack https://charts.jetstack.io --force-update |
| 44 | +$HELM_BIN upgrade -i -n cert-manager cert-manager jetstack/cert-manager --set installCRDs=true --wait --create-namespace --set global.logLevel=2 |
38 | 45 |
|
39 | 46 | echo ">> creating cert-manager istio resources" |
40 | | - |
41 | 47 | $KUBECTL_BIN create namespace $K8S_NAMESPACE |
42 | | - |
43 | | -max=15 |
44 | | - |
45 | | -for x in $(seq 1 $max); do |
46 | | - apply_cert-manager_bootstrap_manifests |
47 | | - res=$? |
48 | | - |
49 | | - if [ $res -eq 0 ]; then |
50 | | - break |
51 | | - fi |
52 | | - |
53 | | - echo ">> [${x}] cert-manager not ready" && sleep 5 |
54 | | - |
55 | | - if [ x -eq 15 ]; then |
56 | | - echo ">> Failed to deploy cert-manager and bootstrap manifests in time" |
57 | | - exit 1 |
58 | | - fi |
59 | | -done |
| 48 | +$KUBECTL_BIN apply -n $K8S_NAMESPACE -f ./hack/demo/cert-manager-bootstrap-resources.yaml |
60 | 49 |
|
61 | 50 | echo ">> installing cert-manager-istio-csr" |
62 | | - |
63 | 51 | $HELM_BIN install cert-manager-istio-csr ./deploy/charts/istio-csr -n cert-manager --values ./hack/demo/istio-csr-values.yaml |
64 | 52 |
|
65 | 53 | echo ">> installing istio" |
66 | | - |
67 | 54 | ./bin/istioctl-$2 install -y -f ./hack/istio-config-$2.yaml |
68 | 55 |
|
69 | 56 | echo ">> enforcing mTLS everywhere" |
70 | | - |
71 | 57 | $KUBECTL_BIN apply -n istio-system -f - <<EOF |
72 | 58 | apiVersion: "security.istio.io/v1beta1" |
73 | 59 | kind: "PeerAuthentication" |
|
0 commit comments