Skip to content
This repository was archived by the owner on Apr 25, 2023. It is now read-only.

Commit c186056

Browse files
committed
build: Use KinD cluster for syncing up API resources in charts
1 parent 356ad5b commit c186056

File tree

8 files changed

+64
-69
lines changed

8 files changed

+64
-69
lines changed

charts/kubefed/templates/federatedtypeconfig.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ spec:
5858
apiVersion: core.kubefed.io/v1beta1
5959
kind: FederatedTypeConfig
6060
metadata:
61-
name: ingresses.extensions
61+
name: ingresses.networking.k8s.io
6262
spec:
6363
federatedType:
6464
group: types.kubefed.io
@@ -68,11 +68,11 @@ spec:
6868
version: v1beta1
6969
propagation: Enabled
7070
targetType:
71-
group: extensions
71+
group: networking.k8s.io
7272
kind: Ingress
7373
pluralName: ingresses
7474
scope: Namespaced
75-
version: v1beta1
75+
version: v1
7676
---
7777
apiVersion: core.kubefed.io/v1beta1
7878
kind: FederatedTypeConfig
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apiVersion: core.kubefed.io/v1beta1
22
kind: EnableTypeDirective
33
metadata:
4-
name: ingresses.extensions
4+
name: ingresses.networking.k8s.io

scripts/download-binaries.sh

+16-2
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,26 @@ go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
4747

4848
source <(setup-envtest use -p env 1.24.x)
4949

50-
echo "KUBEBUILDER_ASSETS is set to KUBEBUILDER_ASSETS"
50+
echo "KUBEBUILDER_ASSETS is set to ${KUBEBUILDER_ASSETS}"
5151

52-
helm_version="3.6.0"
52+
helm_version="3.9.2"
5353
helm_tgz="helm-v${helm_version}-${platform}-amd64.tar.gz"
5454
helm_url="https://get.helm.sh/$helm_tgz"
5555
curl "${curl_args}" "${helm_url}" \
5656
| tar xzP -C "${dest_dir}" --strip-components=1 "${platform}-amd64/helm"
5757

58+
kubectl_version="v1.23.4"
59+
curl -Lo "${dest_dir}/kubectl" "https://dl.k8s.io/release/${kubectl_version}/bin/${platform}/amd64/kubectl"
60+
(cd "${dest_dir}" && \
61+
echo "$(curl -L "https://dl.k8s.io/release/${kubectl_version}/bin/${platform}/amd64/kubectl.sha256") kubectl" | \
62+
sha256sum --check
63+
)
64+
chmod +x "${dest_dir}/kubectl"
65+
66+
kubebuilder_version="2.3.2"
67+
curl -L https://github.com/kubernetes-sigs/kubebuilder/releases/download/v${kubebuilder_version}/kubebuilder_${kubebuilder_version}_${platform}_amd64.tar.gz | \
68+
tar xzP -C "${dest_dir}" --strip-components=2 -- "kubebuilder_${kubebuilder_version}_${platform}_amd64/bin/kubebuilder"
69+
5870
golint_version="1.40.1"
5971
golint_dir="golangci-lint-${golint_version}-${platform}-amd64"
6072
golint_tgz="${golint_dir}.tar.gz"
@@ -75,3 +87,5 @@ echo -n "# kubebuilder: "; "${dest_dir}/kubebuilder" version
7587
echo -n "# helm: "; "${dest_dir}/helm" version --client --short
7688
echo -n "# golangci-lint: "; "${dest_dir}/golangci-lint" --version
7789
echo -n "# go-bindata: "; "${dest_dir}/go-bindata" -version
90+
91+
"${root_dir}/scripts/download-e2e-binaries.sh"

scripts/sync-up-helm-chart.sh

+5-35
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ source "$(dirname "${BASH_SOURCE}")/util.sh"
2222

2323
ROOT_DIR="$(cd "$(dirname "$0")/.." ; pwd)"
2424
WORKDIR=$(mktemp -d)
25+
trap-add 'rm -rf "${WORKDIR}"' EXIT
2526
NS="${KUBEFED_NAMESPACE:-kube-federation-system}"
2627
CHART_FEDERATED_PROPAGATION_DIR="${CHART_FEDERATED_PROPAGATION_DIR:-charts/kubefed}"
2728
TEMP_CRDS_YAML="/tmp/kubefed-crds.yaml"
@@ -36,13 +37,6 @@ if [ "${OS}" == "Darwin" ];then
3637
SED=gsed
3738
fi
3839

39-
# Check for existence of kube-apiserver and etcd binaries in bin directory
40-
if [[ ! -f ${ROOT_DIR}/bin/etcd || ! -f ${ROOT_DIR}/bin/kube-apiserver ]];
41-
then
42-
echo "Missing 'etcd' and/or 'kube-apiserver' binaries in bin directory. Call './scripts/download-binaries.sh' to download them first"
43-
exit 1
44-
fi
45-
4640
# Remove existing generated crds to ensure that stale content doesn't linger.
4741
rm -f ./config/crds/*.yaml
4842

@@ -59,38 +53,17 @@ done
5953

6054
mv ${TEMP_CRDS_YAML} ./charts/kubefed/charts/controllermanager/crds/crds.yaml
6155

62-
# Generate kubeconfig to access kube-apiserver. It is cleaned when script is done.
63-
cat <<EOF > ${WORKDIR}/kubeconfig
64-
apiVersion: v1
65-
clusters:
66-
- cluster:
67-
server: 127.0.0.1:8080
68-
name: development
69-
contexts:
70-
- context:
71-
cluster: development
72-
user: ""
73-
name: kubefed
74-
current-context: ""
75-
kind: Config
76-
preferences: {}
77-
users: []
78-
EOF
79-
80-
# Start kube-apiserver to generate CRDs
81-
${ROOT_DIR}/bin/etcd --data-dir ${WORKDIR} --log-output stdout > ${WORKDIR}/etcd.log 2>&1 &
82-
util::wait-for-condition 'etcd' "curl http://127.0.0.1:2379/version &> /dev/null" 30
83-
84-
${ROOT_DIR}/bin/kube-apiserver --etcd-servers=http://127.0.0.1:2379 --service-cluster-ip-range=10.0.0.0/16 --cert-dir=${WORKDIR} 2> ${WORKDIR}/kube-apiserver.log &
85-
util::wait-for-condition 'kube-apiserver' "kubectl --kubeconfig ${WORKDIR}/kubeconfig --context kubefed get --raw=/healthz &> /dev/null" 60
56+
declare -rx KUBECONFIG="${WORKDIR}/kubeconfig"
57+
kind create cluster --name=kubefed-dev
58+
trap-add 'kind delete cluster --name=kubefed-dev' EXIT
8659

8760
# Generate YAML templates to enable resource propagation for helm chart.
8861
echo -n > ${CHART_FEDERATED_PROPAGATION_DIR}/templates/federatedtypeconfig.yaml
8962
echo -n > ${CHART_FEDERATED_PROPAGATION_DIR}/crds/crds.yaml
9063
for filename in ./config/enabletypedirectives/*.yaml; do
9164
full_name=${CHART_FEDERATED_PROPAGATION_DIR}/templates/$(basename $filename)
9265

93-
./bin/kubefedctl --kubeconfig ${WORKDIR}/kubeconfig enable -f "${filename}" --kubefed-namespace="${NS}" --host-cluster-context kubefed -o yaml > ${full_name}
66+
./bin/kubefedctl --kubeconfig ${WORKDIR}/kubeconfig enable -f "${filename}" --kubefed-namespace="${NS}" -o yaml > ${full_name}
9467
$SED -n '/^---/,/^---/p' ${full_name} >> ${CHART_FEDERATED_PROPAGATION_DIR}/templates/federatedtypeconfig.yaml
9568
$SED -i '$d' ${CHART_FEDERATED_PROPAGATION_DIR}/templates/federatedtypeconfig.yaml
9669

@@ -101,7 +74,4 @@ for filename in ./config/enabletypedirectives/*.yaml; do
10174
done
10275

10376
# Clean kube-apiserver daemons and temporary files
104-
kill %1 # etcd
105-
kill %2 # kube-apiserver
106-
rm -fr ${WORKDIR}
10777
echo "Helm chart synced successfully"

scripts/util.sh

+7
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,10 @@ function check-command-installed() {
119119
exit 1
120120
}
121121
}
122+
123+
trap-add() {
124+
local sig="${2:?Signal required}"
125+
hdls="$(trap -p "${sig}" | cut -f2 -d \')"
126+
# shellcheck disable=SC2064 # Quotes are required here to properly expand when adding the new trap.
127+
trap "${hdls}${hdls:+;}${1:?Handler required}" "${sig}"
128+
}

test/common/bindata.go

+24-22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/common/fixtures/ingresses.extensions.yaml

-6
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
kind: fixture
2+
template:
3+
spec:
4+
defaultBackend:
5+
service:
6+
name: testsvc
7+
port:
8+
number: 80

0 commit comments

Comments
 (0)