gitLab runners to pick up jobs per environment

Hi everyone! Please your help!

I have a project which has 3 environments.

  1. local → to run a CI and deploy it under my own minikube
  2. staging → pick up the image prepared for step 1 and deploy it into kubernetes for testing.
  3. when the step 2 is approved, the runner should deploy it into kubernetes at production.

Note: Step 2 and 3 need to deploy in a cluster on Digital Ocean.

In this scenario, I have 2 different runners. For local - step 1 - I have a gitLab runner running locally as a docker process. And for step 2 and 3 I want to have a gitLab runner on the kubernete at Digital Ocean.

How can I have this kind of settings and how to achieve this?

How can link several environments to different gitLab runners?

Is my approach right?