Currently we call kubectl externally when applying manifests. This allows us to reuse apply logic, which would be cumbersome to implement internally, but leads to excessive resource consumption and complicates result handling (we have to capture the whole output and look for strings inside just to figure out if the error was because of a missing resource).
We should instead reuse the client instance we already have, especially considering that apply contains a lot of logic that we might not want anyway.