first commit
This commit is contained in:
114
Makefile
Normal file
114
Makefile
Normal file
@@ -0,0 +1,114 @@
|
||||
.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:
|
||||
kubectl apply -f deploy.yaml
|
||||
|
||||
# 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"
|
||||
Reference in New Issue
Block a user