Skip to content

Commit b018f47

Browse files
committed
Add core tasks and troubleshooting docs
Docs related to basic use cases and troubleshooting those use cases.
1 parent 4d4a625 commit b018f47

23 files changed

+824
-1030
lines changed

content/en/docs/Concepts/_index.md

Lines changed: 94 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,103 @@ title: "Concepts"
33
linkTitle: "Concepts"
44
weight: 4
55
description: >
6-
What does your user need to understand about your project in order to use it - or potentially contribute to it?
6+
This page contains a list of terms defined by OLM, along with their definitions and common Aliases.
77
---
88

9-
{{% pageinfo %}}
10-
This is a placeholder page that shows you how to use this template site.
11-
{{% /pageinfo %}}
9+
{{% alert title="Warning" color="warning" %}}
10+
These pages are under construction. Please continue to use the [docs in
11+
OLM git book](https://github.com/operator-framework/olm-book)
12+
for now.
13+
{{% /alert %}}
1214

13-
For many projects, users may not need much information beyond the information in the [Overview](/docs/overview/), so this section is **optional**. However if there are areas where your users will need a more detailed understanding of a given term or feature in order to do anything useful with your project (or to not make mistakes when using it) put that information in this section. For example, you may want to add some conceptual pages if you have a large project with many components and a complex architecture.
1415

15-
Remember to focus on what the user needs to know, not just what you think is interesting about your project! If they don’t need to understand your original design decisions to use or contribute to the project, don’t put them in, or include your design docs in your repo and link to them. Similarly, most users will probably need to know more about how features work when in use rather than how they are implemented. Consider a separate architecture page for more detailed implementation and system design information that potential project contributors can consult.
16+
## CustomResourceDefinitions (CRDs)
17+
18+
The following [CustomResourceDefinitions](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/) are defined by the OLM.
19+
20+
### ClusterServiceVersion
21+
22+
**Definition**: The ClusterServiceVersion represents a particular version of a ClusterService and its operator. It includes metadata such as name, description, version, repository link, labels, icon, etc. It declares `owned`/`required` CRDs, cluster requirements, and install strategy that tells OLM how to create required resources and set up the operator as a [deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/).
23+
24+
**Aliases**: CSV(s)
25+
26+
### CatalogSources
27+
28+
**Definition**: The CatalogSource represents a repository of bundles, which are collections of resources that must contain [CSVs](#ClusterServiceVersion), [CRDs](#CustomResourceDefinitions), and package definitions. There are multiple implementations of a CatalogSource backend, the current recommendation is to use a [registry image](#Index).
29+
30+
**Aliases**: CatSrc(s)
31+
32+
### InstallPlans
33+
34+
**Definition**: The InstallPlan defines a set of resources to be created in order to install or upgrade to a specific version of a ClusterService defined by a CSV.
35+
36+
**Aliases**: IP(s)
37+
38+
### OperatorGroups
39+
40+
**Definition**: The OperatorGroup selects a set of target namespaces in which to generate required RBAC access for its member Operators.
41+
42+
**Aliases**: OG(s)
43+
44+
### OperatorSources
45+
46+
**Definition**: The OperatorSources are a way of pointing to external app registry namespaces that contain a catalog of operators. Applying an OperatorSource to a cluster makes the operators in that OperatorSource available for installation in that cluster.
47+
48+
**Aliases**: OpSrc(s)
49+
50+
### Subscriptions
51+
52+
**Definition**: Subscriptions are Custom Resources that relate an operator to a CatalogSource. Subscriptions describe which 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.
53+
54+
**Aliases**: Subs(s)
55+
56+
## OLM Concepts
57+
58+
### Bundle
59+
60+
**Definition**: A collection of Operator [CSV](#ClusterServiceVersion), manifests, and metadata which together form a unique version of an Operator that can be installed onto the cluster.
61+
62+
### Bundle Image
63+
64+
**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.
65+
66+
### Channel
67+
68+
**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.
69+
70+
### Channel Head
71+
72+
**Definition**: Head refers to the latest known update in a particular [channel](#Channel).
73+
74+
### Catalog Image
75+
76+
**Definition**: A catalog image is a containerized datastore that describes a set of operator and update metadata that can be installed onto a cluster via OLM.
77+
78+
**Aliases**: OPM Index
79+
80+
### Dependency
81+
82+
**Definition**: An Operator may have a dependency on another Operator being present in the cluster. For example, the Vault Operator has a dependency on the Etcd Operator for its data persistence layer. OLM resolves these dependencies by ensuring all specified versions of Operators and CRDs are installed on the cluster during the installation phase. This dependency is resolved by finding and installing an Operator in a Catalog that satisfies the required CRD API, and not related to [packages](#Packages)/[bundles](#Bundles).
83+
84+
**Aliases**: Operator Dependency, GVK Dependency, API Dependency, Required CRD
85+
86+
### Index
87+
88+
**Definition**: The Index refers to an image of a database (a database snapshot) that contains information about Operator bundles including CSVs, CRDs, etc of all versions. This index can host a history of used operators on a cluster and be maintained by adding or removing operators.
89+
90+
**Aliases**: Registry DB, Catalog DB, OPM registry
91+
92+
### Package
93+
94+
**Definition**: A package is a directory that encloses all released history of an Operator with each version contained
95+
in the bundle format. A released version of an Operator is described in a ClusterServiceVersion manifest alongside the CustomResourceDefinitions.
96+
97+
### Registry
98+
99+
**Definition**: A database which stores [Bundle Images](#Bundle-Image) of Operators, each with all of its latest/historical versions in all [channels](#Channel).
100+
101+
### Upgrade Graph
102+
103+
**Definition**: An upgrade graph links versions of [CSV](#ClusterServiceVersions) together, similar to the upgrade graph of any other packaged software. Operators can be installed sequentially, or certain versions can be skipped. The update graph is expected to grow only at the head with newer versions being added. This is automatically resolved as part
16104

17105

content/en/docs/Getting started/_index.md

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ title: "Getting Started"
33
linkTitle: "Getting Started"
44
weight: 2
55
description: >
6-
What does your user need to know to try your project?
6+
Install OLM in a kubernetes cluster.
77
---
88

99
## Prerequisites
1010

11-
- [git][git_tool]
12-
- [go][go_tool] version v1.12+.
13-
- [docker][docker_tool] version 17.03+.
14-
- Alternatively [podman][podman_tool] `v1.2.0+` or [buildah][buildah_tool] `v1.7+`
15-
- [kubectl][kubectl_tool] version v1.11.3+.
16-
- Access to a Kubernetes v1.11.3+ cluster.
11+
- [git](https://git-scm.com/downloads)
12+
- [go](https://golang.org/dl/) version `v1.12+`.
13+
- [docker](https://docs.docker.com/install/) version `17.03`+.
14+
- Alternatively [podman](https://github.com/containers/libpod/blob/master/install.md) `v1.2.0+` or [buildah](https://github.com/containers/buildah/blob/master/install.md) `v1.7+`
15+
- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) `v1.11.3+`.
16+
- Access to a Kubernetes `v1.11.3+` cluster.
1717

1818
## Installation
1919

20-
## Install Released OLM
20+
### Install Released OLM
2121
For installing release versions of OLM, for example version 0.12.0, you can use the following command:
2222

2323
```bash
@@ -28,25 +28,18 @@ kubectl apply -f https://github.com/operator-framework/operator-lifecycle-manage
2828

2929
Learn more about available releases [here](https://github.com/operator-framework/operator-lifecycle-manager/releases).
3030

31-
## Install From Git Repository Master Branch
3231

33-
You can install OLM from the master branch of the [operator-framework/operator-lifecycle-manager](https://github.com/operator-framework/operator-lifecycle-manager/) repository with the following:
34-
35-
```bash
36-
kubectl create -f https://raw.githubusercontent.com/operator-framework/operator-lifecycle-manager/master/deploy/upstream/quickstart/crds.yaml
37-
kubectl create -f https://raw.githubusercontent.com/operator-framework/operator-lifecycle-manager/master/deploy/upstream/quickstart/olm.yaml
38-
```
39-
You can also clone the entire git repository and use the [Makefile](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/Makefile) for deploying OLM locally on [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) for development purposes.
32+
To deploy OLM locally on a [minikube cluster](https://kubernetes.io/docs/tasks/tools/install-minikube/) for development work, use the `run-local` target in the [Makefile](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/Makefile).
4033

4134
```bash
4235
git clone https://github.com/operator-framework/operator-lifecycle-manager.git
4336
cd operator-lifecycle-manager
4437
make run-local
4538
```
4639

47-
## Verify OLM Install
40+
## Try it out!
4841

49-
You can verify the necessary CustomResourceDefinitions are created from applying the `crds.yaml` file with the following:
42+
You can verify your installation of OLM by first checking for all the neccesasary CRDs in the cluster:
5043

5144
```bash
5245
$ kubectl get crd
@@ -57,7 +50,8 @@ installplans.operators.coreos.com 2019-10-21T18:15:27Z
5750
operatorgroups.operators.coreos.com 2019-10-21T18:15:27Z
5851
subscriptions.operators.coreos.com 2019-10-21T18:15:27Z
5952
```
60-
You can also visualize OLM deployments from applying `olm.yaml` file with the following:
53+
54+
And then inspecting the deployments of OLM and it's related componenents:
6155

6256
```bash
6357
$ kubectl get deploy -n olm
@@ -67,10 +61,3 @@ olm-operator 1/1 1 1 5m52s
6761
packageserver 2/2 2 2 5m43s
6862
```
6963

70-
## Setup
71-
72-
Is there any initial setup users need to do after installation to try your project?
73-
74-
## Try it out!
75-
76-
Can your users test their installation, for example by running a commmand or deploying a Hello World example?

content/en/docs/Tasks/porridge.md renamed to content/en/docs/Getting started/example-page.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
title: "Porridge Assessment"
2+
title: "Example Page"
3+
linkTitle: "Example Page"
34
date: 2017-01-05
4-
weight: 4
55
description: >
66
A short lead descripton about this content page. It can be **bold** or _italic_ and can be split over multiple paragraphs.
77
---

content/en/docs/Overview/_index.md

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@ title: "Overview"
33
linkTitle: "Overview"
44
weight: 1
55
description: >
6-
This page introduces you to OLM and why we use it
6+
This page introduces you to OLM and what you can achieve with it
77
---
88

9-
## What is it?
9+
## What is OLM?
1010

11-
Operator Lifecycle Manager (OLM) helps users install, update, and manage the lifecycle of all Operators and their associated services running across their clusters. It is part of the Operator Framework, an open source toolkit designed to manage Kubernetes native applications (Operators) in an effective, automated, and scalable way.
11+
[Operator Lifecycle Manager (OLM)](https://github.com/operator-framework/operator-lifecycle-manager) is a component of the [Operator Framework](https://github.com/operator-framework), an open source toolkit to manage Kubernetes native applications, called Operators, in an effective, automated, and scalable way. OLM extends Kubernetes to provide a declarative way to install, manage, and upgrade Operators and their dependencies in a cluster.
1212

13-
The OLM runs by default in OpenShift Container Platform 4.3, which aids cluster administrators in installing, upgrading, and granting access to Operators running on their cluster. The OpenShift Container Platform web console provides management screens for cluster administrators to install Operators, as well as grant specific projects access to use the catalog of Operators available on the cluster.
13+
Read more in the [introduction blog post](https://operatorhub.io/what-is-an-operator).
1414

15-
For developers, a self-service experience allows provisioning and configuring instances of databases, monitoring, and big data services without having to be subject matter experts, because the Operator has that knowledge baked into it.
16-
17-
## Why would i use OLM?
15+
## Why do I want OLM?
1816

1917
### Over-the-Air Updates and Catalogs
2018
Kubernetes clusters are being kept up to date using elaborate update mechanisms today, more often automatically and in the background. Operators, being cluster extensions, should follow that. OLM has a concept of catalogs from which Operators are available to install and being kept up to date. In this model OLM allows maintainers granular authoring of the update path and gives commercial vendors a flexible publishing mechanism using channels.
@@ -29,22 +27,23 @@ OLM advertises installed Operators and their services into the namespaces of ten
2927
Operators must claim ownership of their APIs. OLM will prevent conflicting Operators owning the same APIs being installed, ensuring cluster stability.
3028

3129
### Declarative UI controls
32-
Operators can behave like managed service providers. Their user interface on the command line are APIs. For graphical consoles OLM annotates those APIs with descriptors that drive the creation of rich interfaces and forms for users to interact with the Operator in a natural, cloud-like way.
33-
34-
## Why do I want it?
30+
Operators can behave like managed service providers. Their user interface on the command line are APIs. For graphical consoles OLM annotates those APIs with descriptors that drive the creation of rich interfaces and forms for users to interact with the Operator in a natural, cloud-like way.
3531

36-
Help your user know if your project will help them. Useful information can include:
32+
## What is it good for?
33+
34+
What types of problems does your project solve? What are the benefits of using it?
3735

38-
* **What is it good for?**: What types of problems does your project solve? What are the benefits of using it?
36+
## What is it not good for?
37+
38+
For example, point out situations that might intuitively seem suited for your project, but aren't for some reason. Also mention known limitations, scaling issues, or anything else that might let your users know if the project is not for them.
3939

40-
* **What is it not good for?**: For example, point out situations that might intuitively seem suited for your project, but aren't for some reason. Also mention known limitations, scaling issues, or anything else that might let your users know if the project is not for them.
40+
## What is it *not yet* good for?
4141

42-
* **What is it *not yet* good for?**: Highlight any useful features that are coming soon.
42+
Highlight any useful features that are coming soon.
4343

4444
## Where should I go next?
4545

4646
Give your users next steps from the Overview. For example:
4747

48-
* [Getting Started](/Installation/): Get started with $project
49-
* [Examples](/examples/): Check out some example code!
50-
48+
* [Getting Started](/docs/getting-started/): Get started with $project
49+
* [Examples](/docs/examples/): Check out some example code!

content/en/docs/Tasks/Ponycopters/_index.md

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)