The agent connects to mc-proxy via Unix socket and automatically registers/removes routes during deploy and stop. This eliminates manual mcproxyctl usage or TOML editing. - New ProxyRouter abstraction wraps mc-proxy client library - Deploy: after container starts, registers routes with mc-proxy using host ports from the registry - Stop: removes routes from mc-proxy before stopping container - Config: [mcproxy] section with socket path and cert_dir - Nil-safe: if mc-proxy socket not configured, route registration is silently skipped (backward compatible) - L7 routes use certs from convention path (<cert_dir>/<service>.pem) - L4 routes use TLS passthrough (backend_tls=true) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
// Package mcproxy provides a Go client for the mc-proxy gRPC admin API.
|
|
//
|
|
// The client connects to mc-proxy via Unix socket and provides methods
|
|
// for managing routes, firewall rules, and querying server status.
|
|
//
|
|
// # Basic Usage
|
|
//
|
|
// client, err := mcproxy.Dial("/srv/mc-proxy/mc-proxy.sock")
|
|
// if err != nil {
|
|
// log.Fatal(err)
|
|
// }
|
|
// defer client.Close()
|
|
//
|
|
// // Get server status
|
|
// status, err := client.GetStatus(ctx)
|
|
// if err != nil {
|
|
// log.Fatal(err)
|
|
// }
|
|
// fmt.Printf("mc-proxy %s, %d connections\n", status.Version, status.TotalConnections)
|
|
//
|
|
// // List routes for a listener
|
|
// routes, err := client.ListRoutes(ctx, ":443")
|
|
// if err != nil {
|
|
// log.Fatal(err)
|
|
// }
|
|
// for _, r := range routes {
|
|
// fmt.Printf(" %s -> %s\n", r.Hostname, r.Backend)
|
|
// }
|
|
//
|
|
// // Add a route
|
|
// err = client.AddRoute(ctx, ":443", "example.com", "127.0.0.1:8443")
|
|
//
|
|
// // Add a firewall rule
|
|
// err = client.AddFirewallRule(ctx, mcproxy.FirewallRuleCIDR, "10.0.0.0/8")
|
|
//
|
|
// // Check health
|
|
// health, err := client.CheckHealth(ctx)
|
|
// if health == mcproxy.HealthServing {
|
|
// fmt.Println("Server is healthy")
|
|
// }
|
|
package mcproxy
|