{ "id": "00000000-0000-0000-0000-000000000000", "name": "Portable Ai Interface gateway", "schemaVersion": "designs.meshery.io/v1beta3", "version": "0.0.2", "components": [ { "id": "c309465c-dc08-4b83-b72c-286b867d4227", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "inference-service-account", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "bottom-round-rectangle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/serviceaccount-color.svg", "svgComplete": "", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/serviceaccount-white.svg" }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "inference-service-account", "namespace": "playground-sandbox" } }, "component": { "version": "v1", "kind": "ServiceAccount", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "dc41100b-2df9-48dc-8221-40115bfa63a4", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "inference-gateway-config", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "bottom-round-rectangle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/configmap-color.svg", "svgComplete": "", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/configmap-white.svg" }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "data": { "LOG_LEVEL": "info", "MODEL_NAME": "example-model-placeholder", "MODEL_SERVER_URL": "http://model-server-service:8080", "default.conf": "server {\n listen 8080;\n server_name _;\n\n location = /healthz {\n default_type text/plain;\n return 200 \"ok\\n\";\n }\n\n location /v1/ {\n proxy_pass http://model-server-service.playground-sandbox.svc.cluster.local:8080/;\n proxy_http_version 1.1;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n }\n}\n" }, "metadata": { "labels": { "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "inference-gateway-config", "namespace": "playground-sandbox" } }, "component": { "version": "v1", "kind": "ConfigMap", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "5614abc1-fbaf-482d-bcc4-1ba71d3efdf3", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "inference-gateway-credentials", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "background-clip": "node", "background-image-containment": "over", "background-opacity": 0, "height": 32, "padding": 1, "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "shield", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/secret-color.svg", "svgComplete": "ui/public/static/img/meshmodels/kubernetes/complete/secret-complete.svg", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/secret-white.svg", "width": 32 }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "inference-gateway-credentials", "namespace": "playground-sandbox" }, "stringData": { "MODEL_API_KEY": "replace-before-real-use" }, "type": "Opaque" }, "component": { "version": "v1", "kind": "Secret", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "dae4a4ab-6466-4b79-97ed-85504ef47289", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "inference-gateway-deployment", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "background-image": "none", "background-opacity": 0.5, "border-width": 2, "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "round-rectangle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/deployment-color.svg", "svgComplete": "ui/public/static/img/meshmodels/kubernetes/complete/deployment-complete.svg", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/deployment-white.svg" }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "parent", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app": "inference-gateway", "app.kubernetes.io/component": "gateway", "app.kubernetes.io/name": "inference-gateway", "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "inference-gateway-deployment", "namespace": "playground-sandbox" }, "spec": { "replicas": 2, "selector": { "matchLabels": { "app": "inference-gateway" } }, "template": { "metadata": { "labels": { "app": "inference-gateway", "app.kubernetes.io/component": "gateway", "app.kubernetes.io/name": "inference-gateway", "app.kubernetes.io/part-of": "portable-ai-inference" } }, "spec": { "containers": [ { "envFrom": [ { "configMapRef": { "name": "inference-gateway-config" } }, { "secretRef": { "name": "inference-gateway-credentials" } } ], "image": "nginxinc/nginx-unprivileged:stable-alpine", "livenessProbe": { "httpGet": { "path": "/healthz", "port": "http" }, "initialDelaySeconds": 10, "periodSeconds": 10 }, "name": "gateway", "ports": [ { "containerPort": 8080, "name": "http", "protocol": "TCP" } ], "readinessProbe": { "httpGet": { "path": "/healthz", "port": "http" }, "initialDelaySeconds": 3, "periodSeconds": 5 }, "resources": { "limits": { "cpu": "500m", "memory": "256Mi" }, "requests": { "cpu": "100m", "memory": "128Mi" } }, "securityContext": { "allowPrivilegeEscalation": false, "capabilities": { "drop": [ "ALL" ] }, "runAsNonRoot": true }, "volumeMounts": [ { "mountPath": "/etc/nginx/conf.d/default.conf", "name": "gateway-config", "readOnly": true, "subPath": "default.conf" } ] } ], "serviceAccountName": "inference-service-account", "volumes": [ { "configMap": { "items": [ { "key": "default.conf", "path": "default.conf" } ], "name": "inference-gateway-config" }, "name": "gateway-config" } ] } } } }, "component": { "version": "apps/v1", "kind": "Deployment", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "045c613b-c998-4a8f-a330-c5a32106e4bf", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "model-server-deployment", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "background-image": "none", "background-opacity": 0.5, "border-width": 2, "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "round-rectangle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/deployment-color.svg", "svgComplete": "ui/public/static/img/meshmodels/kubernetes/complete/deployment-complete.svg", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/deployment-white.svg" }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "parent", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app": "model-server", "app.kubernetes.io/component": "inference", "app.kubernetes.io/name": "model-server", "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "model-server-deployment", "namespace": "playground-sandbox" }, "spec": { "replicas": 2, "selector": { "matchLabels": { "app": "model-server" } }, "template": { "metadata": { "labels": { "app": "model-server", "app.kubernetes.io/component": "inference", "app.kubernetes.io/name": "model-server", "app.kubernetes.io/part-of": "portable-ai-inference" } }, "spec": { "containers": [ { "image": "nginxinc/nginx-unprivileged:stable-alpine", "livenessProbe": { "httpGet": { "path": "/", "port": "http" }, "initialDelaySeconds": 10, "periodSeconds": 10 }, "name": "model-server-placeholder", "ports": [ { "containerPort": 8080, "name": "http", "protocol": "TCP" } ], "readinessProbe": { "httpGet": { "path": "/", "port": "http" }, "initialDelaySeconds": 3, "periodSeconds": 5 }, "resources": { "limits": { "cpu": "2", "memory": "2Gi" }, "requests": { "cpu": "500m", "memory": "512Mi" } }, "securityContext": { "allowPrivilegeEscalation": false, "capabilities": { "drop": [ "ALL" ] }, "runAsNonRoot": true } } ], "serviceAccountName": "inference-service-account" } } } }, "component": { "version": "apps/v1", "kind": "Deployment", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "dd57da88-8bda-42cf-bfff-567fe95c1787", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "inference-gateway-service", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "background-position-y": "4.5", "height": 20, "padding": 12, "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "round-triangle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/service-color.svg", "svgComplete": "", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/service-white.svg", "width": 20 }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app.kubernetes.io/component": "gateway", "app.kubernetes.io/name": "inference-gateway", "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "inference-gateway-service", "namespace": "playground-sandbox" }, "spec": { "ports": [ { "name": "http", "port": 80, "protocol": "TCP", "targetPort": "http" } ], "selector": { "app": "inference-gateway" }, "type": "ClusterIP" } }, "component": { "version": "v1", "kind": "Service", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "37c6b85b-c15b-40ff-a98e-aae0d12e262d", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "model-server-service", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "background-position-y": "4.5", "height": 20, "padding": 12, "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "round-triangle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/service-color.svg", "svgComplete": "", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/service-white.svg", "width": 20 }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app.kubernetes.io/component": "inference", "app.kubernetes.io/name": "model-server", "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "model-server-service", "namespace": "playground-sandbox" }, "spec": { "ports": [ { "name": "http", "port": 8080, "protocol": "TCP", "targetPort": "http" } ], "selector": { "app": "model-server" }, "type": "ClusterIP" } }, "component": { "version": "v1", "kind": "Service", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "e221c654-c13f-44f3-9e15-14170b1e4c79", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "inference-gateway-ingress", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "circle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/ingress-color.svg", "svgComplete": "", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/ingress-white.svg" }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app.kubernetes.io/component": "gateway", "app.kubernetes.io/name": "inference-gateway", "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "inference-gateway-ingress", "namespace": "playground-sandbox" }, "spec": { "rules": [ { "host": "ai-gateway.local", "http": { "paths": [ { "backend": { "service": { "name": "inference-gateway-service", "port": { "number": 80 } } }, "path": "/", "pathType": "Prefix" } ] } } ] } }, "component": { "version": "networking.k8s.io/v1", "kind": "Ingress", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "940e7e32-dcd0-444a-90ce-cdf3b20902d8", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "allow-gateway-to-model-server", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "circle", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/networkpolicy-color.svg", "svgComplete": "", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/networkpolicy-white.svg" }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": false, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app.kubernetes.io/component": "inference", "app.kubernetes.io/name": "model-server", "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "allow-gateway-to-model-server", "namespace": "playground-sandbox" }, "spec": { "ingress": [ { "from": [ { "podSelector": { "matchLabels": { "app": "inference-gateway" } } } ], "ports": [ { "port": 8080, "protocol": "TCP" } ] } ], "podSelector": { "matchLabels": { "app": "model-server" } }, "policyTypes": [ "Ingress" ] } }, "component": { "version": "networking.k8s.io/v1", "kind": "NetworkPolicy", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" }, { "id": "f8458ee8-9288-43e2-8b76-abe61b3232a1", "schemaVersion": "components.meshery.io/v1beta2", "version": "v1.0.0", "displayName": "model-server-pdb", "description": "", "format": "", "model": null, "modelReference": { "displayName": "Kubernetes", "id": "00000000-0000-0000-0000-000000000000", "model": { "version": "v1.38.0-alpha.3" }, "name": "kubernetes", "registrant": { "kind": "github" }, "version": "v1.0.0" }, "styles": { "primaryColor": "#326CE5", "secondaryColor": "#7aa1f0", "shape": "concave-hexagon", "svgColor": "ui/public/static/img/meshmodels/kubernetes/color/poddisruptionbudget-color.svg", "svgComplete": "", "svgWhite": "ui/public/static/img/meshmodels/kubernetes/white/poddisruptionbudget-white.svg" }, "capabilities": null, "status": "enabled", "metadata": { "configurationUISchema": "", "genealogy": "", "instanceDetails": null, "isAnnotation": false, "isNamespaced": true, "published": false, "source_uri": "git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3" }, "configuration": { "metadata": { "labels": { "app.kubernetes.io/component": "inference", "app.kubernetes.io/name": "model-server", "app.kubernetes.io/part-of": "portable-ai-inference" }, "name": "model-server-pdb", "namespace": "playground-sandbox" }, "spec": { "minAvailable": 1, "selector": { "matchLabels": { "app": "model-server" } } } }, "component": { "version": "policy/v1", "kind": "PodDisruptionBudget", "schema": "" }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z" } ], "relationships": null }