mirror of https://github.com/portainer/portainer
fix(kubeconfig): fix kubeconfig url EE-3455 (#7282)
parent
b040aa1e78
commit
54145ce949
|
@ -2,7 +2,6 @@ package helm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/portainer/libhelm"
|
"github.com/portainer/libhelm"
|
||||||
|
@ -108,7 +107,7 @@ func (handler *Handler) getHelmClusterAccess(r *http.Request) (*options.Kubernet
|
||||||
|
|
||||||
hostURL := "localhost"
|
hostURL := "localhost"
|
||||||
if !sslSettings.SelfSigned {
|
if !sslSettings.SelfSigned {
|
||||||
hostURL = strings.Split(r.Host, ":")[0]
|
hostURL = r.Host
|
||||||
}
|
}
|
||||||
|
|
||||||
kubeConfigInternal := handler.kubeClusterAccessService.GetData(hostURL, endpoint.ID)
|
kubeConfigInternal := handler.kubeClusterAccessService.GetData(hostURL, endpoint.ID)
|
||||||
|
|
|
@ -4,7 +4,6 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
|
|
||||||
httperror "github.com/portainer/libhttp/error"
|
httperror "github.com/portainer/libhttp/error"
|
||||||
"github.com/portainer/libhttp/request"
|
"github.com/portainer/libhttp/request"
|
||||||
|
@ -145,8 +144,7 @@ func (handler *Handler) buildConfig(r *http.Request, tokenData *portainer.TokenD
|
||||||
}
|
}
|
||||||
|
|
||||||
func (handler *Handler) buildCluster(r *http.Request, endpoint portainer.Endpoint) clientV1.NamedCluster {
|
func (handler *Handler) buildCluster(r *http.Request, endpoint portainer.Endpoint) clientV1.NamedCluster {
|
||||||
hostURL := strings.Split(r.Host, ":")[0]
|
kubeConfigInternal := handler.kubeClusterAccessService.GetData(r.Host, endpoint.ID)
|
||||||
kubeConfigInternal := handler.kubeClusterAccessService.GetData(hostURL, endpoint.ID)
|
|
||||||
return clientV1.NamedCluster{
|
return clientV1.NamedCluster{
|
||||||
Name: buildClusterName(endpoint.Name),
|
Name: buildClusterName(endpoint.Name),
|
||||||
Cluster: clientV1.Cluster{
|
Cluster: clientV1.Cluster{
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
portainer "github.com/portainer/portainer/api"
|
portainer "github.com/portainer/portainer/api"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
// KubeClusterAccessService represents a service that is responsible for centralizing kube cluster access data
|
// KubeClusterAccessService represents a service that is responsible for centralizing kube cluster access data
|
||||||
|
@ -94,11 +95,20 @@ func (service *kubeClusterAccessService) IsSecure() bool {
|
||||||
// - pass down params to binaries
|
// - pass down params to binaries
|
||||||
func (service *kubeClusterAccessService) GetData(hostURL string, endpointID portainer.EndpointID) kubernetesClusterAccessData {
|
func (service *kubeClusterAccessService) GetData(hostURL string, endpointID portainer.EndpointID) kubernetesClusterAccessData {
|
||||||
baseURL := service.baseURL
|
baseURL := service.baseURL
|
||||||
|
|
||||||
|
// When the api call is internal, the baseURL should not be used.
|
||||||
|
if hostURL == "localhost" {
|
||||||
|
hostURL = hostURL + service.httpsBindAddr
|
||||||
|
baseURL = "/"
|
||||||
|
}
|
||||||
|
|
||||||
if baseURL != "/" {
|
if baseURL != "/" {
|
||||||
baseURL = fmt.Sprintf("/%s/", strings.Trim(baseURL, "/"))
|
baseURL = fmt.Sprintf("/%s/", strings.Trim(baseURL, "/"))
|
||||||
}
|
}
|
||||||
|
|
||||||
clusterURL := hostURL + service.httpsBindAddr + baseURL
|
logrus.Infof("[kubeconfig] [hostURL: %s, httpsBindAddr: %s, baseURL: %s]", hostURL, service.httpsBindAddr, baseURL)
|
||||||
|
|
||||||
|
clusterURL := hostURL + baseURL
|
||||||
|
|
||||||
clusterServerURL := fmt.Sprintf("https://%sapi/endpoints/%d/kubernetes", clusterURL, endpointID)
|
clusterServerURL := fmt.Sprintf("https://%sapi/endpoints/%d/kubernetes", clusterURL, endpointID)
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ func TestKubeClusterAccessService_GetKubeConfigInternal(t *testing.T) {
|
||||||
clusterAccessDetails := kcs.GetData("mysite.com", 1)
|
clusterAccessDetails := kcs.GetData("mysite.com", 1)
|
||||||
|
|
||||||
wantClusterAccessDetails := kubernetesClusterAccessData{
|
wantClusterAccessDetails := kubernetesClusterAccessData{
|
||||||
ClusterServerURL: "https://mysite.com:9443/api/endpoints/1/kubernetes",
|
ClusterServerURL: "https://mysite.com/api/endpoints/1/kubernetes",
|
||||||
CertificateAuthorityFile: "",
|
CertificateAuthorityFile: "",
|
||||||
CertificateAuthorityData: "",
|
CertificateAuthorityData: "",
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ angular.module('portainer.kubernetes').factory('HelmFactory', HelmFactory);
|
||||||
/* @ngInject */
|
/* @ngInject */
|
||||||
function HelmFactory($resource, API_ENDPOINT_ENDPOINTS) {
|
function HelmFactory($resource, API_ENDPOINT_ENDPOINTS) {
|
||||||
const helmUrl = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/helm';
|
const helmUrl = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/helm';
|
||||||
const templatesUrl = '/api/templates/helm';
|
const templatesUrl = 'api/templates/helm';
|
||||||
|
|
||||||
return $resource(
|
return $resource(
|
||||||
helmUrl,
|
helmUrl,
|
||||||
|
|
Loading…
Reference in New Issue