Add PV provisioner

This adds a new PV provisioner which works together with the
CSI Node driver to provide storage to workloads on Smalltown.
It talks to Kubernetes and listens for PVCs which need to be provisioned
and PVs which have been released and need to be deleted.

Is is implemented as a per-node agent where every node provisions the
volumes scheduled onto it by kube-scheduler.

Test Plan: Manually tested by running `bazel run //core/cmd/dbg -- kubectl create -f $PWD/pv-test.yml` and observing a provisioned PV that's attached to the pod. An example `test-pv.yml` is in P137.

X-Origin-Diff: phab/D482
GitOrigin-RevId: 75a871b039e71dd248f937719c471e0277887964
diff --git a/core/internal/kubernetes/BUILD.bazel b/core/internal/kubernetes/BUILD.bazel
index d58dec7..36866e7 100644
--- a/core/internal/kubernetes/BUILD.bazel
+++ b/core/internal/kubernetes/BUILD.bazel
@@ -8,6 +8,7 @@
         "controller-manager.go",
         "csi.go",
         "kubelet.go",
+        "provisioner.go",
         "reconcile.go",
         "scheduler.go",
         "service.go",
@@ -28,10 +29,21 @@
         "@io_k8s_api//core/v1:go_default_library",
         "@io_k8s_api//policy/v1beta1:go_default_library",
         "@io_k8s_api//rbac/v1:go_default_library",
+        "@io_k8s_api//storage/v1:go_default_library",
+        "@io_k8s_apimachinery//pkg/api/errors:go_default_library",
         "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library",
+        "@io_k8s_client_go//informers:go_default_library",
+        "@io_k8s_client_go//informers/core/v1:go_default_library",
+        "@io_k8s_client_go//informers/storage/v1:go_default_library",
         "@io_k8s_client_go//kubernetes:go_default_library",
+        "@io_k8s_client_go//kubernetes/scheme:go_default_library",
+        "@io_k8s_client_go//kubernetes/typed/core/v1:go_default_library",
+        "@io_k8s_client_go//tools/cache:go_default_library",
         "@io_k8s_client_go//tools/clientcmd:go_default_library",
         "@io_k8s_client_go//tools/clientcmd/api:go_default_library",
+        "@io_k8s_client_go//tools/record:go_default_library",
+        "@io_k8s_client_go//tools/reference:go_default_library",
+        "@io_k8s_client_go//util/workqueue:go_default_library",
         "@io_k8s_kubelet//config/v1beta1:go_default_library",
         "@io_k8s_kubelet//pkg/apis/pluginregistration/v1:go_default_library",
         "@org_golang_google_grpc//:go_default_library",