diff --git a/deploy/kubernetes/README.md b/deploy/kubernetes/README.md index 9ef30ea..8975b3e 100644 --- a/deploy/kubernetes/README.md +++ b/deploy/kubernetes/README.md @@ -19,6 +19,15 @@ git clone https://github.com/OktopUSP/oktopus export DEPLOYMENT_PATH=oktopus/deploy/kubernetes ``` +## HAProxy Ingress Controller + +```shell +helm install haproxy-kubernetes-ingress haproxytech/kubernetes-ingress \ + --create-namespace \ + --namespace haproxy-controller \ + --set controller.kind=DaemonSet \ + --set controller.daemonset.useHostPort=true +``` ## MongoBD @@ -49,27 +58,6 @@ helm install nats nats/nats --set config.jetstream.enabled=true ## Oktopus - -Node Ports - -For this deployment, we are not using a load balancer and kubernetes is deployed on-premises so we are using Nodeports to insource the client traffic into cluster. below the ports set on deployment files: - -1. MQTT broker service (mqtt-svc): 30000 -2. Frontend (frontend-svc): 30001 -3. SocketIO: (socketio-svc): 30002 -4. Controller (controller-svc): 30003 -5. WebSocket (ws-svc): 30005 - -Before deploying the files, edit the frontend.yaml file to set the correct enviroment variables: - -```yaml -env: - - name: NEXT_PUBLIC_REST_ENDPOINT - value: ":30003" - - name: NEXT_PUBLIC_WS_ENDPOINT - value: ":30005" -``` - ```shell kubectl apply -f $DEPLOYMENT_PATH/mqtt.yaml kubectl apply -f $DEPLOYMENT_PATH/mqtt-adapter.yaml @@ -88,4 +76,4 @@ kubectl apply -f $DEPLOYMENT_PATH/ws-adapter.yaml kubectl get pods kubectl get svc -``` \ No newline at end of file +``` diff --git a/deploy/kubernetes/adapter.yaml b/deploy/kubernetes/adapter.yaml index d2d2d23..3160766 100644 --- a/deploy/kubernetes/adapter.yaml +++ b/deploy/kubernetes/adapter.yaml @@ -33,7 +33,7 @@ spec: - name: NATS_VERIFY_CERTIFICATES value: "false" - name: MONGO_URI - value: "mongodb://oktopusp:oktopusp@mongodb-0.mongodb-svc.mongodb.svc.cluster.local:27017,mongodb-1.mongodb-svc.mongodb.svc.cluster.local:27017,mongodb-2.mongodb-svc.mongodb.svc.cluster.local:27017/adapter?replicaSet=mongodb&ssl=false" + value: "mongodb://oktopusp:oktopusp@mongodb-0.mongodb-svc.mongodb.svc.cluster.local:27017,mongodb-1.mongodb-svc.mongodb.svc.cluster.local:27017,mongodb-2.mongodb-svc.mongodb.svc.cluster.local:27017/?replicaSet=mongodb&ssl=false" - name: CONTROLLER_ID value: "oktopusController" diff --git a/deploy/kubernetes/controller.yaml b/deploy/kubernetes/controller.yaml index 450317d..17b13cf 100644 --- a/deploy/kubernetes/controller.yaml +++ b/deploy/kubernetes/controller.yaml @@ -48,6 +48,5 @@ spec: - protocol: TCP port: 8000 targetPort: 8000 - nodePort: 30003 - type: NodePort + type: ClusterIP diff --git a/deploy/kubernetes/frontend.yaml b/deploy/kubernetes/frontend.yaml index 6731899..86945db 100644 --- a/deploy/kubernetes/frontend.yaml +++ b/deploy/kubernetes/frontend.yaml @@ -28,10 +28,8 @@ spec: - containerPort: 3000 imagePullPolicy: IfNotPresent env: - - name: NEXT_PUBLIC_REST_ENDPOINT - value: "192.168.1.130:30003" - - name: NEXT_PUBLIC_WS_ENDPOINT - value: "192.168.1.130:30005" + - name: NEXT_PUBLIC_REST_ENDPOINT + value: "/api" --- apiVersion: v1 kind: Service @@ -44,5 +42,5 @@ spec: - protocol: TCP port: 3000 targetPort: 3000 - nodePort: 30001 - type: NodePort + #externalTrafficPolicy: Local + type: ClusterIP diff --git a/deploy/kubernetes/haproxy-kubernetes-ingress-cm.yaml b/deploy/kubernetes/haproxy-kubernetes-ingress-cm.yaml deleted file mode 100644 index c4aabd9..0000000 --- a/deploy/kubernetes/haproxy-kubernetes-ingress-cm.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: haproxy-kubernetes-ingress - namespace: haproxy-controller -data: - syslog-server: "address:stdout, format: raw, facility:daemon" diff --git a/deploy/kubernetes/haproxy-tcp-services-cm.yaml b/deploy/kubernetes/haproxy-tcp-services-cm.yaml deleted file mode 100644 index a4b8f7f..0000000 --- a/deploy/kubernetes/haproxy-tcp-services-cm.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: haproxy-tcp - namespace: default -data: - 1883: # Port where the frontend is going to listen to. - default/mqtt-svc:1883 # Kubernetes service in the format NS/ServiceName:ServicePort diff --git a/deploy/kubernetes/haproxy-tcp-services.yaml b/deploy/kubernetes/haproxy-tcp-services.yaml deleted file mode 100644 index 77db1d6..0000000 --- a/deploy/kubernetes/haproxy-tcp-services.yaml +++ /dev/null @@ -1,8 +0,0 @@ -controller: - service: - tcpPorts: - - name: mqtt - port: 1883 - targetPort: 1883 - extraArgs: - - --configmap-tcp-services=default/haproxy-tcp diff --git a/deploy/kubernetes/ingress.yaml b/deploy/kubernetes/ingress.yaml new file mode 100644 index 0000000..b429543 --- /dev/null +++ b/deploy/kubernetes/ingress.yaml @@ -0,0 +1,34 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: web-ingress + namespace: default + annotations: +spec: + ingressClassName: "haproxy" + rules: + - host: oktopus.rdss.cloud + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: frontend-svc + port: + number: 3000 + - path: /api + pathType: Prefix + backend: + service: + name: controller-svc + port: + number: 8000 + - path: /socket.io + pathType: Prefix + backend: + service: + name: socketio-svc + port: + number: 5000 + diff --git a/deploy/kubernetes/mqtt-adapter.yaml b/deploy/kubernetes/mqtt-adapter.yaml index 3d7b7b5..8bd522d 100644 --- a/deploy/kubernetes/mqtt-adapter.yaml +++ b/deploy/kubernetes/mqtt-adapter.yaml @@ -31,7 +31,7 @@ spec: - name: NATS_VERIFY_CERTIFICATES value: "false" - name: MQTT_URL - value: "tcp://mqtt:1883" + value: "tcp://mqtt-svc:1883" - name: MQTT_CLIENT_ID value: "mqtt-adapter" - name: MQTT_USERNAME diff --git a/deploy/kubernetes/mqtt.yaml b/deploy/kubernetes/mqtt.yaml index 0d705ee..55fca1b 100644 --- a/deploy/kubernetes/mqtt.yaml +++ b/deploy/kubernetes/mqtt.yaml @@ -9,8 +9,8 @@ spec: - protocol: TCP port: 1883 targetPort: 1883 - nodePort: 30000 - type: NodePort + externalTrafficPolicy: Local + type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment @@ -46,3 +46,6 @@ spec: value: "false" - name: LOG_LEVEL value: "0" # 0 - DEBUG + - name: REDIS_ENABLE + value: "false" + diff --git a/deploy/kubernetes/socketio.yaml b/deploy/kubernetes/socketio.yaml index a51c5fd..e8695a1 100644 --- a/deploy/kubernetes/socketio.yaml +++ b/deploy/kubernetes/socketio.yaml @@ -19,6 +19,8 @@ spec: env: - name: NATS_URL value: "nats:4222" + - name: CORS_ALLOWED_ORIGINS + value: "" --- apiVersion: v1 kind: Service @@ -31,5 +33,3 @@ spec: - protocol: TCP port: 5000 targetPort: 5000 - nodePort: 30002 - type: NodePort