Set up the cluster¶
Create a kind
cluster¶
A kind config is included to deploy the development cluster.
Running the following command will set up the cluster:
make cluster
This creates a cluster called dyff
using the
cluster/kind/config.yaml
config.
The following output will be desplayed to notify that the cluster has been created:
$ make cluster
Creating cluster "dyff" ...
✓ Ensuring node image (kindest/node:v1.27.3) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-dyff"
You can now use your cluster with:
kubectl cluster-info --context kind-dyff
Thanks for using kind! 😊
Configure access credentials for external services¶
To use Dyff functionality that requires authenticated access to external services, you need to provide your credentials at deployment time. These are set using Tofu variables.
Note
These variables must be set before deploying Dyff onto the cluster. If you change the variable values, you may need to manually restart the k8s components that consume their values.
Tofu variables can be set either by creating a config.tfvars
file in the dev-environment
root directory, or by setting the environment variables TF_VAR_variable_name
.
Warning
Make sure to .gitignore
any files in the repository tree where you store secrets!
The config.tfvars
file is ignored by default.
These are the variables you can set:
huggingface_access_token
– A token for the HuggingFace platform. Used for pulling inference models.
Deploy cluster applications¶
Dyff uses Open Tofu for managing its infrastructure.
After installing Open Tofu, initialize the dev-environment
deployment by running:
tofu init
Now we can deploy Dyff to the cluster environment:
make apply
Various credentials are output to a credentials.yaml
file in the
project root.
Create an Admin token for the cluster¶
See Account management for more information about account management.
Log in to a dyff-api
pod¶
Use kubectl
to get the name of a dyff-api
pod. In the dev-environment
configuration, these pods run in the dyff
namespace.
kubectl get pods -n dyff | grep '^dyff-api'
Now, log in to one of the dyff-api
pods with a command like this:
kubectl exec -it -n dyff dyff-api-6576fbf469-4vwkz -- bash -il
Create an admin
account¶
In the dyff-api
pod, run the following command:
$ python3 -m dyff.api.mgmt accounts create -n admin
created account: 'admin' (3076c505c36b46bdad1cf1abefaeb580)
Note
The account ID will be different in your installation.
Create an Admin token for the admin
account¶
In the dyff-api
pod, run the following command:
python3 -m dyff.api.mgmt tokens create -t account -i 3076c505c36b46bdad1cf1abefaeb580 --role Admin
Note
Use the account ID from the previous step.
Store the token locally¶
For convenience, we recommend storing the output of the previous command in a local file. For example, in ~/.dyff/accounts/dev-admin
.
Troubleshooting¶
if you encounter the message
AttributeError: module 'bcrypt' has no attribute '__about__'
, this is a log message that can be safely ignored.
Warning
This section is never complete. You can help us by expanding it.