linkerd2/pkg/k8s
Alejandro Pedraza 8ac5360041
Extract from public-api all the Prometheus dependencies, and moves things into a new viz component 'linkerd-metrics-api' (#5560)
* Protobuf changes:
- Moved `healthcheck.proto` back from viz to `proto/common` as it remains being used by the main `healthcheck.go` library (it was moved to viz by #5510).
- Extracted from `viz.proto` the IP-related types and put them in `/controller/gen/common/net` to be used by both the public and the viz APIs.

* Added chart templates for new viz linkerd-metrics-api pod

* Spin-off viz healthcheck:
- Created `viz/pkg/healthcheck/healthcheck.go` that wraps the original `pkg/healthcheck/healthcheck.go` while adding the `vizNamespace` and `vizAPIClient` fields which were removed from the core `healthcheck`. That way the core healthcheck doesn't have any dependencies on viz, and viz' healthcheck can now be used to retrieve viz api clients.
- The core and viz healthcheck libs are now abstracted out via the new `healthcheck.Runner` interface.
- Refactored the data plane checks so they don't rely on calling `ListPods`
- The checks in `viz/cmd/check.go` have been moved to `viz/pkg/healthcheck/healthcheck.go` as well, so `check.go`'s sole responsibility is dealing with command business. This command also now retrieves its viz api client through viz' healthcheck.

* Removed linkerd-controller dependency on Prometheus:
- Removed the `global.prometheusUrl` config in the core values.yml.
- Leave the Heartbeat's `-prometheus` flag hard-coded temporarily. TO-DO: have it automatically discover viz and pull Prometheus' endpoint (#5352).

* Moved observability gRPC from linkerd-controller to viz:
- Created a new gRPC server under `viz/metrics-api` moving prometheus-dependent functions out of the core gRPC server and into it (same thing for the accompaigning http server).
- Did the same for the `PublicAPIClient` (now called just `Client`) interface. The `VizAPIClient` interface disappears as it's enough to just rely on the viz `ApiClient` protobuf type.
- Moved the other files implementing the rest of the gRPC functions from `controller/api/public` to `viz/metrics-api` (`edge.go`, `stat_summary.go`, etc.).
- Also simplified some type names to avoid stuttering.

* Added linkerd-metrics-api bootstrap files. At the same time, we strip out of the public-api's `main.go` file the prometheus parameters and other no longer relevant bits.

* linkerd-web updates: it requires connecting with both the public-api and the viz api, so both addresses (and the viz namespace) are now provided as parameters to the container.

* CLI updates and other minor things:
- Changes to command files under `cli/cmd`:
  - Updated `endpoints.go` according to new API interface name.
  - Updated `version.go`, `dashboard` and `uninstall.go` to pull the viz namespace dynamically.
- Changes to command files under `viz/cmd`:
  - `edges.go`, `routes.go`, `stat.go` and `top.go`: point to dependencies that were moved from public-api to viz.
- Other changes to have tests pass:
  - Added `metrics-api` to list of docker images to build in actions workflows.
  - In `bin/fmt` exclude protobuf generated files instead of entire directories because directories could contain both generated and non-generated code (case in point: `viz/metrics-api`).

* Add retry to 'tap API service is running' check

* mc check shouldn't err when viz is not available. Also properly set the log in multicluster/cmd/root.go so that it properly displays messages when --verbose is used
2021-01-21 18:26:38 -05:00
..
resource Add jaeger uninstall command (#5353) 2020-12-14 15:48:44 -08:00
testdata Fix handling of kubeconfig server urls that include paths (#2305) 2019-02-18 17:57:27 -08:00
api.go Extract from public-api all the Prometheus dependencies, and moves things into a new viz component 'linkerd-metrics-api' (#5560) 2021-01-21 18:26:38 -05:00
api_test.go Add pod status to linkerd check (#3065) 2019-07-18 15:56:19 -07:00
authz.go Add mulitcluster check command (#5410) 2020-12-21 15:50:17 -05:00
authz_test.go Bump k8s client-go to v0.19.2 (#5002) 2020-09-28 12:45:18 -05:00
fake.go Upgrade using config overrides (#5005) 2020-10-12 14:23:14 -07:00
fake_test.go Bump k8s client-go to v0.19.2 (#5002) 2020-09-28 12:45:18 -05:00
k8s.go Make service mirror controller per target cluster (#4710) 2020-07-23 14:32:50 -07:00
k8s_test.go Fix spelling mistakes using codespell (#4700) 2020-07-07 17:07:22 -05:00
kubectl.go Check kubectl version as part of checks (#2358) 2019-03-01 10:03:59 -08:00
kubectl_test.go Check kubectl version as part of checks (#2358) 2019-03-01 10:03:59 -08:00
labels.go viz: add tap-injector (#5540) 2021-01-21 11:24:08 -05:00
labels_test.go Provide peer Identities via the Destination API (#2537) 2019-03-22 09:19:14 -07:00
portforward.go Report namespace and pod name when port-forward fails (#5504) 2021-01-11 15:49:27 -08:00
portforward_test.go Bump k8s client-go to v0.19.2 (#5002) 2020-09-28 12:45:18 -05:00
version.go Remove kubectl dependency, validate k8s server version via api (#396) 2018-02-20 12:14:11 -08:00
version_test.go Remove kubectl dependency, validate k8s server version via api (#396) 2018-02-20 12:14:11 -08:00