Skip to content

Commit

Permalink
Merge pull request #63 from bfenetworks/develop
Browse files Browse the repository at this point in the history
version 0.3.0
  • Loading branch information
daimg authored Mar 12, 2022
2 parents 5d54680 + d0fbbc8 commit 7178efd
Show file tree
Hide file tree
Showing 148 changed files with 12,819 additions and 259 deletions.
69 changes: 69 additions & 0 deletions .github/generate-reports.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/bash

# Copyright 2020 The Kubernetes 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.

set -o errexit
set -o nounset
set -o pipefail
set -x

(cd "$(dirname "$0")/../test/e2e/images/reports" && make build-image)

REPORT_BUILDER_IMAGE=local/reports-builder:0.0.1

REPORTS_DIR=${REPORTS_DIR:-/tmp/bfe-ingress-reports}

INGRESS_CONTROLLER="BFE-ingress-controller"
CONTROLLER_VERSION=${CONTROLLER_VERSION:-'N/A'}

TEMP_CONTENT=$(mktemp -d)

docker run \
-e BUILD="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
-e INPUT_DIRECTORY=/input \
-e OUTPUT_DIRECTORY=/output \
-e INGRESS_CONTROLLER="${INGRESS_CONTROLLER}" \
-e CONTROLLER_VERSION="${CONTROLLER_VERSION}" \
-v "${REPORTS_DIR}":/input:ro \
-v "${TEMP_CONTENT}":/output \
-u "$(id -u):$(id -g)" \
"${REPORT_BUILDER_IMAGE}"

pushd "${TEMP_WORKTREE}" > /dev/null

if [[ -d ./e2e-test ]]; then
git rm -r ./e2e-test
else
mkdir -p "${TEMP_WORKTREE}/e2e-test"
fi

# copy new content
cp -r -a "${TEMP_CONTENT}/." "${TEMP_WORKTREE}/e2e-test/"

# cleanup HTML
sudo apt-get install tidy
for html_file in e2e-test/*.html;do
tidy -q --break-before-br no --tidy-mark no --show-warnings no --wrap 0 -indent -m "$html_file" || true
done

# configure git
git config --global user.email "action@github.com"
git config --global user.name "GitHub Action"
# commit changes
git add e2e-test
git commit -m "e2e test report"
git push --force --quiet

popd > /dev/null
87 changes: 87 additions & 0 deletions .github/workflows/e2e-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Copyright 2022 The BFE 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.
#
# This is a basic workflow to help you get started with Actions

name: e2e-test

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ develop ]

jobs:
e2e-test:
runs-on: ubuntu-latest
environment: e2e

env:
CUCUMBER_FEATURE: ${{ secrets.CUCUMBER_FEATURE }}
WAIT_FOR_STATUS_TIMEOUT: ${{ secrets.WAIT_FOR_STATUS_TIMEOUT }}
TEST_TIMEOUT: ${{ secrets.TEST_TIMEOUT }}

steps:
- name: Checkout
uses: actions/checkout@v2

- uses: dorny/paths-filter@v2
id: filter
with:
token: ${{ secrets.GITHUB_TOKEN }}
filters: |
go:
- '**/*.go'
- 'go.mod'
- 'go.sum'
- 'Makefile'
- 'Dockerfile'
- 'test/**/*'
- name: Run e2e test
id: run-e2e-test
continue-on-error: true
shell: bash
if: steps.filter.outputs.go == 'true'
run: |
export RESULTS_DIR=/tmp/bfe-ingress-reports
export CUCUMBER_OUTPUT_FORMAT=cucumber
make e2e-test
- name: Generate reports
continue-on-error: true
if: steps.filter.outputs.go == 'true'
run: |
# clone the gh-pages repository branch
export TEMP_WORKTREE=$(mktemp -d)
remote_repo="https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git"
git clone --branch=gh-pages --depth=1 "${remote_repo}" "${TEMP_WORKTREE}"
export REPORTS_DIR=/tmp/bfe-ingress-reports
export CONTROLLER_VERSION=$(cat VERSION)
.github/generate-reports.sh
- name: Upload cucumber json files
uses: actions/upload-artifact@v2
continue-on-error: true
with:
name: cucumber-output
path: /tmp/bfe-ingress-reports/*

- name: Check on failures
if: steps.filter.outputs.go == 'true' && steps.run-e2e-test.outcome != 'success'
run: exit 1

14 changes: 14 additions & 0 deletions .github/workflows/helm.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2022 The BFE 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.
#
name: Helm

on:
Expand Down
37 changes: 37 additions & 0 deletions .licenserc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Copyright (c) 2022 The BFE 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.

header:
license:
spdx-id: Apache-2.0
copyright-owner: The BFE Authors

paths-ignore:
- '.idea'
- 'conf'
- 'docs/images'
- '**/go.mod'
- '**/go.sum'
- '**/*.md'
- '**/*.orig'
- 'examples/*'
- 'LICENSE'
- 'VERSION'
- 'test/e2e/*'

comment: on-failure

dependency:
files:
- go.mod
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

All notable changes to this project will be documented in this file.

## v0.3.0 (2021-03-12)

### Enhancements:
- Record k8s event for status change. [#47](https://github.com/bfenetworks/ingress-bfe/pull/47)
- E2E test support. [#57](https://github.com/bfenetworks/ingress-bfe/pull/57), [#60](https://github.com/bfenetworks/ingress-bfe/pull/60)
- Optimize startup logic. [#40](https://github.com/bfenetworks/ingress-bfe/pull/40), [#61](https://github.com/bfenetworks/ingress-bfe/pull/61)
- Docs improvement. [#38](https://github.com/bfenetworks/ingress-bfe/pull/38), [#39](https://github.com/bfenetworks/ingress-bfe/pull/39), [#41](https://github.com/bfenetworks/ingress-bfe/pull/41), [#42](https://github.com/bfenetworks/ingress-bfe/pull/42), [#52](https://github.com/bfenetworks/ingress-bfe/pull/52), [#56](https://github.com/bfenetworks/ingress-bfe/pull/56), [#58](https://github.com/bfenetworks/ingress-bfe/pull/58), [#59](https://github.com/bfenetworks/ingress-bfe/pull/59)
- License related. [#50](https://github.com/bfenetworks/ingress-bfe/pull/50), [#51](https://github.com/bfenetworks/ingress-bfe/pull/51)



## v0.2.2 (2021-11-17)

### Enhancements:
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ COPY --from=build /bfe-ingress-controller/output/* /

EXPOSE 8080 8443 8421

ENTRYPOINT ["/start.sh", "/bfe-ingress-controller", "/bfe/bin/bfe"]
ENTRYPOINT ["/bfe-ingress-controller"]
28 changes: 27 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ GOGEN := $(GO) generate
GOCLEAN := $(GO) clean
GOFLAGS := -race
STATICCHECK := staticcheck
LICENSEEYE := license-eye

# init arch
ARCH := $(shell getconf LONG_BIT)
Expand Down Expand Up @@ -70,6 +71,18 @@ check:
$(GO) get honnef.co/go/tools/cmd/staticcheck
$(STATICCHECK) ./...

# make license-eye-install
license-eye-install:
$(GO) install github.com/apache/skywalking-eyes/cmd/license-eye@latest

# make license-check, check code file's license declaration
license-check: license-eye-install
$(LICENSEEYE) header check

# make license-fix, fix code file's license declaration
license-fix: license-eye-install
$(LICENSEEYE) header fix

# make docker
docker:
docker build \
Expand All @@ -82,5 +95,18 @@ clean:
$(GOCLEAN)
rm -rf $(OUTDIR)

# e2e test

kind-cluster:
test/script/kind-create-cluster.sh

test-env: docker kind-cluster
test/script/kind-load-images.sh $(INGRESS_VERSION)
test/script/deploy-controller.sh $(INGRESS_VERSION)

e2e-test: test-env
test/e2e/run.sh
test/script/kind-delete-cluster.sh

# avoid filename conflict and speed up build
.PHONY: all compile test clean build
.PHONY: all compile test clean build docker e2e-test test-env kind-cluster
12 changes: 10 additions & 2 deletions README-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,17 @@

## 简介

BFE Ingress Controller 为基于 [BFE][] 实现的[Kubernetes Ingress Controller][],用于支持在 Kubernetes 中使用 [Ingress][]
BFE Ingress Controller 为基于 [BFE][] 实现的[Kubernetes Ingress Controller][],用于支持在 Kubernetes 中使用 [Ingress][] 进行流量接入,并利用BFE的众多优秀特点和强大能力。

## 特性和优势

- 路由转发:支持基于Host、Path、Cookie、Header的路由规则
- 多服务间负载均衡:支持在提供相同服务的多个Service之间进行负载均衡
- 灵活的模块框架:采用灵活的模块框架设计,支持高效率定制开发扩展功能
- 配置热加载:支持配置热加载,配置的更新和生效不会影响已存在的长连接

## 开始使用

详见[部署指南](docs/zh_cn/deployment.md)

## 说明文档
Expand All @@ -33,7 +41,7 @@ BFE Ingress Controller 为基于 [BFE][] 实现的[Kubernetes Ingress Controller

<table>
<tr>
<td><img src="https://bfeopensource.bj.bcebos.com/wechatQRCode.png" width="100"></td>
<td><img src="https://raw.githubusercontent.com/clarinette9/bfe-external-resource/main/wechatQRCode.png" width="100"></td>
</tr>
</table>

Expand Down
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,17 @@ English | [中文](README-CN.md)

## Overview

BFE Ingress Controller is an implementation of Kubernetes [Ingress Controller][] based on [BFE][], to fulfill [Ingress][] in Kubernetes.
BFE Ingress Controller is an implementation of Kubernetes [Ingress Controller][] based on [BFE][], to fulfill [Ingress][] in Kubernetes.

## Features and Advantages

- Traffic routing based on Host, Path, Cookie and Header
- Support for load balancing among multiple Services of the same application
- Flexible plugin framework, based on which developers can add new features efficiently
- Configuration hot reload, avoiding impact on existing long connections

## Quick start

See [Deployment](docs/en_us/deployment.md) for quick start of using BFE Ingress Controller.

## Documentation
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.2.2
0.3.0
1 change: 0 additions & 1 deletion build/build.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#!/bin/sh
# Copyright 2021 The BFE Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
Expand Down
14 changes: 14 additions & 0 deletions charts/bfe-ingress-controller/.helmignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2022 The BFE 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.
#
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
Expand Down
14 changes: 14 additions & 0 deletions charts/bfe-ingress-controller/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2022 The BFE 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.
#
apiVersion: v2
name: bfe-ingress-controller
description: Helm chart for BFE Ingress Controller
Expand Down
16 changes: 16 additions & 0 deletions charts/bfe-ingress-controller/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
{*
Copyright 2022 The BFE 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.
*}
{{/*
Expand the name of the chart.
*/}}
Expand Down
Loading

0 comments on commit 7178efd

Please sign in to comment.