github.com/argoproj/argo-cd/v2@v2.10.9/docs/operator-manual/argocd-cm.yaml (about) 1 apiVersion: v1 2 kind: ConfigMap 3 metadata: 4 name: argocd-cm 5 namespace: argocd 6 labels: 7 app.kubernetes.io/name: argocd-cm 8 app.kubernetes.io/part-of: argocd 9 data: 10 # Argo CD's externally facing base URL (optional). Required when configuring SSO 11 url: https://argo-cd-demo.argoproj.io 12 13 # Enables application status badge feature 14 statusbadge.enabled: "true" 15 16 # Override the Argo CD hostname root URL for both the project and the application status badges. 17 # Here is an example of the application status badge for the app `myapp` to see what is replaced. 18 # <statusbadge.url>api/badge?name=myapp&revision=true 19 # Provide custom URL to override. You must include the trailing forward slash: 20 statusbadge.url: "https://cd-status.apps.argoproj.io/" 21 22 # Enables anonymous user access. The anonymous users get default role permissions specified argocd-rbac-cm.yaml. 23 users.anonymous.enabled: "true" 24 # Specifies token expiration duration 25 users.session.duration: "24h" 26 27 # Specifies regex expression for password 28 passwordPattern: "^.{8,32}$" 29 30 # Enables google analytics tracking is specified 31 ga.trackingid: "UA-12345-1" 32 # Unless set to 'false' then user ids are hashed before sending to google analytics 33 ga.anonymizeusers: "false" 34 35 # the URL for getting chat help, this will typically be your Slack channel for support 36 help.chatUrl: "https://mycorp.slack.com/argo-cd" 37 # the text for getting chat help, defaults to "Chat now!" 38 help.chatText: "Chat now!" 39 # The URLs to download additional ArgoCD binaries (besides the Linux with current platform binary included by default) 40 # for different OS architectures. If provided, additional download buttons will be displayed on the help page. 41 help.download.linux-amd64: "path-or-url-to-download" 42 help.download.linux-arm64: "path-or-url-to-download" 43 help.download.linux-ppc64le: "path-or-url-to-download" 44 help.download.linux-s390x: "path-or-url-to-download" 45 help.download.darwin-amd64: "path-or-url-to-download" 46 help.download.darwin-arm64: "path-or-url-to-download" 47 help.download.windows-amd64: "path-or-url-to-download" 48 49 # A dex connector configuration (optional). See SSO configuration documentation: 50 # https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/user-management/index.md#sso 51 # https://dexidp.io/docs/connectors/ 52 dex.config: | 53 connectors: 54 # GitHub example 55 - type: github 56 id: github 57 name: GitHub 58 config: 59 clientID: aabbccddeeff00112233 60 clientSecret: $dex.github.clientSecret 61 orgs: 62 - name: your-github-org 63 teams: 64 - red-team 65 # It is possible to provide custom static client for dex if you want to reuse it 66 # with other services 67 # staticClients: 68 # - id: argo-workflow 69 # name: Argo Workflow 70 # redirectURIs: 71 # - https://argo/oauth2/callback 72 # secret: $secretReference 73 74 # OIDC configuration as an alternative to dex (optional). 75 oidc.config: | 76 name: Okta 77 issuer: https://dev-123456.oktapreview.com 78 clientID: aaaabbbbccccddddeee 79 clientSecret: $oidc.okta.clientSecret 80 # Optional set of OIDC scopes to request. If omitted, defaults to: ["openid", "profile", "email", "groups"] 81 requestedScopes: ["openid", "profile", "email"] 82 # Optional set of OIDC claims to request on the ID token. 83 requestedIDTokenClaims: {"groups": {"essential": true}} 84 85 # Configuration to customize resource behavior (optional) can be configured via splitted sub keys. 86 # Keys are in the form: resource.customizations.ignoreDifferences.<group_kind>, resource.customizations.health.<group_kind> 87 # resource.customizations.actions.<group_kind>, resource.customizations.knownTypeFields.<group-kind> 88 # resource.customizations.ignoreResourceUpdates.<group-kind> 89 resource.customizations.ignoreDifferences.admissionregistration.k8s.io_MutatingWebhookConfiguration: | 90 jsonPointers: 91 - /webhooks/0/clientConfig/caBundle 92 jqPathExpressions: 93 - .webhooks[0].clientConfig.caBundle 94 managedFieldsManagers: 95 - kube-controller-manager 96 97 # Configuration to define customizations ignoring differences between live and desired states for 98 # all resources (GK). 99 resource.customizations.ignoreDifferences.all: | 100 managedFieldsManagers: 101 - kube-controller-manager 102 jsonPointers: 103 - /spec/replicas 104 105 # Enable resource.customizations.ignoreResourceUpdates rules. If "false," those rules are not applied, and all updates 106 # to resources are applied to the cluster cache. Default is false. 107 resource.ignoreResourceUpdatesEnabled: "false" 108 109 # Configuration to define customizations ignoring differences during watched resource updates to skip application reconciles. 110 resource.customizations.ignoreResourceUpdates.all: | 111 jsonPointers: 112 - /metadata/resourceVersion 113 114 # Configuration to define customizations ignoring differences during watched resource updates can be configured via splitted sub key. 115 resource.customizations.ignoreResourceUpdates.argoproj.io_Application: | 116 jsonPointers: 117 - /status 118 119 # jsonPointers and jqPathExpressions can be specified. 120 resource.customizations.ignoreResourceUpdates.autoscaling_HorizontalPodAutoscaler: | 121 jqPathExpressions: 122 - '.metadata.annotations."autoscaling.alpha.kubernetes.io/behavior"' 123 - '.metadata.annotations."autoscaling.alpha.kubernetes.io/conditions"' 124 - '.metadata.annotations."autoscaling.alpha.kubernetes.io/metrics"' 125 - '.metadata.annotations."autoscaling.alpha.kubernetes.io/current-metrics"' 126 jsonPointers: 127 - /metadata/annotations/autoscaling.alpha.kubernetes.io~1behavior 128 - /metadata/annotations/autoscaling.alpha.kubernetes.io~1conditions 129 - /metadata/annotations/autoscaling.alpha.kubernetes.io~1metrics 130 - /metadata/annotations/autoscaling.alpha.kubernetes.io~1current-metrics 131 132 resource.customizations.health.certmanager.k8s.io-Certificate: | 133 hs = {} 134 if obj.status ~= nil then 135 if obj.status.conditions ~= nil then 136 for i, condition in ipairs(obj.status.conditions) do 137 if condition.type == "Ready" and condition.status == "False" then 138 hs.status = "Degraded" 139 hs.message = condition.message 140 return hs 141 end 142 if condition.type == "Ready" and condition.status == "True" then 143 hs.status = "Healthy" 144 hs.message = condition.message 145 return hs 146 end 147 end 148 end 149 end 150 hs.status = "Progressing" 151 hs.message = "Waiting for certificate" 152 return hs 153 154 resource.customizations.health.cert-manager.io_Certificate: | 155 hs = {} 156 if obj.status ~= nil then 157 if obj.status.conditions ~= nil then 158 for i, condition in ipairs(obj.status.conditions) do 159 if condition.type == "Ready" and condition.status == "False" then 160 hs.status = "Degraded" 161 hs.message = condition.message 162 return hs 163 end 164 if condition.type == "Ready" and condition.status == "True" then 165 hs.status = "Healthy" 166 hs.message = condition.message 167 return hs 168 end 169 end 170 end 171 end 172 hs.status = "Progressing" 173 hs.message = "Waiting for certificate" 174 return hs 175 176 # List of Lua Scripts to introduce custom actions 177 resource.customizations.actions.apps_Deployment: | 178 # Lua Script to indicate which custom actions are available on the resource 179 discovery.lua: | 180 actions = {} 181 actions["restart"] = {} 182 return actions 183 definitions: 184 - name: restart 185 # Lua Script to modify the obj 186 action.lua: | 187 local os = require("os") 188 if obj.spec.template.metadata == nil then 189 obj.spec.template.metadata = {} 190 end 191 if obj.spec.template.metadata.annotations == nil then 192 obj.spec.template.metadata.annotations = {} 193 end 194 obj.spec.template.metadata.annotations["kubectl.kubernetes.io/restartedAt"] = os.date("!%Y-%m-%dT%XZ") 195 return obj 196 197 # Configuration to completely ignore entire classes of resource group/kinds (optional). 198 # Excluding high-volume resources improves performance and memory usage, and reduces load and 199 # bandwidth to the Kubernetes API server. 200 # These are globs, so a "*" will match all values. 201 # If you omit groups/kinds/clusters then they will match all groups/kind/clusters. 202 # NOTE: events.k8s.io and metrics.k8s.io are excluded by default 203 resource.exclusions: | 204 - apiGroups: 205 - repositories.stash.appscode.com 206 kinds: 207 - Snapshot 208 clusters: 209 - "*.local" 210 211 # By default all resource group/kinds are included. The resource.inclusions setting allows customizing 212 # list of included group/kinds. 213 resource.inclusions: | 214 - apiGroups: 215 - repositories.stash.appscode.com 216 kinds: 217 - Snapshot 218 clusters: 219 - "*.local" 220 221 # An optional comma-separated list of metadata.labels to observe in the UI. 222 resource.customLabels: tier 223 224 resource.compareoptions: | 225 # if ignoreAggregatedRoles set to true then differences caused by aggregated roles in RBAC resources are ignored. 226 ignoreAggregatedRoles: true 227 228 # disables status field diffing in specified resource types 229 # 'crd' - CustomResourceDefinitions (default) 230 # 'all' - all resources 231 # 'none' - disabled 232 ignoreResourceStatusField: crd 233 234 # configuration to instruct controller to only watch for resources that it has permissions to list 235 # can be either empty, "normal" or "strict". By default, it is empty i.e. disabled. 236 resource.respectRBAC: "normal" 237 238 # Configuration to add a config management plugin. 239 configManagementPlugins: | 240 - name: kasane 241 init: 242 command: [kasane, update] 243 generate: 244 command: [kasane, show] 245 246 # A set of settings that allow enabling or disabling the config management tool. 247 # If unset, each defaults to "true". 248 kustomize.enabled: true 249 jsonnet.enabled: true 250 helm.enabled: true 251 252 # Build options/parameters to use with `kustomize build` (optional) 253 kustomize.buildOptions: --load_restrictor none 254 255 # Per-version build options and binary paths 256 kustomize.path.v3.9.1: /custom-tools/kustomize_3_9 257 kustomize.buildOptions.v3.9.1: --enable_kyaml true 258 259 # Additional Kustomize versions and corresponding binary paths (deprecated) 260 kustomize.version.v3.5.1: /custom-tools/kustomize_3_5_1 261 kustomize.version.v3.5.4: /custom-tools/kustomize_3_5_4 262 263 # Comma delimited list of additional custom remote values file schemes (http are https are allowed by default). 264 # Change to empty value if you want to disable remote values files altogether. 265 helm.valuesFileSchemes: http, https 266 267 # The metadata.label key name where Argo CD injects the app name as a tracking label (optional). 268 # Tracking labels are used to determine which resources need to be deleted when pruning. 269 # If omitted, Argo CD injects the app name into the label: 'app.kubernetes.io/instance' 270 application.instanceLabelKey: mycompany.com/appname 271 272 # You can change the resource tracking method Argo CD uses by changing the 273 # setting application.resourceTrackingMethod to the desired method. 274 # The following methods are available: 275 # - label : Uses the application.instanceLabelKey label for tracking 276 # - annotation : Uses an annotation with additional metadata for tracking instead of the label 277 # - annotation+label : Also uses an annotation for tracking, but additionally labels the resource with the application name 278 application.resourceTrackingMethod: annotation 279 280 # disables admin user. Admin is enabled by default 281 admin.enabled: "false" 282 # add an additional local user with apiKey and login capabilities 283 # apiKey - allows generating API keys 284 # login - allows to login using UI 285 accounts.alice: apiKey, login 286 # disables user. User is enabled by default 287 accounts.alice.enabled: "false" 288 289 # The location of optional user-defined CSS that is loaded at runtime. 290 # Local CSS Files: 291 # - If the supplied path is to a file mounted on the argocd-server container, that file should be mounted 292 # within a subdirectory of the existing "/shared/app" directory (e.g. "/shared/app/custom"). Otherwise, 293 # the file will likely fail to be imported by the browser with an "incorrect MIME type" error. 294 # - The path should be specified relative to the "/shared/app" directory; not as an absolute path. 295 # Remote CSS Files: 296 # - Files may also be loaded from remote locations via fully qualified URLs. 297 ui.cssurl: "./custom/my-styles.css" 298 299 # An optional user-defined banner message that's displayed at the top of every UI page. 300 # Every time this is updated, it will clear a user's localStorage telling the UI to hide the banner forever. 301 ui.bannercontent: "Hello there!" 302 # Optional link for banner. If set, the entire banner text will become a link. 303 # You can have bannercontent without a bannerurl, but not the other way around. 304 ui.bannerurl: "https://argoproj.github.io" 305 # Uncomment to make the banner not show the close buttons, thereby making the banner permanent. 306 # Because it is permanent, only one line of text is available to not take up too much real estate in the UI, 307 # so it is recommended that the length of the bannercontent text is kept reasonably short. Note that you can 308 # have either a permanent banner or a regular closeable banner, and NOT both. eg. A user can't dismiss a 309 # notification message (closeable) banner, to then immediately see a permanent banner. 310 # ui.bannerpermanent: "true" 311 # An option to specify the position of the banner, either the top or bottom of the page. The default is at the top. 312 # Uncomment to make the banner appear at the bottom of the page. Any value other than "bottom" will make the banner appear at the top. 313 # ui.bannerposition: "bottom" 314 315 # Application reconciliation timeout is the max amount of time required to discover if a new manifests version got 316 # published to the repository. Reconciliation by timeout is disabled if timeout is set to 0. Three minutes by default. 317 # > Note: argocd-repo-server deployment must be manually restarted after changing the setting. 318 timeout.reconciliation: 180s 319 # With a large number of applications, the periodic refresh for each application can cause a spike in the refresh queue 320 # and can cause a spike in the repo-server component. To avoid this, you can set a jitter to the sync timeout, which will 321 # spread out the refreshes and give time to the repo-server to catch up. The jitter is the maximum duration that can be 322 # added to the sync timeout. So, if the sync timeout is 3 minutes and the jitter is 1 minute, then the actual timeout will 323 # be between 3 and 4 minutes. Disabled when the value is 0, defaults to 0. 324 timeout.reconciliation.jitter: 0 325 326 # cluster.inClusterEnabled indicates whether to allow in-cluster server address. This is enabled by default. 327 cluster.inClusterEnabled: "true" 328 329 # Application pod logs RBAC enforcement enables control over who can and who can't view application pod logs. 330 # When you enable the switch, pod logs will be visible only to admin role by default. Other roles/users will not be able to view them via cli and UI. 331 # When you enable the switch, viewing pod logs for other roles/users will require explicit RBAC allow policies (allow get on logs subresource). 332 # When you disable the switch (either add it to the configmap with a "false" value or do not add it to the configmap), no actual RBAC enforcement will take place. 333 server.rbac.log.enforce.enable: "false" 334 335 # exec.enabled indicates whether the UI exec feature is enabled. It is disabled by default. 336 exec.enabled: "false" 337 338 # exec.shells restricts which shells are allowed for `exec`, and in which order they are attempted 339 exec.shells: "bash,sh,powershell,cmd" 340 341 # oidc.tls.insecure.skip.verify determines whether certificate verification is skipped when verifying tokens with the 342 # configured OIDC provider (either external or the bundled Dex instance). Setting this to "true" will cause JWT 343 # token verification to pass despite the OIDC provider having an invalid certificate. Only set to "true" if you 344 # understand the risks. 345 oidc.tls.insecure.skip.verify: "false" 346 347 # Add Deep Links to ArgoCD UI 348 # sample project level links 349 project.links: | 350 - url: https://myaudit-system.com?project={{.metadata.name}} 351 title: Audit 352 description: system audit logs 353 icon.class: "fa-book" 354 # sample application level links 355 application.links: | 356 # pkg.go.dev/text/template is used for evaluating url templates 357 - url: https://mycompany.splunk.com?search={{.spec.destination.namespace}} 358 title: Splunk 359 # conditionally show link e.g. for specific project 360 # github.com/antonmedv/expr is used for evaluation of conditions 361 - url: https://mycompany.splunk.com?search={{.spec.destination.namespace}} 362 title: Splunk 363 if: spec.project == "default" 364 - url: https://{{.metadata.annotations.splunkhost}}?search={{.spec.destination.namespace}} 365 title: Splunk 366 if: metadata.annotations.splunkhost 367 # sample resource level links 368 resource.links: | 369 - url: https://mycompany.splunk.com?search={{.metadata.namespace}} 370 title: Splunk 371 if: kind == "Pod" || kind == "Deployment" 372 373 extension.config: | 374 extensions: 375 # Name defines the endpoint that will be used to register 376 # the extension route. 377 # Mandatory field. 378 - name: some-extension 379 backend: 380 # ConnectionTimeout is the maximum amount of time a dial to 381 # the extension server will wait for a connect to complete. 382 # Optional field. Default: 2 seconds 383 connectionTimeout: 2s 384 385 # KeepAlive specifies the interval between keep-alive probes 386 # for an active network connection between the API server and 387 # the extension server. 388 # Optional field. Default: 15 seconds 389 keepAlive: 15s 390 391 # IdleConnectionTimeout is the maximum amount of time an idle 392 # (keep-alive) connection between the API server and the extension 393 # server will remain idle before closing itself. 394 # Optional field. Default: 60 seconds 395 idleConnectionTimeout: 60s 396 397 # MaxIdleConnections controls the maximum number of idle (keep-alive) 398 # connections between the API server and the extension server. 399 # Optional field. Default: 30 400 maxIdleConnections: 30 401 402 services: 403 # URL is the address where the extension backend must be available. 404 # Mandatory field. 405 - url: http://httpbin.org 406 407 # Cluster if provided, will have to match the application 408 # destination name or the destination server to have requests 409 # properly forwarded to this service URL. 410 # Optional field if only one service is specified. 411 # Mandatory if multiple services are specified. 412 cluster: 413 name: some-cluster 414 server: https://some-cluster