Feat registry consul (#445)

Co-authored-by: johnlanni <zty98751@alibaba-inc.com>
This commit is contained in:
Jun
2023-08-01 16:16:28 +08:00
committed by GitHub
parent e5105a4d71
commit 9b88c6bb40
16 changed files with 1049 additions and 84 deletions

View File

@@ -361,4 +361,102 @@ spec:
- name: DUBBO_GROUP
value: dev
ports:
- containerPort: 20880
- containerPort: 20880
---
apiVersion: v1
kind: Pod
metadata:
name: consul-standlone
namespace: higress-conformance-app-backend
labels:
name: consul-standlone
spec:
containers:
- name: consul
image: docker.io/hashicorp/consul:1.16.0
resources:
requests:
cpu: 10m
ports:
- containerPort: 8500
name: http
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: consul-service
namespace: higress-conformance-app-backend
labels:
name: consul-standlone
spec:
clusterIP: None
ports:
- name: http-query
port: 8500
protocol: TCP
targetPort: 8500
selector:
name: consul-standlone
---
apiVersion: v1
kind: Pod
metadata:
name: httpbin
namespace: higress-conformance-app-backend
spec:
containers:
- name: httpbin
image: registry.cn-hangzhou.aliyuncs.com/2456868764/httpbin:1.0.2
command:
- /app/httpbin
- --registry-type=consul
- --consul-server-address=consul-service:8500
- --server-port=8080
- --service-tags=higress,httpbin
env:
- name: SERVICE_NAME
value: httpbin
- name: VERSION
value: v1
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
failureThreshold: 5
httpGet:
path: /ping
port: 8080
scheme: HTTP
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
livenessProbe:
httpGet:
path: /ping
port: 8080
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 20

View File

@@ -0,0 +1,56 @@
// Copyright (c) 2022 Alibaba Group Holding Ltd.
//
// 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 tests
import (
"testing"
"github.com/alibaba/higress/test/e2e/conformance/utils/http"
"github.com/alibaba/higress/test/e2e/conformance/utils/suite"
)
func init() {
HigressConformanceTests = append(HigressConformanceTests, HTTPRouteConsulHttpBin)
}
var HTTPRouteConsulHttpBin = suite.ConformanceTest{
ShortName: "HTTPRouteConsulHttpBin",
Description: "The Ingress in the higress-conformance-infra namespace uses the consul service registry.",
Manifests: []string{"tests/httproute-consul-httpbin.yaml"},
Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
testcases := []http.Assertion{
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/ping",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 200,
},
},
},
}
t.Run("HTTPRoute Consul HttpBin", func(t *testing.T) {
for _, testcase := range testcases {
http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, suite.GatewayAddress, testcase)
}
})
},
}

View File

@@ -0,0 +1,48 @@
# Copyright (c) 2022 Alibaba Group Holding Ltd.
#
# 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.
apiVersion: networking.higress.io/v1
kind: McpBridge
metadata:
name: default
namespace: higress-system
spec:
registries:
- consulDatacenter: dc1
consulServiceTag: higress
domain: consul-service.higress-conformance-app-backend.svc.cluster.local
name: consul
port: 8500
type: consul
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
higress.io/destination: httpbin.dc1.consul
name: httproute-consul-httpbin-ingress
namespace: higress-system
spec:
ingressClassName: higress
rules:
- host: "foo.com"
http:
paths:
- pathType: Prefix
path: /
backend:
resource:
apiGroup: networking.higress.io
kind: McpBridge
name: default