Skip to content
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

doc: add install instructions #20

Merged
merged 1 commit into from
Sep 7, 2023
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
41 changes: 39 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,43 @@

This project was created by [@lburgazzoli in this repository](https://github.com/lburgazzoli/dapr-operator-ng) and donated to the Dapr Sandbox organization.

## Setup
## Installation

TBD
The `Dapr Kubernetes Operator` was created with the intention of running through the [Operator Lifecycle Manager][olm_home],
specifically on [OpenShift 4][openshift_home]. This is where the operator shines most, as it leverages the powerful
features built into the latest version of OpenShift.

That being said, the operator can be installed and provide the same functionality on any Kubernetes cluster. The
following methods are provided for installing the operator.

### OpenShift

The operator is published as part of the built-in Community Operators in the Operator Hub on OpenShift 4. See the
[OpenShift Install Guide][install_openshift] for more information on installing on the OpenShift platorm.

### Operator Lifecycle Manager

Using the Operator Lifecycle Manager to install and manage the `Dapr Kubernetes Operator` is the preferred method. The operator
is published to [operatorhub.io][operatorhub_link]. Following the installation process there should work for most OLM
installations.

Look at the [OLM Install Guide][install_olm] for an example using this approach with minikube.

### Manual Installation

The operator can be installed manually if desired.

!!! info
The manual installation method requires cluster credentials that provide the `cluster-admin` ClusterRole or
equivalent.

The [Manual Installation Guide][install_manual] provides the steps needed to manually install the operator on any
Kubernetes cluster.


[install_manual]:./docs/install/manual.md
[install_olm]:./docs/install/olm.md
[install_openshift]:./docs/install/openshift.md
[olm_home]:https://github.com/operator-framework/operator-lifecycle-manager
[openshift_home]:https://try.openshift.com
[operatorhub_link]:https://operatorhub.io/operator/dapr-kubernetes-operator
4 changes: 2 additions & 2 deletions config/samples/olm/catalog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: daprio-catalog
namespace: openshift-marketplace
namespace: olm
spec:
sourceType: grpc
image: docker.io/daprio/dapr-kubernetes-operator-catalog:latest
image: ghcr.io/dapr-sandbox/dapr-kubernetes-operator-catalog:latest
displayName: dapr.io catalog
grpcPodConfig:
securityContextConfig: restricted
Expand Down
5 changes: 5 additions & 0 deletions config/samples/olm/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
resources:
- namespace.yaml
- catalog.yaml
- operator_group.yaml
- subscription.yaml
4 changes: 4 additions & 0 deletions config/samples/olm/namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: dapr-system
5 changes: 5 additions & 0 deletions config/samples/olm/operator_group.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: dapr-operator
namespace: dapr-system
4 changes: 2 additions & 2 deletions config/samples/olm/subscription.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: dapr-control-plane
namespace: openshift-operators
namespace: dapr-system
spec:
channel: alpha
name: dapr-kubernetes-operator
installPlanApproval: Automatic
source: daprio-catalog
sourceNamespace: openshift-marketplace
sourceNamespace: olm
8 changes: 8 additions & 0 deletions docs/install/manual.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Manual Installation using kustomize

The following steps can be used to manually install the operator on any Kubernetes environment with minimal overhead.

!!! info
Several of the steps in this process require the `cluster-admin` ClusterRole or equivalent.

TBD
113 changes: 113 additions & 0 deletions docs/install/olm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# OLM Install

The following steps can be used to install the operator using the [Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager) on any Kubernetes
environment.

## Cluster Setup

This guide uses [minikube](https://minikube.sigs.k8s.io/) to deploy a Kubernetes cluster locally, follow the
instructions for your platform to install. If you already have a Kubernetes cluster ready to go, skip to
the [OLM](#operator-lifecycle-manager) section.

Run minikube with a dedicated profile. Adjust the system resources as needed for your platform.

```bash
minikube start -p dapr
```

## Operator Lifecycle Manager

Install the OLM components manually. If you already have OLM installed, skip to the [Operator](#operator-install) section.

Either

- install OLM from here: https://github.com/operator-framework/operator-lifecycle-manager/releases

or

- install using the `operator-sdk` command
```bash
operator-sdk olm install
```

Verify that OLM is installed. There should be two new namespaces, `olm` and `operators` created as a result.

```bash
kubectl get ns
```

```
NAME STATUS AGE
kube-system Active 7d1h
default Active 7d1h
kube-public Active 7d1h
kube-node-lease Active 7d1h
operators Active 94s
olm Active 94s
```

Verify that the OLM Pods are running in the `olm` namespace.

```bash
kubectl get pods -n olm
```

```
NAME READY STATUS RESTARTS AGE
catalog-operator-569cd6998d-h5cbp 1/1 Running 0 39s
olm-operator-6fbbcd8c8b-qzv47 1/1 Running 0 39s
operatorhubio-catalog-m7qxq 1/1 Running 0 31s
packageserver-6cb8b48df4-wp89m 1/1 Running 0 30s
packageserver-6cb8b48df4-ww62h 1/1 Running 0 30s
```

That's it, OLM should be installed and availble to manage the Dapr Operator.

## Operator Install

The [dapr-kubernetes-operator](https://github.com/dapr-sandbox/dapr-kubernetes-operator/) provides a pre-made kustomization file to deploy the Dapr Kubernetes Operator with OLM:

```bash
kubectl apply -k https://github.com/dapr-sandbox/dapr-kubernetes-operator//config/samples/olm
```

This command should:

- Create a `dapr-system` namespace
- Create a `CatalogSource` in the `olm` namespace
```bash
➜ kubectl get catalogsources -n olm
NAME DISPLAY TYPE PUBLISHER AGE
daprio-catalog dapr.io catalog grpc dapr.io 11m
operatorhubio-catalog Community Operators grpc OperatorHub.io 18m
```
- Create an `OperatorGroup` in the `dapr-system` namespace
```bash
➜ kubectl get operatorgroups -n dapr-system
NAME AGE
dapr-operator 12m
```
- Create a new `Subscription` for theDapr Kubernetes Operator in the new `dapr-system` namespace.
```bash
➜ kubectl get subscriptions.operators.coreos.com -n dapr-system
NAME PACKAGE SOURCE CHANNEL
dapr-control-plane dapr-kubernetes-operator daprio-catalog alpha
```
The subscription should result in an `InstallPlan` being created in the `dapr-system` namespace which finally result in the `dapr-control-plane` Pod running
```bash
➜ kubectl get pods -n dapr-system
NAME READY STATUS RESTARTS AGE
dapr-control-plane-66866765b9-nzb6t 1/1 Running 0 13m
```

## Usage

Once the operator is installed and running, new `DaprControlPlane` resources can be created.

## Cleanup

You can clean up the operator resources by running the following commands.

```bash
kubectl delete -k https://github.com/dapr-sandbox/dapr-kubernetes-operator//config/samples/olm
```
14 changes: 14 additions & 0 deletions docs/install/openshift.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# OpenShift Install

This guide uses [OpenShift 4](https://try.openshift.com/), follow the guide for your platform to install.

Once the OpenShift cluster is up and running, the operator can be deployed.
The preferred method to install the operator is using the OpenShift console.
The operator can also be installed manually if desired.

## Console Install

The operator is published in the Operator Hub with the OpenShift console. Log into the console using the URL for your
cluster and select the Operators link, then select the OperatorHub link to display the list of operators.

Select the operator named `Dapr Kubernetes Operator` and click the **Install** button.