Gateway for Public Access
The gateway
trait exposes a component to public Internet via a valid domain.
How to use
Attach a gateway
trait to the component you want to expose and deploy.
# vela-app.yaml
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: first-vela-app
spec:
components:
- name: express-server
type: webservice
properties:
image: crccheck/hello-world
port: 8000
traits:
- type: gateway
properties:
domain: testsvc.example.com
http:
"/": 8000
vela up -f https://raw.githubusercontent.com/kubevela/kubevela/master/docs/examples/vela-app.yaml
application.core.oam.dev/first-vela-app created
Check the status until we see status
is running
:
vela status first-vela-app
About:
Name: first-vela-app
Namespace: default
Created at: 2022-01-11 22:04:29 +0800 CST
Status: running
Workflow:
mode: DAG
finished: true
Suspend: false
Terminated: false
Steps
- id:gfgwqp6pqh
name:express-server
type:apply-component
phase:succeeded
message:
Services:
- Name: express-server Env:
Type: webservice
healthy Ready:1/1
Traits:
- ✅ gateway: Visiting URL: testsvc.example.com, IP: 1.5.1.1
You can also get the endpoint by:
vela status first-vela-app --endpoint
|--------------------------------|----------------------------+
| REF(KIND/NAMESPACE/NAME) | ENDPOINT |
|--------------------------------|----------------------------+
| Ingress/default/express-server | http://testsvc.example.com |
|--------------------------------|----------------------------+
Then you will be able to visit this application via its domain.
curl -H "Host:testsvc.example.com" http://<your ip address>/
<xmp>
Hello World
## .
## ## ## ==
## ## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o _,/
\ \ _,'
`'--.._\..--''
</xmp>
⚠️ This section requires your runtime cluster has a working ingress controller.
Specification
NAME | DESCRIPTION | TYPE | REQUIRED | DEFAULT |
---|---|---|---|---|
http | Specify the mapping relationship between the http path and the workload port | map[string]int | true | |
class | Specify the class of ingress to use | string | true | nginx |
classInSpec | Set ingress class in '.spec.ingressClassName' instead of 'kubernetes.io/ingress.class' annotation. | bool | false | false |
domain | Specify the domain you want to expose | string | true |