Skip to content

Commit 14f08ae

Browse files
committed
fix links
On-behalf-of: @SAP [email protected]
1 parent 7d17f91 commit 14f08ae

File tree

3 files changed

+25
-24
lines changed

3 files changed

+25
-24
lines changed

docs/content/concepts/apis/exporting-apis.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -159,16 +159,16 @@ exported APIs need to know and reference it.
159159

160160
Given 2 Workspaces, each with its own `APIExport` that exports `widgets.example.kcp.io`, kcp uses the identity hash (in
161161
a mostly transparent manner) to ensure the correct instances associated with the appropriate `APIResourceSchema` are
162-
served to clients. See [Run Your Controller](#Run-Your-Controller) for more information.
162+
served to clients. See [Build Your Controller](#build-your-controller) for more information.
163163

164164
### Permission Claims
165165

166166
When a consumer creates an `APIBinding` that binds to an `APIExport`, the API provider who owns the `APIExport`
167167
implicitly has access to instances of the exported APIs in the consuming workspace. There are also times when the API
168168
provider needs to access additional resource data in a consuming workspace. These resources might come from other
169-
APIExports the consumer has created `APIBindings` for, or from APIs that are built in to kcp. The API provider
170-
requests access to these additional resources by adding `PermissionClaims` for the desired API's group, resource, and
171-
identity hash to their `APIExport`. Let's take the example `APIExport` from above and add permission claims for
169+
APIExports the consumer has created `APIBindings` for, or from APIs that are built in to kcp. The API provider
170+
requests access to these additional resources by adding `PermissionClaims` for the desired API's group, resource, and
171+
identity hash to their `APIExport`. Let's take the example `APIExport` from above and add permission claims for
172172
`ConfigMaps` and `Things`:
173173

174174
```yaml
@@ -196,9 +196,9 @@ spec:
196196
3. To claim another exported API, you must include its `identityHash`
197197
4. If you aren't claiming access to individual instances, you must specify `all` instead
198198

199-
This is essentially a request from the APIProvider, asking each consumer to grant permission for the claimed
199+
This is essentially a request from the APIProvider, asking each consumer to grant permission for the claimed
200200
resources. If the consumer does not accept a permission claim, the API Provider is not allowed to access the claimed
201-
resources. Consumer acceptance of permission claims is part of the `APIBinding` spec. For more details, see the
201+
resources. Consumer acceptance of permission claims is part of the `APIBinding` spec. For more details, see the
202202
section on [APIBindings](#apibinding).
203203

204204
### Maximal Permission Policy
@@ -207,7 +207,7 @@ If you want to set an upper bound on what is allowed for a consumer of your expo
207207
permission policy" using standard RBAC resources. This is optional; if the policy is not set, no upper bound is applied,
208208
and a consuming user is authorized based on the RBAC configuration in the consuming workspace.
209209

210-
The maximal permission policy consists of RBAC `(Cluster)Roles` and `(Cluster)RoleBindings`. Incoming requests to a
210+
The maximal permission policy consists of RBAC `(Cluster)Roles` and `(Cluster)RoleBindings`. Incoming requests to a
211211
workspace that binds to an APIExport are additionally checked against
212212
these rules, with the username and groups prefixed with `apis.kcp.io:binding:`.
213213

@@ -227,7 +227,7 @@ spec:
227227
local: {} # (1)
228228
```
229229

230-
1. `local` is the only supported option at the moment. "Local" means the RBAC policy is defined in the same
230+
1. `local` is the only supported option at the moment. "Local" means the RBAC policy is defined in the same
231231
workspace as the `APIExport`.
232232

233233
We don't want users to be able to mutate the `status` subresource, so we set up
@@ -269,14 +269,14 @@ subjects:
269269
name: apis.kcp.io:binding:system:authenticated # (1)
270270
```
271271

272-
1. Note the `apis.kcp.io:binding:` prefix; this identifies this `ClusterRoleBinding` as part of the maximal
272+
1. Note the `apis.kcp.io:binding:` prefix; this identifies this `ClusterRoleBinding` as part of the maximal
273273
permission policy. It applies to `system:authenticated`.
274274

275-
Now imagine a user named `unicorn` with group `system:authenticated`. They create a workspace named
276-
`magic` and bind to the `tenancy.kcp.io` APIExport from the workspace `root`. What actions `unicorn` is allowed to
275+
Now imagine a user named `unicorn` with group `system:authenticated`. They create a workspace named
276+
`magic` and bind to the `tenancy.kcp.io` APIExport from the workspace `root`. What actions `unicorn` is allowed to
277277
perform in the `magic` workspace must be granted by **both**:
278278

279-
1. the standard RBAC authorization flow in the `magic` workspace; i.e., `(Cluster)Roles` and `(Cluster)RoleBindings`
279+
1. the standard RBAC authorization flow in the `magic` workspace; i.e., `(Cluster)Roles` and `(Cluster)RoleBindings`
280280
in the `magic` workspace itself, **and**
281281
2. the maximal permission policy RBAC settings configured in the `root` workspace for the `tenancy` APIExport
282282

docs/content/concepts/terminology.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ where different logical clusters can be used by different users in the organizat
2323
The kcp server only provides resources to accomplish this, such as `LogicalCluster`, `Workspace`, `APIBinding` and
2424
`APIExport`, on top of some core Kubernetes resources, like `ConfigMap` and `Secret`. It doesn't provide Kubernetes
2525
resources for managing and orchestrating workloads, such as Pods and Deployments. The list of resources provided by
26-
default can be found in the [Built-in APIs document](../apis/built-in).
26+
default can be found in the [Built-in APIs document](apis/built-in.md).
2727

2828
kcp follows the Kubernetes API semantics in each logical cluster, i.e. kcp should be conformant to the subset of the
2929
Kubernetes conformance suite that applies to the APIs available in kcp. In other words, if you're building a platform
@@ -107,7 +107,7 @@ A Workspace's path is based on the hierarchy and the user provided name. For exa
107107

108108
The workspace path is used for building the workspace URL and for accessing the workspace via the `ws` kubectl plugin.
109109

110-
More information, including examples, can be found in the the [Workspaces document](../workspaces).
110+
More information, including examples, can be found in the the [Workspaces document](workspaces/index.md).
111111

112112
### Workspace Types
113113

@@ -118,10 +118,10 @@ Workspaces have types, which are mostly oriented around a set of default or opti
118118
- a workspace intended for building Knative functions might expose only the Knative serving APIs, ConfigMaps, Secrets,
119119
and optionally enable Knative Eventing APIs.
120120

121-
By default, each workspace has the [built-in APIs installed and available to its users](./apis/built-in).
121+
By default, each workspace has the [built-in APIs installed and available to its users](apis/built-in.md).
122122

123123
More information, including a list of Workspace Types and examples, can be found in the
124-
[Workspace Types document](../workspaces/workspace-types/).
124+
[Workspace Types document](workspaces/workspace-types.md).
125125

126126
## Virtual Workspaces
127127

@@ -131,7 +131,7 @@ HTTP path structure, with each (virtual) logical cluster having its own HTTP end
131131
As with kcp itself, each of these endpoints looks like a Kubernetes cluster on its own, i.e. with `/api/v1` and API
132132
groups under `/apis/<group>/<version>`.
133133

134-
The Virtual Logical Clusters are called virtual because they don’t actually have their own storage, i.e. they are not
134+
The Virtual Logical Clusters are called virtual because they don’t actually have their own storage, i.e. they are not
135135
a source of truth, instead they are just proxied representations of the real logical clusters from kcp. In the process
136136
of proxying, the Virtual Workspace API server might filter the visible objects, hide certain API groups completely, or
137137
even transform objects depending on the use case (e.g. strip the sensitive data). Also, the permission semantics might
@@ -157,7 +157,7 @@ the objects for the resources they provide and potentially other related objects
157157
It's important to note that the Virtual Workspaces are not necessarily read-only, but that they can also mutate
158158
resources in the corresponding real logical cluster.
159159

160-
**Finally, for brevity, the Virtual Workspace API server is often simply called the Virtual Workspace.**
160+
**Finally, for brevity, the Virtual Workspace API server is often simply called the Virtual Workspace.**
161161
The Virtual Workspace doesn't exist as a resource in kcp, it's purely a very flexible API (server) that can connect to
162162
the kcp server for the sake of gathering and mutating the needed objects.
163163

@@ -170,7 +170,7 @@ binary alongside the kcp server.
170170
In a sharded setup, you need to run the Virtual Workspace (API server) for each kcp shard/server that you have.
171171

172172
More information, including concrete examples and a list of frequently asked questions, can be found in the
173-
[Virtual Workspaces document](../workspaces/virtual-workspaces/).
173+
[Virtual Workspaces document](workspaces/virtual-workspaces.md).
174174

175175
## Exporting/Binding APIs
176176

@@ -207,7 +207,7 @@ In the sense of kcp, sharding involves:
207207

208208
A shard hosts its own set of Workspaces. The sharding mechanism in kcp allows you to make the workspace hierarchy span
209209
many shards transparently, while ensuring you can bind APIs from logical clusters running in different shards.
210-
The [Sharding documentation](./sharding/shards/) has more details about possibilities of sharding, and we strongly
210+
The [Sharding documentation](sharding/shards.md) has more details about possibilities of sharding, and we strongly
211211
recommend reading this document if you want to shard your kcp setup.
212212

213213
In a sharded setup, you'll be sending requests to a component called Front Proxy (`kcp-front-proxy`) instead to a

docs/main.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# limitations under the License.
1414

1515
import copy
16+
import os.path
1617

1718
def define_env(env):
1819
"""
@@ -55,10 +56,10 @@ def section_items(page, nav, config):
5556

5657
# Copy so we don't modify the original
5758
child = copy.deepcopy(child)
58-
59-
# Subsection nesting that works across any level of nesting
60-
# Replaced mkdocs fix_url function
61-
child.file.url = child.url.replace(page.url, "./")
59+
60+
# mkdocs hates if a link in the generated Markdown (!) is already a fully-fledged URL
61+
# and not a link to a file anymore, so we replace the URL with the file path here.
62+
child.file.url = os.path.basename(child.file.src_uri)
6263
siblings.append(child)
6364

6465
return siblings

0 commit comments

Comments
 (0)