| // Copyright 2020 The Monogon Project Authors. |
| // |
| // SPDX-License-Identifier: Apache-2.0 |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package node |
| |
| import ( |
| "strconv" |
| ) |
| |
| // Port is a TCP and/or UDP port number reserved for and used by Metropolis |
| // node code. |
| type Port uint16 |
| |
| const ( |
| // CuratorServicePort is the TCP port on which the Curator listens for gRPC |
| // calls and services Management/AAA/Curator RPCs. |
| CuratorServicePort Port = 7835 |
| // ConsensusPort is the TCP port on which etcd listens for peer traffic. |
| ConsensusPort Port = 7834 |
| // DebugServicePort is the TCP port on which the debug service serves gRPC |
| // traffic. This is only available in debug builds. |
| DebugServicePort Port = 7837 |
| // WireGuardPort is the UDP port on which the Wireguard Kubernetes network |
| // overlay listens for incoming peer traffic. |
| WireGuardPort Port = 7838 |
| // NodeManagement is the TCP port on which the node-local management service |
| // serves gRPC traffic for NodeManagement. |
| NodeManagement Port = 7839 |
| // MetricsPort is the TCP port on which the Metrics Service exports |
| // Prometheus-compatible metrics for this node, secured using TLS and the |
| // Cluster/Node certificates. |
| MetricsPort Port = 7840 |
| // MetricsNodeListenerPort is the TCP port on which the Prometheus node_exporter |
| // runs, bound to 127.0.0.1. The Metrics Service proxies traffic to it from the |
| // public MetricsPort. |
| MetricsNodeListenerPort Port = 7841 |
| // MetricsEtcdListenerPort is the TCP port on which the etcd exporter |
| // runs, bound to 127.0.0.1. The metrics service proxies traffic to it from the |
| // public MetricsPort. |
| MetricsEtcdListenerPort Port = 7842 |
| // MetricsKubeSchedulerListenerPort is the TCP port on which the proxy for |
| // the kube-scheduler runs, bound to 127.0.0.1. The metrics service proxies |
| // traffic to it from the public MetricsPort. |
| MetricsKubeSchedulerListenerPort Port = 7843 |
| // MetricsKubeControllerManagerListenerPort is the TCP port on which the |
| // proxy for the controller-manager runs, bound to 127.0.0.1. The metrics |
| // service proxies traffic to it from the public MetricsPort. |
| MetricsKubeControllerManagerListenerPort Port = 7844 |
| // MetricsKubeAPIServerListenerPort is the TCP port on which the |
| // proxy for the api-server runs, bound to 127.0.0.1. The metrics |
| // service proxies traffic to it from the public MetricsPort. |
| MetricsKubeAPIServerListenerPort Port = 7845 |
| // KubernetesAPIPort is the TCP port on which the Kubernetes API is |
| // exposed. |
| KubernetesAPIPort Port = 6443 |
| // KubernetesAPIWrappedPort is the TCP port on which the Metropolis |
| // authenticating proxy for the Kubernetes API is exposed. |
| KubernetesAPIWrappedPort Port = 6444 |
| // KubernetesWorkerLocalAPIPort is the TCP port on which Kubernetes worker nodes |
| // run a loadbalancer to access the cluster's API servers before cluster |
| // networking is available. This port is only bound to 127.0.0.1. |
| KubernetesWorkerLocalAPIPort Port = 6445 |
| // DebuggerPort is the port on which the delve debugger runs (on debug |
| // builds only). Not to be confused with DebugServicePort. |
| DebuggerPort Port = 2345 |
| ) |
| |
| var SystemPorts = []Port{ |
| CuratorServicePort, |
| ConsensusPort, |
| DebugServicePort, |
| WireGuardPort, |
| NodeManagement, |
| MetricsPort, |
| MetricsNodeListenerPort, |
| MetricsEtcdListenerPort, |
| KubernetesAPIPort, |
| KubernetesAPIWrappedPort, |
| KubernetesWorkerLocalAPIPort, |
| DebuggerPort, |
| } |
| |
| func (p Port) String() string { |
| switch p { |
| case CuratorServicePort: |
| return "curator" |
| case ConsensusPort: |
| return "consensus" |
| case DebugServicePort: |
| return "debug" |
| case WireGuardPort: |
| return "wireguard" |
| case NodeManagement: |
| return "node-mgmt" |
| case KubernetesAPIPort: |
| return "kubernetes-api" |
| case KubernetesWorkerLocalAPIPort: |
| return "kubernetes-worker-local-api" |
| case KubernetesAPIWrappedPort: |
| return "kubernetes-api-wrapped" |
| case DebuggerPort: |
| return "delve" |
| } |
| return "unknown" |
| } |
| |
| func (p Port) PortString() string { |
| return strconv.Itoa(int(p)) |
| } |