mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-24 11:28:40 +08:00
【修改】k8s 配置
This commit is contained in:
66
apps/devops/services/k8s/common/endpoint.go
Normal file
66
apps/devops/services/k8s/common/endpoint.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
api "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
// Endpoint describes an endpoint that is host and a list of available ports for that host.
|
||||
type Endpoint struct {
|
||||
// Hostname, either as a domain name or IP address.
|
||||
Host string `json:"host"`
|
||||
|
||||
// List of ports opened for this endpoint on the hostname.
|
||||
Ports []ServicePort `json:"ports"`
|
||||
}
|
||||
|
||||
// GetExternalEndpoints returns endpoints that are externally reachable for a service.
|
||||
func GetExternalEndpoints(service *api.Service) []Endpoint {
|
||||
externalEndpoints := make([]Endpoint, 0)
|
||||
if service.Spec.Type == api.ServiceTypeLoadBalancer {
|
||||
for _, ingress := range service.Status.LoadBalancer.Ingress {
|
||||
externalEndpoints = append(externalEndpoints, getExternalEndpoint(ingress, service.Spec.Ports))
|
||||
}
|
||||
}
|
||||
|
||||
for _, ip := range service.Spec.ExternalIPs {
|
||||
externalEndpoints = append(externalEndpoints, Endpoint{
|
||||
Host: ip,
|
||||
Ports: GetServicePorts(service.Spec.Ports),
|
||||
})
|
||||
}
|
||||
|
||||
return externalEndpoints
|
||||
}
|
||||
|
||||
// GetInternalEndpoint returns internal endpoint name for the given service properties, e.g.,
|
||||
// "my-service.namespace 80/TCP" or "my-service 53/TCP,53/UDP".
|
||||
func GetInternalEndpoint(serviceName, namespace string, ports []api.ServicePort) Endpoint {
|
||||
name := serviceName
|
||||
|
||||
if namespace != api.NamespaceDefault && len(namespace) > 0 && len(serviceName) > 0 {
|
||||
bufferName := bytes.NewBufferString(name)
|
||||
bufferName.WriteString(".")
|
||||
bufferName.WriteString(namespace)
|
||||
name = bufferName.String()
|
||||
}
|
||||
|
||||
return Endpoint{
|
||||
Host: name,
|
||||
Ports: GetServicePorts(ports),
|
||||
}
|
||||
}
|
||||
|
||||
// Returns external endpoint name for the given service properties.
|
||||
func getExternalEndpoint(ingress api.LoadBalancerIngress, ports []api.ServicePort) Endpoint {
|
||||
var host string
|
||||
if ingress.Hostname != "" {
|
||||
host = ingress.Hostname
|
||||
} else {
|
||||
host = ingress.IP
|
||||
}
|
||||
return Endpoint{
|
||||
Host: host,
|
||||
Ports: GetServicePorts(ports),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user