Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 54 additions & 3 deletions .github/workflows/deploy-to-k8s.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ jobs:
BRANCH_SAFE=${BRANCH//\//-}
echo "tag=$BRANCH_SAFE" >> $GITHUB_OUTPUT
echo "api_url=https://$BRANCH_SAFE.api.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT
echo "base_url=https://$BRANCH_SAFE.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT

echo "base_url=https://$BRANCH_SAFE.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT
echo "genai_url=https://$BRANCH_SAFE.genai.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT
fi

Expand Down Expand Up @@ -141,15 +140,55 @@ jobs:
build-args: API_URL=${{ needs.setup.outputs.api_url }}
platforms: linux/amd64

build-genai:
needs: setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ needs.setup.outputs.merge_commit || github.sha }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Log in to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache-genai
key: ${{ runner.os }}-genai-${{ github.sha }}
restore-keys: |
${{ runner.os }}-genai-

- name: Build and push genai image
uses: docker/build-push-action@v3
with:
context: ./genai
file: ./genai/Dockerfile
push: true
tags: ghcr.io/${{ needs.setup.outputs.repo }}/genai:${{ needs.setup.outputs.tag }}
build-args: API_URL=${{ needs.setup.outputs.api_url }}
platforms: linux/amd64


deploy:
needs:
- build-client
- build-server
- build-genai
runs-on: ubuntu-latest
outputs:
client_url: ${{ steps.set-vars.outputs.CLIENT_URL }}
server_url: ${{ steps.set-vars.outputs.SERVER_URL }}
auth_url: ${{ steps.set-vars.outputs.AUTH_URL }}
genai_url: ${{ steps.set-vars.outputs.GENAI_URL }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
Expand All @@ -165,13 +204,15 @@ jobs:
CLIENT_URL=whiteboard.student.k8s.aet.cit.tum.de
SERVER_URL=api.whiteboard.student.k8s.aet.cit.tum.de
AUTH_URL=auth.whiteboard.student.k8s.aet.cit.tum.de
GENAI_URL=genai.whiteboard.student.k8s.aet.cit.tum.de
echo "NAMESPACE=production" >> $GITHUB_ENV
echo "IMAGE_TAG=latest" >> $GITHUB_ENV
echo "VALUES_FILE=./infrastructure/whiteboard-app/production.values.yaml" >> $GITHUB_ENV
elif [[ "$BRANCH" == "develop" ]]; then
CLIENT_URL=staging.whiteboard.student.k8s.aet.cit.tum.de
SERVER_URL=staging.api.whiteboard.student.k8s.aet.cit.tum.de
AUTH_URL=staging.auth.whiteboard.student.k8s.aet.cit.tum.de
GENAI_URL=staging.genai.whiteboard.student.k8s.aet.cit.tum.de
echo "NAMESPACE=staging" >> $GITHUB_ENV
echo "IMAGE_TAG=develop" >> $GITHUB_ENV
echo "VALUES_FILE=./infrastructure/whiteboard-app/staging.values.yaml" >> $GITHUB_ENV
Expand All @@ -180,6 +221,7 @@ jobs:
CLIENT_URL=$BRANCH_SAFE.whiteboard.student.k8s.aet.cit.tum.de
SERVER_URL=$BRANCH_SAFE.api.whiteboard.student.k8s.aet.cit.tum.de
AUTH_URL=$BRANCH_SAFE.auth.whiteboard.student.k8s.aet.cit.tum.de
GENAI_URL=$BRANCH_SAFE.genai.whiteboard.student.k8s.aet.cit.tum.de
echo "NAMESPACE=$BRANCH_SAFE" >> $GITHUB_ENV
echo "IMAGE_TAG=$BRANCH_SAFE" >> $GITHUB_ENV
echo "VALUES_FILE=./infrastructure/whiteboard-app/pullrequest.values.yaml" >> $GITHUB_ENV
Expand All @@ -188,10 +230,13 @@ jobs:
echo "CLIENT_URL=$CLIENT_URL" >> $GITHUB_ENV
echo "SERVER_URL=$SERVER_URL" >> $GITHUB_ENV
echo "AUTH_URL=$AUTH_URL" >> $GITHUB_ENV
echo "GENAI_URL=$GENAI_URL" >> $GITHUB_ENV
echo "OPEN_WEB_UI_API_KEY=${{ secrets.OPEN_WEB_UI_API_KEY }}" >> $GITHUB_ENV

echo "CLIENT_URL=$CLIENT_URL" >> $GITHUB_OUTPUT
echo "SERVER_URL=$SERVER_URL" >> $GITHUB_OUTPUT
echo "AUTH_URL=$AUTH_URL" >> $GITHUB_OUTPUT
echo "GENAI_URL=$GENAI_URL" >> $GITHUB_OUTPUT

- name: Set up Kubeconfig
run: |
Expand Down Expand Up @@ -230,9 +275,12 @@ jobs:
--set namespace="${{ env.NAMESPACE }}" \
--set server.image.tag="${{ env.IMAGE_TAG }}" \
--set client.image.tag="${{ env.IMAGE_TAG }}" \
--set genai.image.tag="${{ env.IMAGE_TAG }}" \
--set client.url="${{ env.CLIENT_URL }}" \
--set server.url="${{ env.SERVER_URL }}" \
--set auth.url="${{ env.AUTH_URL }}"
--set auth.url="${{ env.AUTH_URL }}" \
--set genai.url="${{ env.GENAI_URL }}" \
--set genai.apiKey="${{ env.OPEN_WEB_UI_API_KEY }}" \

comment-pr:
needs: deploy
Expand All @@ -242,6 +290,7 @@ jobs:
CLIENT_URL: ${{ needs.deploy.outputs.client_url }}
SERVER_URL: ${{ needs.deploy.outputs.server_url }}
AUTH_URL: ${{ needs.deploy.outputs.auth_url }}
GENAI_URL: ${{ needs.deploy.outputs.genai_url }}
steps:
- name: Comment on Pull Request with URLs
uses: actions/github-script@v6
Expand All @@ -252,6 +301,7 @@ jobs:
const clientUrl = `https://${process.env.CLIENT_URL}`;
const serverUrl = `https://${process.env.SERVER_URL}`;
const authUrl = `https://${process.env.AUTH_URL}`;
const genaiUrl = `https://${process.env.GENAI_URL}`;

// Check existing comments to avoid duplicates
const { data: comments } = await github.rest.issues.listComments({
Expand All @@ -269,6 +319,7 @@ jobs:
- **Client:** [${clientUrl}](${clientUrl})
- **Server:** [${serverUrl}/swagger-ui/index.html](${serverUrl}/swagger-ui/index.html)
- **Keycloak:** [${authUrl}](${authUrl})
- **GenAI:** [${genaiUrl}/docs](${genaiUrl}/docs)
`;

await github.rest.issues.createComment({
Expand Down
3 changes: 0 additions & 3 deletions compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,6 @@ services:
ports:
- "8000:8000"
environment:
DB_HOST: ${DB_HOST:-weaviate}
DB_PORT: ${DB_PORT:-9090}
DB_GRPC_PORT: ${DB_GRPC_PORT:-50051}
OPEN_WEB_UI_API_KEY: ${OPEN_WEB_UI_API_KEY}
SERVER_URL: ${SERVER_URL:-http://localhost:9091}
CLIENT_URL: ${CLIENT_URL:-http://localhost:3000}
Expand Down
2 changes: 1 addition & 1 deletion genai/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def custom_openapi():

app.add_middleware(
CORSMiddleware,
allow_origins=[CLIENT_URL, SERVER_URL],
allow_origins=["*"],
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use CLIENT_URL from the environment

allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
Expand Down
33 changes: 32 additions & 1 deletion infrastructure/whiteboard-app/production.values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,28 @@ keycloak:
- name: realm-export
mountPath: /opt/bitnami/keycloak/data/import

genai:
image:
repository: ghcr.io/aet-devops25/team-server-down/genai
tag: latest
pullPolicy: Always
service:
type: ClusterIP
port: 8000
targetPort: 8000
replicaCount: 1
env:
- name: OPEN_WEB_UI_API_KEY
value: '{{ .Values.genai.apiKey }}'
- name: API_URL
value: https://gpu.aet.cit.tum.de/api/chat/completions
- name: SERVER_URL
value: https://api.whiteboard.student.k8s.aet.cit.tum.de
- name: CLIENT_URL
value: https://whiteboard.student.k8s.aet.cit.tum.de
- name: GENAI_URL
value: https://genai.whiteboard.student.k8s.aet.cit.tum

ingress:
enabled: true
className: "nginx"
Expand All @@ -113,6 +135,7 @@ ingress:
- "whiteboard.student.k8s.aet.cit.tum.de"
- "api.whiteboard.student.k8s.aet.cit.tum.de"
- "auth.whiteboard.student.k8s.aet.cit.tum.de"
- "genai.whiteboard.student.k8s.aet.cit.tum.de"
secretName: "whiteboard-devops25-tls"
rules:
- host: "whiteboard.student.k8s.aet.cit.tum.de"
Expand All @@ -138,4 +161,12 @@ ingress:
service:
name: '{{ printf "%s-keycloak" .Release.Name }}'
port:
number: 80
number: 80
- host: "genai.whiteboard.student.k8s.aet.cit.tum.de"
paths:
- path: /
pathType: Prefix
service:
name: '{{ printf "%s-genai" .Release.Name }}'
port:
number: 8000
32 changes: 31 additions & 1 deletion infrastructure/whiteboard-app/pullrequest.values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,27 @@ keycloak:
- name: realm-export
mountPath: /opt/bitnami/keycloak/data/import

genai:
image:
repository: ghcr.io/aet-devops25/team-server-down/genai
tag: ""
pullPolicy: Always
service:
type: ClusterIP
port: 8000
targetPort: 8000
env:
- name: OPEN_WEB_UI_API_KEY
value: '{{ .Values.genai.apiKey }}'
- name: SERVER_URL
value: 'https://{{ .Values.server.url }}'
- name: CLIENT_URL
value: 'https://{{ .Values.client.url }}'
- name: GENAI_URL
value: 'https://{{ .Values.genai.url }}'
- name: API_URL
value: 'https://gpu.aet.cit.tum.de/api/chat/completions'

ingress:
enabled: true
className: "nginx"
Expand All @@ -113,6 +134,7 @@ ingress:
- '{{ .Values.client.url }}'
- '{{ .Values.server.url }}'
- '{{ .Values.auth.url }}'
- '{{ .Values.genai.url }}'
secretName: '{{ .Values.namespace }}-whiteboard-devops25-tls'
rules:
- host: '{{ .Values.client.url }}'
Expand All @@ -138,4 +160,12 @@ ingress:
service:
name: '{{ printf "%s-keycloak" .Release.Name }}'
port:
number: 80
number: 80
- host: '{{ .Values.genai.url }}'
paths:
- path: /
pathType: Prefix
service:
name: '{{ printf "%s-genai" .Release.Name }}'
port:
number: 8000
34 changes: 33 additions & 1 deletion infrastructure/whiteboard-app/staging.values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,29 @@ keycloak:
- name: realm-export
mountPath: /opt/bitnami/keycloak/data/import

genai:
image:
repository: ghcr.io/aet-devops25/team-server-down/genai
tag: develop
pullPolicy: Always
service:
type: ClusterIP
port: 8000
targetPort: 8000
replicaCount: 1
env:
- name: OPEN_WEB_UI_API_KEY
value: '{{ .Values.genai.apiKey }}'
- name: API_URL
value: https://gpu.aet.cit.tum.de/api/chat/completions
- name: SERVER_URL
value: https://staging.api.whiteboard.student.k8s.aet.cit.tum.de
- name: CLIENT_URL
value: https://staging.whiteboard.student.k8s.aet.cit.tum
- name: GENAI_URL
value: https://staging.genai.whiteboard.student.k8s.aet.cit


ingress:
enabled: true
className: "nginx"
Expand All @@ -113,6 +136,7 @@ ingress:
- "staging.whiteboard.student.k8s.aet.cit.tum.de"
- "staging.api.whiteboard.student.k8s.aet.cit.tum.de"
- "staging.auth.whiteboard.student.k8s.aet.cit.tum.de"
- "staging.genai.whiteboard.student.k8s.aet.cit.tum.de"
secretName: "staging-whiteboard-devops25-tls"
rules:
- host: "staging.whiteboard.student.k8s.aet.cit.tum.de"
Expand All @@ -138,4 +162,12 @@ ingress:
service:
name: '{{ printf "%s-keycloak" .Release.Name }}'
port:
number: 80
number: 80
- host: "staging.genai.whiteboard.student.k8s.aet.cit.tum.de"
paths:
- path: /
pathType: Prefix
service:
name: '{{ printf "%s-genai" .Release.Name }}'
port:
number: 8000
32 changes: 32 additions & 0 deletions infrastructure/whiteboard-app/templates/genai-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: whiteboard-genai
spec:
replicas: {{ .Values.genai.replicaCount }}
selector:
matchLabels:
app: whiteboard-genai-selector
template:
metadata:
labels:
app: whiteboard-genai-selector
spec:
containers:
- name: genai
image: "{{ .Values.genai.image.repository }}:{{ .Values.genai.image.tag }}"
imagePullPolicy: {{ .Values.genai.image.pullPolicy }}
resources:
limits:
cpu: "500m"
memory: "256Mi"
requests:
cpu: "50m"
memory: "50Mi"
ports:
- containerPort: {{ .Values.genai.service.targetPort }}
env:
{{- range .Values.genai.env }}
- name: {{ .name }}
value: {{ tpl .value $ | quote }}
{{- end }}
12 changes: 12 additions & 0 deletions infrastructure/whiteboard-app/templates/genai-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-genai
spec:
type: {{ .Values.genai.service.type }}
selector:
app: whiteboard-genai-selector
ports:
- port: {{ .Values.genai.service.port }}
targetPort: {{ .Values.genai.service.targetPort }}
protocol: TCP
Loading