Skip to content

Commit 291700e

Browse files
committed
fix: resolve externalname
Signed-off-by: Ashing Zheng <[email protected]>
1 parent 4030fe0 commit 291700e

File tree

4 files changed

+20
-17
lines changed

4 files changed

+20
-17
lines changed

internal/provider/adc/config.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626

2727
"github.com/api7/gopkg/pkg/log"
2828
"go.uber.org/zap"
29+
corev1 "k8s.io/api/core/v1"
2930
discoveryv1 "k8s.io/api/discovery/v1"
3031
k8stypes "k8s.io/apimachinery/pkg/types"
3132
"k8s.io/utils/ptr"
@@ -120,8 +121,24 @@ func (d *adcClient) getConfigsForGatewayProxy(tctx *provider.TranslateContext, g
120121
config.ServerAddrs = append(config.ServerAddrs, "http://"+net.JoinHostPort(node.Host, strconv.Itoa(node.Port)))
121122
}
122123
} else {
123-
config.ServerAddrs = []string{
124-
fmt.Sprintf("http://%s.%s:%d", provider.ControlPlane.Service.Name, gatewayProxy.Namespace, provider.ControlPlane.Service.Port),
124+
key := k8stypes.NamespacedName{
125+
Namespace: gatewayProxy.Namespace,
126+
Name: provider.ControlPlane.Service.Name,
127+
}
128+
service, ok := tctx.Services[key]
129+
if !ok {
130+
return nil, fmt.Errorf("service %s not found", key)
131+
}
132+
refPort := provider.ControlPlane.Service.Port
133+
// if the service is external name, we should use the external name as the server address
134+
if service.Spec.Type == corev1.ServiceTypeExternalName {
135+
config.ServerAddrs = []string{
136+
fmt.Sprintf("http://%s:%d", service.Spec.ExternalName, refPort),
137+
}
138+
} else {
139+
config.ServerAddrs = []string{
140+
fmt.Sprintf("http://%s.%s:%d", key.Name, key.Namespace, refPort),
141+
}
125142
}
126143
}
127144

test/e2e/crds/v2/status.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ spec:
171171
Check: scaffold.WithExpectedStatus(200),
172172
})
173173

174-
time.Sleep(60 * time.Second)
175174
By("get yaml from service")
176175
serviceYaml, err := s.GetOutputFromString("svc", framework.ProviderType, "-o", "yaml")
177176
Expect(err).NotTo(HaveOccurred(), "getting service yaml")
@@ -180,16 +179,10 @@ spec:
180179
err = yaml.Unmarshal([]byte(serviceYaml), &k8sservice)
181180
Expect(err).NotTo(HaveOccurred(), "unmarshalling service")
182181
oldSpec := k8sservice.Spec
183-
// if os.Getenv("PROVIDER_TYPE") == adc.BackendModeAPISIX {
184-
// k8sservice.Spec.Selector = map[string]string{
185-
// "app.kubernetes.io/name": "nonexistent",
186-
// }
187-
// } else {
188182
k8sservice.Spec = corev1.ServiceSpec{
189183
Type: corev1.ServiceTypeExternalName,
190184
ExternalName: "invalid.host",
191185
}
192-
// }
193186
newServiceYaml, err := yaml.Marshal(k8sservice)
194187
Expect(err).NotTo(HaveOccurred(), "marshalling service")
195188
err = s.CreateResourceFromString(string(newServiceYaml))

test/e2e/framework/manifests/ingress.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ data:
334334
log_level: "debug"
335335
controller_name: {{ .ControllerName | default "apisix.apache.org/apisix-ingress-controller" }}
336336
leader_election_id: "apisix-ingress-controller-leader"
337-
exec_adc_timeout: 30s
337+
exec_adc_timeout: 5s
338338
provider:
339339
type: {{ .ProviderType | default "apisix-standalone" }}
340340
sync_period: {{ .ProviderSyncPeriod | default "0s" }}

test/e2e/gatewayapi/status.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ spec:
127127
Check: scaffold.WithExpectedStatus(200),
128128
})
129129

130-
time.Sleep(60 * time.Second)
131130
By("get yaml from service")
132131
serviceYaml, err := s.GetOutputFromString("svc", framework.ProviderType, "-o", "yaml")
133132
Expect(err).NotTo(HaveOccurred(), "getting service yaml")
@@ -136,16 +135,10 @@ spec:
136135
err = yaml.Unmarshal([]byte(serviceYaml), &k8sservice)
137136
Expect(err).NotTo(HaveOccurred(), "unmarshalling service")
138137
oldSpec := k8sservice.Spec
139-
// if os.Getenv("PROVIDER_TYPE") == adc.BackendModeAPISIX {
140-
// k8sservice.Spec.Selector = map[string]string{
141-
// "app.kubernetes.io/name": "nonexistent",
142-
// }
143-
// } else {
144138
k8sservice.Spec = corev1.ServiceSpec{
145139
Type: corev1.ServiceTypeExternalName,
146140
ExternalName: "invalid.host",
147141
}
148-
// }
149142
newServiceYaml, err := yaml.Marshal(k8sservice)
150143
Expect(err).NotTo(HaveOccurred(), "marshalling service")
151144
err = s.CreateResourceFromString(string(newServiceYaml))

0 commit comments

Comments
 (0)