Skip to content

Commit 7bc83fc

Browse files
djwfyiclaude
andcommitted
doc(argocd): editorial polish across argo cd integration docs
Prose improvements across overview, connect-argocd, connect-akuity, and deploy-applications: active voice, 25-word sentence target, no em dashes, click/select distinction, table-before-tabs ordering, and parallel structure between connector pages. Structural changes: split akuity field reference into two tables, moved agent sizing to a reference appendix after next steps, collapsed redundant h3 into the deploy-to-tenant-cluster section, fixed broken relative links. Added Akuity and kustomization to Vale vocabulary. Updated style guide with click/select guidance. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent b2234ee commit 7bc83fc

7 files changed

Lines changed: 166 additions & 174 deletions

File tree

.claude/skills/vcluster-docs-writer/references/style-guide.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,19 @@ When writing documentation for vCluster features, follow this structure:
204204
- Include expected output where relevant
205205
- Group related examples under descriptive headings
206206

207+
#### UI interaction language in Flow steps
208+
209+
Use **"Click"** when the user interacts with a single item — a button, tab, link, or nav item.
210+
Use **"Select"** when the user is making a choice between options — a dropdown, list, or set of radio buttons.
211+
212+
Never write "Click on", "Click the", or "Click on the" — just "Click".
213+
214+
| Correct | Incorrect |
215+
|---|---|
216+
| `Click <Button>Save</Button>` | `Click the <Button>Save</Button> button` |
217+
| `Click <NavStep>Virtual Clusters</NavStep>` | `Click on <NavStep>Virtual Clusters</NavStep>` |
218+
| `Select the project from the dropdown` | `Click the project dropdown` |
219+
207220
### 5. Known Limitations Section
208221
- Clearly document any limitations at the end
209222
- Use subsections for different limitation categories

.github/styles/config/vocabularies/Loft/accept.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[aA]dmin
2+
[Aa]kuity
23
Alpine
34
ArgoCD
45
AWS
@@ -37,6 +38,8 @@ JavaScript
3738
[jJ]ob
3839
apiserver
3940
kubeadm
41+
[kK]ustomize
42+
[kK]ustomization
4043
KubeVirt
4144
kubelet
4245
Let's Encrypt

platform/integrations/argocd/connect-akuity.mdx

Lines changed: 74 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,27 @@ import Flow, { Step } from "@site/src/components/Flow";
1010
import Button from "@site/src/components/Button";
1111
import Label from "@site/src/components/Label";
1212

13-
This guide connects vCluster Platform to an [Akuity](https://akuity.io)-managed Argo CD instance. At the end you will have a connector that registers tenant clusters and control plane clusters with Akuity and provisions the Akuity agent inside each cluster automatically.
13+
This guide connects vCluster Platform to an [Akuity](https://akuity.io)-managed Argo CD instance. After successful completion of the steps, you should have a connector that registers tenant clusters and control plane clusters with Akuity and provisions the Akuity agent inside each cluster automatically.
1414

1515
For a self-hosted Argo CD server, see [Connect to Argo CD](./connect-argocd.mdx) instead.
1616

1717
## How the Akuity agent works
1818

19-
When you use an Akuity connector, Argo CD does not connect directly to your cluster's API server. Instead, Akuity uses a lightweight agent running inside each registered cluster that establishes an outbound connection to the Akuity control plane. The managed Akuity Argo CD instance communicates with the cluster through that persistent connection.
20-
21-
This means the cluster's API server does not need to be publicly reachable — the agent runs inside the cluster and connects outward — so private clusters are fully supported.
19+
When you use an Akuity connector, Argo CD does not connect directly to your cluster's API server. Instead, Akuity uses a lightweight agent running inside each registered cluster that establishes an outbound connection to the Akuity control plane. The agent's outbound connection becomes a bidirectional channel. Argo CD communicates with the cluster through it without requiring the cluster's API server to be directly reachable. Since the agent connects outward, private clusters are fully supported.
2220

2321
You do not install or manage the agent manually. When a cluster is registered with an Akuity connector, Platform:
2422

2523
1. Calls the Akuity API to register the cluster and retrieve the agent installation manifest.
26-
2. Applies the manifest to the cluster. The agent is installed in its own namespace within the cluster.
24+
2. Applies the manifest to the cluster. The agent installs in its own namespace within the cluster.
2725
3. Stores a hash of the applied manifest in a cluster annotation. If the manifest changes (for example, after an Akuity agent version update), Platform detects the drift and applies the updated manifest automatically.
2826

29-
When the integration is disabled or the connector is changed, Platform removes the agent namespace from the cluster and deregisters it from Akuity.
27+
When you disable the integration, Platform removes the agent namespace and deregisters the cluster from Akuity. When you change which connector a cluster references, Platform deregisters from the previous Akuity instance before registering with the new one.
3028

3129
## Prerequisites
3230

33-
- vCluster Platform running with admin access
31+
- vCluster Platform running with [platform admin access](../../administer/users-permissions/overview.mdx)
3432
- An Akuity organization with an active Argo CD instance
35-
- An Akuity API key (see below)
33+
- An Akuity API key. See [Akuity API key permissions](#akuity-api-key-permissions) for required permissions.
3634

3735
### Akuity API key permissions
3836

@@ -49,11 +47,40 @@ See the [Akuity API key documentation](https://docs.akuity.io/organizations/api-
4947

5048
## Step 1: Create a connector
5149

50+
The connector Secret supports the following fields.
51+
52+
**Standard connection fields:**
53+
54+
| Field | Required | Description |
55+
|-------|----------|-------------|
56+
| `server` | Yes | Akuity instance URL. Format: `https://<akuityInstanceId>.cd.akuity.cloud/` |
57+
| `token` | If not using `username` and `password` | Argo CD API bearer token for the Akuity instance |
58+
| `username` | If not using `token` | Argo CD username |
59+
| `password` | If not using `token` | Argo CD password |
60+
| `namespace` | No | Namespace where Argo CD is installed. Defaults to `argocd` |
61+
| `insecure` | No | Set to `"true"` to skip TLS verification. Defaults to `"false"` |
62+
63+
**Akuity-specific fields:**
64+
65+
| Field | Required | Description |
66+
|-------|----------|-------------|
67+
| `connectorType` | Yes | Must be `"akuity"` |
68+
| `akuityOrgId` | Yes | Akuity organization ID |
69+
| `akuityInstanceId` | Yes | Argo CD instance ID within your Akuity organization |
70+
| `akuityApiKeyId` | Yes | Akuity API key ID, used to register and manage clusters via the Akuity API |
71+
| `akuityApiKeySecret` | Yes | Akuity API key secret |
72+
| `akuityAgentSize` | No | Agent size profile: `CLUSTER_SIZE_SMALL`, `CLUSTER_SIZE_MEDIUM` (default), or `CLUSTER_SIZE_LARGE`. See [Agent sizing](#agent-sizing). |
73+
| `akuityRepoServerReplicas` | No | Override the `argocd-repo-server` replica count. See [Agent sizing](#agent-sizing). |
74+
| `akuityRepoServerMemory` | No | Override `argocd-repo-server` memory. Sets both `requests` and `limits`. See [Agent sizing](#agent-sizing). |
75+
76+
Select your authentication method and apply the Secret with `kubectl apply`:
77+
5278
<Tabs
5379
defaultValue="ui"
5480
values={[
5581
{ label: "Platform UI", value: "ui" },
56-
{ label: "YAML", value: "yaml" },
82+
{ label: "YAML (token)", value: "yaml-token" },
83+
{ label: "YAML (basic auth)", value: "yaml-basic" },
5784
]}
5885
>
5986
<TabItem value="ui">
@@ -66,7 +93,7 @@ See the [Akuity API key documentation](https://docs.akuity.io/organizations/api-
6693
Click <Button>Add ArgoCD Connector</Button>.
6794
</Step>
6895
<Step>
69-
In the <Label>Display name</Label> field, enter a human-readable name for the connector.
96+
In <Label>Display name</Label>, enter a human-readable name for the connector.
7097
The <Label>ArgoCD Connector ID</Label> is auto-generated from the display name and is used to reference this connector from clusters.
7198
</Step>
7299
<Step>
@@ -76,10 +103,10 @@ See the [Akuity API key documentation](https://docs.akuity.io/organizations/api-
76103
- <Label>API Key ID</Label> and <Label>API Key Secret</Label>: your Akuity API key credentials
77104
</Step>
78105
<Step>
79-
In the <Label>Server URL</Label> field, enter the Akuity instance URL. The format is `https://<akuityInstanceId>.cd.akuity.cloud/`.
106+
In <Label>Server URL</Label>, enter the Akuity instance URL. The format is `https://<akuityInstanceId>.cd.akuity.cloud/`.
80107
</Step>
81108
<Step>
82-
If Argo CD is installed in a namespace other than `argocd`, update the <Label>Argo CD Namespace</Label> field.
109+
If Argo CD is installed in a namespace other than `argocd`, update <Label>Argo CD Namespace</Label>.
83110
</Step>
84111
<Step>
85112
Select an authentication method and fill in the credentials:
@@ -88,26 +115,15 @@ See the [Akuity API key documentation](https://docs.akuity.io/organizations/api-
88115
</Step>
89116
<Step>
90117
In the <Label>Agent Configuration</Label> section, select an <Label>Agent Size</Label> for the cluster workload.
91-
Optionally override <Label>Replicas</Label> and <Label>Memory</Label> for the `argocd-repo-server` (see [Agent sizing](#agent-sizing) below).
118+
Optionally override <Label>Replicas</Label> and <Label>Memory</Label> for the `argocd-repo-server` (see [Agent sizing](#agent-sizing)).
92119
</Step>
93120
<Step>
94121
Click <Button>Create ArgoCD Connector</Button>.
95122
</Step>
96123
</Flow>
97124

98125
</TabItem>
99-
<TabItem value="yaml">
100-
101-
Set `connectorType: "akuity"` to use Akuity. Akuity supports two authentication methods for the Argo CD API, controlled by the `authType` field. Apply the Secret with `kubectl apply`.
102-
103-
<Tabs
104-
defaultValue="token"
105-
values={[
106-
{ label: "Token", value: "token" },
107-
{ label: "Basic auth", value: "basic" },
108-
]}
109-
>
110-
<TabItem value="token">
126+
<TabItem value="yaml-token">
111127

112128
```yaml
113129
apiVersion: v1
@@ -120,7 +136,6 @@ metadata:
120136
type: Opaque
121137
stringData:
122138
connectorType: "akuity"
123-
authType: "token"
124139
server: "https://<akuity-instance-id>.cd.akuity.cloud/"
125140
token: "<argocd-api-token>"
126141
namespace: "argocd"
@@ -135,7 +150,7 @@ stringData:
135150
```
136151
137152
</TabItem>
138-
<TabItem value="basic">
153+
<TabItem value="yaml-basic">
139154
140155
```yaml
141156
apiVersion: v1
@@ -148,7 +163,6 @@ metadata:
148163
type: Opaque
149164
stringData:
150165
connectorType: "akuity"
151-
authType: "basic"
152166
server: "https://<akuity-instance-id>.cd.akuity.cloud/"
153167
username: "<argocd-username>"
154168
password: "<argocd-password>"
@@ -166,55 +180,13 @@ stringData:
166180
</TabItem>
167181
</Tabs>
168182
169-
| Field | Required | Description |
170-
|-------|----------|-------------|
171-
| `connectorType` | Yes | Must be `"akuity"` |
172-
| `authType` | Yes | Argo CD authentication method: `"token"` or `"basic"` |
173-
| `server` | Yes | Akuity instance URL. Format: `https://<akuityInstanceId>.cd.akuity.cloud/` |
174-
| `token` | If `authType` is `"token"` | Argo CD API bearer token for the Akuity instance |
175-
| `username` | If `authType` is `"basic"` | Argo CD username |
176-
| `password` | If `authType` is `"basic"` | Argo CD password |
177-
| `namespace` | No | Namespace where Argo CD is installed. Defaults to `argocd` |
178-
| `insecure` | No | Set to `"true"` to skip TLS verification. Defaults to `"false"` |
179-
| `akuityOrgId` | Yes | Akuity organization ID |
180-
| `akuityInstanceId` | Yes | Argo CD instance ID within your Akuity organization |
181-
| `akuityApiKeyId` | Yes | Akuity API key ID, used to register and manage clusters via the Akuity API |
182-
| `akuityApiKeySecret` | Yes | Akuity API key secret |
183-
| `akuityAgentSize` | No | Agent size profile: `CLUSTER_SIZE_SMALL`, `CLUSTER_SIZE_MEDIUM` (default), or `CLUSTER_SIZE_LARGE`. See [Agent sizing](#agent-sizing). |
184-
| `akuityRepoServerReplicas` | No | Override the `argocd-repo-server` replica count. See [Agent sizing](#agent-sizing). |
185-
| `akuityRepoServerMemory` | No | Override `argocd-repo-server` memory. Sets both `requests` and `limits`. See [Agent sizing](#agent-sizing). |
186-
187-
</TabItem>
188-
</Tabs>
189-
190-
## Agent sizing
191-
192-
Three fields in the connector Secret control how the Akuity agent is provisioned inside each registered cluster.
193-
194-
### `akuityAgentSize`
195-
196-
This field is sent to the Akuity API when the cluster is registered and determines the overall resource profile of the agent as defined by Akuity. It is an Akuity-level concept, not a direct Kubernetes resource value — Akuity translates this into the appropriate CPU and memory requests for the agent workloads on its end.
197-
198-
| Value | Recommended for |
199-
|-------|----------------|
200-
| `CLUSTER_SIZE_SMALL` | Development or low-traffic clusters with few Applications |
201-
| `CLUSTER_SIZE_MEDIUM` | General-purpose clusters (default) |
202-
| `CLUSTER_SIZE_LARGE` | High-throughput clusters with many Applications or frequent syncs |
203-
204-
### `akuityRepoServerReplicas` and `akuityRepoServerMemory`
205-
206-
These fields let you override specific resource settings on the `argocd-repo-server` Deployment inside the cluster, independently of the size profile. Platform applies a kustomization patch to the agent manifest before installing it:
207-
208-
- `akuityRepoServerReplicas` sets `spec.replicas` on the `argocd-repo-server` Deployment.
209-
- `akuityRepoServerMemory` sets both `resources.requests.memory` and `resources.limits.memory` to the same value on the `argocd-repo-server` container. Accepts standard Kubernetes memory quantity strings, for example `"1Gi"` or `"512Mi"`.
210-
211-
Both fields are optional and independent of `akuityAgentSize`. Use them when the size profile alone does not give you the control you need over repo server memory or replica count.
183+
For details on the three sizing fields, see [Agent sizing](#agent-sizing).
212184
213185
## Step 2: Enable the connector on a cluster
214186
215187
### On a tenant cluster
216188
217-
Add the `integrations.argoCD` block to the tenant cluster's `vcluster.yaml`. The `connector` field references the Secret name from Step 1.
189+
Add the `integrations.argoCD` block to the tenant cluster's `vcluster.yaml`. The `connector` field references the Secret name from [Step 1](#step-1-create-a-connector).
218190

219191
```yaml
220192
integrations:
@@ -223,7 +195,7 @@ integrations:
223195
connector: akuity-prod
224196
```
225197

226-
The connector can also be set directly in the `VirtualClusterInstance` manifest:
198+
You can also set the connector directly in the `VirtualClusterInstance` manifest:
227199

228200
```yaml
229201
apiVersion: management.loft.sh/v1
@@ -233,15 +205,12 @@ metadata:
233205
namespace: p-team-a
234206
spec:
235207
template:
236-
metadata:
237-
name: vcluster
238-
spec:
239-
helmRelease:
240-
values: |
241-
integrations:
242-
argoCD:
243-
enabled: true
244-
connector: akuity-prod
208+
helmRelease:
209+
values: |
210+
integrations:
211+
argoCD:
212+
enabled: true
213+
connector: akuity-prod
245214
```
246215

247216
When the `VirtualClusterInstance` reconciles, Platform registers the tenant cluster with Akuity, retrieves the agent manifest, and installs the agent into the cluster.
@@ -262,9 +231,31 @@ spec:
262231
```
263232

264233
:::warning Disabling the integration
265-
Disabling the integration removes the cluster from Akuity, uninstalls the agent namespace from the cluster, and deletes all `ArgoCDApplication` objects managed by Platform. This applies whether the integration is configured via `vcluster.yaml`, a `VirtualClusterInstance` manifest, or a `Cluster` object. Any applications deployed by the integration will be removed from Argo CD.
234+
Disabling the integration removes the cluster from Akuity, uninstalls the agent namespace, and deletes all `ArgoCDApplication` objects managed by Platform. This applies whether you configure the integration using `vcluster.yaml`, a `VirtualClusterInstance` manifest, or a `Cluster` object. Any applications deployed by the integration are removed from Argo CD.
266235
:::
267236

268237
## Next step
269238

270239
With the connector enabled, you can declare Argo CD Applications in your tenant cluster or control plane cluster configuration. See [Deploy applications](./deploy-applications.mdx).
240+
241+
## Agent sizing
242+
243+
Three fields in the connector Secret control how the Akuity agent is provisioned inside each registered cluster.
244+
245+
### `akuityAgentSize`
246+
247+
When you register a cluster, Platform sends this field to the Akuity API to set the agent's overall resource profile. This is an Akuity-level concept, not a direct Kubernetes resource value. Akuity translates it into the appropriate CPU and memory requests for the agent workloads.
248+
249+
| Value | Recommended for |
250+
|-------|----------------|
251+
| `CLUSTER_SIZE_SMALL` | Development or low-traffic clusters with few Applications |
252+
| `CLUSTER_SIZE_MEDIUM` | General-purpose clusters (default) |
253+
| `CLUSTER_SIZE_LARGE` | High-throughput clusters with many Applications or frequent syncs |
254+
255+
### `akuityRepoServerReplicas`
256+
257+
This optional field overrides `spec.replicas` on the `argocd-repo-server` Deployment inside the cluster. Platform applies it as a kustomization patch to the agent manifest before installing. It is independent of `akuityAgentSize`.
258+
259+
### `akuityRepoServerMemory`
260+
261+
This optional field overrides memory on the `argocd-repo-server` container inside the cluster. Platform sets both `resources.requests.memory` and `resources.limits.memory` to the same value via a kustomization patch to the agent manifest. It is independent of `akuityAgentSize`. It accepts standard Kubernetes memory quantity strings, for example `"1Gi"` or `"512Mi"`.

0 commit comments

Comments
 (0)