Once you run HollaEx CLI commands with --kube
flag, HollaEx CLI would automatically generate Ingress rules for Kubernetes with default form. You can check these generated templates under templates/kubernetes/<EXCHANGE_NAME>-ingress.yaml>
.
Default Ingress should be similar to the examples down below.
HollaEx CLI generates Ingress rules which compatible with kubernetes/nginx-ingress
.
If you are planning to use a different Ingress controller, please customize annotations and detailed values based on your own ones.
Nginx rate limit setups on nginx.ingress.kubernetes.io/configuration-snippet
are following pre-defined rate limit zone setups on bitHolla's own Ingress controller.
api : 4r/s
Please reference these values and add it on your own Ingress controller. For example, kubernetes/nginx-ingress
support annotation called http-snippet
to let user inject code snippets on Nginx.conf.
apiVersion: extensions/v1beta1kind: Ingressmetadata:name: hollaex-ingress-apinamespace: hollaexannotations:kubernetes.io/ingress.class: "nginx"kubernetes.io/tls-acme: "true"certmanager.k8s.io/cluster-issuer: letsencrypt-prodnginx.ingress.kubernetes.io/proxy-body-size: "2m"nginx.ingress.kubernetes.io/configuration-snippet: |limit_req zone=api burst=10 nodelay;limit_req_log_level notice;limit_req_status 429;spec:rules:- host: api.demo.bitholla.comhttp:paths:- path: /v1backend:serviceName: hollaex-server-apiservicePort: 10010tls:- secretName: hollaex-tls-certhosts:- api.demo.bitholla.com---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: hollaex-ingress-api-ordernamespace: hollaexannotations:kubernetes.io/ingress.class: "nginx"kubernetes.io/tls-acme: "true"certmanager.k8s.io/cluster-issuer: letsencrypt-prodnginx.ingress.kubernetes.io/proxy-body-size: "2m"nginx.ingress.kubernetes.io/configuration-snippet: |limit_req zone=api burst=10 nodelay;limit_req_log_level notice;limit_req_status 429;spec:rules:- host: api.demo.bitholla.comhttp:paths:- path: /v1/orderbackend:serviceName: hollaex-server-apiservicePort: 10010tls:- secretName: hollaex-tls-certhosts:- api.demo.bitholla.com---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: hollaex-ingress-api-adminnamespace: hollaexannotations:kubernetes.io/ingress.class: "nginx"kubernetes.io/tls-acme: "true"certmanager.k8s.io/cluster-issuer: letsencrypt-prodnginx.ingress.kubernetes.io/proxy-body-size: "2m"spec:rules:- host: api.demo.bitholla.comhttp:paths:- path: /v1/adminbackend:serviceName: hollaex-server-apiservicePort: 10010tls:- secretName: hollaex-tls-certhosts:- api.demo.bitholla.com---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: hollaex-ingress-streamnamespace: hollaexannotations:kubernetes.io/ingress.class: "nginx"kubernetes.io/tls-acme: "true"certmanager.k8s.io/cluster-issuer: letsencrypt-prodnginx.ingress.kubernetes.io/proxy-body-size: "2m"nginx.org/websocket-services: "hollaex-server-stream"spec:rules:- host: api.demo.bitholla.comhttp:paths:- path: /socket.iobackend:serviceName: hollaex-server-streamservicePort: 10080tls:- secretName: hollaex-tls-certhosts:- api.demo.bitholla.com
For example, if you are planning to use nginxinc/kubernetes-ingress
, certain annotations should be modified as shown below.
If you are planning to use splitted Ingress rules like the example up above, Consider using nginx.org/mergeable-ingress-type.
nginx.ingress.kubernetes.io/proxy-body-size
-> nginx.org/client-max-body-size
nginx.ingress.kubernetes.io/configuration-snippet
-> nginx.org/location-snippets