Merge pull request #4210 from wawa0210/master

fix karmada instance aggregated service externalName error
This commit is contained in:
karmada-bot 2023-11-09 09:22:41 +08:00 committed by GitHub
commit fd03daa313
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 26 deletions

View File

@ -30,22 +30,22 @@ func init() {
}
// EnsureAggregatedAPIService creates aggregated APIService and a service
func EnsureAggregatedAPIService(aggregatorClient *aggregator.Clientset, client clientset.Interface, name, namespace, caBundle string) error {
if err := aggregatedApiserverService(client, name, namespace); err != nil {
func EnsureAggregatedAPIService(aggregatorClient *aggregator.Clientset, client clientset.Interface, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, hostClusterServiceName, hostClusterNamespace, caBundle string) error {
if err := aggregatedApiserverService(client, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, hostClusterServiceName, hostClusterNamespace); err != nil {
return err
}
return aggregatedAPIService(aggregatorClient, name, namespace, caBundle)
return aggregatedAPIService(aggregatorClient, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, caBundle)
}
func aggregatedAPIService(client *aggregator.Clientset, name, namespace, caBundle string) error {
func aggregatedAPIService(client *aggregator.Clientset, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, caBundle string) error {
apiServiceBytes, err := util.ParseTemplate(KarmadaAggregatedAPIService, struct {
Namespace string
ServiceName string
CABundle string
}{
Namespace: namespace,
ServiceName: util.KarmadaAggregatedAPIServerName(name),
Namespace: karmadaControlPlaneNamespace,
ServiceName: util.KarmadaAggregatedAPIServerName(karmadaControlPlaneServiceName),
CABundle: caBundle,
})
if err != nil {
@ -60,13 +60,17 @@ func aggregatedAPIService(client *aggregator.Clientset, name, namespace, caBundl
return apiclient.CreateOrUpdateAPIService(client, apiService)
}
func aggregatedApiserverService(client clientset.Interface, name, namespace string) error {
func aggregatedApiserverService(client clientset.Interface, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, hostClusterServiceName, hostClusterNamespace string) error {
aggregatedApiserverServiceBytes, err := util.ParseTemplate(KarmadaAggregatedApiserverService, struct {
Namespace string
ServiceName string
HostClusterServiceName string
HostClusterNamespace string
}{
Namespace: namespace,
ServiceName: util.KarmadaAggregatedAPIServerName(name),
Namespace: karmadaControlPlaneNamespace,
ServiceName: util.KarmadaAggregatedAPIServerName(karmadaControlPlaneServiceName),
HostClusterServiceName: util.KarmadaAggregatedAPIServerName(hostClusterServiceName),
HostClusterNamespace: hostClusterNamespace,
})
if err != nil {
return fmt.Errorf("error when parsing AggregatedApiserver Service template: %w", err)
@ -81,15 +85,15 @@ func aggregatedApiserverService(client clientset.Interface, name, namespace stri
}
// EnsureMetricsAdapterAPIService creates APIService and a service for karmada-metrics-adapter
func EnsureMetricsAdapterAPIService(aggregatorClient *aggregator.Clientset, client clientset.Interface, name, namespace, caBundle string) error {
if err := karmadaMetricsAdapterService(client, name, namespace); err != nil {
func EnsureMetricsAdapterAPIService(aggregatorClient *aggregator.Clientset, client clientset.Interface, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, hostClusterServiceName, hostClusterNamespace, caBundle string) error {
if err := karmadaMetricsAdapterService(client, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, hostClusterServiceName, hostClusterNamespace); err != nil {
return err
}
return karmadaMetricsAdapterAPIService(aggregatorClient, name, namespace, caBundle)
return karmadaMetricsAdapterAPIService(aggregatorClient, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, caBundle)
}
func karmadaMetricsAdapterAPIService(client *aggregator.Clientset, name, namespace, caBundle string) error {
func karmadaMetricsAdapterAPIService(client *aggregator.Clientset, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, caBundle string) error {
for _, gv := range constants.KarmadaMetricsAdapterAPIServices {
// The APIService name to metrics adapter is "$version.$group"
apiServiceName := fmt.Sprintf("%s.%s", gv.Version, gv.Group)
@ -100,10 +104,10 @@ func karmadaMetricsAdapterAPIService(client *aggregator.Clientset, name, namespa
CABundle string
}{
Name: apiServiceName,
Namespace: namespace,
Namespace: karmadaControlPlaneNamespace,
Group: gv.Group,
Version: gv.Version,
ServiceName: util.KarmadaMetricsAdapterName(name),
ServiceName: util.KarmadaMetricsAdapterName(karmadaControlPlaneServiceName),
CABundle: caBundle,
})
if err != nil {
@ -123,13 +127,17 @@ func karmadaMetricsAdapterAPIService(client *aggregator.Clientset, name, namespa
return nil
}
func karmadaMetricsAdapterService(client clientset.Interface, name, namespace string) error {
func karmadaMetricsAdapterService(client clientset.Interface, karmadaControlPlaneServiceName, karmadaControlPlaneNamespace, hostClusterServiceName, hostClusterNamespace string) error {
aggregatedApiserverServiceBytes, err := util.ParseTemplate(KarmadaMetricsAdapterService, struct {
Namespace string
ServiceName string
HostClusterServiceName string
HostClusterNamespace string
}{
Namespace: namespace,
ServiceName: util.KarmadaMetricsAdapterName(name),
Namespace: karmadaControlPlaneNamespace,
ServiceName: util.KarmadaMetricsAdapterName(karmadaControlPlaneServiceName),
HostClusterServiceName: util.KarmadaMetricsAdapterName(hostClusterServiceName),
HostClusterNamespace: hostClusterNamespace,
})
if err != nil {
return fmt.Errorf("error when parsing KarmadaMetricsAdapter Service template: %w", err)

View File

@ -30,7 +30,7 @@ metadata:
namespace: {{ .Namespace }}
spec:
type: ExternalName
externalName: {{ .ServiceName }}.{{ .Namespace }}.svc
externalName: {{ .HostClusterServiceName }}.{{ .HostClusterNamespace }}.svc
`
// KarmadaMetricsAdapterAPIService is karmada-metrics-adapter APIService manifest
@ -59,6 +59,6 @@ metadata:
namespace: {{ .Namespace }}
spec:
type: ExternalName
externalName: {{ .ServiceName }}.{{ .Namespace }}.svc
externalName: {{ .HostClusterServiceName }}.{{ .HostClusterNamespace }}.svc
`
)

View File

@ -192,7 +192,7 @@ func runDeployMetricAdapterAPIService(r workflow.RunData) error {
}
caBase64 := base64.StdEncoding.EncodeToString(cert.CertData())
err = apiservice.EnsureMetricsAdapterAPIService(client, data.KarmadaClient(), data.GetName(), data.GetNamespace(), caBase64)
err = apiservice.EnsureMetricsAdapterAPIService(client, data.KarmadaClient(), data.GetName(), constants.KarmadaSystemNamespace, data.GetName(), data.GetNamespace(), caBase64)
if err != nil {
return fmt.Errorf("failed to apply karmada-metrics-adapter APIService resource to karmada controlplane, err: %w", err)
}

View File

@ -191,7 +191,7 @@ func runAPIService(r workflow.RunData) error {
}
caBase64 := base64.StdEncoding.EncodeToString(cert.CertData())
err = apiservice.EnsureAggregatedAPIService(client, data.KarmadaClient(), data.GetName(), data.GetNamespace(), caBase64)
err = apiservice.EnsureAggregatedAPIService(client, data.KarmadaClient(), data.GetName(), constants.KarmadaSystemNamespace, data.GetName(), data.GetNamespace(), caBase64)
if err != nil {
return fmt.Errorf("failed to apply aggregated APIService resource to karmada controlplane, err: %w", err)
}