-
-
Notifications
You must be signed in to change notification settings - Fork 669
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: init gateway controller (#133)
* feat: init gateway controller * fix: add full path * feat: add oss bucket route * feat: add route type
- Loading branch information
Showing
26 changed files
with
4,996 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
apisix: | ||
node_listen: 9080 # APISIX listening port | ||
enable_ipv6: false | ||
|
||
allow_admin: # http://nginx.org/en/docs/http/ngx_http_access_module.html#allow | ||
- 0.0.0.0/0 # We need to restrict ip access rules for security. 0.0.0.0/0 is for test. | ||
|
||
admin_key: | ||
- name: "admin" | ||
key: edd1c9f034335f136f87ad84b625c8f1 | ||
role: admin # admin: manage all configuration data | ||
# viewer: only can view configuration data | ||
- name: "viewer" | ||
key: 4054f7cf07e344346cd3f287985e76a2 | ||
role: viewer | ||
|
||
enable_control: true | ||
control: | ||
ip: "0.0.0.0" | ||
port: 9092 | ||
|
||
etcd: | ||
host: # it's possible to define multiple etcd hosts addresses of the same etcd cluster. | ||
- "http://etcd:2379" # multiple etcd address | ||
prefix: "/apisix" # apisix configurations prefix | ||
timeout: 30 # 30 seconds |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
# | ||
# Licensed to the Apache Software Foundation (ASF) under one or more | ||
# contributor license agreements. See the NOTICE file distributed with | ||
# this work for additional information regarding copyright ownership. | ||
# The ASF licenses this file to You 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. | ||
# | ||
|
||
conf: | ||
listen: | ||
host: 0.0.0.0 # `manager api` listening ip or host name | ||
port: 9000 # `manager api` listening port | ||
allow_list: # If we don't set any IP list, then any IP access is allowed by default. | ||
- 0.0.0.0/0 | ||
etcd: | ||
endpoints: # supports defining multiple etcd host addresses for an etcd cluster | ||
- "http://etcd:2379" | ||
# yamllint disable rule:comments-indentation | ||
# etcd basic auth info | ||
# username: "root" # ignore etcd username if not enable etcd auth | ||
# password: "123456" # ignore etcd password if not enable etcd auth | ||
mtls: | ||
key_file: "" # Path of your self-signed client side key | ||
cert_file: "" # Path of your self-signed client side cert | ||
ca_file: "" # Path of your self-signed ca cert, the CA is used to sign callers' certificates | ||
# prefix: /apisix # apisix config's prefix in etcd, /apisix by default | ||
log: | ||
error_log: | ||
level: warn # supports levels, lower to higher: debug, info, warn, error, panic, fatal | ||
file_path: | ||
logs/error.log # supports relative path, absolute path, standard output | ||
# such as: logs/error.log, /tmp/logs/error.log, /dev/stdout, /dev/stderr | ||
access_log: | ||
file_path: | ||
logs/access.log # supports relative path, absolute path, standard output | ||
# such as: logs/access.log, /tmp/logs/access.log, /dev/stdout, /dev/stderr | ||
# log example: 2020-12-09T16:38:09.039+0800 INFO filter/logging.go:46 /apisix/admin/routes/r1 {"status": 401, "host": "127.0.0.1:9000", "query": "asdfsafd=adf&a=a", "requestId": "3d50ecb8-758c-46d1-af5b-cd9d1c820156", "latency": 0, "remoteIP": "127.0.0.1", "method": "PUT", "errs": []} | ||
authentication: | ||
secret: | ||
secret # secret for jwt token generation. | ||
# NOTE: Highly recommended to modify this value to protect `manager api`. | ||
# if it's default value, when `manager api` start, it will generate a random string to replace it. | ||
expire_time: 3600 # jwt token expire time, in second | ||
users: # yamllint enable rule:comments-indentation | ||
- username: admin # username and password for login `manager api` | ||
password: admin | ||
- username: user | ||
password: user | ||
|
||
plugins: # plugin list (sorted in alphabetical order) | ||
- api-breaker | ||
- authz-keycloak | ||
- basic-auth | ||
- batch-requests | ||
- consumer-restriction | ||
- cors | ||
# - dubbo-proxy | ||
- echo | ||
# - error-log-logger | ||
# - example-plugin | ||
- fault-injection | ||
- grpc-transcode | ||
- hmac-auth | ||
- http-logger | ||
- ip-restriction | ||
- jwt-auth | ||
- kafka-logger | ||
- key-auth | ||
- limit-conn | ||
- limit-count | ||
- limit-req | ||
# - log-rotate | ||
# - node-status | ||
- openid-connect | ||
- prometheus | ||
- proxy-cache | ||
- proxy-mirror | ||
- proxy-rewrite | ||
- redirect | ||
- referer-restriction | ||
- request-id | ||
- request-validation | ||
- response-rewrite | ||
- serverless-post-function | ||
- serverless-pre-function | ||
# - skywalking | ||
- sls-logger | ||
- syslog | ||
- tcp-logger | ||
- udp-logger | ||
- uri-blocker | ||
- wolf-rbac | ||
- zipkin | ||
- server-info | ||
- traffic-split |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# node_modules | ||
.env | ||
ecosystem.config.js | ||
# dist | ||
data | ||
src | ||
tests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
node_modules | ||
dist | ||
|
||
upload | ||
data/* | ||
tmp | ||
|
||
.env | ||
.env.local | ||
|
||
ecosystem.config.js | ||
.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
FROM node:16-alpine | ||
|
||
|
||
EXPOSE 9001 | ||
WORKDIR /app | ||
ENV LOG_LEVEL=debug | ||
COPY . /app | ||
# RUN npm i | ||
# RUN npm run build | ||
USER node | ||
CMD [ "npm", "run", "start" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
|
||
|
||
# laf service controller | ||
|
||
|
||
### Application instance status | ||
```ts | ||
export enum ApplicationInstanceStatus { | ||
CREATED = 'created', | ||
PREPARED_START = 'prepared_start', | ||
STARTING = 'starting', | ||
RUNNING = 'running', | ||
PREPARED_STOP = 'prepared_stop', | ||
STOPPING = 'stopping', | ||
STOPPED = 'stopped', | ||
PREPARED_RESTART = 'prepared_restart', | ||
RESTARTING = 'restarting' | ||
} | ||
|
||
``` | ||
|
||
### instance status machine | ||
|
||
`created`: nop | ||
|
||
`prepared_start`: | ||
-> loop apps in `prepared_start` | ||
-> start app instance for each | ||
-> update app status to `starting` | ||
|
||
`starting`: | ||
-> loop apps in `starting` | ||
-> get instance status for each app | ||
-> update running app status to `running` | ||
|
||
`running`: nop | ||
|
||
`prepared_stop`: | ||
-> loop apps in `prepared_stop` | ||
-> stop app instance for each | ||
-> update app status to `stopping` | ||
|
||
`stopping`: | ||
-> loop apps in `stopping` | ||
-> get instance status for each app | ||
-> update stopped app status to `stopped` | ||
|
||
`stopped`: nop | ||
|
||
`prepared_restart`: | ||
-> loop apps in `prepared_restart` | ||
-> stop app instance for each | ||
-> update app status to `restarting` | ||
|
||
`restarting`: | ||
-> loop apps in `restarting` | ||
-> get instance status for each app | ||
-> start stopped app & update app status to `starting` | ||
|
||
|
||
### scheduler logic design | ||
|
||
- set a timer to execute schedular loop | ||
- call each handlers in loop: | ||
- `prepared_start` handler | ||
- `starting` handler | ||
- `prepared_stop` handler | ||
- `stopping` handler | ||
- `prepared_restart` handler | ||
- `restarting` handler |
Oops, something went wrong.