Files
irsa-webhook/Makefile

119 lines
3.1 KiB
Makefile
Raw Permalink Normal View History

2025-12-10 10:43:57 -05:00
.PHONY: build push deploy certs test clean
IMAGE_NAME ?= ewr.vultrcr.com/chansey/irsa-webhook
IMAGE_TAG ?= latest
NAMESPACE ?= irsa-system
# Build the Go binary
build:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o webhook main.go
# Build Docker image
docker-build:
docker build -t $(IMAGE_NAME):$(IMAGE_TAG) .
# Push Docker image
docker-push:
docker push $(IMAGE_NAME):$(IMAGE_TAG)
# Generate TLS certificates
certs:
chmod +x generate-certs.sh
./generate-certs.sh
# Deploy to Kubernetes
deploy:
2025-12-11 04:39:25 -05:00
@if [ ! -f .ca-bundle.txt ]; then \
echo "Error: .ca-bundle.txt not found. Run 'make certs' first."; \
exit 1; \
fi
@CA_BUNDLE=$$(cat .ca-bundle.txt) && \
sed "s|CA_BUNDLE_PLACEHOLDER|$$CA_BUNDLE|g" deploy.yaml | kubectl apply -f -
2025-12-10 10:43:57 -05:00
# Undeploy from Kubernetes
undeploy:
kubectl delete -f deploy.yaml
# View logs
logs:
kubectl logs -n $(NAMESPACE) -l app=irsa-webhook -f
# Test with example pod
test-example:
kubectl apply -f example.yaml
@echo "Waiting for pod to be ready..."
@kubectl wait --for=condition=Ready pod/example-app --timeout=60s || true
@echo ""
@echo "Pod logs:"
@kubectl logs example-app
# Clean up test resources
clean-example:
kubectl delete -f example.yaml --ignore-not-found
# Run Go tests
go-test:
go test -v ./...
# Format Go code
fmt:
go fmt ./...
# Run Go vet
vet:
go vet ./...
# Download Go dependencies
deps:
go mod download
go mod tidy
# Complete build and deploy pipeline
all: deps build docker-build docker-push certs deploy
# Check webhook status
status:
@echo "=== Webhook Deployment ==="
@kubectl get deployment -n $(NAMESPACE) irsa-webhook
@echo ""
@echo "=== Webhook Pods ==="
@kubectl get pods -n $(NAMESPACE) -l app=irsa-webhook
@echo ""
@echo "=== Webhook Service ==="
@kubectl get svc -n $(NAMESPACE) irsa-webhook
@echo ""
@echo "=== MutatingWebhookConfiguration ==="
@kubectl get mutatingwebhookconfiguration irsa-webhook
# Clean all resources
clean:
kubectl delete -f deploy.yaml --ignore-not-found
kubectl delete namespace $(NAMESPACE) --ignore-not-found
rm -f webhook
# Restart webhook deployment
restart:
kubectl rollout restart deployment -n $(NAMESPACE) irsa-webhook
kubectl rollout status deployment -n $(NAMESPACE) irsa-webhook
# Help
help:
@echo "Available targets:"
@echo " build - Build Go binary"
@echo " docker-build - Build Docker image"
@echo " docker-push - Push Docker image"
@echo " certs - Generate TLS certificates"
@echo " deploy - Deploy to Kubernetes"
@echo " undeploy - Remove from Kubernetes"
@echo " logs - View webhook logs"
@echo " test-example - Deploy and test example pod"
@echo " clean-example - Remove example pod"
@echo " go-test - Run Go tests"
@echo " fmt - Format Go code"
@echo " vet - Run Go vet"
@echo " deps - Download dependencies"
@echo " all - Complete build and deploy"
@echo " status - Check webhook status"
@echo " clean - Remove all resources"
@echo " restart - Restart webhook deployment"
2025-12-11 04:39:25 -05:00
@echo " help - Show this help"