You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/on-premises/single-node/001-configure-single-node-k8s.md
+10-6Lines changed: 10 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -3,16 +3,16 @@
3
3
By following this tutorial, you will deploy a Kubernetes cluster on a single VM.
4
4
Feel free to skip this section if you already have a working Kubernetes environment.
5
5
6
-
> Do you plan to add more nodes/physical machines to your K8s environment? Then head over to the multi-node guide and start from there. **This guide doesn't currently provide a migration path from single-node to multi-node deployments**.
7
-
8
6
## Prerequisites
9
7
10
8
- A Linux or macOS machine
11
9
-[`kubectl`](https://kubernetes.io/docs/tasks/tools/) to interact with the K8s cluster
12
-
-[`multipass`](https://multipass.run/install) to manage VMs.
10
+
-[`multipass`](https://multipass.run/install)if you plan to run K8s on VMs.
13
11
14
12
## Configuration process
15
-
> If you plan to run Flyte directly on bare-metal servers, just follow the microk8s [installation instructions](https://microk8s.io/docs/getting-started) and skip to step 3
13
+
> If you plan to run Flyte directly on Linux bare-metal servers, just follow the microk8s [installation instructions](https://microk8s.io/docs/getting-started) and skip to step 4:
Copy file name to clipboardExpand all lines: docs/on-premises/single-node/002-single-node-onprem-install.md
+90-27Lines changed: 90 additions & 27 deletions
Original file line number
Diff line number
Diff line change
@@ -2,26 +2,26 @@
2
2
3
3
This section assumes that you have a working Kubernetes environment.
4
4
5
-
You'll be configuring the external platform dependencies of Flyte:
5
+
The external platform dependencies of Flyte are:
6
6
7
-
- An S3-compliant object storage used for task metadata and to retrieve data to be processed by workflows.
7
+
- An S3-compatible object storage used for task metadata and to retrieve data to be processed by workflows.
8
8
- A relational database.
9
9
10
10
In this tutorial, we'll use Minio with a single bucket as the object storage provider and Postgres as the relational database. These two elements are configured to retain data even if the corresponding Pod is deleted.
11
11
12
-
> NOTE: this guide is intended for single-node K8s installations and doesn't provide migration instructions to switch to multi-node afterwards. If you plan to use multiple servers to run Flyte, go to the multi-node section and start from there.
12
+
> NOTE: if you plan to run Flyte on a K8s environment with multiple nodes, the instructions in these section should be generally useful regardless of number of K8s worker and controlplane nodes. Also, to provide shared storage for your environment make sure to check out the supported `minio`[topologies](https://min.io/docs/minio/linux/operations/installation.html)and [supported backend storage systems](https://blog.min.io/best-practices-minio-virtualized/).
13
13
14
14
1. Prepare your K8s cluster to provision Persistent Volumes:
15
15
```bash
16
16
microk8s enable hostpath-storage
17
17
```
18
18
> NOTE: for other K8s distributions, verify the provisioner available for local storage, typically associated with a StorageClass (`kubectl get storageclass`). If there isn't any, consider using [this implementation](https://github.com/rimusz/hostpath-provisioner) of the hostpath provisioner. To learn more about how Kubernetes handles data persistency, go to [the docs](https://kubernetes.io/docs/concepts/storage/persistent-volumes/).
19
19
20
-
> PersistentVolumeClaims created by the hostpath storage provisioner are bound to the local node, so **it is impossible to move them to a different node**.
20
+
> PersistentVolumeClaims created by the hostpath storage provisioner are bound to the local node, so **it is impossible to move them to a different node**. For multi-node K8s environments, use the StorageClass surfaced by your shared storage backend.
21
21
22
-
2. Download the manifest that will provision the Flyte dependencies:
22
+
2. Download the manifest that will deploy the Flyte dependencies:
3. Make sure to adjust sensitive values like `MINIO_ROOT_PASSWORD` and `POSTGRES_PASSWORD` before submitting the manifest:
27
27
```bash
@@ -47,10 +47,25 @@ NAME READY STATUS RESTARTS AGE
47
47
postgres-6f6bb8bff7-9sjnj 1/1 Running 0 75s
48
48
minio-7d795cd5d8-dlk54 1/1 Running 0 75s
49
49
```
50
-
5. In order to avoid saving the DB password in plain text to the `values` file, we leverage a recent addition to the `flyte-binary` chart that allows to consume pre-created secrets:
At this point the dependencies required by Flyte are ready. You can now choose which form factor to deploy:
55
+
56
+
- Single binary: all [Flyte components](https://docs.flyte.org/en/latest/concepts/architecture.html) (`flyteadmin`,`flytepropeller`, `flyteconsole`, etc) packaged into a single Pod. This is useful for environments with limited resources and a need for quick setup.
57
+
58
+
- Core: all components as standalone Pods, and potentially different number of replicas. This is required for multi-K8s-cluster environments.
59
+
60
+
You can only have one of these form factors on a single K8s cluster.
61
+
The following sections guide you through the setup process for each.
62
+
63
+
## Install single binary
64
+
65
+
1. In order to avoid saving the DB password in plain text to the `values` file, we leverage a feature of the `flyte-binary` chart that allows to consume pre-created secrets:
51
66
52
67
- Create an external secret containing the DB password:
53
-
>Replace `<POSTGRES_PASSWORD>` with what you configured on step 3
10. Configure your Flyte config file forlocal connections (typically located at `$HOME/.flyte/config.yaml`):
125
-
> If you haven't done so, install `flytectl` so the config file is created. Check out the instructions [here](https://docs.flyte.org/en/latest/flytectl_overview.html#installation)
136
+
Congratulations!
137
+
You have setup Flyte single binary. Now, learn [how to connect to your Flyte instance](#connecting-to-flyte)
138
+
## Install Flyte core
139
+
140
+
> The following configuration requests about 3 CPU cores and 3 GB of memory for the different Flyte components without accounting for workflow executions.
1. Configure your Flyte config file forlocal connections (typically located at `$HOME/.flyte/config.yaml`):
178
+
> If you haven't done so, install `flytectl` and run `flytectl config init` so the config file is created. Check out the instructions [here](https://docs.flyte.org/en/latest/flytectl_overview.html#installation)
126
179
127
180
```yaml
128
181
admin:
@@ -134,7 +187,7 @@ logger:
134
187
show-source: true
135
188
level: 6
136
189
```
137
-
11. Create a local DNS entry so the Flyte CLI connects to the `minio` service using its FQDN:
190
+
2. Create a local DNS entry so the Flyte CLI connects to the `minio` service using its FQDN:
138
191
139
192
- In an OSX environment:
140
193
```bash
@@ -149,9 +202,9 @@ sudo vi /etc/hosts
149
202
##
150
203
127.0.0.1 minio.flyte.svc.cluster.local
151
204
```
152
-
12. In three different terminal windows, start three port-forwarding sessions:
153
-
205
+
3. In three different terminal windows, start three port-forwarding sessions. As each Helm chart uses different Services and ports, the commands are different:
Copy file name to clipboardExpand all lines: docs/on-premises/single-node/003-ingress-tls.md
+60-18Lines changed: 60 additions & 18 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Add Ingress and Transport Layer Security (TLS)
2
2
3
-
To avoid the need to open port-forward sessions and being able to connect to the Flyte instance using a single IP/FQDN, this guide will help you add Ingress networking to your deployment. Also, to create a secure communication tunnel between the client and the Flyte instance, you'll configure TLS.
3
+
To avoid the need to open port-forward sessions to connect to the Flyte instance using a single IP/FQDN, this guide will help you add and [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) resource to your deployment. Also, to create a secure communication tunnel between the client and the Flyte instance, you'll configure TLS.
4
4
5
5
## Add Ingress networking
6
6
@@ -12,6 +12,7 @@ microks enable ingress
12
12
>NOTE: for other distributions, check out the NGINX [installation instructions](https://docs.nginx.com/nginx-ingress-controller/installation/installing-nic/installation-with-helm/)
13
13
14
14
>This guide uses NGINX as it supports the annotations that Flyte uses.
15
+
15
16
2. Verify the status of the NGINX Ingress controller pod:
7. Create a new A register for your `HOST` in your DNS server pointing to the IP address of your server. In the absence of a DNS server, edit your local file adding a new entry:
0 commit comments