119 lines
3.1 KiB
Makefile
119 lines
3.1 KiB
Makefile
.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:
|
|
@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 -
|
|
|
|
# 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"
|
|
@echo " help - Show this help"
|