agent Configuration
The PiVirt Agent is configured via a declarative YAML configuration file located at /etc/pivirt-agent/config.yaml. It manages ConnectRPC gateway settings, PiTrust mTLS credentials, and upstream backend connections.
Configuration File
Section titled “Configuration File”Location: /etc/pivirt-agent/config.yaml
Complete Example
Section titled “Complete Example”# Server configurationserver: connectrpc: addr: "0.0.0.0:8443" tls: cert_file: "/etc/pivirt-agent/tls/server.crt" key_file: "/etc/pivirt-agent/tls/server.key" ca_file: "/etc/pivirt-agent/tls/ca.crt" client_ca_file: "/etc/pivirt-agent/tls/ca.crt"
grpc_internal: addr: "0.0.0.0:9000" # Inter-node gRPC with PiTrust mTLS
metrics: addr: "0.0.0.0:8444" path: "/metrics"
# PiTrust PKI & mTLStls: enabled: true ca_file: "/etc/pivirt/certs/ca-chain.pem" cert_file: "/etc/pivirt/certs/agent-client.crt" key_file: "/etc/pivirt/certs/agent-client.key" verify_peer: true require_client_cert: true
# Service discoveryservice_discovery: type: "etcd" etcd: endpoints: - "https://etcd-0.pilab.hu:2379" - "https://etcd-1.pilab.hu:2379" - "https://etcd-2.pilab.hu:2379" ca_file: "/etc/pivirt-agent/etcd/ca.crt" cert_file: "/etc/pivirt-agent/etcd/client.crt" key_file: "/etc/pivirt-agent/etcd/client.key" prefix: "/pivirt/services"
# Backend servicesbackends: pivirtd: endpoint: "unix:///run/pivirtd/pivirtd.sock" timeout: "30s" retry: max_attempts: 3 backoff: "100ms"
iscsiman: endpoint: "unix:///run/iscsiman/iscsiman.sock" timeout: "10s"
osinfodb: endpoint: "https://osinfodb.pilab.hu:8443" timeout: "30s"
# Authenticationauth: oidc: issuer_url: "https://auth.pilab.hu/realms/pivirt" client_id: "pivirt-agent"
rbac_policy: "/etc/pivirt-agent/rbac.yaml"
# Logginglogging: level: "info" format: "json" output: "stdout" sampling: initial: 100 thereafter: 100
# Tracingtracing: enabled: true endpoint: "http://jaeger.pilab.hu:14268/api/traces" sampling_rate: 0.1Configuration Sections
Section titled “Configuration Sections”server
Section titled “server”connectrpc.addr- ConnectRPC endpoint (default:0.0.0.0:8443)connectrpc.tls.*- TLS configuration for external clientsgrpc_internal.addr- Internal gRPC endpoint (default:0.0.0.0:9000)metrics.addr- Metrics endpoint (default:0.0.0.0:8444)
enabled- Enable TLS / mTLSca_file- Path to PiTrust CA bundle (ca-chain.pemorPiRootR1.pem)cert_file- Path to issued X.509 certificatekey_file- Path to private keyverify_peer- Require peer certificate verificationrequire_client_cert- Require client certificate for mTLS
service_discovery
Section titled “service_discovery”type- Discovery backend (etcd,consul,dns)etcd.endpoints- etcd cluster endpointsetcd.prefix- Key prefix for service registration
backends
Section titled “backends”pivirtd.endpoint- pivirtd gRPC endpointiscsiman.endpoint- iscsiman gRPC endpointosinfodb.endpoint- osinfodb endpoint
oidc.issuer_url- OIDC provider URLoidc.client_id- OIDC client IDrbac_policy- RBAC policy file path
logging
Section titled “logging”level- Log level (debug,info,warn,error)format- Log format (json,text)output- Output destination (stdout,stderr, file path)
tracing
Section titled “tracing”enabled- Enable distributed tracingendpoint- Tracing backend endpointsampling_rate- Trace sampling rate (0.0-1.0)
Environment Variables
Section titled “Environment Variables”PIVIRT_AGENT_SERVER_CONNECTRPC_ADDR="0.0.0.0:8443"PIVIRT_AGENT_TLS_ENABLED="true"PIVIRT_AGENT_SERVICE_DISCOVERY_TYPE="etcd"PIVIRT_AGENT_LOGGING_LEVEL="info"Validation
Section titled “Validation”pivirt-agent --config /etc/pivirt-agent/config.yaml --validateHot Reload
Section titled “Hot Reload”pivirt-agent reload