blob: cf36052a6a06691fb0fe83bd901d8c554b98ffd5 [file] [log] [blame]
//go:build integ
// +build integ
// Copyright Istio Authors
//
// 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 pilot
import (
"fmt"
"testing"
"time"
)
import (
"github.com/apache/dubbo-go-pixiu/pkg/test/framework"
kubecluster "github.com/apache/dubbo-go-pixiu/pkg/test/framework/components/cluster/kube"
"github.com/apache/dubbo-go-pixiu/pkg/test/framework/components/namespace"
kubetest "github.com/apache/dubbo-go-pixiu/pkg/test/kube"
"github.com/apache/dubbo-go-pixiu/pkg/test/util/retry"
"github.com/apache/dubbo-go-pixiu/tests/integration/pilot/common"
)
func TestXFFGateway(t *testing.T) {
framework.
NewTest(t).
Features("traffic.ingress.topology").
Run(func(t framework.TestContext) {
gatewayNs := namespace.NewOrFail(t, t, namespace.Config{Prefix: "custom-gateway"})
injectLabel := `sidecar.istio.io/inject: "true"`
if len(t.Settings().Revisions.Default()) > 0 {
injectLabel = fmt.Sprintf(`istio.io/rev: "%v"`, t.Settings().Revisions.Default())
}
templateParams := map[string]string{
"imagePullSecret": t.Settings().Image.PullSecret,
"injectLabel": injectLabel,
"imagePullPolicy": t.Settings().Image.PullPolicy,
}
// we only apply to config clusters
t.ConfigIstio().Eval(gatewayNs.Name(), templateParams, `apiVersion: v1
kind: Service
metadata:
name: custom-gateway
labels:
istio: ingressgateway
spec:
ports:
- port: 80
targetPort: 8080
name: http
selector:
istio: ingressgateway
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: custom-gateway
spec:
selector:
matchLabels:
istio: ingressgateway
template:
metadata:
annotations:
inject.istio.io/templates: gateway
proxy.istio.io/config: |
gatewayTopology:
numTrustedProxies: 2
labels:
istio: ingressgateway
{{ .injectLabel }}
spec:
{{- if ne .imagePullSecret "" }}
imagePullSecrets:
- name: {{ .imagePullSecret }}
{{- end }}
containers:
- name: istio-proxy
image: auto
imagePullPolicy: {{ .imagePullPolicy }}
---
`).ApplyOrFail(t)
cs := t.Clusters().Default().(*kubecluster.Cluster)
retry.UntilSuccessOrFail(t, func() error {
_, err := kubetest.CheckPodsAreReady(kubetest.NewPodFetch(cs, gatewayNs.Name(), "istio=ingressgateway"))
return err
}, retry.Timeout(time.Minute*2), retry.Delay(time.Second))
for _, tt := range common.XFFGatewayCase(&apps, fmt.Sprintf("custom-gateway.%s.svc.cluster.local", gatewayNs.Name())) {
tt.Run(t, apps.Namespace.Name())
}
})
}