RadiusClient¶
Defines a network device authorized to send RADIUS requests.
Overview¶
A RadiusClient maps to a client block in FreeRADIUS's clients.conf. Each RadiusClient declares a network device (switch, access point, VPN concentrator) that is permitted to authenticate against the RADIUS server.
API Group: radius.operator.io/v1alpha1
Kind: RadiusClient
Short Name: rcl
Scope: Namespaced
Full Example¶
apiVersion: radius.operator.io/v1alpha1
kind: RadiusClient
metadata:
name: core-switch
namespace: radius
spec:
clusterRef: production
ip: 10.0.1.0/24
secretRef:
name: switch-secret
key: shared-secret
nasType: cisco
metadata:
location: building-a-floor-3
role: distribution
Spec Fields¶
clusterRef (required)¶
Name of the RadiusCluster this client belongs to. Must be in the same namespace.
| Type | Default |
|---|---|
| string | — |
ip (required)¶
IPv4 address, IPv6 address, or CIDR range of the network device.
| Type | Default | Validation |
|---|---|---|
| string | — | Must match IPv4, IPv6, or CIDR format |
secretRef (required)¶
Reference to the Kubernetes Secret containing the shared secret for RADIUS authentication between the NAS and the server.
| Field | Type | Description |
|---|---|---|
name |
string | Name of the Kubernetes Secret |
key |
string | Key within the Secret's data |
Warning
The shared secret value is never written into the ConfigMap. It is mounted as a read-only file and referenced via ${file:...} in the rendered configuration.
nasType¶
The type of network access server. This is an informational field used by FreeRADIUS for vendor-specific behavior.
| Type | Default |
|---|---|
| string | — |
Common values: cisco, juniper, other, aruba, mikrotik
metadata¶
Arbitrary key-value labels for organizational purposes. These are rendered as comments in the generated clients.conf and are useful for tracking device location, role, or owner.
| Type | Default |
|---|---|
| map[string]string | — |
Status¶
Conditions¶
| Type | Description |
|---|---|
Ready |
Client is valid and the referenced cluster exists |
Invalid |
Validation failed — check the condition message for details |
Example Status¶
status:
conditions:
- type: Ready
status: "True"
lastTransitionTime: "2026-04-01T12:00:00Z"
reason: Valid
message: "Client validated and cluster 'production' exists"
Rendered Output¶
A RadiusClient named core-switch produces the following in clients.conf:
client core-switch {
ipaddr = 10.0.1.0/24
secret = ${file:/etc/freeradius/secrets/switch-secret/shared-secret}
nastype = cisco
# location = building-a-floor-3
# role = distribution
}
Multiple Clients Per Cluster¶
You can define as many RadiusClient resources as needed for a single cluster. All clients with the same clusterRef are aggregated into a single clients.conf:
When any RadiusClient is created, updated, or deleted, the operator re-renders the full configuration and triggers a rolling update of the associated RadiusCluster.