Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: added deep links doc #11888

Merged
merged 7 commits into from
Jan 10, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/user-guide/deep_links.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Deep Links
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved

Deep links allow users to quickly redirect to third-party systems such as Splunk, DataDog etc. from the Argo CD
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
user interface.

Argo CD administrator will be able to configure links that redirect users to third-party systems by providing
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
deep link templates configured in the `argocd-cm`. The templates can be conditionally rendered and are be able
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
to reference different types of resources relating to where the links show up, this includes projects, applications,
or individual resources(pods, services etc.).
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved

## Configuring Deep Links

The configuration for Deep Links is present in `argocd-cm` as `<location>.links` fields where
`<location>` determines where it will be displayed. The possible values for `<location>` currently are :
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
- `project` : all links under this field will show up in the project tab in the Argo CD UI.
- `application` : all links under this field will show up in the application summary tab.
- `resource` : all links under this field will show up in the resource(deployments, pods, services etc.)
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
summary tab.

Each link in the list has five subfields :
1. `title` : title/tag that will be displayed in the UI corresponding to that link
2. `url` : the actual URL where the deep link will redirect to, this field can be templated to use data from the
corresponing application, project or resource objects (depending on where it is located). This uses [text/template](pkg.go.dev/text/template) pkg for templating.
3. `description` (optional) : a description for what the deep link is about
4. `icon.class` (optional) : a font-awesome icon class to be used when displaying the links in dropdown menus.
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
5. `if` (optional) : a conditional statement that results in either `true` or `false`, it also has access to the same
data as the `url` field. If the condition resolves to `true` the deep link will be displayed else it will be hidden. If
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved
the field is omitted, by default the deep links will be displayed. This uses [antonmedv/expr](https://github.com/antonmedv/expr/tree/master/docs) for evaluating conditions.


An example `argocd-cm.yaml` file with deep links and its variations :
gdsoumya marked this conversation as resolved.
Show resolved Hide resolved

```yaml
# sample project level links
project.links: |
- url: https://myaudit-system.com?project={{.metadata.name}}
title: Audit
description: system audit logs
icon.class: "fa-book"
# sample application level links
application.links: |
# pkg.go.dev/text/template is used for evaluating url templates
- url: https://mycompany.splunk.com?search={{.spec.destination.namespace}}
title: Splunk
# conditionally show link e.g. for specific project
# github.com/antonmedv/expr is used for evaluation of conditions
- url: https://mycompany.splunk.com?search={{.spec.destination.namespace}}
title: Splunk
if: spec.project == "default"
- url: https://{{.metadata.annotations.splunkhost}}?search={{.spec.destination.namespace}}
title: Splunk
if: metadata.annotations.splunkhost
# sample resource level links
resource.links: |
- url: https://mycompany.splunk.com?search={{.metadata.namespace}}
title: Splunk
if: kind == "Pod" || kind == "Deployment"
```