turtles-docs/versioned_docs/version-0.5/contributing/development.md

58 lines
1.7 KiB
Markdown

---
sidebar_position: 2
---
# Development setup
## Prerequisites:
- [kind](https://kind.sigs.k8s.io/)
- [helm](https://helm.sh/)
- [clusterctl](https://cluster-api.sigs.k8s.io/user/quick-start.html#install-clusterctl)
- [tilt](https://tilt.dev/)
## Create a local development environment
1. Clone the [Rancher Turtles](https://github.com/rancher/turtles) repository locally
2. Create **tilt-settings.yaml**:
```yaml
{
"k8s_context": "k3d-rancher-test",
"default_registry": "ghcr.io/rancher-turtles-dev",
"debug": {
"turtles": {
"continue": true,
"port": 40000
}
}
}
```
3. Open a terminal in the root of the Rancher Turtles repository
4. Run the following:
```bash
make dev-env
# Or if you want to use a custom hostname for Rancher
RANCHER_HOSTNAME=my.customhost.dev make dev-env
```
5. When tilt has started, open a new terminal and start ngrok or inlets
```bash
kubectl port-forward --namespace cattle-system svc/rancher 10000:443
ngrok http https://localhost:10000
```
## What happens when you run `make dev-env`?
1. A [kind](https://kind.sigs.k8s.io/) cluster is created with the following [configuration](https://github.com/rancher/turtles/blob/main/scripts/kind-cluster-with-extramounts.yaml).
1. [Cert manager](https://cert-manager.io/) is installed on the cluster, which is a requirement for running `Rancher turtes` extension.
1. `clusterctl` is used to bootstrap CAPI components onto the cluster, and a default configuration includes: core Cluster API controller, Kubeadm bootstrap and control plane providers, Docker infrastructure provider.
1. `Rancher manager` is installed using helm.
1. `tilt up` is run to start the development environment.