diff --git a/app-of-apps/application-dev.yaml b/app-of-apps/application-dev.yaml new file mode 100644 index 0000000..ac0ebad --- /dev/null +++ b/app-of-apps/application-dev.yaml @@ -0,0 +1,25 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: test-jan22-app + namespace: ai-rhdh + finalizers: ["resources-finalizer.argocd.argoproj.io"] +spec: + project: default + source: + path: ./components/test-jan22/overlays/development + repoURL: https://github.com/jdubrick-ai/test-jan22-gitops.git + targetRevision: main + destination: + namespace: rhdh-app + server: https://kubernetes.default.svc + syncPolicy: + managedNamespaceMetadata: + labels: + argocd.argoproj.io/managed-by: ai-rhdh + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - PruneLast=true diff --git a/app-of-apps/kustomization.yaml b/app-of-apps/kustomization.yaml new file mode 100644 index 0000000..3c7144e --- /dev/null +++ b/app-of-apps/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +commonLabels: + rhtap/gitops: test-jan22 + janus-idp.io/tekton: test-jan22 + backstage.io/kubernetes-id: test-jan22 + backstage.io/kubernetes-namespace: rhdh-app + app.kubernetes.io/part-of: test-jan22 +resources: +- application-dev.yaml \ No newline at end of file diff --git a/application.yaml b/application.yaml new file mode 100644 index 0000000..ce8b80f --- /dev/null +++ b/application.yaml @@ -0,0 +1,25 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: test-jan22 + namespace: ai-rhdh + finalizers: ["resources-finalizer.argocd.argoproj.io"] +spec: + project: default + source: + path: ./app-of-apps + repoURL: https://github.com/jdubrick-ai/test-jan22-gitops.git + targetRevision: main + destination: + namespace: rhdh-app + server: https://kubernetes.default.svc + syncPolicy: + managedNamespaceMetadata: + labels: + argocd.argoproj.io/managed-by: ai-rhdh + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - PruneLast=true diff --git a/catalog-info.yaml b/catalog-info.yaml new file mode 100644 index 0000000..e5cd243 --- /dev/null +++ b/catalog-info.yaml @@ -0,0 +1,22 @@ +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: test-jan22-gitops + description: This is GitOps manifest for test-jan22 + links: + - url: https://www.redhat.com/en/solutions/trusted-software-supply-chain + title: Trusted Secure Supply Chain + icon: dashboard + type: admin-dashboard + annotations: + # ArgoCD apps from this template used rhtap-gitops as the grouping + argocd/app-selector: rhtap/gitops=test-jan22 + janus-idp.io/tekton: test-jan22 + backstage.io/kubernetes-id: test-jan22 + backstage.io/techdocs-ref: dir:. +spec: + type: gitops + owner: user:guest + lifecycle: experimental + dependsOn: + - component:test-jan22 diff --git a/components/test-jan22/base/database-config.yaml b/components/test-jan22/base/database-config.yaml new file mode 100644 index 0000000..429abd0 --- /dev/null +++ b/components/test-jan22/base/database-config.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: test-jan22-database-config +data: + VECTORDB_HOST: "test-jan22-database" + VECTORDB_PORT: "" diff --git a/components/test-jan22/base/deployment-database.yaml b/components/test-jan22/base/deployment-database.yaml new file mode 100644 index 0000000..bf98fa0 --- /dev/null +++ b/components/test-jan22/base/deployment-database.yaml @@ -0,0 +1,38 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: test-jan22-database + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: test-jan22-database + app.kubernetes.io/part-of: test-jan22 + name: test-jan22-database +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: test-jan22-database + template: + metadata: + labels: + app.kubernetes.io/instance: test-jan22-database + spec: + containers: + - image: + name: database + args: [ + "--workers", + "1", + "--host", + "0.0.0.0", + "--port", + "", + "--proxy-headers", + "--log-config", + "chromadb/log_config.yml", + "--timeout-keep-alive", + "30"] + ports: + - containerPort: + securityContext: + runAsNonRoot: true diff --git a/components/test-jan22/base/deployment-model-server.yaml b/components/test-jan22/base/deployment-model-server.yaml new file mode 100644 index 0000000..07f2480 --- /dev/null +++ b/components/test-jan22/base/deployment-model-server.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: test-jan22-model-server + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: test-jan22-model-server + app.kubernetes.io/part-of: test-jan22 + name: test-jan22-model-server +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: test-jan22-model-server + template: + metadata: + labels: + app.kubernetes.io/instance: test-jan22-model-server + spec: + initContainers: + - name: model-file + image: quay.io/redhat-ai-dev/mistral-7b-code-16k-qlora:latest + command: ['/usr/bin/install', '/model/model.file', '/shared/'] + volumeMounts: + - name: model-file + mountPath: /shared + containers: + - env: + - name: HOST + value: "0.0.0.0" + - name: PORT + value: "8001" + - name: MODEL_PATH + value: /model/model.file + - name: CHAT_FORMAT + value: openchat + image: quay.io/ai-lab/llamacpp_python:latest + volumeMounts: + - name: model-file + mountPath: /model + name: app-model-service + ports: + - containerPort: 8001 + securityContext: + runAsNonRoot: true + volumes: + - name: model-file + emptyDir: {} diff --git a/components/test-jan22/base/deployment.yaml b/components/test-jan22/base/deployment.yaml new file mode 100644 index 0000000..f25a42d --- /dev/null +++ b/components/test-jan22/base/deployment.yaml @@ -0,0 +1,34 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + tad.gitops.set/image: ".spec.template.spec.containers[0].image" + tad.gitops.get/image: ".spec.template.spec.containers[0].image" + tad.gitops.set/replicas: ".spec.replicas" + tad.gitops.get/replicas: ".spec.replicas" + labels: + app.kubernetes.io/instance: test-jan22 + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: test-jan22 + app.kubernetes.io/part-of: test-jan22 + name: test-jan22 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: test-jan22 + template: + metadata: + labels: + app.kubernetes.io/instance: test-jan22 + spec: + containers: + - image: quay.io/redhat-ai-dev/ai-template-bootstrap-app:latest + name: app-inference + envFrom: + - configMapRef: + name: test-jan22-model-config + ports: + - containerPort: 8501 + securityContext: + runAsNonRoot: true diff --git a/components/test-jan22/base/initialize-namespace.yaml b/components/test-jan22/base/initialize-namespace.yaml new file mode 100644 index 0000000..0e55871 --- /dev/null +++ b/components/test-jan22/base/initialize-namespace.yaml @@ -0,0 +1,42 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: initialize-namespace-test-jan22-gitops +spec: + template: + metadata: + name: initialize-namespace-test-jan22-gitops + spec: + serviceAccountName: pipeline + containers: + - name: initialize-namespace + image: quay.io/redhat-ai-dev/utils:latest + command: + - /bin/bash + - -c + - | + NS=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace) + echo "Initialize RHDH Namespace: $NS" + cat </dev/null 2>&1 ; then + echo "The image stream does not exist, a new image stream will be created" + cat <