Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ GO_CMD_LOCAL_FLAGS=-modfile=go.local.mod $(GO_CMD_FLAGS)

.PHONY: all local-build-ack-generate build-ack-generate local-build-controller \
build-controller test local-test build-controller-image \
local-build-controller-image
local-build-controller-image lint

all: test

Expand Down Expand Up @@ -58,6 +58,9 @@ test: ## Run code tests
local-test: ## Run code tests using the local go.mod
go test ${GO_CMD_LOCAL_FLAGS} ./...

lint-shell: ## Run linters against all of the bash scripts
@find . -type f -name "*.sh" | xargs shellcheck -e SC1091

help: ## Show this help.
@grep -F -h "##" $(MAKEFILE_LIST) | grep -F -v grep | sed -e 's/\\$$//' \
| awk -F'[:#]' '{print $$1 = sprintf("%-30s", $$1), $$4}'
18 changes: 8 additions & 10 deletions scripts/build-controller-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ QUIET=${QUIET:-"false"}

export DOCKER_BUILDKIT=${DOCKER_BUILDKIT:-1}

source $SCRIPTS_DIR/lib/common.sh
source "$SCRIPTS_DIR/lib/common.sh"

check_is_installed docker

Expand Down Expand Up @@ -59,10 +59,10 @@ if [[ ! -d $SERVICE_CONTROLLER_SOURCE_PATH ]]; then
exit 1
fi

pushd $SERVICE_CONTROLLER_SOURCE_PATH 1>/dev/null
pushd "$SERVICE_CONTROLLER_SOURCE_PATH" 1>/dev/null

SERVICE_CONTROLLER_GIT_VERSION=`git describe --tags --always --dirty || echo "unknown"`
SERVICE_CONTROLLER_GIT_COMMIT=`git rev-parse HEAD`
SERVICE_CONTROLLER_GIT_VERSION=$(git describe --tags --always --dirty || echo "unknown")
SERVICE_CONTROLLER_GIT_COMMIT=$(git rev-parse HEAD)

popd 1>/dev/null

Expand All @@ -86,16 +86,14 @@ if [[ "$LOCAL_MODULES" = "true" ]]; then
DOCKERFILE="${ROOT_DIR}"/Dockerfile.local
fi

docker build \
--quiet=${QUIET} \
if ! docker build \
--quiet="${QUIET}" \
-t "${AWS_SERVICE_DOCKER_IMG}" \
-f "${DOCKERFILE}" \
--build-arg service_alias=${AWS_SERVICE} \
--build-arg service_alias="${AWS_SERVICE}" \
--build-arg service_controller_git_version="$SERVICE_CONTROLLER_GIT_VERSION" \
--build-arg service_controller_git_commit="$SERVICE_CONTROLLER_GIT_COMMIT" \
--build-arg build_date="$BUILD_DATE" \
"${DOCKER_BUILD_CONTEXT}"

if [ $? -ne 0 ]; then
"${DOCKER_BUILD_CONTEXT}"; then
exit 2
fi
62 changes: 30 additions & 32 deletions scripts/build-controller-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ set -eo pipefail

SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
ROOT_DIR="$SCRIPTS_DIR/.."
BIN_DIR="$ROOT_DIR/bin"
ACK_GENERATE_OLM=${ACK_GENERATE_OLM:-"false"}

source "$SCRIPTS_DIR/lib/common.sh"
Expand All @@ -20,13 +19,13 @@ if [[ $ACK_GENERATE_OLM == "true" ]]; then
fi

if ! k8s_controller_gen_version_equals "$CONTROLLER_TOOLS_VERSION"; then
echo "FATAL: Existing version of controller-gen "`controller-gen --version`", required version is $CONTROLLER_TOOLS_VERSION."
echo "FATAL: Existing version of controller-gen \"$(controller-gen --version)\", required version is $CONTROLLER_TOOLS_VERSION."
echo "FATAL: Please uninstall controller-gen and install the required version with scripts/install-controller-gen.sh."
exit 1
fi

if ! helm_version_equals_or_greater "$HELM_VERSION"; then
echo "FATAL: Existing version of helm "`helm version --template='Version: {{.Version}}'`", required version is $HELM_VERSION."
echo "FATAL: Existing version of helm \"$(helm version --template='Version: {{.Version}}')\", required version is $HELM_VERSION."
echo "FATAL: Please update helm, or uninstall helm and install the required version with scripts/install-helm.sh."
exit 1
fi
Expand Down Expand Up @@ -103,7 +102,7 @@ if [ $# -ne 1 ]; then
exit 1
fi

if [ ! -f $ACK_GENERATE_BIN_PATH ]; then
if [ ! -f "$ACK_GENERATE_BIN_PATH" ]; then
if is_installed "ack-generate"; then
ACK_GENERATE_BIN_PATH=$(which "ack-generate")
else
Expand Down Expand Up @@ -153,11 +152,11 @@ fi
# default non-release value also helps AWS service teams to develop the
# controller without worrying about the version until actual controller
# release.
pushd $SERVICE_CONTROLLER_SOURCE_PATH 1>/dev/null
RELEASE_VERSION=${RELEASE_VERSION:-`git describe --tags --abbrev=0 2>/dev/null || echo $NON_RELEASE_VERSION`}
pushd "$SERVICE_CONTROLLER_SOURCE_PATH" 1>/dev/null
RELEASE_VERSION=${RELEASE_VERSION:-$(git describe --tags --abbrev=0 2>/dev/null || echo $NON_RELEASE_VERSION)}
popd 1>/dev/null

if [[ $RELEASE_VERSION != $NON_RELEASE_VERSION ]]; then
if [[ $RELEASE_VERSION != "$NON_RELEASE_VERSION" ]]; then
# validate that release version is in the format vx.y.z , where x,y,z are
# positive real numbers
if ! (echo "$RELEASE_VERSION" | grep -Eq "^v[0-9]+\.[0-9]+\.[0-9]+$"); then
Expand All @@ -167,7 +166,7 @@ if [[ $RELEASE_VERSION != $NON_RELEASE_VERSION ]]; then
fi

if [ -z "$AWS_SDK_GO_VERSION" ]; then
AWS_SDK_GO_VERSION=$(go list -m -f '{{ .Version }}' -modfile $SERVICE_CONTROLLER_SOURCE_PATH/go.mod github.com/aws/aws-sdk-go)
AWS_SDK_GO_VERSION=$(go list -m -f '{{ .Version }}' -modfile "$SERVICE_CONTROLLER_SOURCE_PATH/go.mod" github.com/aws/aws-sdk-go)
fi

# If there's a generator.yaml in the service's directory and the caller hasn't
Expand All @@ -187,60 +186,60 @@ if [ -z "$ACK_METADATA_CONFIG_PATH" ]; then
fi

helm_output_dir="$SERVICE_CONTROLLER_SOURCE_PATH/helm"
ag_args="$SERVICE $RELEASE_VERSION -o $SERVICE_CONTROLLER_SOURCE_PATH --template-dirs $TEMPLATES_DIR --aws-sdk-go-version $AWS_SDK_GO_VERSION"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Funny, my shellcheck didn't make this suggestion (replacing this string with an array). Curious what command line you used?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was actually L211 where it complained about this. Because we are trying to expand a string to use as CLI args, it suggested we use an array of strings rather.

ag_args=("$SERVICE" "$RELEASE_VERSION" -o "$SERVICE_CONTROLLER_SOURCE_PATH" --template-dirs "$TEMPLATES_DIR" --aws-sdk-go-version "$AWS_SDK_GO_VERSION")
if [ -n "$ACK_GENERATE_CACHE_DIR" ]; then
ag_args="$ag_args --cache-dir $ACK_GENERATE_CACHE_DIR"
ag_args=("${ag_args[@]}" --cache-dir "$ACK_GENERATE_CACHE_DIR")
fi
if [ -n "$ACK_GENERATE_OUTPUT_PATH" ]; then
ag_args="$ag_args --output $ACK_GENERATE_OUTPUT_PATH"
ag_args=("${ag_args[@]}" --output "$ACK_GENERATE_OUTPUT_PATH")
helm_output_dir="$ACK_GENERATE_OUTPUT_PATH/helm"
fi
if [ -n "$ACK_GENERATE_CONFIG_PATH" ]; then
ag_args="$ag_args --generator-config-path $ACK_GENERATE_CONFIG_PATH"
ag_args=("${ag_args[@]}" --generator-config-path "$ACK_GENERATE_CONFIG_PATH")
fi
if [ -n "$ACK_METADATA_CONFIG_PATH" ]; then
ag_args="$ag_args --metadata-config-path $ACK_METADATA_CONFIG_PATH"
ag_args=("${ag_args[@]}" --metadata-config-path "$ACK_METADATA_CONFIG_PATH")
fi
if [ -n "$ACK_GENERATE_IMAGE_REPOSITORY" ]; then
ag_args="$ag_args --image-repository $ACK_GENERATE_IMAGE_REPOSITORY"
ag_args=("${ag_args[@]}" --image-repository "$ACK_GENERATE_IMAGE_REPOSITORY")
fi
if [ -n "$ACK_GENERATE_SERVICE_ACCOUNT_NAME" ]; then
ag_args="$ag_args --service-account-name $ACK_GENERATE_SERVICE_ACCOUNT_NAME"
ag_args=("${ag_args[@]}" --service-account-name "$ACK_GENERATE_SERVICE_ACCOUNT_NAME")
fi

echo "Building release artifacts for $SERVICE-$RELEASE_VERSION"
$ACK_GENERATE_BIN_PATH release $ag_args
$ACK_GENERATE_BIN_PATH release "${ag_args[@]}"

pushd $RUNTIME_DIR/apis/core/$RUNTIME_API_VERSION 1>/dev/null
pushd "$RUNTIME_DIR/apis/core/$RUNTIME_API_VERSION" 1>/dev/null

echo "Generating common custom resource definitions"
controller-gen crd:allowDangerousTypes=true paths=./... output:crd:artifacts:config=$helm_output_dir/crds
controller-gen crd:allowDangerousTypes=true paths=./... output:crd:artifacts:config="$helm_output_dir/crds"

popd 1>/dev/null

pushd $SERVICE_CONTROLLER_SOURCE_PATH/apis/$ACK_GENERATE_API_VERSION 1>/dev/null
pushd "$SERVICE_CONTROLLER_SOURCE_PATH/apis/$ACK_GENERATE_API_VERSION" 1>/dev/null

echo "Generating custom resource definitions for $SERVICE"
controller-gen crd:allowDangerousTypes=true paths=./... output:crd:artifacts:config=$helm_output_dir/crds
controller-gen crd:allowDangerousTypes=true paths=./... output:crd:artifacts:config="$helm_output_dir/crds"

popd 1>/dev/null

pushd $SERVICE_CONTROLLER_SOURCE_PATH/pkg/resource 1>/dev/null
pushd "$SERVICE_CONTROLLER_SOURCE_PATH/pkg/resource" 1>/dev/null

echo "Generating RBAC manifests for $SERVICE"
controller-gen rbac:roleName=$K8S_RBAC_ROLE_NAME paths=./... output:rbac:artifacts:config=$helm_output_dir/templates
controller-gen rbac:roleName="$K8S_RBAC_ROLE_NAME" paths=./... output:rbac:artifacts:config="$helm_output_dir/templates"
# controller-gen rbac outputs a ClusterRole definition in a
# $config_output_dir/rbac/role.yaml file. We additionally add the ability by
# for the user to specify if they want the role to be ClusterRole or Role by specifying installation scope
# in the helm values.yaml. We do this by having a custom helm template named _controller-role-kind-patch.yaml
# which utilizes the template langauge and adding the auto generated rules to that template.
tail -n +7 $helm_output_dir/templates/role.yaml >> $helm_output_dir/templates/_controller-role-kind-patch.yaml
tail -n +7 "$helm_output_dir/templates/role.yaml" >> "$helm_output_dir/templates/_controller-role-kind-patch.yaml"

# We have some other standard Role files for a reader and writer role, so here we rename
# the `_controller-role-kind-patch.yaml ` file to `cluster-role-controller.yaml`
# to better reflect what is in that file.
mv $helm_output_dir/templates/_controller-role-kind-patch.yaml $helm_output_dir/templates/cluster-role-controller.yaml
rm $helm_output_dir/templates/role.yaml
mv "$helm_output_dir/templates/_controller-role-kind-patch.yaml" "$helm_output_dir/templates/cluster-role-controller.yaml"
rm "$helm_output_dir/templates/role.yaml"

popd 1>/dev/null

Expand All @@ -250,19 +249,18 @@ if [[ $ACK_GENERATE_OLM == "true" ]]; then
DEFAULT_ACK_GENERATE_OLMCONFIG_PATH="$SERVICE_CONTROLLER_SOURCE_PATH/olm/olmconfig.yaml"
ACK_GENERATE_OLMCONFIG_PATH=${ACK_GENERATE_OLMCONFIG_PATH:-$DEFAULT_ACK_GENERATE_OLMCONFIG_PATH}

ag_olm_args="$SERVICE $RELEASE_VERSION -o $SERVICE_CONTROLLER_SOURCE_PATH --template-dirs $TEMPLATES_DIR --olm-config $ACK_GENERATE_OLMCONFIG_PATH --aws-sdk-go-version $AWS_SDK_GO_VERSION"
ag_olm_args=("$SERVICE" "$RELEASE_VERSION" -o "$SERVICE_CONTROLLER_SOURCE_PATH" --template-dirs "$TEMPLATES_DIR" --olm-config "$ACK_GENERATE_OLMCONFIG_PATH" --aws-sdk-go-version "$AWS_SDK_GO_VERSION")

if [ -n "$ACK_GENERATE_CONFIG_PATH" ]; then
ag_olm_args="$ag_olm_args --generator-config-path $ACK_GENERATE_CONFIG_PATH"
ag_olm_args=("${ag_olm_args[@]}" --generator-config-path "$ACK_GENERATE_CONFIG_PATH")
fi
if [ -n "$ACK_GENERATE_IMAGE_REPOSITORY" ]; then
ag_olm_args="$ag_olm_args --image-repository $ACK_GENERATE_IMAGE_REPOSITORY"
ag_olm_args=("${ag_olm_args[@]}" --image-repository "$ACK_GENERATE_IMAGE_REPOSITORY")
fi
if [ -n "$ACK_METADATA_CONFIG_PATH" ]; then
ag_olm_args="$ag_olm_args --metadata-config-path $ACK_METADATA_CONFIG_PATH"
ag_olm_args=("${ag_olm_args[@]}" --metadata-config-path "$ACK_METADATA_CONFIG_PATH")
fi

$ACK_GENERATE_BIN_PATH olm $ag_olm_args
$SCRIPTS_DIR/olm-create-bundle.sh "$SERVICE" "$RELEASE_VERSION"

$ACK_GENERATE_BIN_PATH olm "${ag_olm_args[@]}"
"$SCRIPTS_DIR"/olm-create-bundle.sh "$SERVICE" "$RELEASE_VERSION"
fi
62 changes: 30 additions & 32 deletions scripts/build-controller.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@ set -eo pipefail

SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
ROOT_DIR="$SCRIPTS_DIR/.."
BIN_DIR="$ROOT_DIR/bin"

source "$SCRIPTS_DIR/lib/common.sh"

check_is_installed controller-gen "You can install controller-gen with the helper scripts/install-controller-gen.sh"

if ! k8s_controller_gen_version_equals "$CONTROLLER_TOOLS_VERSION"; then
echo "FATAL: Existing version of controller-gen "`controller-gen --version`", required version is $CONTROLLER_TOOLS_VERSION."
echo "FATAL: Existing version of controller-gen \"$(controller-gen --version)\", required version is $CONTROLLER_TOOLS_VERSION."
echo "FATAL: Please uninstall controller-gen and install the required version with scripts/install-controller-gen.sh."
exit 1
fi
Expand Down Expand Up @@ -63,8 +62,9 @@ Environment variables:
AWS_SDK_GO_VERSION: Overrides the version of github.com/aws/aws-sdk-go used
by 'ack-generate' to fetch the service API Specifications.
Default: Version of aws/aws-sdk-go in service go.mod
TEMPLATES_DIR: Overrides the directory containg ack-generate templates
Default: $TEMPLATES_DIR
TEMPLATE_DIRS: Overrides the list of directories containg ack-generate
templates.
Default: $TEMPLATE_DIRS
K8S_RBAC_ROLE_NAME: Name of the Kubernetes Role to use when generating
the RBAC manifests for the custom resource
definitions.
Expand All @@ -77,7 +77,7 @@ if [ $# -ne 1 ]; then
exit 1
fi

if [ ! -f $ACK_GENERATE_BIN_PATH ]; then
if [ ! -f "$ACK_GENERATE_BIN_PATH" ]; then
if is_installed "ack-generate"; then
ACK_GENERATE_BIN_PATH=$(which "ack-generate")
else
Expand Down Expand Up @@ -130,11 +130,11 @@ TEMPLATE_DIRS=${TEMPLATE_DIRS:-$DEFAULT_TEMPLATE_DIRS}
config_output_dir="$SERVICE_CONTROLLER_SOURCE_PATH/config/"

echo "Copying common custom resource definitions into $SERVICE"
mkdir -p $config_output_dir/crd/common
cp -r $RUNTIME_CRD_DIR/crd/* $config_output_dir/crd/common/
mkdir -p "$config_output_dir/crd/common"
cp -r "$RUNTIME_CRD_DIR"/crd/* "$config_output_dir/crd/common/"

if [ -z "$AWS_SDK_GO_VERSION" ]; then
AWS_SDK_GO_VERSION=$(go list -m -f '{{ .Version }}' -modfile $SERVICE_CONTROLLER_SOURCE_PATH/go.mod github.com/aws/aws-sdk-go)
AWS_SDK_GO_VERSION=$(go list -m -f '{{ .Version }}' -modfile "$SERVICE_CONTROLLER_SOURCE_PATH/go.mod" github.com/aws/aws-sdk-go)
fi

# If there's a generator.yaml in the service's directory and the caller hasn't
Expand All @@ -153,75 +153,73 @@ if [ -z "$ACK_METADATA_CONFIG_PATH" ]; then
fi
fi

ag_args="$SERVICE -o $SERVICE_CONTROLLER_SOURCE_PATH --template-dirs $TEMPLATE_DIRS"
ag_args=("$SERVICE" -o "$SERVICE_CONTROLLER_SOURCE_PATH" --template-dirs "$TEMPLATE_DIRS")
if [ -n "$ACK_GENERATE_CACHE_DIR" ]; then
ag_args="$ag_args --cache-dir $ACK_GENERATE_CACHE_DIR"
ag_args=("${ag_args[@]}" --cache-dir "$ACK_GENERATE_CACHE_DIR")
fi

apis_args="apis $ag_args"
apis_args=(apis "${ag_args[@]}")
if [ -n "$ACK_GENERATE_API_VERSION" ]; then
apis_args="$apis_args --version $ACK_GENERATE_API_VERSION"
apis_args=("${apis_args[@]}" --version "$ACK_GENERATE_API_VERSION")
fi

if [ -n "$ACK_GENERATE_CONFIG_PATH" ]; then
ag_args="$ag_args --generator-config-path $ACK_GENERATE_CONFIG_PATH"
apis_args="$apis_args --generator-config-path $ACK_GENERATE_CONFIG_PATH"
ag_args=("${ag_args[@]}" --generator-config-path "$ACK_GENERATE_CONFIG_PATH")
apis_args=("${apis_args[@]}" --generator-config-path "$ACK_GENERATE_CONFIG_PATH")
fi

if [ -n "$ACK_METADATA_CONFIG_PATH" ]; then
ag_args="$ag_args --metadata-config-path $ACK_METADATA_CONFIG_PATH"
apis_args="$apis_args --metadata-config-path $ACK_METADATA_CONFIG_PATH"
ag_args=("${ag_args[@]}" --metadata-config-path "$ACK_METADATA_CONFIG_PATH")
apis_args=("${apis_args[@]}" --metadata-config-path "$ACK_METADATA_CONFIG_PATH")
fi

if [ -n "$AWS_SDK_GO_VERSION" ]; then
ag_args="$ag_args --aws-sdk-go-version $AWS_SDK_GO_VERSION"
apis_args="$apis_args --aws-sdk-go-version $AWS_SDK_GO_VERSION"
ag_args=("${ag_args[@]}" --aws-sdk-go-version "$AWS_SDK_GO_VERSION")
apis_args=("${apis_args[@]}" --aws-sdk-go-version "$AWS_SDK_GO_VERSION")
fi

if [ -n "$ACK_GENERATE_SERVICE_ACCOUNT_NAME" ]; then
ag_args="$ag_args --service-account-name $ACK_GENERATE_SERVICE_ACCOUNT_NAME"
ag_args=("${ag_args[@]}" --service-account-name "$ACK_GENERATE_SERVICE_ACCOUNT_NAME")
fi

echo "Building Kubernetes API objects for $SERVICE"
$ACK_GENERATE_BIN_PATH $apis_args
if [ $? -ne 0 ]; then
if ! $ACK_GENERATE_BIN_PATH "${apis_args[@]}"; then
exit 2
fi

pushd $SERVICE_CONTROLLER_SOURCE_PATH/apis/$ACK_GENERATE_API_VERSION 1>/dev/null
pushd "$SERVICE_CONTROLLER_SOURCE_PATH/apis/$ACK_GENERATE_API_VERSION" 1>/dev/null

echo "Generating deepcopy code for $SERVICE"
controller-gen object:headerFile=$BOILERPLATE_TXT_PATH paths=./...
controller-gen object:headerFile="$BOILERPLATE_TXT_PATH" paths=./...

echo "Generating custom resource definitions for $SERVICE"
# Latest version of controller-gen (master) is required for following two reasons
# a) support for pointer values in map https://github.com/kubernetes-sigs/controller-tools/pull/317
# b) support for float type (allowDangerousTypes) https://github.com/kubernetes-sigs/controller-tools/pull/449
controller-gen crd:allowDangerousTypes=true paths=./... output:crd:artifacts:config=$config_output_dir/crd/bases
controller-gen crd:allowDangerousTypes=true paths=./... output:crd:artifacts:config="$config_output_dir/crd/bases"

popd 1>/dev/null

echo "Building service controller for $SERVICE"
controller_args="controller $ag_args"
$ACK_GENERATE_BIN_PATH $controller_args
if [ $? -ne 0 ]; then
controller_args=(controller "${ag_args[@]}")
if ! $ACK_GENERATE_BIN_PATH "${controller_args[@]}"; then
exit 2
fi

pushd $SERVICE_CONTROLLER_SOURCE_PATH/pkg/resource 1>/dev/null
pushd "$SERVICE_CONTROLLER_SOURCE_PATH/pkg/resource" 1>/dev/null

echo "Generating RBAC manifests for $SERVICE"
controller-gen rbac:roleName=$K8S_RBAC_ROLE_NAME paths=./... output:rbac:artifacts:config=$config_output_dir/rbac
controller-gen rbac:roleName="$K8S_RBAC_ROLE_NAME" paths=./... output:rbac:artifacts:config="$config_output_dir/rbac"
# controller-gen rbac outputs a ClusterRole definition in a
# $config_output_dir/rbac/role.yaml file. We have some other standard Role
# files for a reader and writer role, so here we rename the `role.yaml` file to
# `cluster-role-controller.yaml` to better reflect what is in that file.
mv $config_output_dir/rbac/role.yaml $config_output_dir/rbac/cluster-role-controller.yaml
mv "$config_output_dir/rbac/role.yaml" "$config_output_dir/rbac/cluster-role-controller.yaml"
# Copy definitions for json patches which allow the user to patch the controller
# with Role/Rolebinding and be purely namespaced scoped instead of using Cluster/ClusterRoleBinding
# using kustomize
mkdir -p $config_output_dir/overlays/namespaced
cp -r $ROOT_DIR/templates/config/overlays/namespaced/*.json $config_output_dir/overlays/namespaced
mkdir -p "$config_output_dir/overlays/namespaced"
cp -r "$ROOT_DIR"/templates/config/overlays/namespaced/*.json "$config_output_dir/overlays/namespaced"

popd 1>/dev/null

Expand Down
Loading