mirror of
https://github.com/external-secrets/external-secrets.git
synced 2024-12-14 11:57:59 +00:00
feat: add kustomization file to config/crds/bases folder (#1274)
* fix: add kustomization file to crds folder This will allow for the CRDs to be installed into a Kubernetes cluster from a Kustomization, for example: ```yaml --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - github.com/external-secrets/external-secrets//config/crds/bases?ref=v0.5.6 ``` * fix: generate script * fix: helm.generate Co-authored-by: Moritz Johner <beller.moritz@googlemail.com>
This commit is contained in:
parent
fdf1f9ce6f
commit
1da44c7fb0
4 changed files with 76 additions and 34 deletions
36
Makefile
36
Makefile
|
@ -145,15 +145,7 @@ fmt: lint.check ## Ensure consistent code style
|
|||
@$(OK) Ensured consistent code style
|
||||
|
||||
generate: ## Generate code and crds
|
||||
@go run sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
|
||||
@go run sigs.k8s.io/controller-tools/cmd/controller-gen crd paths="./..." output:crd:artifacts:config=$(CRD_DIR)/bases
|
||||
# Remove extra header lines in generated CRDs
|
||||
@for i in $(CRD_DIR)/bases/*.yaml; do \
|
||||
tail -n +2 <"$$i" >"$$i.bkp" && \
|
||||
cp "$$i.bkp" "$$i" && \
|
||||
rm "$$i.bkp"; \
|
||||
done
|
||||
@yq e '.spec.conversion.strategy = "Webhook" | .spec.conversion.webhook.conversionReviewVersions = ["v1"] | .spec.conversion.webhook.clientConfig.service.name = "kubernetes" | .spec.conversion.webhook.clientConfig.service.namespace = "default" | .spec.conversion.webhook.clientConfig.service.path = "/convert"' $(CRD_DIR)/bases/* > $(BUNDLE_DIR)/bundle.yaml
|
||||
@./hack/crd.generate.sh $(BUNDLE_DIR) $(CRD_DIR)
|
||||
@$(OK) Finished generating deepcopy and crds
|
||||
|
||||
# ====================================================================================
|
||||
|
@ -190,31 +182,7 @@ helm.build: helm.generate ## Build helm chart
|
|||
@$(OK) helm package
|
||||
|
||||
helm.generate:
|
||||
# Split the generated bundle yaml file to inject control flags
|
||||
@for i in $(BUNDLE_DIR)/*.yaml; do \
|
||||
yq e -Ns '"$(HELM_DIR)/templates/crds/" + .spec.names.singular' "$$i"; \
|
||||
done
|
||||
# Add helm if statement for controlling the install of CRDs
|
||||
@for i in $(HELM_DIR)/templates/crds/*.yml; do \
|
||||
export CRDS_FLAG_NAME="create$$(yq e '.spec.names.kind' $$i)"; \
|
||||
cp "$$i" "$$i.bkp"; \
|
||||
if [[ "$$CRDS_FLAG_NAME" == *"Cluster"* ]]; then \
|
||||
echo "{{- if and (.Values.installCRDs) (.Values.crds.$$CRDS_FLAG_NAME) }}" > "$$i"; \
|
||||
else \
|
||||
echo "{{- if .Values.installCRDs }}" > "$$i"; \
|
||||
fi; \
|
||||
cat "$$i.bkp" >> "$$i" && \
|
||||
echo "{{- end }}" >> "$$i" && \
|
||||
rm "$$i.bkp" && \
|
||||
if [[ "$$OSTYPE" == "darwin"* ]]; then \
|
||||
SEDPRG="gsed"; \
|
||||
else \
|
||||
SEDPRG="sed"; \
|
||||
fi; \
|
||||
$$SEDPRG -i 's/name: kubernetes/name: {{ include "external-secrets.fullname" . }}-webhook/g' "$$i" && \
|
||||
$$SEDPRG -i 's/namespace: default/namespace: {{ .Release.Namespace | quote }}/g' "$$i" && \
|
||||
mv "$$i" "$${i%.yml}.yaml"; \
|
||||
done
|
||||
./hack/helm.generate.sh $(BUNDLE_DIR) $(HELM_DIR)
|
||||
@$(OK) Finished generating helm chart files
|
||||
|
||||
# ====================================================================================
|
||||
|
|
8
config/crds/bases/kustomization.yaml
Normal file
8
config/crds/bases/kustomization.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- external-secrets.io_clusterexternalsecrets.yaml
|
||||
- external-secrets.io_clustersecretstores.yaml
|
||||
- external-secrets.io_externalsecrets.yaml
|
||||
- external-secrets.io_secretstores.yaml
|
33
hack/crd.generate.sh
Executable file
33
hack/crd.generate.sh
Executable file
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
BUNDLE_DIR="${1}"
|
||||
CRD_DIR="${2}"
|
||||
BUNDLE_YAML="${BUNDLE_DIR}/bundle.yaml"
|
||||
|
||||
cd "${SCRIPT_DIR}"/../
|
||||
|
||||
go run sigs.k8s.io/controller-tools/cmd/controller-gen \
|
||||
object:headerFile="hack/boilerplate.go.txt" \
|
||||
paths="./..."
|
||||
go run sigs.k8s.io/controller-tools/cmd/controller-gen crd \
|
||||
paths="./..." \
|
||||
output:crd:artifacts:config="${CRD_DIR}/bases"
|
||||
|
||||
# Remove extra header lines in generated CRDs
|
||||
# This is needed for building the helm chart
|
||||
for f in "${CRD_DIR}"/bases/*.yaml; do
|
||||
if [[ $f == *kustomization.yaml ]];
|
||||
then
|
||||
continue;
|
||||
fi;
|
||||
tail -n +2 < "$f" > "$f.bkp"
|
||||
cp "$f.bkp" "$f"
|
||||
rm "$f.bkp"
|
||||
done
|
||||
|
||||
shopt -s extglob
|
||||
yq e \
|
||||
'.spec.conversion.strategy = "Webhook" | .spec.conversion.webhook.conversionReviewVersions = ["v1"] | .spec.conversion.webhook.clientConfig.service.name = "kubernetes" | .spec.conversion.webhook.clientConfig.service.namespace = "default" | .spec.conversion.webhook.clientConfig.service.path = "/convert"' \
|
||||
"${CRD_DIR}"/bases/!(kustomization).yaml > "${BUNDLE_YAML}"
|
33
hack/helm.generate.sh
Executable file
33
hack/helm.generate.sh
Executable file
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
BUNDLE_DIR="${1}"
|
||||
HELM_DIR="${2}"
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
SEDPRG="gsed"
|
||||
else
|
||||
SEDPRG="sed"
|
||||
fi
|
||||
|
||||
cd "${SCRIPT_DIR}"/../
|
||||
|
||||
# Split the generated bundle yaml file to inject control flags
|
||||
yq e -Ns "\"${HELM_DIR}/templates/crds/\" + .spec.names.singular" ${BUNDLE_DIR}/bundle.yaml
|
||||
|
||||
# Add helm if statement for controlling the install of CRDs
|
||||
for i in "${HELM_DIR}"/templates/crds/*.yml; do
|
||||
export CRDS_FLAG_NAME="create$(yq e '.spec.names.kind' $i)"
|
||||
cp "$i" "$i.bkp"
|
||||
if [[ "$CRDS_FLAG_NAME" == *"Cluster"* ]]; then
|
||||
echo "{{- if and (.Values.installCRDs) (.Values.crds.$CRDS_FLAG_NAME) }}" > "$i"
|
||||
else
|
||||
echo "{{- if .Values.installCRDs }}" > "$i"
|
||||
fi
|
||||
cat "$i.bkp" >> "$i"
|
||||
echo "{{- end }}" >> "$i"
|
||||
rm "$i.bkp"
|
||||
$SEDPRG -i 's/name: kubernetes/name: {{ include "external-secrets.fullname" . }}-webhook/g' "$i"
|
||||
$SEDPRG -i 's/namespace: default/namespace: {{ .Release.Namespace | quote }}/g' "$i"
|
||||
mv "$i" "${i%.yml}.yaml"
|
||||
done
|
Loading…
Reference in a new issue