Skip to content

Commit

Permalink
docs: add getting started chapters
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremylvln committed Jan 9, 2023
1 parent a8bfcf8 commit 041fc8c
Show file tree
Hide file tree
Showing 27 changed files with 593 additions and 36 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ in the cloud with Kubernetes.
## Getting started

See the **[Getting Started](https://shulker.jeremylvln.fr/getting-started/installation)**
See the **[Getting Started](https://shulker.jeremylvln.fr/getting-started/prerequisites)**
section of the documentation to start using Shulker!

## License
Expand Down
28 changes: 28 additions & 0 deletions config/crd/bases/shulkermc.io_minecraftserverdeployments.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ spec:
description: Name of the MinecraftCluster Kubernetes object owning
this resource.
type: string
required:
- name
type: object
replicas:
description: Number of MinecraftServer replicas to create.
Expand All @@ -81,6 +83,8 @@ spec:
description: Name of the MinecraftCluster Kubernetes object
owning this resource.
type: string
required:
- name
type: object
config:
description: Custom configuration flags to custom the server
Expand Down Expand Up @@ -144,6 +148,11 @@ spec:
description: Version of the Maven artifact
to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -185,6 +194,11 @@ spec:
description: Version of the Maven artifact
to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -240,6 +254,11 @@ spec:
description: Version of the Maven artifact
to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -1393,8 +1412,16 @@ spec:
required:
- name
type: object
required:
- version
type: object
required:
- spec
type: object
required:
- clusterRef
- replicas
- template
type: object
status:
description: MinecraftServerDeploymentStatus defines the observed state
Expand Down Expand Up @@ -1488,6 +1515,7 @@ spec:
type: integer
required:
- availableReplicas
- conditions
- replicas
- selector
- unavailableReplicas
Expand Down
22 changes: 22 additions & 0 deletions config/crd/bases/shulkermc.io_minecraftservers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ spec:
description: Name of the MinecraftCluster Kubernetes object owning
this resource.
type: string
required:
- name
type: object
config:
description: Custom configuration flags to custom the server behavior.
Expand Down Expand Up @@ -116,6 +118,11 @@ spec:
version:
description: Version of the Maven artifact to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -154,6 +161,11 @@ spec:
version:
description: Version of the Maven artifact to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -205,6 +217,11 @@ spec:
version:
description: Version of the Maven artifact to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -1256,6 +1273,8 @@ spec:
required:
- name
type: object
required:
- version
type: object
status:
description: MinecraftServerStatus defines the observed state of MinecraftServer
Expand Down Expand Up @@ -1335,8 +1354,11 @@ spec:
description: IP address of the Pod.
type: string
required:
- conditions
- serverIP
type: object
required:
- spec
type: object
served: true
storage: true
Expand Down
18 changes: 18 additions & 0 deletions config/crd/bases/shulkermc.io_proxies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ spec:
description: Name of the MinecraftCluster Kubernetes object owning
this resource.
type: string
required:
- name
type: object
config:
description: Custom configuration flags to custom the proxy behavior.
Expand Down Expand Up @@ -112,6 +114,11 @@ spec:
version:
description: Version of the Maven artifact to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -150,6 +157,11 @@ spec:
version:
description: Version of the Maven artifact to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -1206,6 +1218,8 @@ spec:
required:
- name
type: object
required:
- version
type: object
status:
description: ProxyStatus defines the observed state of Proxy
Expand Down Expand Up @@ -1280,7 +1294,11 @@ spec:
- type
type: object
type: array
required:
- conditions
type: object
required:
- spec
type: object
served: true
storage: true
Expand Down
23 changes: 23 additions & 0 deletions config/crd/bases/shulkermc.io_proxydeployments.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ spec:
description: Name of the MinecraftCluster Kubernetes object owning
this resource.
type: string
required:
- name
type: object
replicas:
description: Number of Proxy replicas to create.
Expand Down Expand Up @@ -105,6 +107,8 @@ spec:
description: Name of the MinecraftCluster Kubernetes object
owning this resource.
type: string
required:
- name
type: object
config:
description: Custom configuration flags to custom the proxy
Expand Down Expand Up @@ -164,6 +168,11 @@ spec:
description: Version of the Maven artifact
to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -205,6 +214,11 @@ spec:
description: Version of the Maven artifact
to download.
type: string
required:
- artifactId
- groupId
- repository
- version
type: object
type: object
type: object
Expand Down Expand Up @@ -1363,8 +1377,16 @@ spec:
required:
- name
type: object
required:
- version
type: object
required:
- spec
type: object
required:
- clusterRef
- replicas
- template
type: object
status:
description: ProxyDeploymentStatus defines the observed state of ProxyDeployment
Expand Down Expand Up @@ -1457,6 +1479,7 @@ spec:
type: integer
required:
- availableReplicas
- conditions
- replicas
- selector
- unavailableReplicas
Expand Down
43 changes: 43 additions & 0 deletions docs/docs/02-getting-started/01-prerequisites.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Prerequisites

## Kubernetes Cluster

Shulker should be able to be installed on any Kubernetes cluster meeting
the following criterias:

- The minimum Kubernetes version supported is **TODO**
- At least one Linux node is needed for the Shulker operators to work
(no special architecture is required)

:::note

By default, any **ProxyDeployment** created will create automatically
a Kubernetes Service with the `LoadBalancer` kind. For this behavior
to work properly, your cloud provider should support load balancer
provisionning. While this is a non-issue for almost all cloud providers,
it may be one if you are self-provisionning your own Kubernetes Cluster.

:::

:::note

The node requirements are those for the Shulker operators to work. It
may not reflect those of containers created by Shulker. While there is
no such restrictions by default, a custom configuration from you may
prevent some pods to schedule properly.

:::

All Shulker components should be installed in the same namespace,
`shulker-system` by default.

## Third-party softwares

In addition to a working Kubernetes Cluster, **[cert-manager](https://cert-manager.io/)**
is also required to be installed. It will be used to generate self-signed
certificates for internal use (mostly to secure internal communication
with Kubernetes's controle plane).

**[Prometheus](https://github.com/prometheus-operator/prometheus-operator)**
metrics are also exposed by some components. Monitor manifests can be
optionally installed.
27 changes: 27 additions & 0 deletions docs/docs/02-getting-started/02-installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Installation

Shulker is composed of multiple components, some of them being
optional. By design, only the **Shulker Operator** is required
to be installed as it contains the core logic.

## Shulker Operator

The **Shulker Operator** can be installed using **Kustomize**:

```bash
$ git clone https://github.com/IamBlueSlime/Shulker
$ kubectl apply -k Shulker/config/default -n shulker-system
```

After this, a `shulker-operator` Pod should be scheduled and
work immediately.

:::note

The operator Pod requires a certificate from cert-manager to
be provisionned, it may take some seconds/minutes to generate.
If the certificate is still not available after some minutes,
check your cert-manager logs. There is no special configuration
expected, a default installation should work out-of-the-box.

:::
Loading

0 comments on commit 041fc8c

Please sign in to comment.