treewide: switch to gomod and bump everything

This switches version resolution from fietsje to gomod and updates
all Go dependencies. It also bumps rules_go (required by gVisor) and
switches the Gazelle naming convention from go_default_xxx to the
standard Bazel convention of the default target having the package
name.

Since Kubernetes dropped upstream Bazel support and doesn't check in
all generated files I manually pregenerated the OpenAPI spec. This
should be fixed, but because of the already-huge scope of this CL
and the rebase complexity this is not in here.

Change-Id: Iec8ea613d06946882426c2f9fad5bda7e8aaf833
Reviewed-on: https://review.monogon.dev/c/monogon/+/639
Reviewed-by: Sergiusz Bazanski <serge@monogon.tech>
Reviewed-by: Leopold Schabel <leo@nexantic.com>
diff --git a/build/analysis/BUILD.bazel b/build/analysis/BUILD.bazel
index 0cbb906..7f8cf1d 100644
--- a/build/analysis/BUILD.bazel
+++ b/build/analysis/BUILD.bazel
@@ -41,7 +41,7 @@
         # 'standard' 80 characters long, as prose within comment blocks does not
         # soft-reflow well.
         "@com_github_corverroos_commentwrap//:go_default_library",
-        "//build/analysis/noioutil:go_default_library",
-        "//build/analysis/importsort:go_default_library",
+        "//build/analysis/noioutil",
+        "//build/analysis/importsort",
     ],
 )
diff --git a/build/analysis/importsort/BUILD.bazel b/build/analysis/importsort/BUILD.bazel
index 309edfb..06f0030 100644
--- a/build/analysis/importsort/BUILD.bazel
+++ b/build/analysis/importsort/BUILD.bazel
@@ -1,7 +1,7 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
 
 go_library(
-    name = "go_default_library",
+    name = "importsort",
     srcs = [
         "classify.go",
         "importsort.go",
@@ -9,16 +9,16 @@
     importpath = "source.monogon.dev/build/analysis/importsort",
     visibility = ["//visibility:public"],
     deps = [
-        "//build/analysis/lib:go_default_library",
-        "@org_golang_x_tools//go/analysis:go_default_library",
+        "//build/analysis/lib",
+        "@org_golang_x_tools//go/analysis",
     ],
 )
 
 go_test(
-    name = "go_default_test",
+    name = "importsort_test",
     srcs = ["importsort_test.go"],
     data = glob(["testdata/**"]),
-    embed = [":go_default_library"],
+    embed = [":importsort"],
     embedsrcs = [
         "testdata/README.md",
         "testdata/example.com/extlib/extlib.notgo",
@@ -32,7 +32,7 @@
         "testdata/source.monogon.dev/project/b/b.notgo",
     ],
     deps = [
-        "//build/toolbase/gotoolchain:go_default_library",
-        "@org_golang_x_tools//go/analysis/analysistest:go_default_library",
+        "//build/toolbase/gotoolchain",
+        "@org_golang_x_tools//go/analysis/analysistest",
     ],
 )
diff --git a/build/analysis/lib/BUILD.bazel b/build/analysis/lib/BUILD.bazel
index 42666bf..f98d8f2 100644
--- a/build/analysis/lib/BUILD.bazel
+++ b/build/analysis/lib/BUILD.bazel
@@ -1,7 +1,7 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "lib",
     srcs = [
         "generated.go",
         "stdlib_packages.go",
diff --git a/build/analysis/lib/genstd/BUILD.bazel b/build/analysis/lib/genstd/BUILD.bazel
index 044eb95..6e779a3 100644
--- a/build/analysis/lib/genstd/BUILD.bazel
+++ b/build/analysis/lib/genstd/BUILD.bazel
@@ -1,18 +1,18 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "genstd_lib",
     srcs = ["main.go"],
     importpath = "source.monogon.dev/build/analysis/lib/genstd",
     visibility = ["//visibility:private"],
     deps = [
-        "//build/toolbase/gotoolchain:go_default_library",
-        "@org_golang_x_tools//go/packages:go_default_library",
+        "//build/toolbase/gotoolchain",
+        "@org_golang_x_tools//go/packages",
     ],
 )
 
 go_binary(
     name = "genstd",
-    embed = [":go_default_library"],
+    embed = [":genstd_lib"],
     visibility = ["//visibility:public"],
 )
diff --git a/build/analysis/nogo_config.json b/build/analysis/nogo_config.json
index 6da3a03..739d86e 100644
--- a/build/analysis/nogo_config.json
+++ b/build/analysis/nogo_config.json
@@ -6,39 +6,17 @@
   },
   "copylocks": {
     "exclude_files": {
-      "external/io_k8s_kubernetes/": "third_party",
-      "external/com_github_google_gvisor/": "third_party",
-      "external/io_k8s_sigs_structured_merge_diff/": "third_party",
-      "external/io_k8s_component_base/": "third_party",
-      "external/io_k8s_apiserver/": "third_party",
-      "external/org_golang_google_protobuf/": "third_party",
-      "external/com_github_armon_go_metrics/": "third_party",
-      "external/com_github_elazarl_goproxy/": "third_party",
-      "external/com_github_googleapis_gnostic/": "third_party",
-      "external/com_github_pseudomuto_protoc_gen_doc": "third_party"
+      "external/": "third_party"
     }
   },
   "lostcancel": {
     "exclude_files": {
-      "external/com_github_golang_protobuf/": "third_party",
-      "external/com_github_grpc_ecosystem_grpc_gateway/runtime/": "third_party",
-      "external/io_k8s_kubernetes/": "third_party",
-      "external/com_github_denisenkom_go_mssqldb/": "third_party"
+      "external/": "third_party"
     }
   },
   "unreachable": {
     "exclude_files": {
-      "external/io_k8s_kubernetes/": "third_party",
-      "external/bazel_gazelle/pathtools": "third_party",
-      "external/com_github_magiconair_properties": "third_party",
-      "external/com_github_ghodss_yaml": "third_party",
-      "external/io_k8s_kubectl": "third_party",
-      "external/org_golang_google_protobuf/": "third_party",
-      "external/com_github_shirou_gopsutil/": "unreachable",
-      "external/io_k8s_apimachinery/": "third_party",
-      "external/com_github_hpcloud_tail": "third_party",
-      "external/com_github_flynn_go_shlex": "third_party",
-      "external/com_github_masterminds_sprig": "third_party"
+      "external/": "third_party"
     }
   },
   "assign": {
@@ -50,12 +28,13 @@
     "exclude_files": {
       "external/com_github_modern_go_reflect2/": "third_party",
       "sqlite3.*go": "third_party",
-      "external/com_github_google_gvisor/": "third_party",
+      "external/dev_gvisor_gvisor/": "third_party",
       "external/io_k8s_sigs_structured_merge_diff/": "third_party",
       "external/com_github_go_delve_delve/": "third_party",
       "external/com_github_mailru_easyjson/jlexer/": "third_party",
       "external/com_github_cilium_ebpf/": "third_party",
-      "external/org_golang_x_sys": "third_party"
+      "external/org_golang_x_sys": "third_party",
+      "external/net_starlark_go": "third_party"
     }
   },
   "unusedresult": {
@@ -73,10 +52,7 @@
   },
   "printf": {
     "exclude_files": {
-      "external/io_k8s_kubernetes/": "third_party",
-      "external/runc/vendor/github.com/vishvananda/netlink": "third_party",
-      "external/com_github_google_gvisor/": "third_party",
-      "external/com_github_sbezverk_nfproxy/": "third_party"
+      "external/": "third_party"
     }
   },
   "commentwrap": {
diff --git a/build/analysis/noioutil/BUILD.bazel b/build/analysis/noioutil/BUILD.bazel
index e627a0c..496820a 100644
--- a/build/analysis/noioutil/BUILD.bazel
+++ b/build/analysis/noioutil/BUILD.bazel
@@ -1,12 +1,12 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "noioutil",
     srcs = ["noioutil.go"],
     importpath = "source.monogon.dev/build/analysis/noioutil",
     visibility = ["//visibility:public"],
     deps = [
-        "//build/analysis/lib:go_default_library",
-        "@org_golang_x_tools//go/analysis:go_default_library",
+        "//build/analysis/lib",
+        "@org_golang_x_tools//go/analysis",
     ],
 )
diff --git a/build/analysis/tools.go b/build/analysis/tools.go
new file mode 100644
index 0000000..e6403d4
--- /dev/null
+++ b/build/analysis/tools.go
@@ -0,0 +1,8 @@
+//go:build tools
+// +build tools
+
+package analysis
+
+import (
+	_ "github.com/corverroos/commentwrap/cmd/commentwrap"
+)
diff --git a/build/bazel_cc_fix/BUILD.bazel b/build/bazel_cc_fix/BUILD.bazel
index 28b6438..3b2f197 100644
--- a/build/bazel_cc_fix/BUILD.bazel
+++ b/build/bazel_cc_fix/BUILD.bazel
@@ -1,19 +1,19 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "bazel_cc_fix_lib",
     srcs = ["main.go"],
     importpath = "source.monogon.dev/build/bazel_cc_fix",
     visibility = ["//visibility:private"],
     deps = [
-        "//build/bazel_cc_fix/ccfixspec:go_default_library",
+        "//build/bazel_cc_fix/ccfixspec",
         "@com_github_golang_protobuf//proto:go_default_library",
-        "@com_github_mattn_go_shellwords//:go_default_library",
+        "@com_github_mattn_go_shellwords//:go-shellwords",
     ],
 )
 
 go_binary(
     name = "bazel_cc_fix",
-    embed = [":go_default_library"],
+    embed = [":bazel_cc_fix_lib"],
     visibility = ["//visibility:public"],
 )
diff --git a/build/bazel_cc_fix/ccfixspec/BUILD.bazel b/build/bazel_cc_fix/ccfixspec/BUILD.bazel
index f477071..b24f3f3 100644
--- a/build/bazel_cc_fix/ccfixspec/BUILD.bazel
+++ b/build/bazel_cc_fix/ccfixspec/BUILD.bazel
@@ -16,7 +16,7 @@
 )
 
 go_library(
-    name = "go_default_library",
+    name = "ccfixspec",
     embed = [":build_bazel_cc_fix_ccfixspec_go_proto"],
     importpath = "source.monogon.dev/build/bazel_cc_fix/ccfixspec",
     visibility = ["//visibility:public"],
diff --git a/build/ci/jenkins-presubmit.groovy b/build/ci/jenkins-presubmit.groovy
index 5bb148b..b26cdd7 100644
--- a/build/ci/jenkins-presubmit.groovy
+++ b/build/ci/jenkins-presubmit.groovy
@@ -45,7 +45,7 @@
                         gerritCheck checks: ['jenkins:gazelle': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
                         echo "Gerrit change: ${GERRIT_CHANGE_URL}"
                         sh "git clean -fdx -e '/bazel-*'"
-                        sh "JENKINS_NODE_COOKIE=dontKillMe bazel run //:fietsje"
+                        sh "JENKINS_NODE_COOKIE=dontKillMe bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=third_party/go/repositories.bzl%go_repositories -prune"
                         sh "JENKINS_NODE_COOKIE=dontKillMe bazel run //:gazelle -- update"
 
                         script {
@@ -53,10 +53,10 @@
                             if (diff.trim() != "") {
                                 sh "git diff HEAD"
                                 error """
-                                    Unclean working directory after running gazelle and Fietsje.
+                                    Unclean working directory after running gazelle.
                                     Please run:
 
-                                       \$ bazel run //:fietsje
+                                       \$ bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=third_party/go/repositories.bzl%go_repositories -prune
                                        \$ bazel run //:gazelle -- update
 
                                     In your git checkout and amend the resulting diff to this changelist.
diff --git a/build/fietsje/BUILD.bazel b/build/fietsje/BUILD.bazel
index 5fe5f5e..bb3c38e 100644
--- a/build/fietsje/BUILD.bazel
+++ b/build/fietsje/BUILD.bazel
@@ -1,7 +1,7 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "fietsje",
     srcs = [
         "dependency.go",
         "deps_containerd.go",
@@ -17,10 +17,10 @@
     importpath = "source.monogon.dev/build/fietsje",
     visibility = ["//build:__subpackages__"],
     deps = [
-        "//build/fietsje/proto:go_default_library",
+        "//build/fietsje/proto",
         "@bazel_gazelle//label:go_default_library",
         "@com_github_golang_protobuf//proto:go_default_library",
-        "@org_golang_x_mod//modfile:go_default_library",
+        "@org_golang_x_mod//modfile",
     ],
 )
 
diff --git a/build/fietsje/cmd/BUILD.bazel b/build/fietsje/cmd/BUILD.bazel
index 00ab0f0..fec62fe 100644
--- a/build/fietsje/cmd/BUILD.bazel
+++ b/build/fietsje/cmd/BUILD.bazel
@@ -1,19 +1,19 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "cmd_lib",
     srcs = ["main.go"],
     importpath = "source.monogon.dev/build/fietsje/cmd",
     visibility = ["//visibility:private"],
     deps = [
-        "//build/fietsje:go_default_library",
-        "//build/toolbase:go_default_library",
-        "//build/toolbase/gotoolchain:go_default_library",
+        "//build/fietsje",
+        "//build/toolbase",
+        "//build/toolbase/gotoolchain",
     ],
 )
 
 go_binary(
     name = "cmd",
-    embed = [":go_default_library"],
+    embed = [":cmd_lib"],
     visibility = ["//visibility:public"],
 )
diff --git a/build/fietsje/deps_monogon.go b/build/fietsje/deps_monogon.go
index 021ce48..7ab3705 100644
--- a/build/fietsje/deps_monogon.go
+++ b/build/fietsje/deps_monogon.go
@@ -25,14 +25,6 @@
 		shelf: shelf,
 	}
 
-	// Currently can't bump past v1.30.0, as that removes the old balancer.Picker API
-	// that go-etcd depends upon. See https://github.com/etcd-io/etcd/pull/12398 .
-	p.collect(
-		"google.golang.org/grpc", "v1.29.1",
-	).use(
-		"golang.org/x/text",
-	)
-
 	depsKubernetes(p)
 	depsContainerd(p)
 	depsGVisor(p)
diff --git a/build/fietsje/proto/BUILD.bazel b/build/fietsje/proto/BUILD.bazel
index 833f8e4..d1a3b83 100644
--- a/build/fietsje/proto/BUILD.bazel
+++ b/build/fietsje/proto/BUILD.bazel
@@ -16,7 +16,7 @@
 )
 
 go_library(
-    name = "go_default_library",
+    name = "proto",
     embed = [":proto_go_proto"],
     importpath = "source.monogon.dev/build/fietsje/proto",
     visibility = ["//visibility:public"],
diff --git a/build/print-workspace-status.sh b/build/print-workspace-status.sh
index 291c8e8..5e9b1f3 100755
--- a/build/print-workspace-status.sh
+++ b/build/print-workspace-status.sh
@@ -15,8 +15,8 @@
 
 # TODO(q3k): unify with //third_party/go/repsitories.bzl.
 KUBERNETES_gitMajor="1"
-KUBERNETES_gitMinor="19"
-KUBERNETES_gitVersion="v1.19.7+mngn"
+KUBERNETES_gitMinor="23"
+KUBERNETES_gitVersion="v1.23.4+mngn"
 
 cat <<EOF
 KUBERNETES_gitCommit $(git rev-parse "HEAD^{commit}")
diff --git a/build/savestdout/BUILD.bazel b/build/savestdout/BUILD.bazel
index f37c603..681ef44 100644
--- a/build/savestdout/BUILD.bazel
+++ b/build/savestdout/BUILD.bazel
@@ -1,7 +1,7 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "savestdout_lib",
     srcs = ["savestdout.go"],
     importpath = "source.monogon.dev/build/savestdout",
     visibility = ["//visibility:private"],
@@ -9,6 +9,6 @@
 
 go_binary(
     name = "savestdout",
-    embed = [":go_default_library"],
+    embed = [":savestdout_lib"],
     visibility = ["//visibility:public"],
 )
diff --git a/build/static_binary_tarball/BUILD.bazel b/build/static_binary_tarball/BUILD.bazel
index 7308262..c5e1511 100644
--- a/build/static_binary_tarball/BUILD.bazel
+++ b/build/static_binary_tarball/BUILD.bazel
@@ -1,18 +1,18 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 
 go_library(
-    name = "go_default_library",
+    name = "static_binary_tarball_lib",
     srcs = ["main.go"],
     importpath = "source.monogon.dev/build/static_binary_tarball",
     visibility = ["//visibility:private"],
     deps = [
-        "//build/static_binary_tarball/spec:go_default_library",
-        "@org_golang_google_protobuf//encoding/prototext:go_default_library",
+        "//build/static_binary_tarball/spec",
+        "@org_golang_google_protobuf//encoding/prototext",
     ],
 )
 
 go_binary(
     name = "static_binary_tarball",
-    embed = [":go_default_library"],
+    embed = [":static_binary_tarball_lib"],
     visibility = ["//visibility:public"],
 )
diff --git a/build/static_binary_tarball/spec/BUILD.bazel b/build/static_binary_tarball/spec/BUILD.bazel
index e79a202..330d4cc 100644
--- a/build/static_binary_tarball/spec/BUILD.bazel
+++ b/build/static_binary_tarball/spec/BUILD.bazel
@@ -16,7 +16,7 @@
 )
 
 go_library(
-    name = "go_default_library",
+    name = "spec",
     embed = [":spec_go_proto"],
     importpath = "source.monogon.dev/build/static_binary_tarball/spec",
     visibility = ["//visibility:public"],
diff --git a/build/toolbase/BUILD.bazel b/build/toolbase/BUILD.bazel
index 6fd1489..2dea810 100644
--- a/build/toolbase/BUILD.bazel
+++ b/build/toolbase/BUILD.bazel
@@ -1,7 +1,7 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
 
 go_library(
-    name = "go_default_library",
+    name = "toolbase",
     srcs = [
         "doc.go",
         "label.go",
@@ -12,8 +12,8 @@
 )
 
 go_test(
-    name = "go_default_test",
+    name = "toolbase_test",
     srcs = ["label_test.go"],
-    embed = [":go_default_library"],
-    deps = ["@com_github_google_go_cmp//cmp:go_default_library"],
+    embed = [":toolbase"],
+    deps = ["@com_github_google_go_cmp//cmp"],
 )
diff --git a/build/toolbase/gotoolchain/BUILD.bazel b/build/toolbase/gotoolchain/BUILD.bazel
index 9579e2c..42dc877 100644
--- a/build/toolbase/gotoolchain/BUILD.bazel
+++ b/build/toolbase/gotoolchain/BUILD.bazel
@@ -12,14 +12,14 @@
 
 # keep
 go_library(
-    name = "go_default_library",
+    name = "gotoolchain",
     embed = [":toolchain_library"],
     importpath = "source.monogon.dev/build/toolbase/gotoolchain",
     visibility = ["//visibility:public"],
 )
 
 go_test(
-    name = "go_default_test",
+    name = "gotoolchain_test",
     srcs = ["toolchain_test.go"],
-    embed = [":go_default_library"],  # keep
+    embed = [":gotoolchain"],  # keep
 )