Kvindo™ Cloud Docs
A self-hosted GitLab instance and a runner registered against it, driven from the Python SDK. Reuses client and the real folder_id / hosting_provider_id / subnet_id from the Networking example. The runner needs no floating IP of its own — it reaches GitLab over the VPC and pulls Docker images through the VPC's NAT floating IP.
Note the 3600-second wait on the instance: installing GitLab takes tens of minutes, much longer than the 300 seconds the other examples use. The instance needs a floating IP because its DNS record points at its public address.
Between the two stages you have to do one thing by hand, which is why this example has no transaction variant: create the runner's token in the running instance (Admin → CI/CD → Runners → New instance runner, tick Run untagged jobs or give it tags your jobs request) and export it as GITLAB_RUNNER_TOKEN. The older instance-wide registration token is not accepted — the runner authenticates with this token directly instead of registering with it.
The script keeps the secret in the environment rather than in source. Deleting the GitlabRunner removes its VM but does not unregister it inside GitLab — delete the stale entry in the instance's runner list yourself.
Resource docs
More in this section
Reference