Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
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
2 changes: 1 addition & 1 deletion docs/versioned/.nav.yml
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ nav:
# Administration
###############################################################################
- Administration:
# TODO: add a general overview of Knative for administrators
- Administration overview: admin/admin-overview.md
- Installing Knative: install/README.md
# YAML Installation
- Install Knative with YAML:
Expand Down
84 changes: 84 additions & 0 deletions docs/versioned/admin/admin-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
audience: administrator
components:
- serving
- eventing
function: reference
---
# Overview

This page provides guidance for administrators on how to install and manage Knative on an existing Kubernetes cluster. It assumes you are familiar with the following:

- Kubernetes and Kubernetes administration.
- The `kubectl` CLI tool. You can use existing Kubernetes management tools (policy, quota, etc) to manage Knative workloads.
- Cloud Native Computing Foundation (CNCF) projects such as Prometheus, Istio, and Strimzi, many of which can be used alongside Knative.
- You should have cluster-admin permissions or equivalent to to install software and manage resources in all clusters in the namespace. For information about permissions, see [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/AC)

To simplify Knative installation and administration, you can use the Knative operator and the Knative CLI tool, but they are not required. Essentially, Knative aims to extend Kubernetes, and build on existing capabilities where feasible.

Knative has three components, Eventing, Serving, and Functions. Severing and Eventing are installed into clusters, but not Functions. Functions does not require installation.

Serving and Eventing support multiple underlying transports plugins within the same cluster. Serving supports pods with pluggable network ingress routes, and Eventing supports pods with pluggable message transports (e.g. Kafka, RabbitMQ).

Knative has default lightweight implementations if you don't already have a solution.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Knative has default lightweight implementations if you don't already have a solution.
Knative has a default lightweight messaging implementation if you don't already have a solution.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like we need a transition sentence that explains something about managing the lifecycle of Knative, or maybe:

As a cluster administrator, you should not need to directly manage applications and their supporting network and messaging resources on a day-to-day basis; Knative enabled application developers to manage their own functions and configure networking and message infrastructure within the bounds of their own namespace. Cluster administrators are needed for the following operations:

  • Installing and upgrading the Knative components on the cluster
  • Creating Kubernetes namespaces for development teams, and managing controls on these namespaces
  • Configuring Knative and supporting infrastructure like message brokers and DNS
  • Securing the underlying Kubernetes cluster and Knative installation

The administration documentation is intended to help you accomplish these tasks.


## Installing Knative

You install Knative using YAML files and other resources either aided or not by the Knative Operator. The Knative Operator is a custom controller that extends the Kubernetes API to install Knative components. It allows you to automate applying the content, along with patching the contents to customize them. You install the Knative Operator either by using the Knative CLI Operator Plugin or by using KS8 Manifests or by Yelm.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You install Knative using YAML files and other resources either aided or not by the Knative Operator. The Knative Operator is a custom controller that extends the Kubernetes API to install Knative components. It allows you to automate applying the content, along with patching the contents to customize them. You install the Knative Operator either by using the Knative CLI Operator Plugin or by using KS8 Manifests or by Yelm.
You install Knative using YAML files and other resources either aided or not by the Knative Operator. The Knative Operator is a custom controller that extends the Kubernetes API to install Knative components. It enables you to automate applying the content and patching the contents to customize them. You install the Knative Operator either by using the Knative CLI Operator Plugin, or by using KS8 Manifests or Yelm.


For hardware prerequisites and information about installing the quickstart, see the [Installation Roadmap](/install/README.md).

Here are the considerations for installing using YAML or the Knative Operator:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move this down to line 62, after the discussion of installation options. It makes more sense to the user in the context of the install options.


| YAML-based install | Knative Operator install|
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| YAML-based install | Knative Operator install|
| YAML installation | Knative Operator |

| --- | --- |
| You can see exactly what you get. | You specify choices at a higher level. |
| You can adjust any parameters by editing them directly. | Not every setting is exposed. |
| If you make changes, you have to keep track of what you changed when you want to upgrade. | It's easy to separate your customizations from the base installation. |
| Version and audit control as YAML files are stored in a GitHub repository.| No version or audit control. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This last one isn't quite right -- the KnativeServing and KnativeEventing resources could be stored under version control, and a YAML installation doesn't have to be stored in GitHub. (In fact, I'd probably suggest storing things in a git repository either way.) What about the following:

Suggested change
| Version and audit control as YAML files are stored in a GitHub repository.| No version or audit control. |
| Track and manage changes using existing YAML tooling. | Manage changes using Kubernetes resources. |


You can install Knative in the following ways:

- Use a [YAML-based installation](/install/yaml-install/README.md) with `kubectl`.

This option is the most useful if you're using delivery solutions such as Flux or ArgoCD to apply manifests checked into a Git repository. This is the lowest common denominator approach, giving you granular control of the process and resource definitions.

- Install the [Knative Operator](/install/operator/knative-with-operators.md) using Manifests or Yelm, and then use `kubectl` to install Knative components.

This option alleviates complexity by using the Knative Operator, while still enabling purpose-built manageability using popular tools. It also gives you a separation of the core Knative application definition and the ConfigMap and other changes you make.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This option alleviates complexity by using the Knative Operator, while still enabling purpose-built manageability using popular tools. It also gives you a separation of the core Knative application definition and the ConfigMap and other changes you make.
This option reduces complexity by using the Knative Operator, while still enabling purpose-built manageability using popular tools. It also separates the core Knative application definition from the ConfigMap and other changes you make.


- Install the [Knative Operator CLI plugin](/install/operator/knative-with-operator-cli.md) and install the Knative Operator and the Knative CLI `kn` to Knative components.

This is the easiest install option and suitable for using if customization is not a concern.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This is the easiest install option and suitable for using if customization is not a concern.
This is the easiest install option, suitable if customization is not a concern.


The following table summarizes the options.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "kubectlCLI" and "kn CLI" can be combined, since you're apparently using one or the other. Label the column "CLI to install components" and list one or the other in the table entry.


| Install option | Resources | kubectl CLI | kn CLI |
| --- | --- | --- | --- |
| YAML-based | All YAML prepared | Install components | not used |
| Knative Operator | Install Knative Operator using Manifests or Yelm |Install components | not used |
| Knative Operator | Install Knative Operator CLI plugin | not used | Install components |
Comment on lines +56 to +60
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This table is kind of weird, particularly since the previous table was column-major, but this one is row-major.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd probably drop this table, though the other table seemed informative.


Knative supports subsequent installs after the initial installation, you so your initial choices don't lock you in. For example, you can migrate from one message transport or network ingress to another without losing messages.

## Defining and modifying custom resources

Either before or after the installing Knative Eventing and Serving components, you can create and modify custom resources and reinstall components as needed. You do so by creating or modifying a ConfigMap using a custom resource definition (CRD). For more information, see [Knative Serving CRDs](/install/operator/configuring-serving-cr.md) and [Knative Eventing CRDs](/install/operator/configuring-eventing-cr.md).

## Plugins

A Knative installation includes the following plugins:

Networking plugins

- Kourier (internal no-dependency option)
- Istio (service mesh)
- Courier (general-purpose ingress)
- Gateway API (beta)

Messaging plugins

- In-memory (internal no-dependency option)
- Kafka (in-order, high-thoughput but moderate complexity)
- RabbitMQ (configurable order, moderate throughput and complexity)
- NATS (low complexity)