@@ -1172,6 +1172,9 @@ type ArgoCDAgentSpec struct {
11721172
11731173 // Principal defines configurations for the Principal component of Argo CD Agent.
11741174 Principal * PrincipalSpec `json:"principal,omitempty"`
1175+
1176+ // Agent defines configurations for the Agent component of Argo CD Agent.
1177+ Agent * AgentSpec `json:"agent,omitempty"`
11751178}
11761179
11771180type PrincipalSpec struct {
@@ -1280,6 +1283,79 @@ func (a *PrincipalSpec) IsEnabled() bool {
12801283 return a .Enabled != nil && * a .Enabled
12811284}
12821285
1286+ type AgentSpec struct {
1287+
1288+ // Enabled is the flag to enable the Agent component during Argo CD installation. (optional, default `false`)
1289+ Enabled * bool `json:"enabled,omitempty"`
1290+
1291+ // Client defines the client options for the Agent component.
1292+ Client * AgentClientSpec `json:"client,omitempty"`
1293+
1294+ // Redis defines the Redis options for the Agent component.
1295+ Redis * AgentRedisSpec `json:"redis,omitempty"`
1296+
1297+ // TLS defines the TLS options for the Agent component.
1298+ TLS * AgentTLSSpec `json:"tls,omitempty"`
1299+ }
1300+
1301+ type AgentClientSpec struct {
1302+
1303+ // PrincipalServerAddress is the remote address of the principal server to connect to.
1304+ PrincipalServerAddress string `json:"principalServerAddress,omitempty"`
1305+
1306+ // PrincipalServerPort is the remote port of the principal server to connect to.
1307+ PrincipalServerPort string `json:"principalServerPort,omitempty"`
1308+
1309+ // Creds is the credential identifier for the agent authentication
1310+ Creds string `json:"creds,omitempty"`
1311+
1312+ // Mode is the operational mode for the agent (managed or autonomous)
1313+ Mode string `json:"mode,omitempty"`
1314+
1315+ // EnableWebSocket is the flag to enable WebSocket for event streaming
1316+ EnableWebSocket * bool `json:"enableWebSocket,omitempty"`
1317+
1318+ // EnableCompression is the flag to enable compression while sending data between Principal and Agent using gRPC
1319+ EnableCompression * bool `json:"enableCompression,omitempty"`
1320+
1321+ // LogLevel refers to the log level used by the Agent component.
1322+ LogLevel string `json:"logLevel,omitempty"`
1323+
1324+ // LogFormat refers to the log format used by the Agent component.
1325+ LogFormat string `json:"logFormat,omitempty"`
1326+
1327+ // KeepAliveInterval is the interval for keep-alive pings to the principal
1328+ KeepAliveInterval string `json:"keepAliveInterval,omitempty"`
1329+
1330+ // Image is the name of Argo CD Agent image
1331+ Image string `json:"image,omitempty"`
1332+
1333+ // Env lets you specify environment for agent pods
1334+ Env []corev1.EnvVar `json:"env,omitempty"`
1335+ }
1336+
1337+ type AgentRedisSpec struct {
1338+
1339+ // ServerAddress is the address of the Redis server to be used by the PrincAgentipal component.
1340+ ServerAddress string `json:"serverAddress,omitempty"`
1341+ }
1342+
1343+ type AgentTLSSpec struct {
1344+
1345+ // SecretName is the name of the secret containing the agent client TLS certificate
1346+ SecretName string `json:"secretName,omitempty"`
1347+
1348+ // RootCASecretName is the name of the secret containing the root CA certificate
1349+ RootCASecretName string `json:"rootCASecretName,omitempty"`
1350+
1351+ // Insecure is the flag to skip TLS certificate validation when connecting to the principal (insecure, for development only)
1352+ Insecure * bool `json:"insecure,omitempty"`
1353+ }
1354+
1355+ func (a * AgentSpec ) IsEnabled () bool {
1356+ return a .Enabled != nil && * a .Enabled
1357+ }
1358+
12831359// IsDeletionFinalizerPresent checks if the instance has deletion finalizer
12841360func (argocd * ArgoCD ) IsDeletionFinalizerPresent () bool {
12851361 for _ , finalizer := range argocd .GetFinalizers () {
0 commit comments