Skip to content

Enable link checker in CI and fix broken links #49

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

Merged
merged 1 commit into from
Sep 16, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
services:
- docker

script:
./hack/ci/link-check.sh
2 changes: 1 addition & 1 deletion content/en/docs/Concepts/crds/CatalogSource.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ weight: 3

A CatalogSource represents a store of metadata that OLM can query to discover and install operators and their dependencies.

The `.spec` of a CatalogSource indicates to how to construct a pod or how to talk to a service that serves the [operator-registry grpc api](/docs/operator-registry).
The `.spec` of a CatalogSource indicates to how to construct a pod or how to talk to a service that serves the [operator-registry grpc api](/docs/concepts/olm-architecture/operator-registry/using-catalog-locally).

There are three primary types:

Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/Concepts/crds/operatorgroup.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ An OperatorGroup is an OLM resource that provides rudimentary multitenant config

* An `OperatorGroup` selects a set of target namespaces in which to generate required RBAC access for its member operators.
* The set of target namespaces is provided via a comma-delimited string stored in the `olm.targetNamespaces` annotation. This annotation is applied to member operator's `ClusterServiceVersion` (CSV) instances and is projected into their deployments. It is accessible to operator containers using [The Downward API](https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#the-downward-api)
* An operator is said to be a [member of an `OperatorGroup`](#operatorgroup-membership) if its CSV exists in the same namespace as the `OperatorGroup` and its CSV's [`InstallModes` support the set of namespaces targeted by the `OperatorGroup`](#installmodes-and-supported-operatorgroups)
* An operator is said to be a [member of an `OperatorGroup`](#membership) if its CSV exists in the same namespace as the `OperatorGroup` and its CSV's [`InstallModes` support the set of namespaces targeted by the `OperatorGroup`](#installmodes-and-supported-operatorgroups)
* In order to transition, a CSV must be an active member of an `OperatorGroup` that has no [provided API conflicts with intersecting `OperatorGroups`](#operatorgroup-intersection)

## Membership
Expand Down Expand Up @@ -157,7 +157,7 @@ OLM will create copies of all active member CSVs of an `OperatorGroup` in each o

## Static OperatorGroups

An `OperatorGroup` is _static_ if it's `spec.staticProvidedAPIs` field is set to __true__. As a result, OLM does not modify the OperatorGroups's `olm.providedAPIs` annotation, which means that it can be set in advance. This is useful when a user wishes to use an `OperatorGroup` to prevent [resource contention](#what-can-go-wrong?) in a set of namespaces, but does not have active member CSVs that provide the APIs for those resources.
An `OperatorGroup` is _static_ if it's `spec.staticProvidedAPIs` field is set to __true__. As a result, OLM does not modify the OperatorGroups's `olm.providedAPIs` annotation, which means that it can be set in advance. This is useful when a user wishes to use an `OperatorGroup` to prevent resource contention in a set of namespaces, but does not have active member CSVs that provide the APIs for those resources.

Here's an example of an `OperatorGroup` that "protects" prometheus resources in all namespaces with the `something.cool.io/cluster-monitoring: "true"` annotation:

Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/Concepts/crds/subscription.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ weight: 4
---


A Subscription represents an intention to install an operator. It is the CustomResource that relate an operator to a CatalogSource. Subscriptions describe which [channel](/docs/concepts/glossary/#channel) of an operator package to subscribe to, and whether to perform updates automatically or manually. If set to automatic, the Subscription ensures OLM will manage and upgrade the operator to ensure the latest version is always running in the cluster.
A Subscription represents an intention to install an operator. It is the CustomResource that relate an operator to a CatalogSource. Subscriptions describe which [channel](/docs/glossary/glossary/#channel) of an operator package to subscribe to, and whether to perform updates automatically or manually. If set to automatic, the Subscription ensures OLM will manage and upgrade the operator to ensure the latest version is always running in the cluster.

Here's an example of a Subscription definition:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: >
---


To add a [catalog image](/operator-registry/tasks/building-catalog/#building-a-catalog-image-of-operators-using-operator-registry) to your cluster for use with [Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager) (OLM), create a [CatalogSource](/docs/Concepts/crds/CatalogSource) referencing the image you created and pushed to your favourite container registry:
To add a [catalog image](/docs/tasks/make-operator-part-of-catalog) to your cluster for use with [Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager) (OLM), create a [CatalogSource](/docs/concepts/crds/catalogsource) referencing the image you created and pushed to your favourite container registry:

```yaml
apiVersion: operators.coreos.com/v1alpha1
Expand Down
6 changes: 3 additions & 3 deletions content/en/docs/Glossary/Glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ These pages are under construction.

### Bundle Image

**Definition**: An image of a bundle is built from operator manifests and contains exactly one [bundle](#Bundle). The bundle images are stored and distributed by OCI spec container registries such as Quay.io or DockerHub.
**Definition**: An image of a bundle is built from operator manifests and contains exactly one [bundle](#bundle). The bundle images are stored and distributed by OCI spec container registries such as Quay.io or DockerHub.

### Channel

**Definition**: The channel defines a stream of updates for an operator and is used to roll out updates for subscribers. The head points at the latest version of that channel. For example, a stable channel would have all stable versions of an operator arranged from the earliest to the latest. An operator can have several channels, and a subscription binding to a certain channel would only look for updates in that channel.

### Channel Head

**Definition**: Head refers to the latest known update in a particular [channel](#Channel).
**Definition**: Head refers to the latest known update in a particular [channel](#channel).

### Catalog Image

Expand All @@ -53,7 +53,7 @@ These pages are under construction.

### Registry

**Definition**: A database which stores [Bundle Images](#Bundle-Image) of Operators, each with all of its latest/historical versions in all [channels](#Channel).
**Definition**: A database which stores [Bundle Images](#bundle-image) of Operators, each with all of its latest/historical versions in all [channels](#channel).

### Update Graph

Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/Tasks/Troubleshooting/subscription.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The Catalog operator will constantly update the `Status` of `Subscription` to re

>Note: It is possible that the `Status` is missing, which suggests that the Catalog operator is encountering an issue when processing the `Subscription` in a very early stage.

If the `Status` block does not provide enough information, check the [Catalog operator's logs](#how-to-view-the-catalog-operator-logs).
If the `Status` block does not provide enough information, check the [Catalog operator's logs](/docs/tasks/troubleshooting/olm-and-catalog-operators/#how-to-view-the-catalog-operator-logs).

### A subscription in namespace X can't install operators from a CatalogSource in namespace Y

Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/Tasks/install-operator-with-olm.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "Install your operator with OLM"
date: 2020-03-25
weight: 6
description: >
[Once you've made your operator available in a catalog](/docs/tasks/make-operator-part-of-catalog/), or you've chosen an operator from the [list of operators available to be installed in the cluster](/docs/tasks/list-operators-available-to-install/), you can install your operator by creating a [`Subscription`](/docs/concepts/customresourcedefinitions/subscription/) to a specific [channel](/docs/concepts/glossary/#channel).
[Once you've made your operator available in a catalog](/docs/tasks/make-operator-part-of-catalog/), or you've chosen an operator from the [list of operators available to be installed in the cluster](/docs/tasks/list-operators-available-to-install/), you can install your operator by creating a [`Subscription`](/docs/concepts/crds/subscription/) to a specific [channel](/docs/glossary/glossary/#channel).
---

## Prerequisites
Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/Tasks/list-operators-available-to-install.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ title: "List operators available to install"
date: 2017-01-05
weight: 5
description: >
Once you've packaged your operator and made it part of catalog, you can see it among the list of operators that are available to install in the cluster. There is an extension API in OLM named `PackageManifest` that contains information about existing [CatalogSources](/docs/concepts/#catalogsources), which is essentially a collection of bundles that each define an operator in the cluster. By querying that API, you can see the list of available operators.
Once you've packaged your operator and made it part of catalog, you can see it among the list of operators that are available to install in the cluster. There is an extension API in OLM named `PackageManifest` that contains information about existing [CatalogSources](/docs/concepts/crds/catalogsource), which is essentially a collection of bundles that each define an operator in the cluster. By querying that API, you can see the list of available operators.
---

[CatalogSources](/docs/concepts/#catalogsources) in OLM are either global or namespaced. Global CatalogSources contain operators that will be available for installing in all namespaces, while namespaced CatalogSources only contains operators that are available to be installed in a specific namespace.
[CatalogSources](/docs/concepts/crds/catalogsource) in OLM are either global or namespaced. Global CatalogSources contain operators that will be available for installing in all namespaces, while namespaced CatalogSources only contains operators that are available to be installed in a specific namespace.

## Using the PackageManifest API

Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/Tasks/packaging-an-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ This is all in service of ensuring that when a user installs an operator from OL

### Starting from an existing set of operator manifests

For this example, we'll use the example manifests from [the example memcached operator](https://github.com/operator-framework/operator-sdk-samples/tree/master/go/memcached-operator/deploy).
For this example, we'll use the example manifests from [the example memcached operator](https://github.com/operator-framework/operator-sdk-samples/tree/v0.19.2/go/memcached-operator/deploy).

These manifests consist of:

Expand Down Expand Up @@ -130,7 +130,7 @@ spec:

**Using `faq` to build an install strategy from an existing deployment and rbac**

`faq` is a wrapper around `jq` that can handle multiple input and output formats, like the yaml we're working with now. The following example requires that [faq be installed](https://github.com/jzelinskie/faq#installation) and references [the example memcached operator](https://github.com/operator-framework/operator-sdk-samples/tree/master/go/memcached-operator/deploy).
`faq` is a wrapper around `jq` that can handle multiple input and output formats, like the yaml we're working with now. The following example requires that [faq be installed](https://github.com/jzelinskie/faq#installation) and references [the example memcached operator](https://github.com/operator-framework/operator-sdk-samples/tree/v0.19.2/go/memcached-operator/deploy).

Here is a simple `faq` script that can generate an install strategy from a single deployment:

Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/advanced-tasks/adding-an-admission-webhook.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ weight: 3

## Defining your Webhook in the ClusterServiceVersion

OLM is capable of managing the lifecycle of [validating](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook) and [mutating](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook) admission webhooks that are shipped alongside your operator. To this end, the [ClusterServiceVersion resource](/docs/Concepts/crds/clusterserviceversion) includes a [WebhookDefinition object](https://github.com/operator-framework/api/blob/7856a40f92893fe94d19d223f5277d1d116ffc67/pkg/operators/v1alpha1/clusterserviceversion_types.go#L164-L180) which can be used to define validating and mutating admission webhooks that will be shipped with the operator. For your convenience, an example of a Validating WebhookDefinition can be seen below:
OLM is capable of managing the lifecycle of [validating](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook) and [mutating](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook) admission webhooks that are shipped alongside your operator. To this end, the [ClusterServiceVersion resource](/docs/concepts/crds/clusterserviceversion) includes a [WebhookDefinition object](https://github.com/operator-framework/api/blob/7856a40f92893fe94d19d223f5277d1d116ffc67/pkg/operators/v1alpha1/clusterserviceversion_types.go#L164-L180) which can be used to define validating and mutating admission webhooks that will be shipped with the operator. For your convenience, an example of a Validating WebhookDefinition can be seen below:

```yaml
apiVersion: operators.coreos.com/v1alpha1
Expand Down Expand Up @@ -45,7 +45,7 @@ spec:
...
```

The `WebhookDescription` object contains a union of the fields defined in the AdmissionWebhook and ValidatingWebhook Kubernetes objects with the exception of the NamespaceSelector, which is generated by OLM to match namespaces scoped by the [OperatorGroup](./operator-scoping.md) that the operator is deployed in.
The `WebhookDescription` object contains a union of the fields defined in the AdmissionWebhook and ValidatingWebhook Kubernetes objects with the exception of the NamespaceSelector, which is generated by OLM to match namespaces scoped by the [OperatorGroup](/docs/advanced-tasks/operator-scoping-with-operatorgroups) that the operator is deployed in.

OLM requires that you define the following:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: >
OLM introduces the concept of `OperatorGroups` to enable cluster admins complete control over the permissions that OLM grants operators that it deploys.
---

An admin may create a single `OperatorGroup` in a given namespace. Any CSV created in that namespace is said to be a member operator of that `OperatorGroup`. With `OperatorGroups`, a cluster admin can:
An admin may create a single [`OperatorGroup`](/docs/concepts/crds/operatorgroup) in a given namespace. Any CSV created in that namespace is said to be a member operator of that `OperatorGroup`. With `OperatorGroups`, a cluster admin can:

* Define the set of permissions that OLM may grant to member operators
* Define the set of namespaces that OLM may grant namespaced permissions in.
Expand Down Expand Up @@ -153,8 +153,6 @@ spec:

Any operator tied to this `OperatorGroup` will now be confined to the permission(s) granted to the specified `ServiceAccount`. If the operator asks for permission(s) that are outside the scope of the `ServiceAccount` the install will fail with appropriate error(s).

An example of scoping an operator can be found [here](openshift/coming-soon.md).

### Configuring the End User Experience

### Making Operators Available
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,6 @@ $ kubectl get packagemanifests -l operatorframework.io/os.windows=supported

## Caveats

Only the labels on the [HEAD of the default channel](/docs/concepts/glossary/#channel-head) are considered for filtering PackageManifests by label.
Only the labels on the [HEAD of the default channel](/docs/glossary/glossary/#channel-head) are considered for filtering PackageManifests by label.

This means, for example, that providing an alternate architecture for an operator in the non-default channel is possible, but will not be available for filtering in the PackageManifest API.
2 changes: 1 addition & 1 deletion content/en/docs/getting-started/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,4 @@ NAME READY UP-TO-DATE AVAILABLE AGE
etcd-operator 1/1 1 1 3m29s
```

To learn more about packaging your operator for OLM, installing/uninstalling an operator etc, visit the [Core Tasks](/docs/Tasks/) and the [Advanced Tasks](/docs/advanced-Tasks/) section of this site.
To learn more about packaging your operator for OLM, installing/uninstalling an operator etc, visit the [Core Tasks](/docs/tasks/) and the [Advanced Tasks](/docs/advanced-tasks/) section of this site.
7 changes: 7 additions & 0 deletions hack/ci/link-check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -ev

docker volume create olm-html
docker run --rm -v "$(pwd):/src" -v olm-html:/src/public klakegg/hugo:0.73.0-ext-ubuntu
docker run --rm -v olm-html:/target mtlynch/htmlproofer /target --empty-alt-ignore --http-status-ignore 429 --allow_hash_href
docker volume rm olm-html