mirror of
https://github.com/containers/kubernetes-mcp-server.git
synced 2025-10-23 01:22:57 +03:00
* Initial KinD setup Signed-off-by: Matthias Wessendorf <mwessend@redhat.com> * Initial Keycloak container setup Signed-off-by: Matthias Wessendorf <mwessend@redhat.com> * Adding an initial realm setup Signed-off-by: Matthias Wessendorf <mwessend@redhat.com> * Adding OIDC issuer and realm updates, adding cert-manager and handling self-signed certificates Signed-off-by: Matthias Wessendorf <mwessend@redhat.com> * Updates to script b/c of invalid auth config Signed-off-by: Matthias Wessendorf <mwessend@redhat.com> * Adjusting ports and better support for mac/podman Signed-off-by: Matthias Wessendorf <mwessend@redhat.com> * Addressing review comments: * do not expose all internal tasks, just keep the important targets documents * remove the keycloak-forward * move binaries for dev tools to _output * generate a configuration TOML file into the _output folder Signed-off-by: Matthias Wessendorf <mwessend@redhat.com> --------- Signed-off-by: Matthias Wessendorf <mwessend@redhat.com>
62 lines
3.4 KiB
Makefile
62 lines
3.4 KiB
Makefile
# Kind cluster management
|
|
|
|
KIND_CLUSTER_NAME ?= kubernetes-mcp-server
|
|
|
|
# Detect container engine (docker or podman)
|
|
CONTAINER_ENGINE ?= $(shell command -v docker 2>/dev/null || command -v podman 2>/dev/null)
|
|
|
|
.PHONY: kind-create-certs
|
|
kind-create-certs:
|
|
@if [ ! -f _output/cert-manager-ca/ca.crt ]; then \
|
|
echo "Creating placeholder CA certificate for bind mount..."; \
|
|
./hack/generate-placeholder-ca.sh; \
|
|
else \
|
|
echo "✅ Placeholder CA already exists"; \
|
|
fi
|
|
|
|
.PHONY: kind-create-cluster
|
|
kind-create-cluster: kind kind-create-certs
|
|
@# Set KIND provider for podman on Linux
|
|
@if [ "$(shell uname -s)" != "Darwin" ] && echo "$(CONTAINER_ENGINE)" | grep -q "podman"; then \
|
|
export KIND_EXPERIMENTAL_PROVIDER=podman; \
|
|
fi; \
|
|
if $(KIND) get clusters 2>/dev/null | grep -q "^$(KIND_CLUSTER_NAME)$$"; then \
|
|
echo "Kind cluster '$(KIND_CLUSTER_NAME)' already exists, skipping creation"; \
|
|
else \
|
|
echo "Creating Kind cluster '$(KIND_CLUSTER_NAME)'..."; \
|
|
$(KIND) create cluster --name $(KIND_CLUSTER_NAME) --config dev/config/kind/cluster.yaml; \
|
|
echo "Adding ingress-ready label to control-plane node..."; \
|
|
kubectl label node $(KIND_CLUSTER_NAME)-control-plane ingress-ready=true --overwrite; \
|
|
echo "Installing nginx ingress controller..."; \
|
|
kubectl apply -f dev/config/ingress/nginx-ingress.yaml; \
|
|
echo "Waiting for ingress controller to be ready..."; \
|
|
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=90s; \
|
|
echo "✅ Ingress controller ready"; \
|
|
echo "Installing cert-manager..."; \
|
|
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.2/cert-manager.yaml; \
|
|
echo "Waiting for cert-manager to be ready..."; \
|
|
kubectl wait --namespace cert-manager --for=condition=available deployment/cert-manager --timeout=120s; \
|
|
kubectl wait --namespace cert-manager --for=condition=available deployment/cert-manager-cainjector --timeout=120s; \
|
|
kubectl wait --namespace cert-manager --for=condition=available deployment/cert-manager-webhook --timeout=120s; \
|
|
echo "✅ cert-manager ready"; \
|
|
echo "Creating cert-manager ClusterIssuer..."; \
|
|
sleep 5; \
|
|
kubectl apply -f dev/config/cert-manager/selfsigned-issuer.yaml; \
|
|
echo "✅ ClusterIssuer created"; \
|
|
echo "Adding /etc/hosts entry for Keycloak in control plane..."; \
|
|
if command -v docker >/dev/null 2>&1 && docker ps --filter "name=$(KIND_CLUSTER_NAME)-control-plane" --format "{{.Names}}" | grep -q "$(KIND_CLUSTER_NAME)-control-plane"; then \
|
|
docker exec $(KIND_CLUSTER_NAME)-control-plane bash -c 'grep -q "keycloak.127-0-0-1.sslip.io" /etc/hosts || echo "127.0.0.1 keycloak.127-0-0-1.sslip.io" >> /etc/hosts'; \
|
|
elif command -v podman >/dev/null 2>&1 && podman ps --filter "name=$(KIND_CLUSTER_NAME)-control-plane" --format "{{.Names}}" | grep -q "$(KIND_CLUSTER_NAME)-control-plane"; then \
|
|
podman exec $(KIND_CLUSTER_NAME)-control-plane bash -c 'grep -q "keycloak.127-0-0-1.sslip.io" /etc/hosts || echo "127.0.0.1 keycloak.127-0-0-1.sslip.io" >> /etc/hosts'; \
|
|
fi; \
|
|
echo "✅ /etc/hosts entry added"; \
|
|
fi
|
|
|
|
.PHONY: kind-delete-cluster
|
|
kind-delete-cluster: kind
|
|
@# Set KIND provider for podman on Linux
|
|
@if [ "$(shell uname -s)" != "Darwin" ] && echo "$(CONTAINER_ENGINE)" | grep -q "podman"; then \
|
|
export KIND_EXPERIMENTAL_PROVIDER=podman; \
|
|
fi; \
|
|
$(KIND) delete cluster --name $(KIND_CLUSTER_NAME)
|