From fa4ec20d32b864e9100236822a410e94b5ced17f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Str=C3=BCbing?= Date: Mon, 11 Sep 2023 16:04:51 +0200 Subject: [PATCH] feat: add ai-navigator-app (#1570) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Introduce empty kustomization of ai-navigation-app (#1547) * feat: Introduce empty kustomization of ai-navigation-app Signed-off-by: Mikołaj Baranowski * build: Updated .github/service-labeler.yaml --------- Signed-off-by: Mikołaj Baranowski Co-authored-by: d2iq-mergebot * feat: add ai-navigator-app (#1514) * feat: add ai-navigator-app * Closes D2IQ-98636 * chore: use `${releaseNamespace}` instead of hardcoded namespace * chore: allow to read licenses and secrets * chore: allow to read licenses and secrets * chore: add liveness and readiness probes * chore: update description * feat: specifiy security context * chore: use correct logo * chore: indent securityContext * chore: add period * chore: use correct version --------- Signed-off-by: Mikołaj Baranowski Co-authored-by: Mikołaj Baranowski Co-authored-by: d2iq-mergebot --- .github/service-labeler.yaml | 2 + .../0.1.0/ai-navigator-app.yaml | 106 ++++++++++++++++++ .../ai-navigator-app/0.1.0/defaults/cm.yaml | 8 ++ .../0.1.0/defaults/kustomization.yaml | 4 + .../ai-navigator-app/0.1.0/kustomization.yaml | 4 + services/ai-navigator-app/metadata.yaml | 25 +++++ 6 files changed, 149 insertions(+) create mode 100644 services/ai-navigator-app/0.1.0/ai-navigator-app.yaml create mode 100644 services/ai-navigator-app/0.1.0/defaults/cm.yaml create mode 100644 services/ai-navigator-app/0.1.0/defaults/kustomization.yaml create mode 100644 services/ai-navigator-app/0.1.0/kustomization.yaml create mode 100644 services/ai-navigator-app/metadata.yaml diff --git a/.github/service-labeler.yaml b/.github/service-labeler.yaml index 17749b9f0..6bc89778a 100644 --- a/.github/service-labeler.yaml +++ b/.github/service-labeler.yaml @@ -1,3 +1,5 @@ +services/ai-navigator-app: + - services/ai-navigator-app/** services/centralized-grafana: - services/centralized-grafana/** services/centralized-kubecost: diff --git a/services/ai-navigator-app/0.1.0/ai-navigator-app.yaml b/services/ai-navigator-app/0.1.0/ai-navigator-app.yaml new file mode 100644 index 000000000..46dcc2b79 --- /dev/null +++ b/services/ai-navigator-app/0.1.0/ai-navigator-app.yaml @@ -0,0 +1,106 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ai-navigator-app + namespace: ${releaseNamespace} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: ai-navigator-app + namespace: ${releaseNamespace} +rules: + - apiGroups: ["kommander.mesosphere.io"] + resources: ["licenses"] + verbs: ["get", "list"] + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: ai-navigator-app + namespace: ${releaseNamespace} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ai-navigator-app +subjects: + - kind: ServiceAccount + name: ai-navigator-app + namespace: ${releaseNamespace} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: ai-navigator-app-config + namespace: ${releaseNamespace} +data: + CHATBOT_URL: "https://chatbot.api.d2iq.com/v1/chat" + AUTHORIZER_URL: "https://auth.api.d2iq.com" + LICENSE_NAMESPACE: ${releaseNamespace} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ai-navigator-app + namespace: ${releaseNamespace} + labels: + app: ai-navigator-app +spec: + replicas: 1 + selector: + matchLabels: + app: ai-navigator-app + template: + metadata: + labels: + app: ai-navigator-app + spec: + serviceAccountName: ai-navigator-app + containers: + - name: ai-navigator-app + image: mesosphere/ai-navigator-app:v0.0.3 + envFrom: + - configMapRef: + name: ai-navigator-app-config + ports: + - containerPort: 8080 + name: http + readinessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + initialDelaySeconds: 60 + timeoutSeconds: 30 + failureThreshold: 10 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault +--- +apiVersion: v1 +kind: Service +metadata: + name: ai-navigator-app + namespace: ${releaseNamespace} +spec: + selector: + app: ai-navigator-app + ports: + - name: service-port + protocol: TCP + port: 80 + targetPort: http diff --git a/services/ai-navigator-app/0.1.0/defaults/cm.yaml b/services/ai-navigator-app/0.1.0/defaults/cm.yaml new file mode 100644 index 000000000..07208bbab --- /dev/null +++ b/services/ai-navigator-app/0.1.0/defaults/cm.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +data: + values.yaml: | + --- +kind: ConfigMap +metadata: + name: ai-navigation-app-0.1.0-d2iq-defaults + namespace: ${releaseNamespace} diff --git a/services/ai-navigator-app/0.1.0/defaults/kustomization.yaml b/services/ai-navigator-app/0.1.0/defaults/kustomization.yaml new file mode 100644 index 000000000..77c753a51 --- /dev/null +++ b/services/ai-navigator-app/0.1.0/defaults/kustomization.yaml @@ -0,0 +1,4 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - cm.yaml diff --git a/services/ai-navigator-app/0.1.0/kustomization.yaml b/services/ai-navigator-app/0.1.0/kustomization.yaml new file mode 100644 index 000000000..9ed57849c --- /dev/null +++ b/services/ai-navigator-app/0.1.0/kustomization.yaml @@ -0,0 +1,4 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ai-navigator-app.yaml diff --git a/services/ai-navigator-app/metadata.yaml b/services/ai-navigator-app/metadata.yaml new file mode 100644 index 000000000..d23b5310a --- /dev/null +++ b/services/ai-navigator-app/metadata.yaml @@ -0,0 +1,25 @@ +displayName: DKP AI Navigator +description: The AI Navigator is a state-of-the-art chatbot powered by advanced artificial intelligence, purpose-built for seamless Kubernetes cluster management and DKP environment optimization. +category: + - tools +type: platform +allowMultipleInstances: false +scope: + - workspace +overview: |- + # Overview + The AI Navigator is a state-of-the-art chatbot powered by advanced artificial intelligence, purpose-built for seamless Kubernetes cluster management and DKP environment optimization. Designed with the intricacies of DKP in mind, it offers personalized insights, troubleshooting assistance, and real-time answers to the most pressing user queries. Leveraging its deep knowledge base and tailored response mechanism, the AI Navigator minimizes the knowledge gap, enabling users to focus more on achieving their business goals rather than being bogged down by technical configurations. + + ## Key Features + ### Intuitive Query Processing + Empowered by Natural Language Processing (NLP), the AI Navigator interprets user queries, even if they’re not phrased technically, making it a go-to tool for both novices and experts. + + ### Real-time Troubleshooting Assistance + With its vast database of common DKP issues and solutions, the AI Navigator can provide instant solutions, dramatically reducing downtime and enhancing productivity. + + ### Seamless DKP Integration + Being native to the DKP platform, the AI Navigator ensures users get the most out of their DKP environments by offering insights, best practices, and performance optimization tips. + + ### Privacy First Approach + Data privacy and security remain paramount, ensuring user trust and compliance. +icon: PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiBmaWxsPSIjMzMwMDcyIi8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMzkzXzEyMzUpIj4KPHBhdGggb3BhY2l0eT0iMC40IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIzLjg3NTEgMTAuMTcxN0MyMC42ODAxIDEwLjE3MTcgMTcuNDkyNSAxMS4yNjExIDE0Ljg5NjYgMTMuNDM5M0MxMy4zMzQyIDE0Ljc1MDMgMTIuMTI2NyAxNi4zNDU1IDExLjI4ODEgMTguMDkyM0MxMS4xNzE3IDE4LjA4MTIgMTEuMDU4NCAxOC4wNTYgMTAuOTM4OSAxOC4wNTZDOC44NTIxMSAxOC4wNTYgNy4xNzE4OCAxOS43MzYxIDcuMTcxODggMjEuODIyOVYyNi40Nzg2QzcuMTcxODggMjguNTY1NCA4Ljg1MjExIDMwLjI0NTUgMTAuOTM4OSAzMC4yNDU1QzExLjA1ODQgMzAuMjQ1NSAxMS4xNzE3IDMwLjIxOTYgMTEuMjg4MSAzMC4yMDkzQzExLjQzODIgMzAuNTIwNSAxMS41OTM2IDMwLjgyOTQgMTEuNzY4NyAzMS4xMzI5QzEyLjQ1MzEgMzIuMzU0NSAxNC4yODE4IDMxLjMwODYgMTMuNTc1NiAzMC4wOTkyQzEwLjY4NDQgMjUuMDkxMyAxMS44MDQxIDE4Ljc0NTUgMTYuMjMzNyAxNS4wMjg2QzIwLjY2MzQgMTEuMzExNyAyNy4wOTc1IDExLjMxMTcgMzEuNTI3MSAxNS4wMjg2QzM1Ljk1NjggMTguNzQ1NSAzNy4wNzY1IDI1LjA5MTMgMzQuMTg1MiAzMC4wOTkyTDM0LjE1NDEgMzAuMTUxTDM0LjEzMzIgMzAuMjAyOUMzNC4xMzMyIDMwLjIwMjkgMzIuNzI5IDMzLjMwOTQgMjkuOTcxNiAzMy4zMDk0TDI2LjQ4MTIgMzMuMjc4MkMyNi4xNTM5IDMyLjgwMDEgMjUuNjMgMzIuNDY3MyAyNS4wMDQ1IDMyLjQ2NzNIMjIuNzU0NUMyMS43NDU3IDMyLjQ2NzMgMjAuOTM0MSAzMy4yODE1IDIwLjkzNDEgMzQuMjkwNEMyMC45MzQxIDM0LjkxMjYgMjEuMzI4OSAzNS4zODUyIDIyLjIzMjUgMzUuMzg1MkwyOS45NzE2IDM1LjM4NThDMzQuMTA5NCAzNS4zODU4IDM1Ljg5OTEgMzEuMzIzNSAzNS45ODA1IDMxLjEzNTVWMzEuMTI0NEMzNi4xNTQxIDMwLjgyMzYgMzYuMzA2OCAzMC41MTQ3IDM2LjQ1NTkgMzAuMjA2M0MzNi41Nzc1IDMwLjIxNzMgMzYuNjk1OSAzMC4yNDI2IDM2LjgyMTIgMzAuMjQyNkMzOC45MDc5IDMwLjI0MjYgNDAuNTg4MiAyOC41NjI0IDQwLjU4ODIgMjYuNDc1NlYyMS44MTk5QzQwLjU4ODIgMTkuNzMzMiAzOC45MDc5IDE4LjA1MyAzNi44MjEyIDE4LjA1M0MzNi43MDA2IDE4LjA1MyAzNi41ODY5IDE4LjA3MjkgMzYuNDY5NCAxOC4wODkzQzM1LjYzMjcgMTYuMzQyNCAzNC40Mjg4IDE0Ljc0NzQgMzIuODY2MiAxMy40MzYzQzMwLjI3MDQgMTEuMjU4MSAyNy4wNjk1IDEwLjE2ODcgMjMuODc0NCAxMC4xNjg3TDIzLjg3NTEgMTAuMTcxN1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xNy4xMzU5IDE3LjU5MDVDMTcuNzgzMSAxNi45MDkgMTguNTIzOSAxNi43Mzc1IDE5LjMzNDggMTYuNzkwNEMyMC42ODYzIDE2Ljg3OTIgMjIuMjM0MyAxNy41OTA1IDIzLjg4MDQgMTcuNTkwNUMyNi41MTQzIDE3LjU5MDUgMjguODk5IDE1Ljc3MzMgMzAuNjI1IDE3LjU5MDVDMzIuMzUxMSAxOS40MDc3IDMzLjQyIDIxLjg4MTEgMzMuNDIgMjQuNTE1QzMzLjQyIDI2LjUwMjggMzIuODExOCAyOC45ODk1IDMxLjc3MTUgMjkuMTczM0MzMC4wNTQ5IDI5LjQ3NzQgMjcuMTYwNSAyOC4xOTM0IDIzLjg4MDQgMjguMTkzNEMyMC43ODUyIDI4LjE5MzQgMTguMDM1NCAyOS4zMzc3IDE2LjI5MjggMjkuMjEwOUMxNS4wNjk2IDI5LjEyMjEgMTQuMzQzNSAyNi42ODc3IDE0LjM0MzUgMjQuNTE1QzE0LjM0MzUgMjEuODgxMSAxNS40MDk4IDE5LjQwNzcgMTcuMTM1OSAxNy41OTA1WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIwLjY5MDkgMjMuMDExNEMyMC42OTA1IDIyLjA0OTEgMTkuOTEwNiAyMS4yNjkyIDE4Ljk0ODMgMjEuMjY4OEMxNy45ODYxIDIxLjI2OTIgMTcuMjA2MSAyMi4wNDkxIDE3LjIwNTggMjMuMDExNEMxNy4yMDYxIDIzLjk3MzYgMTcuOTg2MSAyNC43NTM2IDE4Ljk0ODMgMjQuNzUzOUMxOS45MTA2IDI0Ljc1MzYgMjAuNjkwNSAyMy45NzM2IDIwLjY5MDkgMjMuMDExNFoiIGZpbGw9IiMzMzAwNzIiLz4KPHBhdGggZD0iTTMwLjU1NTQgMjMuMDExNEMzMC41NTUgMjIuMDQ5MSAyOS43NzUxIDIxLjI2OTIgMjguODEyOCAyMS4yNjg4QzI3Ljg1MDYgMjEuMjY5MiAyNy4wNzA2IDIyLjA0OTEgMjcuMDcwMyAyMy4wMTE0QzI3LjA3MDYgMjMuOTczNiAyNy44NTA2IDI0Ljc1MzYgMjguODEyOCAyNC43NTM5QzI5Ljc3NTEgMjQuNzUzNiAzMC41NTUgMjMuOTczNiAzMC41NTU0IDIzLjAxMTRaIiBmaWxsPSIjMzMwMDcyIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTM5M18xMjM1Ij4KPHJlY3Qgd2lkdGg9IjM0IiBoZWlnaHQ9IjI1Ljc5MzEiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3IDEwLjAwMDcpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==