Skip to content

Commit

Permalink
📖Quickstart / add other sections
Browse files Browse the repository at this point in the history
Signed-off-by: Vince Prignano <vincepri@vmware.com>
  • Loading branch information
vincepri committed Sep 5, 2019
1 parent b9b33c7 commit 8922847
Show file tree
Hide file tree
Showing 14 changed files with 96 additions and 18 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
- [Scope, objectives, goals and requirements](./docs/scope-and-objectives.md)
- [Feature proposals](./docs/proposals)
- [Reference use cases](./docs/staging-use-cases.md)
- [Quick Start](https://cluster-api.sigs.k8s.io/quick-start.html)
- [Quick Start](https://cluster-api.sigs.k8s.io/user/quick-start.html)

## What is the Cluster API?

Expand Down
14 changes: 8 additions & 6 deletions docs/book/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,21 @@

[Introduction](./introduction.md)

[Quick Start](./quick-start.md)
- [User Guide](./user/guide.md)
- [Concepts](./user/concepts.md)
- [Quick Start](./user/quick-start.md)

- [Architecture](./architecture/architecture.md)
- [Developer Guide](./architecture/developer-guide.md)
- [Repository Layout](./architecture/repository-layout.md)
- [Controllers](./architecture/controllers.md)
- [Cluster](./architecture/controllers/cluster.md)
- [Machine](./architecture/controllers/machine.md)
- [MachineSet](./architecture/controllers/machine-set.md)
- [MachineDeployment](./architecture/controllers/machine-deployment.md)

- [Clusterctl](./clusterctl/clusterctl.md)

- [Provider Implementers](./providers/implementers.md)
- [Provider Implementers](./providers/implementers.md)
- [v1alpha1 to v1alpha2](./providers/v1alpha1-to-v1alpha2.md)
- [Tooling](./tooling/tooling.md)
- [Clusterctl](./tooling/clusterctl.md)

- [Reference](./reference/reference.md)
- [Abbreviations](./reference/abbreviations.md)
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion docs/book/src/glossary.md

This file was deleted.

2 changes: 1 addition & 1 deletion docs/book/src/introduction.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# The Cluster API Book <div style="float: right; position: relative; display: inline;"><img src="images/introduction.png" width="160px" /></div>

**Note:** Impatient readers may head straight to [Quick
Start](quick-start.md).
Start](./user/quick-start.md).

**Using Cluster API v1alpha1? Check the [legacy
documentation](https://release-0-1.cluster-api.sigs.k8s.io)**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ controllers that are responsible for the core types:
* Machine
* MachineSet
* MachineDeployment
* [plus a few more](../../pkg/apis/cluster/v1alpha2)

Bootstrap providers are an entirely new concept aimed at reducing the amount of kubeadm boilerplate that every provider
reimplemented in v1alpha1. The Bootstrap provider is responsible for running a controller that generates data necessary
Expand All @@ -41,7 +40,7 @@ bootstrap data to turn the infrastructure into a Kubernetes cluster.

Actuators are interfaces that the Cluster API controller calls. A provider pulls in the generic Cluster API controller
and then registers actuators to run specific infrastructure logic (calls to the provider cloud).

### v1alpha2

Actuators are not used in this version. Cluster API's controllers are no longer shared across providers and therefore
Expand All @@ -57,11 +56,11 @@ create a cloud instance for Kubernetes to run on.

`clusterctl` was a command line tool packaged with v1alpha1 providers. The goal of this tool was to go from nothing to a
running management cluster in whatever environment the provider was built for. For example, Cluster-API-Provider-AWS
packaged a `clusterctl` that created a Kubernetes cluster in EC2 and installed the necessary controllers to respond to
packaged a `clusterctl` that created a Kubernetes cluster in EC2 and installed the necessary controllers to respond to
Cluster API's APIs.

### v1alpha2

`clusterctl` is likely becoming provider-agnostic meaning one clusterctl is bundled with Cluster API and can be reused
`clusterctl` is likely becoming provider-agnostic meaning one clusterctl is bundled with Cluster API and can be reused
across providers. Work here is still being figured out but providers will not be packaging their own `clusterctl`
anymore.
1 change: 0 additions & 1 deletion docs/book/src/quick-start.md

This file was deleted.

7 changes: 6 additions & 1 deletion docs/book/src/reference/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,12 @@ The pivot process is also used for deleting a management cluster and could also

See [Infrastructure Provider](#user-content-infrastructure-provider)

##### Provider implementation
### Provider components

Refers to the YAML artifact a provider publishes as part of their releases which is required to use the provider components,
it usually contains Custom Resource Definitions (CRDs), Deployments (to run the controller manager), RBAC, etc.

### Provider implementation

Existing Cluster API implementations consist of generic and infrastructure provider-specific logic. The [infrastructure provider](#infrastructure-provider)-specific logic is currently maintained in infrastructure provider repositories.

Expand Down
6 changes: 3 additions & 3 deletions docs/book/src/reference/providers.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ support v1alpha2 API types.

Following are the implementations managed by third-parties adopting the standard cluster-api and/or machine-api being developed here.

* Kubermatic machine-controller, https://github.com/kubermatic/machine-controller/tree/master
* Machine API Operator, https://github.com/openshift/machine-api-operator/tree/master
* Machine-controller-manager, https://github.com/gardener/machine-controller-manager/tree/cluster-api
* [Kubermatic machine controller](https://github.com/kubermatic/machine-controller/tree/master)
* [Machine API Operator](https://github.com/openshift/machine-api-operator/tree/master)
* [Machine controller manager](https://github.com/gardener/machine-controller-manager/tree/cluster-api)
File renamed without changes.
1 change: 1 addition & 0 deletions docs/book/src/tooling/tooling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Tooling
1 change: 1 addition & 0 deletions docs/book/src/user/concepts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Concepts
1 change: 1 addition & 0 deletions docs/book/src/user/guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# User Guide
71 changes: 71 additions & 0 deletions docs/book/src/user/quick-start.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Quick Start

In this tutorial we'll cover the basics of how to use Cluster API to create one or more Kubernetes clusters.

## Prerequisites

- Install and setup [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) in your local environment.
- A working Kubernetes cluster to be used as [management cluster](../reference/glossary.md#management-cluster).

## Before we start

#### Picking Infrastructure and Bootstrap Providers

The [providers section](../reference/providers.md) offers a quick reference to some providers
available and compatible with Cluster API _v1alpha2_.

<aside class="note">
<h1>Following Along vs Jumping Ahead</h1>

If you're unfamiliar with the different providers types introduced in v1alpha2
and how they interact with each other, please refer to the [user guide concepts].

[user guide concepts]: ../user/concepts.md
</aside>

To proceed, we'll need to pick and choose a _Bootstrap_ and _Infrastructure_ provider.
Once you've chosen which provider to use, we'll need to grab the [components]
published as part of the release.

> **NB**: Providers usually have their own getting started guide on how to generate additional resources,
> configuration, credential management, etc. Refer to their documentation before proceeding.
#### What if I don't have a management cluster?
In some cases, you might not have a Kubernetes Cluster available to be used
as management cluster for Cluster API resources.

Services like Google Cloud GKE, Amazon EKS, Azure Kuberentes Service (AKS),
or similar, are good examples of Kubernetes-as-a-service platforms
that can be used for this purpose.

##### Testing or development
If you're looking for a temporary cluster for testing, development, or demos,
we suggest you to use [kind].

```bash
GO111MODULE="on" go get sigs.k8s.io/kind@v0.5.1
kind create cluster --name=clusterapi
export KUBECONFIG="$(kind get kubeconfig-path --name="clusterapi")"
```

## Installation

Each [release](https://github.com/kubernetes-sigs/cluster-api/releases) has a list of published assets.
For the purpose of this tutorial, download the `cluster-api-components.yaml` file from the latest `v0.2.x` release.

At this point, we should have all the required [components]:
- Cluster API: `cluster-api-components.yaml`
- Bootstrap: `bootstrap-components.yaml`
- Infrastructure: `infrastructure-components.yaml`

```bash
kubectl create -f cluster-api-components.yaml
kubectl create -f bootstrap-components.yaml
kubectl create -f infrastructure-components.yaml
```

The Cluster API resources are now installed.

<!-- links -->
[components]: ../reference/glossary.md#provider-components
[kind]: https://sigs.k8s.io/kind

0 comments on commit 8922847

Please sign in to comment.