Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Multi-stage build for agentcube-apiserver
# Multi-stage build for workloadmanager
FROM golang:1.24.9-alpine AS builder

# Build arguments for multi-architecture support
Expand All @@ -18,7 +18,7 @@ COPY pkg/ pkg/
# Build with dynamic architecture support
# Supports amd64, arm64, arm/v7, etc.
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
go build -o agentcube-apiserver ./cmd/workload-manager
go build -o workloadmanager ./cmd/workload-manager

# Runtime image
FROM alpine:3.19
Expand All @@ -28,13 +28,13 @@ RUN apk --no-cache add ca-certificates
WORKDIR /app

# Copy binary from builder
COPY --from=builder /workspace/agentcube-apiserver .
COPY --from=builder /workspace/workloadmanager .

# Run as non-root user
RUN adduser -D -u 1000 apiserver
USER apiserver

EXPOSE 8080

ENTRYPOINT ["/app/agentcube-apiserver"]
ENTRYPOINT ["/app/workloadmanager"]
CMD ["--port=8080"]
40 changes: 20 additions & 20 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,9 @@ gen-check: gen-all ## Check if generated code is up to date
.PHONY: build run clean test deps

# Build targets
build: generate ## Build agentcube-apiserver binary
@echo "Building agentcube-apiserver..."
go build -o bin/agentcube-apiserver ./cmd/workload-manager
build: generate ## Build workloadmanager binary
@echo "Building workloadmanager..."
go build -o bin/workloadmanager ./cmd/workload-manager

build-agentd: generate ## Build agentd binary
@echo "Building agentd..."
Expand All @@ -88,15 +88,15 @@ build-all: build build-agentd build-test-tunnel build-router ## Build all binari

# Run server (development mode)
run:
@echo "Running agentcube-apiserver..."
@echo "Running workloadmanager..."
go run ./cmd/workload-manager/main.go \
--port=8080 \
--ssh-username=sandbox \
--ssh-port=22

# Run server (with kubeconfig)
run-local:
@echo "Running agentcube-apiserver with local kubeconfig..."
@echo "Running workloadmanager with local kubeconfig..."
go run ./cmd/workload-manager/main.go \
--port=8080 \
--kubeconfig=${HOME}/.kube/config \
Expand All @@ -114,7 +114,7 @@ run-router:
clean:
@echo "Cleaning..."
rm -rf bin/
rm -f agentcube-apiserver agentd agentcube-router
rm -f workloadmanager agentd agentcube-router

# Install dependencies
deps:
Expand Down Expand Up @@ -149,60 +149,60 @@ lint: golangci-lint ## Run golangci-lint

# Install to system
install: build
@echo "Installing agentcube-apiserver..."
sudo cp bin/agentcube-apiserver /usr/local/bin/
@echo "Installing workloadmanager..."
sudo cp bin/workloadmanager /usr/local/bin/

# Docker image variables
APISERVER_IMAGE ?= agentcube-apiserver:latest
WORKLOAD_MANAGER_IMAGE ?= workloadmanager:latest
ROUTER_IMAGE ?= agentcube-router:latest
IMAGE_REGISTRY ?= ""

# Docker and Kubernetes targets
docker-build:
@echo "Building Docker image..."
docker build -t $(APISERVER_IMAGE) .
docker build -t $(WORKLOAD_MANAGER_IMAGE) .

# Multi-architecture build (supports amd64, arm64)
docker-buildx:
@echo "Building multi-architecture Docker image..."
docker buildx build --platform linux/amd64,linux/arm64 -t $(APISERVER_IMAGE) .
docker buildx build --platform linux/amd64,linux/arm64 -t $(WORKLOAD_MANAGER_IMAGE) .

# Multi-architecture build and push
docker-buildx-push:
@if [ -z "$(IMAGE_REGISTRY)" ]; then \
echo "Error: IMAGE_REGISTRY not set. Usage: make docker-buildx-push IMAGE_REGISTRY=your-registry.com"; \
exit 1; \
fi
@echo "Building and pushing multi-architecture Docker image to $(IMAGE_REGISTRY)/$(APISERVER_IMAGE)..."
@echo "Building and pushing multi-architecture Docker image to $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE)..."
docker buildx build --platform linux/amd64,linux/arm64 \
-t $(IMAGE_REGISTRY)/$(APISERVER_IMAGE) \
-t $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE) \
--push .

docker-push: docker-build
@if [ -z "$(IMAGE_REGISTRY)" ]; then \
echo "Error: IMAGE_REGISTRY not set. Usage: make docker-push IMAGE_REGISTRY=your-registry.com"; \
exit 1; \
fi
@echo "Tagging and pushing Docker image to $(IMAGE_REGISTRY)/$(APISERVER_IMAGE)..."
docker tag $(APISERVER_IMAGE) $(IMAGE_REGISTRY)/$(APISERVER_IMAGE)
docker push $(IMAGE_REGISTRY)/$(APISERVER_IMAGE)
@echo "Tagging and pushing Docker image to $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE)..."
docker tag $(WORKLOAD_MANAGER_IMAGE) $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE)
docker push $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE)

k8s-deploy:
@echo "Deploying to Kubernetes..."
kubectl apply -f k8s/agentcube-apiserver.yaml
kubectl apply -f k8s/workloadmanager.yaml

k8s-delete:
@echo "Deleting from Kubernetes..."
kubectl delete -f k8s/agentcube-apiserver.yaml
kubectl delete -f k8s/workloadmanager.yaml

k8s-logs:
@echo "Showing logs..."
kubectl logs -n agentcube -l app=agentcube-apiserver -f
kubectl logs -n agentcube -l app=workloadmanager -f

# Load image to kind cluster
kind-load:
@echo "Loading image to kind..."
kind load docker-image $(APISERVER_IMAGE)
kind load docker-image $(WORKLOAD_MANAGER_IMAGE)

# Router Docker targets
docker-build-router:
Expand Down
4 changes: 3 additions & 1 deletion cmd/workload-manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ func main() {
enableTLS = flag.Bool("enable-tls", false, "Enable TLS (HTTPS)")
tlsCert = flag.String("tls-cert", "", "Path to TLS certificate file")
tlsKey = flag.String("tls-key", "", "Path to TLS key file")
enableAuth = flag.Bool("enable-auth", false, "Enable Authentication")
)

// Parse command line flags
Expand Down Expand Up @@ -83,6 +84,7 @@ func main() {
EnableTLS: *enableTLS,
TLSCert: *tlsCert,
TLSKey: *tlsKey,
EnableAuth: *enableAuth,
}

// Create and initialize API server
Expand All @@ -109,7 +111,7 @@ func main() {
// Start API server in goroutine
errCh := make(chan error, 1)
go func() {
log.Printf("Starting agentcube-apiserver on port %s", *port)
log.Printf("Starting workloadmanager on port %s", *port)
if err := server.Start(ctx); err != nil {
errCh <- err
}
Expand Down
Loading
Loading