83 lines
2.9 KiB
Makefile
83 lines
2.9 KiB
Makefile
# CRD (Custom Resource Definition) Installation Template
|
|
# This file provides common targets for installing CRDs before deploying Helm charts.
|
|
#
|
|
# Usage:
|
|
# include ../_template/crd.mk
|
|
#
|
|
# Required variables:
|
|
# HELM_RELEASE_NAME - The name of the Helm release
|
|
# HELM_NAMESPACE - The namespace for the deployment
|
|
# HELM_CHART_VERSION - The version of the Helm chart
|
|
#
|
|
# Optional variables:
|
|
# CRD_HELM_CHART_REPO - The Helm chart repository for CRDs (if using Helm to install CRDs)
|
|
# CRD_HELM_RELEASE_NAME - The release name for CRD installation (defaults to $(HELM_RELEASE_NAME)-crds)
|
|
# CRD_HELM_NAMESPACE - The namespace for CRD installation (defaults to $(HELM_NAMESPACE))
|
|
# CRD_KUBECTL_URLS - Space-separated list of URLs to apply via kubectl
|
|
# CRD_INSTALL_GATEWAY_API - Set to "true" to install Gateway API CRDs
|
|
# GATEWAY_API_VERSION - Version of Gateway API to install (defaults to v1.4.0)
|
|
|
|
CRD_HELM_RELEASE_NAME ?= $(HELM_RELEASE_NAME)-crds
|
|
CRD_HELM_NAMESPACE ?= $(HELM_NAMESPACE)
|
|
GATEWAY_API_VERSION ?= v1.4.0
|
|
|
|
# Install CRDs via kubectl apply
|
|
.PHONY: install-crds-kubectl
|
|
install-crds-kubectl:
|
|
ifdef CRD_KUBECTL_URLS
|
|
@echo "Installing CRDs from URLs..."
|
|
@for url in $(CRD_KUBECTL_URLS); do \
|
|
echo "Applying $$url..."; \
|
|
kubectl apply -f $$url; \
|
|
done
|
|
else
|
|
@echo "CRD_KUBECTL_URLS not set, skipping kubectl CRD installation."
|
|
endif
|
|
|
|
# Install Gateway API CRDs
|
|
.PHONY: install-crds-gateway-api
|
|
install-crds-gateway-api:
|
|
ifeq ($(CRD_INSTALL_GATEWAY_API),true)
|
|
@echo "Installing Gateway API CRDs (version: $(GATEWAY_API_VERSION))..."
|
|
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/$(GATEWAY_API_VERSION)/standard-install.yaml
|
|
else
|
|
@echo "CRD_INSTALL_GATEWAY_API not set to 'true', skipping Gateway API CRD installation."
|
|
endif
|
|
|
|
# Install CRDs via Helm
|
|
.PHONY: install-crds-helm
|
|
install-crds-helm:
|
|
ifdef CRD_HELM_CHART_REPO
|
|
@echo "Installing CRDs via Helm..."
|
|
helm upgrade -i --create-namespace \
|
|
--namespace $(CRD_HELM_NAMESPACE) \
|
|
$(if $(HELM_CHART_VERSION),--version $(HELM_CHART_VERSION),) \
|
|
$(CRD_HELM_RELEASE_NAME) $(CRD_HELM_CHART_REPO)
|
|
else
|
|
@echo "CRD_HELM_CHART_REPO not set, skipping Helm CRD installation."
|
|
endif
|
|
|
|
# Install all CRDs (kubectl + Gateway API + Helm)
|
|
.PHONY: install-crds
|
|
install-crds: install-crds-kubectl install-crds-gateway-api install-crds-helm
|
|
@echo "All CRDs installed successfully."
|
|
|
|
# Install CRDs and then the main chart
|
|
.PHONY: install-all
|
|
install-all: install-crds install
|
|
|
|
# Verify CRD installation
|
|
.PHONY: verify-crds
|
|
verify-crds:
|
|
ifdef CRD_KUBECTL_URLS
|
|
@echo "Verifying CRDs..."
|
|
@for url in $(CRD_KUBECTL_URLS); do \
|
|
crd_name=$$(basename $$url | sed 's/\.yaml$$//'); \
|
|
echo "Checking CRD: $$crd_name..."; \
|
|
done
|
|
endif
|
|
ifeq ($(CRD_INSTALL_GATEWAY_API),true)
|
|
@echo "Verifying Gateway API CRDs..."
|
|
kubectl get crd | grep gateway.networking.k8s.io || echo "Gateway API CRDs not found"
|
|
endif
|