From ff0500014838a030bd23ecf0837464b97e1d6bbf Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 16:37:30 +0100 Subject: [PATCH 01/53] Test build and push script for k8s --- .github/workflows/k8s-quarkus-sync.yml | 77 +++++++++++++++++++ bookstore-quarkus-sync/build.gradle.kts | 1 + .../src/main/resources/application.properties | 1 + 3 files changed, 79 insertions(+) create mode 100644 .github/workflows/k8s-quarkus-sync.yml diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml new file mode 100644 index 0000000..97a4589 --- /dev/null +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -0,0 +1,77 @@ +name: Quarkus Sync Build & Deploy on k8s + +on: + push: + branches: [ main, feature/k8s-deployment ] + pull_request: + branches: [ main ] + +permissions: + contents: read + packages: write + +jobs: + build: + name: build & push + runs-on: ubuntu-latest + env: + working-directory: ./bookstore-quarkus-sync + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 21 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '21' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + + - name: assemble + run: ./gradlew assemble + + - name: build container + run: ./gradlew build -x test -Dquarkus.container-image.build=true + +# - name: Login to GitHub Container Registry +# uses: docker/login-action@v2 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} +# logout: true + + - name: push container + run: | + ./gradlew build -x test -Dquarkus.container-image.push=true \ + -Dquarkus.container-image.group=${{ github.repository_owner }} \ + -Dquarkus.container-image.name=${{ github.event.repository.name }} \ + -Dquarkus.container-image.registry=ghcr.io \ + -Dquarkus.container-image.additional-tags=${{ github.sha }} \ + -Dquarkus.container-image.username=${{ github.actor }} \ + -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} + + + +# deploy: +# name: deploy to k8s +# runs-on: ubuntu-latest +# needs: build +# +# steps: +# - uses: actions/checkout@v3 +# +# - name: Helm Deploy to k8s +# uses: vimeda/helm@v1.7.0 +# with: +# release: 'bookstore-quarkus-sync' +# namespace: 'benchmarks' +# chart: 'bookstore-quarkus-sync/helm' +# token: '${{ secrets.GITHUB_TOKEN }}' +# values: | +# image: +# tag: ${{ github.sha }} +# env: +# KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' diff --git a/bookstore-quarkus-sync/build.gradle.kts b/bookstore-quarkus-sync/build.gradle.kts index f3e29f7..d97c172 100644 --- a/bookstore-quarkus-sync/build.gradle.kts +++ b/bookstore-quarkus-sync/build.gradle.kts @@ -34,6 +34,7 @@ dependencies { implementation("io.quarkus:quarkus-smallrye-health") implementation("io.quarkus:quarkus-container-image-jib") + implementation("io.quarkus:quarkus-kubernetes") testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.rest-assured:rest-assured") diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index a79dbcd..f02697e 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -1,6 +1,7 @@ quarkus.http.port=3000 # As we will expose the same API for Quarkus and SpringBoot AWS LB needs a prefix to route to the correct service %prod.quarkus.http.root-path=/quarkus-sync +# # Database quarkus.datasource.db-kind=postgresql quarkus.datasource.username=${DB_USER:postgres} From 8af9f4e3af566980d81278bb015f622430586f68 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 16:45:38 +0100 Subject: [PATCH 02/53] Test --- .github/workflows/k8s-quarkus-sync.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 97a4589..4eca236 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -18,10 +18,10 @@ jobs: working-directory: ./bookstore-quarkus-sync steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK 21 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21' @@ -29,6 +29,11 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 + - name: test + run: | + pwd + ls -la + - name: assemble run: ./gradlew assemble From b75ef2a89cfb8724e88697fa8711e4dd493b0dda Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 16:49:17 +0100 Subject: [PATCH 03/53] Test --- .github/workflows/k8s-quarkus-sync.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 4eca236..28ab020 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -14,8 +14,9 @@ jobs: build: name: build & push runs-on: ubuntu-latest - env: - working-directory: ./bookstore-quarkus-sync + defaults: + run: + working-directory: ./bookstore-quarkus-sync steps: - uses: actions/checkout@v4 From db734cb6a7d2a4db9e0246b4217cba70b0c87b05 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 16:54:50 +0100 Subject: [PATCH 04/53] try adding build --- .github/workflows/k8s-quarkus-sync.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 28ab020..997cc08 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -30,11 +30,6 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - - name: test - run: | - pwd - ls -la - - name: assemble run: ./gradlew assemble @@ -51,7 +46,8 @@ jobs: - name: push container run: | - ./gradlew build -x test -Dquarkus.container-image.push=true \ + ./gradlew build -x test -Dquarkus.container-image.build=true \ + -Dquarkus.container-image.push=true \ -Dquarkus.container-image.group=${{ github.repository_owner }} \ -Dquarkus.container-image.name=${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ From 18f0a7015aa5224634aaebf0c1acde3ee05f4a07 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 16:57:15 +0100 Subject: [PATCH 05/53] try adding build --- .github/workflows/k8s-quarkus-sync.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 997cc08..6efa00b 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -33,8 +33,8 @@ jobs: - name: assemble run: ./gradlew assemble - - name: build container - run: ./gradlew build -x test -Dquarkus.container-image.build=true +# - name: build container +# run: ./gradlew build -x test -Dquarkus.container-image.build=true # - name: Login to GitHub Container Registry # uses: docker/login-action@v2 From 2c266552906bb9096daec3b81dcbe95019a0ec5a Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 17:01:58 +0100 Subject: [PATCH 06/53] Test --- .github/workflows/k8s-quarkus-sync.yml | 28 +++++++++----------------- 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 6efa00b..57a24b1 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -33,27 +33,19 @@ jobs: - name: assemble run: ./gradlew assemble -# - name: build container -# run: ./gradlew build -x test -Dquarkus.container-image.build=true + - name: build container + run: ./gradlew build -x test -Dquarkus.container-image.build=true -# - name: Login to GitHub Container Registry -# uses: docker/login-action@v2 -# with: -# registry: ghcr.io -# username: ${{ github.actor }} -# password: ${{ secrets.GITHUB_TOKEN }} -# logout: true + # - name: Login to GitHub Container Registry + # uses: docker/login-action@v2 + # with: + # registry: ghcr.io + # username: ${{ github.actor }} + # password: ${{ secrets.GITHUB_TOKEN }} + # logout: true - name: push container - run: | - ./gradlew build -x test -Dquarkus.container-image.build=true \ - -Dquarkus.container-image.push=true \ - -Dquarkus.container-image.group=${{ github.repository_owner }} \ - -Dquarkus.container-image.name=${{ github.event.repository.name }} \ - -Dquarkus.container-image.registry=ghcr.io \ - -Dquarkus.container-image.additional-tags=${{ github.sha }} \ - -Dquarkus.container-image.username=${{ github.actor }} \ - -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} + run: ./gradlew build -x test -Dquarkus.container-image.push=true -Dquarkus.container-image.group=${{ github.repository_owner }} -Dquarkus.container-image.name=${{ github.event.repository.name }} -Dquarkus.container-image.registry=ghcr.io -Dquarkus.container-image.additional-tags=${{ github.sha }} -Dquarkus.container-image.username=${{ github.actor }} -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} From b9abe7f2d53ae28ad4ed0fcf82a40ce89bf71de1 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 17:06:09 +0100 Subject: [PATCH 07/53] Test multiline --- .github/workflows/k8s-quarkus-sync.yml | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 57a24b1..2606f97 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -36,16 +36,23 @@ jobs: - name: build container run: ./gradlew build -x test -Dquarkus.container-image.build=true - # - name: Login to GitHub Container Registry - # uses: docker/login-action@v2 - # with: - # registry: ghcr.io - # username: ${{ github.actor }} - # password: ${{ secrets.GITHUB_TOKEN }} - # logout: true +# - name: Login to GitHub Container Registry +# uses: docker/login-action@v2 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} +# logout: true - name: push container - run: ./gradlew build -x test -Dquarkus.container-image.push=true -Dquarkus.container-image.group=${{ github.repository_owner }} -Dquarkus.container-image.name=${{ github.event.repository.name }} -Dquarkus.container-image.registry=ghcr.io -Dquarkus.container-image.additional-tags=${{ github.sha }} -Dquarkus.container-image.username=${{ github.actor }} -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} + run: | + ./gradlew build -x test -Dquarkus.container-image.push=true \ + -Dquarkus.container-image.group=${{ github.repository_owner }} \ + -Dquarkus.container-image.name=${{ github.event.repository.name }} \ + -Dquarkus.container-image.registry=ghcr.io \ + -Dquarkus.container-image.additional-tags=${{ github.sha }} \ + -Dquarkus.container-image.username=${{ github.actor }} \ + -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} From 8059f63ad308cf081914e59ca76591f6a6b32e64 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 17:14:42 +0100 Subject: [PATCH 08/53] Test change name --- .github/workflows/k8s-quarkus-sync.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 2606f97..2f6909a 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -47,8 +47,7 @@ jobs: - name: push container run: | ./gradlew build -x test -Dquarkus.container-image.push=true \ - -Dquarkus.container-image.group=${{ github.repository_owner }} \ - -Dquarkus.container-image.name=${{ github.event.repository.name }} \ + -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ -Dquarkus.container-image.additional-tags=${{ github.sha }} \ -Dquarkus.container-image.username=${{ github.actor }} \ From dd62f27b5ed370bca83d551699ebb9ae38b22d65 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 17:21:43 +0100 Subject: [PATCH 09/53] Cleanup and enable gradle cache --- .github/workflows/k8s-quarkus-sync.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 2f6909a..dfb7c75 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -29,6 +29,8 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 + with: + cache-read-only: true # remove later - name: assemble run: ./gradlew assemble @@ -36,14 +38,6 @@ jobs: - name: build container run: ./gradlew build -x test -Dquarkus.container-image.build=true -# - name: Login to GitHub Container Registry -# uses: docker/login-action@v2 -# with: -# registry: ghcr.io -# username: ${{ github.actor }} -# password: ${{ secrets.GITHUB_TOKEN }} -# logout: true - - name: push container run: | ./gradlew build -x test -Dquarkus.container-image.push=true \ From fb723b4ef4d667cd84278ae8587e1403b0bb38d2 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 17:24:27 +0100 Subject: [PATCH 10/53] Cleanup and enable gradle cache --- .github/workflows/k8s-quarkus-sync.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index dfb7c75..ca5989d 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -30,7 +30,7 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 with: - cache-read-only: true # remove later + cache-read-only: false # remove later - name: assemble run: ./gradlew assemble @@ -40,7 +40,9 @@ jobs: - name: push container run: | - ./gradlew build -x test -Dquarkus.container-image.push=true \ + ./gradlew build -x test \ + -Dquarkus.container-image.push=true \ + -Dquarkus.kubernetes.generate-image-pull-secret=true \ -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ -Dquarkus.container-image.additional-tags=${{ github.sha }} \ From 8cbdbce698da9ebca47605d71fcbbf9d2064ea83 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 17:55:58 +0100 Subject: [PATCH 11/53] Try to deploy --- .github/workflows/k8s-quarkus-sync.yml | 12 +++++++++--- .../src/main/resources/application.properties | 13 ++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index ca5989d..998a0bb 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -17,6 +17,8 @@ jobs: defaults: run: working-directory: ./bookstore-quarkus-sync + env: + QUARKUS_HTTP_ROOT_PATH: / steps: - uses: actions/checkout@v4 @@ -38,10 +40,15 @@ jobs: - name: build container run: ./gradlew build -x test -Dquarkus.container-image.build=true - - name: push container + - uses: azure/k8s-set-context@v3 + with: + method: kubeconfig + kubeconfig: '${{ secrets.KUBECONFIG }}' + + - name: push & deploy to k8s run: | ./gradlew build -x test \ - -Dquarkus.container-image.push=true \ + -Dquarkus.kubernetes.deploy=true \ -Dquarkus.kubernetes.generate-image-pull-secret=true \ -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ @@ -50,7 +57,6 @@ jobs: -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} - # deploy: # name: deploy to k8s # runs-on: ubuntu-latest diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index f02697e..1379fb4 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -11,4 +11,15 @@ quarkus.datasource.jdbc.max-size=20 %dev.quarkus.hibernate-orm.log.sql=true ## Database Migrations quarkus.flyway.migrate-at-start=true -quarkus.flyway.baseline-on-migrate=true \ No newline at end of file +quarkus.flyway.baseline-on-migrate=true +# +# Kubernetes Deployment Config +quarkus.kubernetes.resources.requests.memory=64Mi +quarkus.kubernetes.resources.requests.cpu=50m +quarkus.kubernetes.resources.limits.memory=512Mi +quarkus.kubernetes.resources.limits.cpu=1000m +quarkus.kubernetes.ingress.expose=true +quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com +quarkus.kubernetes.ingress.tls.my-secret.enabled=true +quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod +quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true \ No newline at end of file From 45b13e4e1743cb230b51ac1389c0079c99a276f9 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 18:26:33 +0100 Subject: [PATCH 12/53] Try servicebinding for DB --- .github/workflows/k8s-quarkus-sync.yml | 2 -- bookstore-quarkus-sync/build.gradle.kts | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 998a0bb..3cf083b 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -31,8 +31,6 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - with: - cache-read-only: false # remove later - name: assemble run: ./gradlew assemble diff --git a/bookstore-quarkus-sync/build.gradle.kts b/bookstore-quarkus-sync/build.gradle.kts index d97c172..f3e7420 100644 --- a/bookstore-quarkus-sync/build.gradle.kts +++ b/bookstore-quarkus-sync/build.gradle.kts @@ -35,6 +35,7 @@ dependencies { implementation("io.quarkus:quarkus-container-image-jib") implementation("io.quarkus:quarkus-kubernetes") + implementation("io.quarkus:quarkus-kubernetes-service-binding") testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.rest-assured:rest-assured") From bc95344ed2e28d1966fa15501a355757af17a3ed Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 18:54:25 +0100 Subject: [PATCH 13/53] Try with db --- bookstore-quarkus-sync/build.gradle.kts | 1 - .../src/main/resources/application.properties | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bookstore-quarkus-sync/build.gradle.kts b/bookstore-quarkus-sync/build.gradle.kts index f3e7420..d97c172 100644 --- a/bookstore-quarkus-sync/build.gradle.kts +++ b/bookstore-quarkus-sync/build.gradle.kts @@ -35,7 +35,6 @@ dependencies { implementation("io.quarkus:quarkus-container-image-jib") implementation("io.quarkus:quarkus-kubernetes") - implementation("io.quarkus:quarkus-kubernetes-service-binding") testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.rest-assured:rest-assured") diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index 1379fb4..5f37588 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -22,4 +22,7 @@ quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com quarkus.kubernetes.ingress.tls.my-secret.enabled=true quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod -quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true \ No newline at end of file +quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true +quarkus.kubernetes.env.mapping.DB_PASSWORD.from-secret=${quarkus.application.name}-postgresql +quarkus.kubernetes.env.mapping.DB_PASSWORD.with-key=postgres-password +quarkus.kubernetes.env.vars.DB_HOST=${quarkus.application.name}-postgresql \ No newline at end of file From a1c3fe93a61ea9f74209219cf7ade47df4021672 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Mon, 29 Jan 2024 19:04:52 +0100 Subject: [PATCH 14/53] Remove imagepull secret --- .github/workflows/k8s-quarkus-sync.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 3cf083b..8fd7b45 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -47,7 +47,6 @@ jobs: run: | ./gradlew build -x test \ -Dquarkus.kubernetes.deploy=true \ - -Dquarkus.kubernetes.generate-image-pull-secret=true \ -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ -Dquarkus.container-image.additional-tags=${{ github.sha }} \ From bad839ff550d176e3aa74ded13b3248171ce9b97 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Tue, 30 Jan 2024 14:25:42 +0100 Subject: [PATCH 15/53] Fix secret name --- .../src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index 5f37588..becff4b 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -20,7 +20,7 @@ quarkus.kubernetes.resources.limits.memory=512Mi quarkus.kubernetes.resources.limits.cpu=1000m quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com -quarkus.kubernetes.ingress.tls.my-secret.enabled=true +quarkus.kubernetes.ingress.tls."${quarkus.application.name}-tls".enabled=true quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true quarkus.kubernetes.env.mapping.DB_PASSWORD.from-secret=${quarkus.application.name}-postgresql From 1760c3dcc6bd76903eb00b554fcb1226faa3864d Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Tue, 30 Jan 2024 14:34:48 +0100 Subject: [PATCH 16/53] Fix secret name --- .../src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index becff4b..a6a99f9 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -20,7 +20,7 @@ quarkus.kubernetes.resources.limits.memory=512Mi quarkus.kubernetes.resources.limits.cpu=1000m quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com -quarkus.kubernetes.ingress.tls."${quarkus.application.name}-tls".enabled=true +quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.enabled=true quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true quarkus.kubernetes.env.mapping.DB_PASSWORD.from-secret=${quarkus.application.name}-postgresql From 6aad7f1ffdfc6bc1fa14c6678ee5801d0df2adbc Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Tue, 30 Jan 2024 14:53:15 +0100 Subject: [PATCH 17/53] Add tls host --- bookstore-quarkus-sync/src/main/resources/application.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index a6a99f9..ba97467 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -20,6 +20,7 @@ quarkus.kubernetes.resources.limits.memory=512Mi quarkus.kubernetes.resources.limits.cpu=1000m quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com +quarkus.kubernetes.ingress.tls.hosts[0]=${quarkus.kubernetes.ingress.host} quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.enabled=true quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true From a090c9cfc42fbde03e273a9695a0b9c45e5a344f Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 9 Feb 2024 13:54:15 +0100 Subject: [PATCH 18/53] Fix ingress tls host --- .../src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index ba97467..41e780d 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -20,8 +20,8 @@ quarkus.kubernetes.resources.limits.memory=512Mi quarkus.kubernetes.resources.limits.cpu=1000m quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com -quarkus.kubernetes.ingress.tls.hosts[0]=${quarkus.kubernetes.ingress.host} quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.enabled=true +quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.hosts=${quarkus.kubernetes.ingress.host} quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true quarkus.kubernetes.env.mapping.DB_PASSWORD.from-secret=${quarkus.application.name}-postgresql From bfece6a9348f846cb181c0d20805afbc615f344e Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 9 Feb 2024 14:11:51 +0100 Subject: [PATCH 19/53] Set ingress class name --- bookstore-quarkus-sync/src/main/resources/application.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index 41e780d..d266ecc 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -20,6 +20,7 @@ quarkus.kubernetes.resources.limits.memory=512Mi quarkus.kubernetes.resources.limits.cpu=1000m quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com +quarkus.kubernetes.ingress.ingressClassName=nginx quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.enabled=true quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.hosts=${quarkus.kubernetes.ingress.host} quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod From 1da80774bb67b2b6cd3451ba2d2329ee85b2ee9a Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 9 Feb 2024 15:10:34 +0100 Subject: [PATCH 20/53] Add loader.io config for quarkus-sync --- .github/workflows/k8s-quarkus-sync.yml | 4 ++-- .../resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 bookstore-quarkus-sync/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 8fd7b45..7295869 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -36,7 +36,7 @@ jobs: run: ./gradlew assemble - name: build container - run: ./gradlew build -x test -Dquarkus.container-image.build=true + run: ./gradlew assemble -Dquarkus.container-image.build=true - uses: azure/k8s-set-context@v3 with: @@ -45,7 +45,7 @@ jobs: - name: push & deploy to k8s run: | - ./gradlew build -x test \ + ./gradlew assemble test \ -Dquarkus.kubernetes.deploy=true \ -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ diff --git a/bookstore-quarkus-sync/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt b/bookstore-quarkus-sync/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt new file mode 100644 index 0000000..091d848 --- /dev/null +++ b/bookstore-quarkus-sync/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt @@ -0,0 +1 @@ +loaderio-61ddb5d318dfddf075a659951abc307c \ No newline at end of file From facfde50bc2e8829798b629e69064a37eaad25bd Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 9 Feb 2024 15:19:41 +0100 Subject: [PATCH 21/53] Update Quarkus to version 3.7.2 --- bookstore-quarkus-sync/gradle.properties | 4 ++-- bookstore-quarkus/gradle.properties | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bookstore-quarkus-sync/gradle.properties b/bookstore-quarkus-sync/gradle.properties index a8dcd0b..ccb451b 100644 --- a/bookstore-quarkus-sync/gradle.properties +++ b/bookstore-quarkus-sync/gradle.properties @@ -1,10 +1,10 @@ # # Quarkus quarkusPluginId=io.quarkus -quarkusPluginVersion=3.7.1 +quarkusPluginVersion=3.7.2 quarkusPlatformGroupId=io.quarkus.platform quarkusPlatformArtifactId=quarkus-bom -quarkusPlatformVersion=3.7.1 +quarkusPlatformVersion=3.7.2 # # Kotlin kotlinVersion=1.9.22 diff --git a/bookstore-quarkus/gradle.properties b/bookstore-quarkus/gradle.properties index a8dcd0b..ccb451b 100644 --- a/bookstore-quarkus/gradle.properties +++ b/bookstore-quarkus/gradle.properties @@ -1,10 +1,10 @@ # # Quarkus quarkusPluginId=io.quarkus -quarkusPluginVersion=3.7.1 +quarkusPluginVersion=3.7.2 quarkusPlatformGroupId=io.quarkus.platform quarkusPlatformArtifactId=quarkus-bom -quarkusPlatformVersion=3.7.1 +quarkusPlatformVersion=3.7.2 # # Kotlin kotlinVersion=1.9.22 From 037c243eae7e631ab65ea90f0c311389e631ac07 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 9 Feb 2024 18:13:19 +0100 Subject: [PATCH 22/53] Add deployment for db to quarkus-sync pipeline --- .github/workflows/k8s-quarkus-sync.yml | 54 +++++++++++-------- .../src/main/resources/application.properties | 2 +- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 7295869..b9e2b79 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -45,32 +45,42 @@ jobs: - name: push & deploy to k8s run: | - ./gradlew assemble test \ + ./gradlew assemble \ -Dquarkus.kubernetes.deploy=true \ -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ -Dquarkus.container-image.additional-tags=${{ github.sha }} \ -Dquarkus.container-image.username=${{ github.actor }} \ -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} + - -# deploy: -# name: deploy to k8s -# runs-on: ubuntu-latest -# needs: build -# -# steps: -# - uses: actions/checkout@v3 -# -# - name: Helm Deploy to k8s -# uses: vimeda/helm@v1.7.0 -# with: -# release: 'bookstore-quarkus-sync' -# namespace: 'benchmarks' -# chart: 'bookstore-quarkus-sync/helm' -# token: '${{ secrets.GITHUB_TOKEN }}' -# values: | -# image: -# tag: ${{ github.sha }} -# env: -# KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' + - name: deploy postgres + uses: vimeda/helm@v1.7.0 + with: + release: bookstore-quarkus-sync + chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' + token: '${{ secrets.GITHUB_TOKEN }}' + values: | + global: + postgresql: + auth: + username: postgres + database: books-db + + primary: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - bookstore-quarkus-sync + - key: app.kubernetes.io/managed-by + operator: In + values: + - quarkus + topologyKey: "kubernetes.io/hostname" + env: + KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' \ No newline at end of file diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index d266ecc..255fcc3 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -27,4 +27,4 @@ quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencr quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true quarkus.kubernetes.env.mapping.DB_PASSWORD.from-secret=${quarkus.application.name}-postgresql quarkus.kubernetes.env.mapping.DB_PASSWORD.with-key=postgres-password -quarkus.kubernetes.env.vars.DB_HOST=${quarkus.application.name}-postgresql \ No newline at end of file +quarkus.kubernetes.env.vars.DB_HOST=${quarkus.application.name}-postgresql From 01cbd2dd291801569221d9256f3ff7d9501c2b47 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 9 Feb 2024 18:16:32 +0100 Subject: [PATCH 23/53] Add deployment for db to quarkus-sync pipeline --- .github/workflows/k8s-quarkus-sync.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index b9e2b79..05f109f 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -58,6 +58,7 @@ jobs: uses: vimeda/helm@v1.7.0 with: release: bookstore-quarkus-sync + namespace: 'default' chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' token: '${{ secrets.GITHUB_TOKEN }}' values: | From bed2fad8063e791774e1da63b852a7c2e706738c Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 9 Feb 2024 18:20:33 +0100 Subject: [PATCH 24/53] Add deployment for db to quarkus-sync pipeline --- .github/workflows/k8s-quarkus-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 05f109f..1d7a273 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -58,7 +58,7 @@ jobs: uses: vimeda/helm@v1.7.0 with: release: bookstore-quarkus-sync - namespace: 'default' + namespace: 'benchmarks' chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' token: '${{ secrets.GITHUB_TOKEN }}' values: | From b4dba04e02b2f7238ffb7ee388b4bd0d438814f2 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 19:31:46 +0100 Subject: [PATCH 25/53] Try using action for postgres deployment --- .../actions/k8s/deploy-postgres/action.yml | 45 +++++++++++++ .github/workflows/k8s-quarkus-sync.yml | 64 ++++++++++--------- 2 files changed, 78 insertions(+), 31 deletions(-) create mode 100644 .github/actions/k8s/deploy-postgres/action.yml diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml new file mode 100644 index 0000000..999fe38 --- /dev/null +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -0,0 +1,45 @@ +name: "Deploy Postgres with Anti Affinity" +inputs: + release-name: + required: true + anti-affinity-value: + required: true + kube-config: + required: true + namespace: + default: benchmarks + anti-affinity-key: + default: app.kubernetes.io/name + + + + +runs: + using: "composite" + steps: + - name: deploy postgres + uses: vimeda/helm@v1.7.0 + with: + release: ${{ inputs.release-name }} + namespace: ${{ inputs.benchmarks }} + chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' + values: | + global: + postgresql: + auth: + username: postgres + database: books-db + + primary: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: ${{ inputs.anti-affinity-key}} + operator: In + values: + - ${{ inputs.anti-affinity-value}} + topologyKey: "kubernetes.io/hostname" + env: + KUBECONFIG_FILE: ${{ inputs.kube-config }} \ No newline at end of file diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 1d7a273..1e42046 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -52,36 +52,38 @@ jobs: -Dquarkus.container-image.additional-tags=${{ github.sha }} \ -Dquarkus.container-image.username=${{ github.actor }} \ -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} - - - name: deploy postgres - uses: vimeda/helm@v1.7.0 + - uses: ./.github/actions/k8s/deploy-postgres with: - release: bookstore-quarkus-sync - namespace: 'benchmarks' - chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' - token: '${{ secrets.GITHUB_TOKEN }}' - values: | - global: - postgresql: - auth: - username: postgres - database: books-db - - primary: - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/name - operator: In - values: - - bookstore-quarkus-sync - - key: app.kubernetes.io/managed-by - operator: In - values: - - quarkus - topologyKey: "kubernetes.io/hostname" - env: - KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' \ No newline at end of file + release-name: bookstore-quarkus-sync + anti-affinity-value: bookstore-quarkus-sync + kube-config: ${{ secrets.KUBECONFIG }} + + +# - name: deploy postgres +# uses: vimeda/helm@v1.7.0 +# with: +# release: bookstore-quarkus-sync +# namespace: 'benchmarks' +# chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' +# token: '${{ secrets.GITHUB_TOKEN }}' +# values: | +# global: +# postgresql: +# auth: +# username: postgres +# database: books-db +# +# primary: +# affinity: +# podAntiAffinity: +# requiredDuringSchedulingIgnoredDuringExecution: +# - labelSelector: +# matchExpressions: +# - key: app.kubernetes.io/name +# operator: In +# values: +# - bookstore-quarkus-sync +# topologyKey: "kubernetes.io/hostname" +# env: +# KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' \ No newline at end of file From d9b608f1890c64294d0918937dcc69e2c65c55e7 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 19:35:56 +0100 Subject: [PATCH 26/53] Fix typo --- .github/actions/k8s/deploy-postgres/action.yml | 2 +- .github/workflows/k8s-quarkus-sync.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml index 999fe38..8f1206e 100644 --- a/.github/actions/k8s/deploy-postgres/action.yml +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -21,7 +21,7 @@ runs: uses: vimeda/helm@v1.7.0 with: release: ${{ inputs.release-name }} - namespace: ${{ inputs.benchmarks }} + namespace: ${{ inputs.namespace }} chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' values: | global: diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 1e42046..e96bad1 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -53,7 +53,8 @@ jobs: -Dquarkus.container-image.username=${{ github.actor }} \ -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} - - uses: ./.github/actions/k8s/deploy-postgres + - name: deploy postgres + uses: ./.github/actions/k8s/deploy-postgres with: release-name: bookstore-quarkus-sync anti-affinity-value: bookstore-quarkus-sync From 5151afff464deb30f8de026557696fed679e56e9 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 19:43:49 +0100 Subject: [PATCH 27/53] Rename bookstore-quarkus to bookstore-quarkus-reactive --- ...yml => publish-quarkus-image-reactive.yml} | 4 +- .github/workflows/terraform-ecr.yml | 2 +- README.md | 2 +- .../.dockerignore | 0 .../.gitignore | 0 .../Dockerfile | 0 .../README.md | 4 +- .../build.gradle.kts | 0 .../gradle.properties | 4 +- .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../gradlew | 0 .../gradlew.bat | 0 .../settings.gradle.kts | 0 .../com/arconsis/common/UUIDSerializer.kt | 0 .../arconsis/config/FlywayMigrationService.kt | 0 .../com/arconsis/data/books/BookEntity.kt | 0 .../com/arconsis/data/books/BooksDataStore.kt | 0 .../arconsis/data/books/BooksRepository.kt | 0 .../com/arconsis/data/common/Columns.kt | 0 .../kotlin/com/arconsis/http/books/Book.kt | 0 .../com/arconsis/http/books/BooksResource.kt | 0 .../com/arconsis/http/books/CreateBook.kt | 0 .../com/arconsis/http/errors/ErrorResponse.kt | 0 .../arconsis/http/errors/ExceptionMappers.kt | 0 .../src/main/resources/application.properties | 0 .../db/migration/V1.0.0__CreateBooks.sql | 0 bookstore-quarkus-sync/README.md | 4 +- bookstore-quarkus-sync/gradle.properties | 4 +- .../resources/META-INF/resources/index.html | 364 ------------------ ...uarkus Sync (k8s).postman_environment.json | 15 + terraform/deployment/main.tf | 12 +- terraform/ecr_repositories/variables.tf | 2 +- 33 files changed, 34 insertions(+), 383 deletions(-) rename .github/workflows/{publish-quarkus-image.yml => publish-quarkus-image-reactive.yml} (90%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/.dockerignore (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/.gitignore (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/Dockerfile (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/README.md (96%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/build.gradle.kts (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/gradle.properties (84%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/gradle/wrapper/gradle-wrapper.jar (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/gradle/wrapper/gradle-wrapper.properties (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/gradlew (100%) mode change 100755 => 100644 rename {bookstore-quarkus => bookstore-quarkus-reactive}/gradlew.bat (100%) mode change 100755 => 100644 rename {bookstore-quarkus => bookstore-quarkus-reactive}/settings.gradle.kts (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/common/UUIDSerializer.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/config/FlywayMigrationService.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/data/books/BookEntity.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/data/books/BooksDataStore.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/data/books/BooksRepository.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/data/common/Columns.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/http/books/Book.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/http/books/BooksResource.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/http/books/CreateBook.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/http/errors/ErrorResponse.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/kotlin/com/arconsis/http/errors/ExceptionMappers.kt (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/resources/application.properties (100%) rename {bookstore-quarkus => bookstore-quarkus-reactive}/src/main/resources/db/migration/V1.0.0__CreateBooks.sql (100%) delete mode 100644 bookstore-quarkus/src/main/resources/META-INF/resources/index.html create mode 100644 postman/Bookstore Quarkus Sync (k8s).postman_environment.json diff --git a/.github/workflows/publish-quarkus-image.yml b/.github/workflows/publish-quarkus-image-reactive.yml similarity index 90% rename from .github/workflows/publish-quarkus-image.yml rename to .github/workflows/publish-quarkus-image-reactive.yml index f230417..48dca53 100644 --- a/.github/workflows/publish-quarkus-image.yml +++ b/.github/workflows/publish-quarkus-image-reactive.yml @@ -27,8 +27,8 @@ jobs: - name: Build, tag, and push image to Amazon ECR env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - ECR_REPOSITORY: bookstore-quarkus + ECR_REPOSITORY: bookstore-quarkus-reactive run: | docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$GITHUB_SHA -t $ECR_REGISTRY/$ECR_REPOSITORY . docker push -a $ECR_REGISTRY/$ECR_REPOSITORY - working-directory: ./bookstore-quarkus \ No newline at end of file + working-directory: ./bookstore-quarkus-reactive \ No newline at end of file diff --git a/.github/workflows/terraform-ecr.yml b/.github/workflows/terraform-ecr.yml index efec724..0a07e72 100644 --- a/.github/workflows/terraform-ecr.yml +++ b/.github/workflows/terraform-ecr.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: repository-names: - description: "The name of all the new ECR repositories to be created e.g.: 'bookstore-quarkus,bookstore-springboot' " + description: "The name of all the new ECR repositories to be created e.g.: 'bookstore-quarkus-reactive,bookstore-springboot' " type: "string" jobs: diff --git a/README.md b/README.md index 959d8a6..484d4ab 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ The main endpoints of the API consists of: Currently you can find the following implementations of the Book Store REST API: -1) [Quarkus](./bookstore-quarkus) +1) [Quarkus](./bookstore-quarkus-reactive) 2) [Quarkus Synchronous](./bookstore-quarkus-sync) 3) [Spring Boot](./bookstore-springboot) 4) [NestJS](./bookstore-nestjs) diff --git a/bookstore-quarkus/.dockerignore b/bookstore-quarkus-reactive/.dockerignore similarity index 100% rename from bookstore-quarkus/.dockerignore rename to bookstore-quarkus-reactive/.dockerignore diff --git a/bookstore-quarkus/.gitignore b/bookstore-quarkus-reactive/.gitignore similarity index 100% rename from bookstore-quarkus/.gitignore rename to bookstore-quarkus-reactive/.gitignore diff --git a/bookstore-quarkus/Dockerfile b/bookstore-quarkus-reactive/Dockerfile similarity index 100% rename from bookstore-quarkus/Dockerfile rename to bookstore-quarkus-reactive/Dockerfile diff --git a/bookstore-quarkus/README.md b/bookstore-quarkus-reactive/README.md similarity index 96% rename from bookstore-quarkus/README.md rename to bookstore-quarkus-reactive/README.md index 7c82f5c..d2c8292 100644 --- a/bookstore-quarkus/README.md +++ b/bookstore-quarkus-reactive/README.md @@ -1,4 +1,4 @@ -# bookstore-quarkus Project +# bookstore-quarkus-reactive Project This project uses Quarkus, the Supersonic Subatomic Java Framework. @@ -43,7 +43,7 @@ Or, if you don't have GraalVM installed, you can run the native executable build ./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true ``` -You can then execute your native executable with: `./build/bookstore-quarkus-1.0.0-SNAPSHOT-runner` +You can then execute your native executable with: `./build/bookstore-quarkus-reactive-1.0.0-SNAPSHOT-runner` If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling. diff --git a/bookstore-quarkus/build.gradle.kts b/bookstore-quarkus-reactive/build.gradle.kts similarity index 100% rename from bookstore-quarkus/build.gradle.kts rename to bookstore-quarkus-reactive/build.gradle.kts diff --git a/bookstore-quarkus/gradle.properties b/bookstore-quarkus-reactive/gradle.properties similarity index 84% rename from bookstore-quarkus/gradle.properties rename to bookstore-quarkus-reactive/gradle.properties index ccb451b..0b308dc 100644 --- a/bookstore-quarkus/gradle.properties +++ b/bookstore-quarkus-reactive/gradle.properties @@ -1,10 +1,10 @@ # # Quarkus quarkusPluginId=io.quarkus -quarkusPluginVersion=3.7.2 +quarkusPluginVersion=3.7.3 quarkusPlatformGroupId=io.quarkus.platform quarkusPlatformArtifactId=quarkus-bom -quarkusPlatformVersion=3.7.2 +quarkusPlatformVersion=3.7.3 # # Kotlin kotlinVersion=1.9.22 diff --git a/bookstore-quarkus/gradle/wrapper/gradle-wrapper.jar b/bookstore-quarkus-reactive/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from bookstore-quarkus/gradle/wrapper/gradle-wrapper.jar rename to bookstore-quarkus-reactive/gradle/wrapper/gradle-wrapper.jar diff --git a/bookstore-quarkus/gradle/wrapper/gradle-wrapper.properties b/bookstore-quarkus-reactive/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from bookstore-quarkus/gradle/wrapper/gradle-wrapper.properties rename to bookstore-quarkus-reactive/gradle/wrapper/gradle-wrapper.properties diff --git a/bookstore-quarkus/gradlew b/bookstore-quarkus-reactive/gradlew old mode 100755 new mode 100644 similarity index 100% rename from bookstore-quarkus/gradlew rename to bookstore-quarkus-reactive/gradlew diff --git a/bookstore-quarkus/gradlew.bat b/bookstore-quarkus-reactive/gradlew.bat old mode 100755 new mode 100644 similarity index 100% rename from bookstore-quarkus/gradlew.bat rename to bookstore-quarkus-reactive/gradlew.bat diff --git a/bookstore-quarkus/settings.gradle.kts b/bookstore-quarkus-reactive/settings.gradle.kts similarity index 100% rename from bookstore-quarkus/settings.gradle.kts rename to bookstore-quarkus-reactive/settings.gradle.kts diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/common/UUIDSerializer.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/common/UUIDSerializer.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/common/UUIDSerializer.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/common/UUIDSerializer.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/config/FlywayMigrationService.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/config/FlywayMigrationService.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/config/FlywayMigrationService.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/config/FlywayMigrationService.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/data/books/BookEntity.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/books/BookEntity.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/data/books/BookEntity.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/books/BookEntity.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/data/books/BooksDataStore.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/books/BooksDataStore.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/data/books/BooksDataStore.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/books/BooksDataStore.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/data/books/BooksRepository.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/books/BooksRepository.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/data/books/BooksRepository.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/books/BooksRepository.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/data/common/Columns.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/common/Columns.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/data/common/Columns.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/data/common/Columns.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/http/books/Book.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/books/Book.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/http/books/Book.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/books/Book.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/http/books/BooksResource.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/books/BooksResource.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/http/books/BooksResource.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/books/BooksResource.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/http/books/CreateBook.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/books/CreateBook.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/http/books/CreateBook.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/books/CreateBook.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/http/errors/ErrorResponse.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/errors/ErrorResponse.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/http/errors/ErrorResponse.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/errors/ErrorResponse.kt diff --git a/bookstore-quarkus/src/main/kotlin/com/arconsis/http/errors/ExceptionMappers.kt b/bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/errors/ExceptionMappers.kt similarity index 100% rename from bookstore-quarkus/src/main/kotlin/com/arconsis/http/errors/ExceptionMappers.kt rename to bookstore-quarkus-reactive/src/main/kotlin/com/arconsis/http/errors/ExceptionMappers.kt diff --git a/bookstore-quarkus/src/main/resources/application.properties b/bookstore-quarkus-reactive/src/main/resources/application.properties similarity index 100% rename from bookstore-quarkus/src/main/resources/application.properties rename to bookstore-quarkus-reactive/src/main/resources/application.properties diff --git a/bookstore-quarkus/src/main/resources/db/migration/V1.0.0__CreateBooks.sql b/bookstore-quarkus-reactive/src/main/resources/db/migration/V1.0.0__CreateBooks.sql similarity index 100% rename from bookstore-quarkus/src/main/resources/db/migration/V1.0.0__CreateBooks.sql rename to bookstore-quarkus-reactive/src/main/resources/db/migration/V1.0.0__CreateBooks.sql diff --git a/bookstore-quarkus-sync/README.md b/bookstore-quarkus-sync/README.md index 7c82f5c..af49549 100644 --- a/bookstore-quarkus-sync/README.md +++ b/bookstore-quarkus-sync/README.md @@ -1,4 +1,4 @@ -# bookstore-quarkus Project +# bookstore-quarkus-sync Project This project uses Quarkus, the Supersonic Subatomic Java Framework. @@ -43,7 +43,7 @@ Or, if you don't have GraalVM installed, you can run the native executable build ./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true ``` -You can then execute your native executable with: `./build/bookstore-quarkus-1.0.0-SNAPSHOT-runner` +You can then execute your native executable with: `./build/bookstore-quarkus-sync-1.0.0-SNAPSHOT-runner` If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling. diff --git a/bookstore-quarkus-sync/gradle.properties b/bookstore-quarkus-sync/gradle.properties index ccb451b..0b308dc 100644 --- a/bookstore-quarkus-sync/gradle.properties +++ b/bookstore-quarkus-sync/gradle.properties @@ -1,10 +1,10 @@ # # Quarkus quarkusPluginId=io.quarkus -quarkusPluginVersion=3.7.2 +quarkusPluginVersion=3.7.3 quarkusPlatformGroupId=io.quarkus.platform quarkusPlatformArtifactId=quarkus-bom -quarkusPlatformVersion=3.7.2 +quarkusPlatformVersion=3.7.3 # # Kotlin kotlinVersion=1.9.22 diff --git a/bookstore-quarkus/src/main/resources/META-INF/resources/index.html b/bookstore-quarkus/src/main/resources/META-INF/resources/index.html deleted file mode 100644 index a49a881..0000000 --- a/bookstore-quarkus/src/main/resources/META-INF/resources/index.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - bookstore-quarkus - 1.0.0-SNAPSHOT - - - -
-
-
- - - - - quarkus_logo_horizontal_rgb_1280px_reverse - - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-

You just made a Quarkus application.

-

This page is served by Quarkus.

- Visit the Dev UI -

This page: src/main/resources/META-INF/resources/index.html

-

App configuration: src/main/resources/application.properties

-

Static assets: src/main/resources/META-INF/resources/

-

Code: src/main/kotlin

-

Generated starter code:

-
    -
  • - RESTEasy Reactive Easily start your Reactive RESTful Web Services -
    @Path: /hello -
    Related guide -
  • - -
-
-
-

Selected extensions

-
    -
  • - Hibernate Reactive with Panache -
  • -
  • Flyway (guide) -
  • -
  • Kotlin (guide) -
  • -
  • Reactive PostgreSQL client (guide) -
  • -
  • RESTEasy Reactive Kotlin Serialization
  • -
-
Documentation
-

Practical step-by-step guides to help you achieve a specific goal. Use them to help get your work - done.

-
Set up your IDE
-

Everyone has a favorite IDE they like to use to code. Learn how to configure yours to maximize your - Quarkus productivity.

-
-
-
- - diff --git a/postman/Bookstore Quarkus Sync (k8s).postman_environment.json b/postman/Bookstore Quarkus Sync (k8s).postman_environment.json new file mode 100644 index 0000000..d707618 --- /dev/null +++ b/postman/Bookstore Quarkus Sync (k8s).postman_environment.json @@ -0,0 +1,15 @@ +{ + "id": "bd98e2c1-11e3-4568-8ad6-aafe07e404b5", + "name": "Bookstore Quarkus Sync (k8s)", + "values": [ + { + "key": "host", + "value": "https://bookstore-quarkus-sync.benchmarks.k8s.dev.arconsis.com", + "type": "default", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2024-02-15T18:42:29.418Z", + "_postman_exported_using": "Postman/10.23.1" +} \ No newline at end of file diff --git a/terraform/deployment/main.tf b/terraform/deployment/main.tf index 2c9b081..99ba596 100644 --- a/terraform/deployment/main.tf +++ b/terraform/deployment/main.tf @@ -140,7 +140,7 @@ module "ecs_tasks_sg" { } data "aws_ecr_repository" "quarkus_repository" { - name = "bookstore-quarkus" + name = "bookstore-quarkus-reactive" } module "ecs_quarkus_app" { @@ -164,19 +164,19 @@ module "ecs_quarkus_app" { subnet_ids = module.vpc.private_subnet_ids vpc_id = module.vpc.vpc_id service = { - name = "bookstore-quarkus" + name = "bookstore-quarkus-reactive" desired_count = 1 max_count = 1 } task_definition = { - name = "bookstore-quarkus" + name = "bookstore-quarkus-reactive" image = "${data.aws_ecr_repository.quarkus_repository.repository_url}:${var.image_tag}" - aws_logs_group = "ecs/bookstore-quarkus" + aws_logs_group = "ecs/bookstore-quarkus-reactive" host_port = 3000 container_port = 3000 - container_name = "bookstore-quarkus" + container_name = "bookstore-quarkus-reactive" health_check_path = "/quarkus/q/health" - family = "bookstore-quarkus-task" + family = "bookstore-quarkus-reactive-task" env_vars = [ # Check how to configure writer and reader endpoints { diff --git a/terraform/ecr_repositories/variables.tf b/terraform/ecr_repositories/variables.tf index 9e7d9be..25e2b2f 100644 --- a/terraform/ecr_repositories/variables.tf +++ b/terraform/ecr_repositories/variables.tf @@ -15,7 +15,7 @@ variable "repositories" { description = "Defines the repositories to create" type = set(string) default = [ - "bookstore-quarkus", + "bookstore-quarkus-reactive", "bookstore-quarkus-sync", "bookstore-springboot", "bookstore-nestjs", From 75c7a62059fc1a4780fe6fc56d9d1f00f48d6073 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 19:50:45 +0100 Subject: [PATCH 28/53] Update postman collection --- postman/Booksstore.postman_collection.json | 28 ++++++++++------------ 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/postman/Booksstore.postman_collection.json b/postman/Booksstore.postman_collection.json index 2cbb549..2b4919e 100644 --- a/postman/Booksstore.postman_collection.json +++ b/postman/Booksstore.postman_collection.json @@ -1,9 +1,9 @@ { "info": { - "_postman_id": "85ccf0e9-259d-4a30-bd9a-eb718f89748f", + "_postman_id": "86e58453-1d40-4f98-839b-bb1d16953aa3", "name": "Booksstore", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "13324635" + "_exporter_id": "4591907" }, "item": [ { @@ -48,11 +48,10 @@ } }, "url": { - "raw": "localhost:3000/books", + "raw": "{{host}}/books", "host": [ - "localhost" + "{{host}}" ], - "port": "3000", "path": [ "books" ] @@ -66,11 +65,10 @@ "method": "GET", "header": [], "url": { - "raw": "localhost:3000/books", + "raw": "{{host}}/books", "host": [ - "localhost" + "{{host}}" ], - "port": "3000", "path": [ "books" ] @@ -84,14 +82,13 @@ "method": "GET", "header": [], "url": { - "raw": "localhost:3000/books/57161583-685e-4b2e-904b-b1be628fedff", + "raw": "{{host}}/books/bc7ffb20-7e00-4ff8-81c1-fbbe282c745f", "host": [ - "localhost" + "{{host}}" ], - "port": "3000", "path": [ "books", - "57161583-685e-4b2e-904b-b1be628fedff" + "bc7ffb20-7e00-4ff8-81c1-fbbe282c745f" ] } }, @@ -103,14 +100,13 @@ "method": "DELETE", "header": [], "url": { - "raw": "localhost:3000/books/57161583-685e-4b2e-904b-b1be628fedff", + "raw": "{{host}}/books/bc7ffb20-7e00-4ff8-81c1-fbbe282c745f", "host": [ - "localhost" + "{{host}}" ], - "port": "3000", "path": [ "books", - "57161583-685e-4b2e-904b-b1be628fedff" + "bc7ffb20-7e00-4ff8-81c1-fbbe282c745f" ] } }, From 8461d3f44188696f460c29ea70c2664031435b1b Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 19:56:11 +0100 Subject: [PATCH 29/53] Test without explicit checkout --- .github/workflows/k8s-quarkus-sync.yml | 33 ++------------------------ 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index e96bad1..21640b9 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -21,7 +21,7 @@ jobs: QUARKUS_HTTP_ROOT_PATH: / steps: - - uses: actions/checkout@v4 +# - uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 @@ -58,33 +58,4 @@ jobs: with: release-name: bookstore-quarkus-sync anti-affinity-value: bookstore-quarkus-sync - kube-config: ${{ secrets.KUBECONFIG }} - - -# - name: deploy postgres -# uses: vimeda/helm@v1.7.0 -# with: -# release: bookstore-quarkus-sync -# namespace: 'benchmarks' -# chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' -# token: '${{ secrets.GITHUB_TOKEN }}' -# values: | -# global: -# postgresql: -# auth: -# username: postgres -# database: books-db -# -# primary: -# affinity: -# podAntiAffinity: -# requiredDuringSchedulingIgnoredDuringExecution: -# - labelSelector: -# matchExpressions: -# - key: app.kubernetes.io/name -# operator: In -# values: -# - bookstore-quarkus-sync -# topologyKey: "kubernetes.io/hostname" -# env: -# KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' \ No newline at end of file + kube-config: ${{ secrets.KUBECONFIG }} \ No newline at end of file From be670c2eca9f2f56cae0787d72c11ac1b5a66042 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 19:56:41 +0100 Subject: [PATCH 30/53] Revert --- .github/workflows/k8s-quarkus-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 21640b9..3692d97 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -21,7 +21,7 @@ jobs: QUARKUS_HTTP_ROOT_PATH: / steps: -# - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 From 9b65241345094f9f2de6b7ecdfc25f269d352dc5 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:02:01 +0100 Subject: [PATCH 31/53] Test extracting quarkus building as composite action --- .../k8s/build-deploy-quarkus/action.yml | 45 +++++++++++++ .../actions/k8s/deploy-postgres/action.yml | 2 - .github/workflows/k8s-quarkus-sync.yml | 66 ++++++++++--------- 3 files changed, 81 insertions(+), 32 deletions(-) create mode 100644 .github/actions/k8s/build-deploy-quarkus/action.yml diff --git a/.github/actions/k8s/build-deploy-quarkus/action.yml b/.github/actions/k8s/build-deploy-quarkus/action.yml new file mode 100644 index 0000000..80d7ff7 --- /dev/null +++ b/.github/actions/k8s/build-deploy-quarkus/action.yml @@ -0,0 +1,45 @@ +name: "Build & Deploy Quarkus to k8s" +inputs: + github-token: + required: true + kube-config: + required: true + + +permissions: + contents: read + packages: write + + +runs: + using: "composite" + steps: + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '21' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + + - name: assemble + run: ./gradlew assemble + + - name: build container + run: ./gradlew assemble -Dquarkus.container-image.build=true + + - uses: azure/k8s-set-context@v3 + with: + method: kubeconfig + kubeconfig: '${{ inputs.kube-config }}' + + - name: push & deploy to k8s + run: | + ./gradlew assemble \ + -Dquarkus.kubernetes.deploy=true \ + -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ + -Dquarkus.container-image.registry=ghcr.io \ + -Dquarkus.container-image.additional-tags=${{ github.sha }} \ + -Dquarkus.container-image.username=${{ github.actor }} \ + -Dquarkus.container-image.password=${{ inputs.github-token }} \ No newline at end of file diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml index 8f1206e..cf2474e 100644 --- a/.github/actions/k8s/deploy-postgres/action.yml +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -12,8 +12,6 @@ inputs: default: app.kubernetes.io/name - - runs: using: "composite" steps: diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 3692d97..d4e5699 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -6,9 +6,9 @@ on: pull_request: branches: [ main ] -permissions: - contents: read - packages: write +#permissions: +# contents: read +# packages: write jobs: build: @@ -23,35 +23,41 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '21' - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 - - - name: assemble - run: ./gradlew assemble +# - name: Set up JDK 21 +# uses: actions/setup-java@v4 +# with: +# distribution: 'temurin' +# java-version: '21' +# +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v3 +# +# - name: assemble +# run: ./gradlew assemble +# +# - name: build container +# run: ./gradlew assemble -Dquarkus.container-image.build=true +# +# - uses: azure/k8s-set-context@v3 +# with: +# method: kubeconfig +# kubeconfig: '${{ secrets.KUBECONFIG }}' +# +# - name: push & deploy to k8s +# run: | +# ./gradlew assemble \ +# -Dquarkus.kubernetes.deploy=true \ +# -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ +# -Dquarkus.container-image.registry=ghcr.io \ +# -Dquarkus.container-image.additional-tags=${{ github.sha }} \ +# -Dquarkus.container-image.username=${{ github.actor }} \ +# -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} - - name: build container - run: ./gradlew assemble -Dquarkus.container-image.build=true - - - uses: azure/k8s-set-context@v3 + - name: build & deploy quarkus + uses: ./.github/actions/k8s/build-deploy-quarkus with: - method: kubeconfig - kubeconfig: '${{ secrets.KUBECONFIG }}' - - - name: push & deploy to k8s - run: | - ./gradlew assemble \ - -Dquarkus.kubernetes.deploy=true \ - -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ - -Dquarkus.container-image.registry=ghcr.io \ - -Dquarkus.container-image.additional-tags=${{ github.sha }} \ - -Dquarkus.container-image.username=${{ github.actor }} \ - -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} + github-token: ${{ secrets.GITHUB_TOKEN }} + kube-config: ${{ secrets.KUBECONFIG }} - name: deploy postgres uses: ./.github/actions/k8s/deploy-postgres From 596cc3b68acde7aa7faa535cb0df9ff285730eee Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:07:12 +0100 Subject: [PATCH 32/53] Test extracting quarkus building as composite action --- .../k8s/build-deploy-quarkus/action.yml | 22 ++++++++++--------- .../actions/k8s/deploy-postgres/action.yml | 6 +++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/actions/k8s/build-deploy-quarkus/action.yml b/.github/actions/k8s/build-deploy-quarkus/action.yml index 80d7ff7..fd4612e 100644 --- a/.github/actions/k8s/build-deploy-quarkus/action.yml +++ b/.github/actions/k8s/build-deploy-quarkus/action.yml @@ -1,40 +1,42 @@ -name: "Build & Deploy Quarkus to k8s" +name: Build & Deploy Quarkus to k8s +description: Build & Deploy Quarkus to k8s + inputs: github-token: required: true + description: Github Token kube-config: required: true - - -permissions: - contents: read - packages: write + description: Kubernetes Config runs: - using: "composite" + using: composite steps: - name: Set up JDK 21 uses: actions/setup-java@v4 with: - distribution: 'temurin' - java-version: '21' + distribution: temurin + java-version: 21 - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: assemble + shell: bash run: ./gradlew assemble - name: build container + shell: bash run: ./gradlew assemble -Dquarkus.container-image.build=true - uses: azure/k8s-set-context@v3 with: method: kubeconfig - kubeconfig: '${{ inputs.kube-config }}' + kubeconfig: ${{ inputs.kube-config }} - name: push & deploy to k8s + shell: bash run: | ./gradlew assemble \ -Dquarkus.kubernetes.deploy=true \ diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml index cf2474e..3e1b6d8 100644 --- a/.github/actions/k8s/deploy-postgres/action.yml +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -1,4 +1,6 @@ -name: "Deploy Postgres with Anti Affinity" +name: Deploy Postgres with Anti Affinity +description: Deploy Postgres with Anti Affinity + inputs: release-name: required: true @@ -13,7 +15,7 @@ inputs: runs: - using: "composite" + using: composite steps: - name: deploy postgres uses: vimeda/helm@v1.7.0 From 31011c155dbc6fdd32ccd4ef6721235a68e6ec26 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:12:31 +0100 Subject: [PATCH 33/53] Try with working directory --- .github/workflows/k8s-quarkus-sync.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index d4e5699..6b553ac 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -55,10 +55,12 @@ jobs: - name: build & deploy quarkus uses: ./.github/actions/k8s/build-deploy-quarkus + working-directory: ./bookstore-quarkus-sync with: github-token: ${{ secrets.GITHUB_TOKEN }} kube-config: ${{ secrets.KUBECONFIG }} + - name: deploy postgres uses: ./.github/actions/k8s/deploy-postgres with: From fed9d1c58be41749a1ea24f68706075c06ea6452 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:13:43 +0100 Subject: [PATCH 34/53] Move working directory switch into action --- .github/actions/k8s/build-deploy-quarkus/action.yml | 6 ++++++ .github/workflows/k8s-quarkus-sync.yml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/actions/k8s/build-deploy-quarkus/action.yml b/.github/actions/k8s/build-deploy-quarkus/action.yml index fd4612e..46c6c83 100644 --- a/.github/actions/k8s/build-deploy-quarkus/action.yml +++ b/.github/actions/k8s/build-deploy-quarkus/action.yml @@ -8,6 +8,9 @@ inputs: kube-config: required: true description: Kubernetes Config + working-directory: + default: . + description: working directory to be used runs: @@ -24,10 +27,12 @@ runs: - name: assemble shell: bash + working-directory: ${{ inputs.working-directory}} run: ./gradlew assemble - name: build container shell: bash + working-directory: ${{ inputs.working-directory}} run: ./gradlew assemble -Dquarkus.container-image.build=true - uses: azure/k8s-set-context@v3 @@ -37,6 +42,7 @@ runs: - name: push & deploy to k8s shell: bash + working-directory: ${{ inputs.working-directory}} run: | ./gradlew assemble \ -Dquarkus.kubernetes.deploy=true \ diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 6b553ac..ebb19af 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -55,10 +55,10 @@ jobs: - name: build & deploy quarkus uses: ./.github/actions/k8s/build-deploy-quarkus - working-directory: ./bookstore-quarkus-sync with: github-token: ${{ secrets.GITHUB_TOKEN }} kube-config: ${{ secrets.KUBECONFIG }} + working-directory: ./bookstore-quarkus-sync - name: deploy postgres From bd5b1b956818ab43a04b65b726ce049684cfacd5 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:18:49 +0100 Subject: [PATCH 35/53] Remove obsolete ingress class name --- bookstore-quarkus-sync/src/main/resources/application.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/bookstore-quarkus-sync/src/main/resources/application.properties b/bookstore-quarkus-sync/src/main/resources/application.properties index 255fcc3..ee9a8ad 100644 --- a/bookstore-quarkus-sync/src/main/resources/application.properties +++ b/bookstore-quarkus-sync/src/main/resources/application.properties @@ -20,7 +20,6 @@ quarkus.kubernetes.resources.limits.memory=512Mi quarkus.kubernetes.resources.limits.cpu=1000m quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com -quarkus.kubernetes.ingress.ingressClassName=nginx quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.enabled=true quarkus.kubernetes.ingress.tls.bookstore-quarkus-sync-tls.hosts=${quarkus.kubernetes.ingress.host} quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod From b8a7a43d278b07b17ba02a3f1b317e1fefa6bf80 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:25:07 +0100 Subject: [PATCH 36/53] Remove obsolete config from pipeline --- .../k8s/build-deploy-quarkus/action.yml | 7 ++- .../actions/k8s/deploy-postgres/action.yml | 4 ++ .github/workflows/k8s-quarkus-sync.yml | 46 ++----------------- 3 files changed, 14 insertions(+), 43 deletions(-) diff --git a/.github/actions/k8s/build-deploy-quarkus/action.yml b/.github/actions/k8s/build-deploy-quarkus/action.yml index 46c6c83..8dbec56 100644 --- a/.github/actions/k8s/build-deploy-quarkus/action.yml +++ b/.github/actions/k8s/build-deploy-quarkus/action.yml @@ -1,5 +1,6 @@ name: Build & Deploy Quarkus to k8s -description: Build & Deploy Quarkus to k8s +description: Build & Deploy Quarkus to k8s (if running on deploy-branch) + inputs: github-token: @@ -11,6 +12,9 @@ inputs: working-directory: default: . description: working directory to be used + deploy-branch: + default: refs/heads/main + description: service will only be deployed for this branch runs: @@ -43,6 +47,7 @@ runs: - name: push & deploy to k8s shell: bash working-directory: ${{ inputs.working-directory}} + if: github.ref == ${{ inputs.deploy-branch }} run: | ./gradlew assemble \ -Dquarkus.kubernetes.deploy=true \ diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml index 3e1b6d8..c32375e 100644 --- a/.github/actions/k8s/deploy-postgres/action.yml +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -12,6 +12,9 @@ inputs: default: benchmarks anti-affinity-key: default: app.kubernetes.io/name + deploy-branch: + default: refs/heads/main + description: service will only be deployed for this branch runs: @@ -19,6 +22,7 @@ runs: steps: - name: deploy postgres uses: vimeda/helm@v1.7.0 + if: github.ref == ${{ inputs.deploy-branch }} with: release: ${{ inputs.release-name }} namespace: ${{ inputs.namespace }} diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index ebb19af..06f68c2 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -2,64 +2,26 @@ name: Quarkus Sync Build & Deploy on k8s on: push: - branches: [ main, feature/k8s-deployment ] - pull_request: - branches: [ main ] + branches: + - '*' -#permissions: -# contents: read -# packages: write jobs: build: name: build & push runs-on: ubuntu-latest - defaults: - run: - working-directory: ./bookstore-quarkus-sync - env: - QUARKUS_HTTP_ROOT_PATH: / steps: - uses: actions/checkout@v4 -# - name: Set up JDK 21 -# uses: actions/setup-java@v4 -# with: -# distribution: 'temurin' -# java-version: '21' -# -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v3 -# -# - name: assemble -# run: ./gradlew assemble -# -# - name: build container -# run: ./gradlew assemble -Dquarkus.container-image.build=true -# -# - uses: azure/k8s-set-context@v3 -# with: -# method: kubeconfig -# kubeconfig: '${{ secrets.KUBECONFIG }}' -# -# - name: push & deploy to k8s -# run: | -# ./gradlew assemble \ -# -Dquarkus.kubernetes.deploy=true \ -# -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -# -Dquarkus.container-image.registry=ghcr.io \ -# -Dquarkus.container-image.additional-tags=${{ github.sha }} \ -# -Dquarkus.container-image.username=${{ github.actor }} \ -# -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }} - - name: build & deploy quarkus uses: ./.github/actions/k8s/build-deploy-quarkus with: github-token: ${{ secrets.GITHUB_TOKEN }} kube-config: ${{ secrets.KUBECONFIG }} working-directory: ./bookstore-quarkus-sync - + env: + QUARKUS_HTTP_ROOT_PATH: / - name: deploy postgres uses: ./.github/actions/k8s/deploy-postgres From 12f8154a5e0d46e195d7c3ee23cc9604be2e10dc Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:26:44 +0100 Subject: [PATCH 37/53] Remove obsolete config from pipeline --- .github/workflows/k8s-quarkus-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 06f68c2..7a5467d 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -3,7 +3,7 @@ name: Quarkus Sync Build & Deploy on k8s on: push: branches: - - '*' + - '**' jobs: From d77d40428ebd49041abd1485ed2da7aa81c2a784 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:28:15 +0100 Subject: [PATCH 38/53] Provide quarkus root path via env --- .github/actions/k8s/build-deploy-quarkus/action.yml | 8 +++++++- .github/workflows/k8s-quarkus-sync.yml | 2 -- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/actions/k8s/build-deploy-quarkus/action.yml b/.github/actions/k8s/build-deploy-quarkus/action.yml index 8dbec56..0565b48 100644 --- a/.github/actions/k8s/build-deploy-quarkus/action.yml +++ b/.github/actions/k8s/build-deploy-quarkus/action.yml @@ -33,11 +33,15 @@ runs: shell: bash working-directory: ${{ inputs.working-directory}} run: ./gradlew assemble + env: + QUARKUS_HTTP_ROOT_PATH: / - name: build container shell: bash working-directory: ${{ inputs.working-directory}} run: ./gradlew assemble -Dquarkus.container-image.build=true + env: + QUARKUS_HTTP_ROOT_PATH: / - uses: azure/k8s-set-context@v3 with: @@ -55,4 +59,6 @@ runs: -Dquarkus.container-image.registry=ghcr.io \ -Dquarkus.container-image.additional-tags=${{ github.sha }} \ -Dquarkus.container-image.username=${{ github.actor }} \ - -Dquarkus.container-image.password=${{ inputs.github-token }} \ No newline at end of file + -Dquarkus.container-image.password=${{ inputs.github-token }} + env: + QUARKUS_HTTP_ROOT_PATH: / \ No newline at end of file diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index 7a5467d..aca947e 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -20,8 +20,6 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} kube-config: ${{ secrets.KUBECONFIG }} working-directory: ./bookstore-quarkus-sync - env: - QUARKUS_HTTP_ROOT_PATH: / - name: deploy postgres uses: ./.github/actions/k8s/deploy-postgres From 4a4aa32a4d5083a9bd664d1cce3e0fd97d8d449e Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:40:51 +0100 Subject: [PATCH 39/53] Test fixing if --- .github/actions/k8s/build-deploy-quarkus/action.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/actions/k8s/build-deploy-quarkus/action.yml b/.github/actions/k8s/build-deploy-quarkus/action.yml index 0565b48..048d480 100644 --- a/.github/actions/k8s/build-deploy-quarkus/action.yml +++ b/.github/actions/k8s/build-deploy-quarkus/action.yml @@ -51,10 +51,9 @@ runs: - name: push & deploy to k8s shell: bash working-directory: ${{ inputs.working-directory}} - if: github.ref == ${{ inputs.deploy-branch }} + if: ${{ github.ref == inputs.deploy-branch }} run: | - ./gradlew assemble \ - -Dquarkus.kubernetes.deploy=true \ + ./gradlew assemble -Dquarkus.kubernetes.deploy=true \ -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ -Dquarkus.container-image.registry=ghcr.io \ -Dquarkus.container-image.additional-tags=${{ github.sha }} \ From cd942f4dc7d1dbba827674d40152fe10bdf11b27 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:44:03 +0100 Subject: [PATCH 40/53] Fix if --- .github/actions/k8s/deploy-postgres/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml index c32375e..9062815 100644 --- a/.github/actions/k8s/deploy-postgres/action.yml +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -22,7 +22,7 @@ runs: steps: - name: deploy postgres uses: vimeda/helm@v1.7.0 - if: github.ref == ${{ inputs.deploy-branch }} + if: ${{ github.ref == inputs.deploy-branch }} with: release: ${{ inputs.release-name }} namespace: ${{ inputs.namespace }} From e2b83bc02839bc340b4dfa084c0058555754c8fb Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:44:19 +0100 Subject: [PATCH 41/53] Remove obsolete symbols --- .github/actions/k8s/deploy-postgres/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml index 9062815..b8b25cc 100644 --- a/.github/actions/k8s/deploy-postgres/action.yml +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -26,7 +26,7 @@ runs: with: release: ${{ inputs.release-name }} namespace: ${{ inputs.namespace }} - chart: 'oci://registry-1.docker.io/bitnamicharts/postgresql' + chart: oci://registry-1.docker.io/bitnamicharts/postgresql values: | global: postgresql: From ada2b54f030b823b0b3e9fb374c3f942430337f0 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:48:13 +0100 Subject: [PATCH 42/53] Only run quarkus-sync pipeline on changes to quarkus-sync directory --- .github/actions/k8s/build-deploy-quarkus/action.yml | 2 +- .github/actions/k8s/deploy-postgres/action.yml | 2 +- .github/workflows/k8s-quarkus-sync.yml | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/actions/k8s/build-deploy-quarkus/action.yml b/.github/actions/k8s/build-deploy-quarkus/action.yml index 048d480..5d285d4 100644 --- a/.github/actions/k8s/build-deploy-quarkus/action.yml +++ b/.github/actions/k8s/build-deploy-quarkus/action.yml @@ -51,7 +51,7 @@ runs: - name: push & deploy to k8s shell: bash working-directory: ${{ inputs.working-directory}} - if: ${{ github.ref == inputs.deploy-branch }} +# if: ${{ github.ref == inputs.deploy-branch }} # TODO FIXME enable again run: | ./gradlew assemble -Dquarkus.kubernetes.deploy=true \ -Dquarkus.container-image.group=${{ github.repository_owner }}/${{ github.event.repository.name }} \ diff --git a/.github/actions/k8s/deploy-postgres/action.yml b/.github/actions/k8s/deploy-postgres/action.yml index b8b25cc..7910aed 100644 --- a/.github/actions/k8s/deploy-postgres/action.yml +++ b/.github/actions/k8s/deploy-postgres/action.yml @@ -22,7 +22,7 @@ runs: steps: - name: deploy postgres uses: vimeda/helm@v1.7.0 - if: ${{ github.ref == inputs.deploy-branch }} +# if: ${{ github.ref == inputs.deploy-branch }} # TODO FIXME enable again with: release: ${{ inputs.release-name }} namespace: ${{ inputs.namespace }} diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index aca947e..fc7ab87 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -4,6 +4,8 @@ on: push: branches: - '**' + paths: + - bookstore-quarkus-sync jobs: From bb2d5e775d5573d8351b1b9f5000261b3afea4b7 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:49:02 +0100 Subject: [PATCH 43/53] Dummy change --- bookstore-quarkus-sync/settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookstore-quarkus-sync/settings.gradle.kts b/bookstore-quarkus-sync/settings.gradle.kts index 18f1379..5ccbedf 100644 --- a/bookstore-quarkus-sync/settings.gradle.kts +++ b/bookstore-quarkus-sync/settings.gradle.kts @@ -16,4 +16,4 @@ pluginManagement { id(quarkusPluginId) version quarkusPluginVersion } } -rootProject.name="bookstore-quarkus-sync" +rootProject.name="bookstore-quarkus-sync" \ No newline at end of file From 899447cb0f5267c121b0d781645c7b4d2003fdf4 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:51:44 +0100 Subject: [PATCH 44/53] Try fixing paths pattern --- .github/workflows/k8s-quarkus-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/k8s-quarkus-sync.yml b/.github/workflows/k8s-quarkus-sync.yml index fc7ab87..9f629aa 100644 --- a/.github/workflows/k8s-quarkus-sync.yml +++ b/.github/workflows/k8s-quarkus-sync.yml @@ -5,7 +5,7 @@ on: branches: - '**' paths: - - bookstore-quarkus-sync + - bookstore-quarkus-sync/** jobs: From 621c790bd79aa0bc9a290c470a69ad85631b2359 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:52:27 +0100 Subject: [PATCH 45/53] Dummy change --- bookstore-quarkus-sync/settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookstore-quarkus-sync/settings.gradle.kts b/bookstore-quarkus-sync/settings.gradle.kts index 5ccbedf..18f1379 100644 --- a/bookstore-quarkus-sync/settings.gradle.kts +++ b/bookstore-quarkus-sync/settings.gradle.kts @@ -16,4 +16,4 @@ pluginManagement { id(quarkusPluginId) version quarkusPluginVersion } } -rootProject.name="bookstore-quarkus-sync" \ No newline at end of file +rootProject.name="bookstore-quarkus-sync" From 39b4092ba56081f9baedca516918be45318655fd Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:57:07 +0100 Subject: [PATCH 46/53] Deploy quarkus-reactive --- .github/workflows/k8s-quarkus-reactive.yml | 31 +++++++++++++++++++ bookstore-quarkus-reactive/build.gradle.kts | 1 + .../src/main/resources/application.properties | 17 ++++++++-- 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/k8s-quarkus-reactive.yml diff --git a/.github/workflows/k8s-quarkus-reactive.yml b/.github/workflows/k8s-quarkus-reactive.yml new file mode 100644 index 0000000..564ee8a --- /dev/null +++ b/.github/workflows/k8s-quarkus-reactive.yml @@ -0,0 +1,31 @@ +name: Quarkus Reactive Build & Deploy on k8s + +on: + push: + branches: + - '**' + paths: + - bookstore-quarkus-reactive/** + + +jobs: + build: + name: build & push + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: build & deploy quarkus + uses: ./.github/actions/k8s/build-deploy-quarkus + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + kube-config: ${{ secrets.KUBECONFIG }} + working-directory: ./bookstore-quarkus-reactive + + - name: deploy postgres + uses: ./.github/actions/k8s/deploy-postgres + with: + release-name: bookstore-quarkus-reactive + anti-affinity-value: bookstore-quarkus-reactive + kube-config: ${{ secrets.KUBECONFIG }} \ No newline at end of file diff --git a/bookstore-quarkus-reactive/build.gradle.kts b/bookstore-quarkus-reactive/build.gradle.kts index 08d5171..797607e 100644 --- a/bookstore-quarkus-reactive/build.gradle.kts +++ b/bookstore-quarkus-reactive/build.gradle.kts @@ -35,6 +35,7 @@ dependencies { implementation("io.quarkus:quarkus-smallrye-health") implementation("io.quarkus:quarkus-container-image-jib") + implementation("io.quarkus:quarkus-kubernetes") testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.rest-assured:rest-assured") diff --git a/bookstore-quarkus-reactive/src/main/resources/application.properties b/bookstore-quarkus-reactive/src/main/resources/application.properties index 88149a4..4a86b26 100644 --- a/bookstore-quarkus-reactive/src/main/resources/application.properties +++ b/bookstore-quarkus-reactive/src/main/resources/application.properties @@ -22,5 +22,18 @@ quarkus.datasource.reactive.reconnect-attempts=3 quarkus.flyway.migrate-at-start=false quarkus.flyway.clean-at-start=false quarkus.flyway.baseline-on-migrate=true -# Health -quarkus.health.extensions.enabled=false \ No newline at end of file +# +# Kubernetes Deployment Config +quarkus.kubernetes.resources.requests.memory=64Mi +quarkus.kubernetes.resources.requests.cpu=50m +quarkus.kubernetes.resources.limits.memory=512Mi +quarkus.kubernetes.resources.limits.cpu=1000m +quarkus.kubernetes.ingress.expose=true +quarkus.kubernetes.ingress.host=${quarkus.application.name}.benchmarks.k8s.dev.arconsis.com +quarkus.kubernetes.ingress.tls.bookstore-quarkus-reactive-tls.enabled=true +quarkus.kubernetes.ingress.tls.bookstore-quarkus-reactive-tls.hosts=${quarkus.kubernetes.ingress.host} +quarkus.kubernetes.ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt-prod +quarkus.kubernetes.ingress.annotations."kubernetes.io/tls-acme"=true +quarkus.kubernetes.env.mapping.DB_PASSWORD.from-secret=${quarkus.application.name}-postgresql +quarkus.kubernetes.env.mapping.DB_PASSWORD.with-key=postgres-password +quarkus.kubernetes.env.vars.DB_HOST=${quarkus.application.name}-postgresql From 97892b070889451e4a240efc5210d25c04c4e6d5 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 20:59:14 +0100 Subject: [PATCH 47/53] Make gradlew executable --- bookstore-quarkus-reactive/gradlew | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 bookstore-quarkus-reactive/gradlew diff --git a/bookstore-quarkus-reactive/gradlew b/bookstore-quarkus-reactive/gradlew old mode 100644 new mode 100755 From 49f000a16152c65456cfa59d7adc3d6ab27eeeaa Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 21:08:31 +0100 Subject: [PATCH 48/53] add loaderio verification file --- .../resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 bookstore-quarkus-reactive/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt diff --git a/bookstore-quarkus-reactive/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt b/bookstore-quarkus-reactive/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt new file mode 100644 index 0000000..091d848 --- /dev/null +++ b/bookstore-quarkus-reactive/src/main/resources/META-INF/resources/loaderio-61ddb5d318dfddf075a659951abc307c.txt @@ -0,0 +1 @@ +loaderio-61ddb5d318dfddf075a659951abc307c \ No newline at end of file From 90d9ad329f69506c2aa6a7762c66d443b40c8df6 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 22:22:51 +0100 Subject: [PATCH 49/53] Push rust rocket image to ghcr --- .github/workflows/k8s-rust-rocket.yml | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/k8s-rust-rocket.yml diff --git a/.github/workflows/k8s-rust-rocket.yml b/.github/workflows/k8s-rust-rocket.yml new file mode 100644 index 0000000..b787a76 --- /dev/null +++ b/.github/workflows/k8s-rust-rocket.yml @@ -0,0 +1,30 @@ +name: Build & Deploy Rust Rocket to k8s + +on: + push: + branches: + - '**' + paths: + - bookstore-rocketrs/** + +jobs: + publish: + name: Build & Deploy RustRocket + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build, tag, and push image to Amazon ECR + run: | + docker build -t ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/bookstore-rocketrs:$GITHUB_SHA . + docker push ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/bookstore-rocketrs:$GITHUB_SHA + working-directory: ./bookstore-rocketrs From fb23d8d23b56491b49cf51dd9ede111c456a270c Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 22:23:39 +0100 Subject: [PATCH 50/53] Dummy change --- bookstore-rocketrs/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/bookstore-rocketrs/Dockerfile b/bookstore-rocketrs/Dockerfile index 355c7e1..330ab25 100644 --- a/bookstore-rocketrs/Dockerfile +++ b/bookstore-rocketrs/Dockerfile @@ -7,6 +7,7 @@ COPY . . RUN cargo build --release + # Production stage FROM debian:buster-slim RUN apt-get update && apt-get install -y libssl1.1 && apt clean && rm -rf /var/lib/apt/lists/* From 7e965cc58a22068ef71cd76c54b2da16de0d1b27 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Thu, 15 Feb 2024 22:50:57 +0100 Subject: [PATCH 51/53] Deploy rust rocket db --- .github/workflows/k8s-rust-rocket.yml | 8 ++++++++ bookstore-rocketrs/Dockerfile | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/k8s-rust-rocket.yml b/.github/workflows/k8s-rust-rocket.yml index b787a76..9e91d67 100644 --- a/.github/workflows/k8s-rust-rocket.yml +++ b/.github/workflows/k8s-rust-rocket.yml @@ -28,3 +28,11 @@ jobs: docker build -t ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/bookstore-rocketrs:$GITHUB_SHA . docker push ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}/bookstore-rocketrs:$GITHUB_SHA working-directory: ./bookstore-rocketrs + + + - name: deploy postgres + uses: ./.github/actions/k8s/deploy-postgres + with: + release-name: bookstore-quarkus-rocketrs + anti-affinity-value: bookstore-rocketrs + kube-config: ${{ secrets.KUBECONFIG }} \ No newline at end of file diff --git a/bookstore-rocketrs/Dockerfile b/bookstore-rocketrs/Dockerfile index 330ab25..355c7e1 100644 --- a/bookstore-rocketrs/Dockerfile +++ b/bookstore-rocketrs/Dockerfile @@ -7,7 +7,6 @@ COPY . . RUN cargo build --release - # Production stage FROM debian:buster-slim RUN apt-get update && apt-get install -y libssl1.1 && apt clean && rm -rf /var/lib/apt/lists/* From 4cdd7ea0d93080a8a447914e7ae9961b30b8d732 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 16 Feb 2024 00:00:33 +0100 Subject: [PATCH 52/53] Deploy rust rocket db --- .github/workflows/k8s-rust-rocket.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/k8s-rust-rocket.yml b/.github/workflows/k8s-rust-rocket.yml index 9e91d67..0c5c2ed 100644 --- a/.github/workflows/k8s-rust-rocket.yml +++ b/.github/workflows/k8s-rust-rocket.yml @@ -6,6 +6,8 @@ on: - '**' paths: - bookstore-rocketrs/** + - k8s/** + jobs: publish: @@ -30,9 +32,23 @@ jobs: working-directory: ./bookstore-rocketrs +# - name: deploy rust rocket +# uses: vimeda/helm@v1.7.0 +# # if: ${{ github.ref == inputs.deploy-branch }} # TODO FIXME enable again +# with: +# release: bookstore-rocketrs +# namespace: benchmarks +# chart: k8s/helm +# values: | +# image.name: bookstore-rocketrs +# image.tag: $GITHUB_SHA +# env: +# KUBECONFIG_FILE: ${{ secrets.KUBECONFIG }} + + - name: deploy postgres uses: ./.github/actions/k8s/deploy-postgres with: - release-name: bookstore-quarkus-rocketrs + release-name: bookstore-rocketrs anti-affinity-value: bookstore-rocketrs kube-config: ${{ secrets.KUBECONFIG }} \ No newline at end of file From c58a98c8ce9493719cf951d223f7e6f8fd10e609 Mon Sep 17 00:00:00 2001 From: Andreas Eberle Date: Fri, 16 Feb 2024 00:01:30 +0100 Subject: [PATCH 53/53] Add helm chart to deploy to k8s --- k8s/helm/.helmignore | 23 +++++ k8s/helm/Chart.yaml | 7 ++ k8s/helm/templates/NOTES.txt | 22 +++++ k8s/helm/templates/_helpers.tpl | 61 +++++++++++++ k8s/helm/templates/deployment.yaml | 83 ++++++++++++++++++ k8s/helm/templates/ingress.yaml | 61 +++++++++++++ k8s/helm/templates/service.yaml | 15 ++++ k8s/helm/values.yaml | 63 ++++++++++++++ test.yaml | 134 +++++++++++++++++++++++++++++ 9 files changed, 469 insertions(+) create mode 100644 k8s/helm/.helmignore create mode 100644 k8s/helm/Chart.yaml create mode 100644 k8s/helm/templates/NOTES.txt create mode 100644 k8s/helm/templates/_helpers.tpl create mode 100644 k8s/helm/templates/deployment.yaml create mode 100644 k8s/helm/templates/ingress.yaml create mode 100644 k8s/helm/templates/service.yaml create mode 100644 k8s/helm/values.yaml create mode 100644 test.yaml diff --git a/k8s/helm/.helmignore b/k8s/helm/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/k8s/helm/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/k8s/helm/Chart.yaml b/k8s/helm/Chart.yaml new file mode 100644 index 0000000..279246a --- /dev/null +++ b/k8s/helm/Chart.yaml @@ -0,0 +1,7 @@ +apiVersion: v2 +name: bookstore +description: A Helm chart for Kubernetes + +type: application +version: 0.1.0 +appVersion: "1.0.0" diff --git a/k8s/helm/templates/NOTES.txt b/k8s/helm/templates/NOTES.txt new file mode 100644 index 0000000..f3b73f1 --- /dev/null +++ b/k8s/helm/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ tpl $host.host $ }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "helm.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "helm.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "helm.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "helm.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/k8s/helm/templates/_helpers.tpl b/k8s/helm/templates/_helpers.tpl new file mode 100644 index 0000000..de4f19b --- /dev/null +++ b/k8s/helm/templates/_helpers.tpl @@ -0,0 +1,61 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "helm.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "helm.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "helm.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "helm.labels" -}} +helm.sh/chart: {{ include "helm.chart" . }} +{{ include "helm.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "helm.selectorLabels" -}} +app.kubernetes.io/name: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "helm.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "helm.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/k8s/helm/templates/deployment.yaml b/k8s/helm/templates/deployment.yaml new file mode 100644 index 0000000..5a4440c --- /dev/null +++ b/k8s/helm/templates/deployment.yaml @@ -0,0 +1,83 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "helm.fullname" . }} + labels: + {{- include "helm.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + {{- include "helm.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "helm.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}/{{ .Values.image.name }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP +{{/* livenessProbe:*/}} +{{/* httpGet:*/}} +{{/* path: /*/}} +{{/* port: http*/}} +{{/* readinessProbe:*/}} +{{/* httpGet:*/}} +{{/* path: /*/}} +{{/* port: http*/}} + resources: + {{- toYaml .Values.resources | nindent 12 }} + env: + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Release.Name }}-postgresql + key: postgres-password + - name: DB_HOST + value: {{ tpl .Values.db.host $ }} + - name: DB_USERNAME + value: {{ tpl .Values.db.username $ }} + - name: DB_NAME + value: {{ tpl .Values.db.name $ }} + - name: DATABASE_URL + value: postgres://postgres:postgres@db/bookstore + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/k8s/helm/templates/ingress.yaml b/k8s/helm/templates/ingress.yaml new file mode 100644 index 0000000..e299f80 --- /dev/null +++ b/k8s/helm/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "helm.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "helm.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ tpl . $ | quote }} + {{- end }} + secretName: {{ tpl .secretName $ }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ tpl .host $ | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/k8s/helm/templates/service.yaml b/k8s/helm/templates/service.yaml new file mode 100644 index 0000000..de450fc --- /dev/null +++ b/k8s/helm/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "helm.fullname" . }} + labels: + {{- include "helm.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "helm.selectorLabels" . | nindent 4 }} diff --git a/k8s/helm/values.yaml b/k8s/helm/values.yaml new file mode 100644 index 0000000..5351940 --- /dev/null +++ b/k8s/helm/values.yaml @@ -0,0 +1,63 @@ +replicaCount: 1 + +image: + repository: ghcr.io/arconsis/server_benchmarks + name: + pullPolicy: IfNotPresent + tag: + + +db: + host: "{{ .Release.Name }}-postgresql" + name: books-db + username: postgres + + +nameOverride: "" +fullnameOverride: "" + +imagePullSecrets: [] + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: + kubernetes.io/tls-acme: "true" + cert-manager.io/cluster-issuer: letsencrypt-prod + kubernetes.io/ingress.class: nginx + hosts: + - host: "{{ .Release.Name }}.benchmarks.k8s.dev.arconsis.com" + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: "{{ .Release.Name }}-tls" + hosts: + - "{{ .Release.Name }}.benchmarks.k8s.dev.arconsis.com" + +resources: + limits: + cpu: 1000m + memory: 256Mi + requests: + cpu: 10m + memory: 32Mi + diff --git a/test.yaml b/test.yaml new file mode 100644 index 0000000..60f729f --- /dev/null +++ b/test.yaml @@ -0,0 +1,134 @@ +--- +# Source: bookstore/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: bookstore-rocketrs + labels: + helm.sh/chart: bookstore-0.1.0 + app.kubernetes.io/name: bookstore-rocketrs + app.kubernetes.io/version: "1.0.0" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: bookstore-rocketrs +--- +# Source: bookstore/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bookstore-rocketrs + labels: + helm.sh/chart: bookstore-0.1.0 + app.kubernetes.io/name: bookstore-rocketrs + app.kubernetes.io/version: "1.0.0" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bookstore-rocketrs + template: + metadata: + labels: + helm.sh/chart: bookstore-0.1.0 + app.kubernetes.io/name: bookstore-rocketrs + app.kubernetes.io/version: "1.0.0" + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + {} + containers: + - name: bookstore + securityContext: + {} + image: "ghcr.io/arconsis/server_benchmarks/bookstore-rocketrs:fb23d8d23b56491b49cf51dd9ede111c456a270c" + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 80 + protocol: TCP + + + + + + + + + resources: + limits: + cpu: 1000m + memory: 256Mi + requests: + cpu: 10m + memory: 32Mi + env: + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: bookstore-rocketrs-postgresql + key: postgres-password + - name: DB_HOST + value: bookstore-rocketrs-postgresql + - name: DB_USERNAME + value: postgres + - name: DB_NAME + value: books-db +--- +# Source: bookstore/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: bookstore-rocketrs + labels: + helm.sh/chart: bookstore-0.1.0 + app.kubernetes.io/name: bookstore-rocketrs + app.kubernetes.io/version: "1.0.0" + app.kubernetes.io/managed-by: Helm + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + kubernetes.io/ingress.class: nginx + kubernetes.io/tls-acme: "true" +spec: + tls: + - hosts: + - "bookstore-rocketrs.benchmarks.k8s.dev.arconsis.com" + secretName: bookstore-rocketrs-tls + rules: + - host: "bookstore-rocketrs.benchmarks.k8s.dev.arconsis.com" + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: bookstore-rocketrs + port: + number: 80 +--- +# Source: bookstore/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: "bookstore-rocketrs-test-connection" + labels: + helm.sh/chart: bookstore-0.1.0 + app.kubernetes.io/name: bookstore-rocketrs + app.kubernetes.io/version: "1.0.0" + app.kubernetes.io/managed-by: Helm + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['bookstore-rocketrs:80'] + restartPolicy: Never