From 3d0fbf9d18be9f3078e9c427a8f3239ae5a67b53 Mon Sep 17 00:00:00 2001 From: rohit-smartsensesolutions Date: Wed, 11 Sep 2024 12:03:35 +0530 Subject: [PATCH] fix: chart workflows --- .github/workflows/chart-verification.yml | 2 + .github/workflows/dast-scan.yaml | 1 + .github/workflows/release-miw.yml | 495 +++++++++--------- .github/workflows/release-revocation.yml | 495 +++++++++--------- charts/managed-identity-wallet/Chart.lock | 2 +- charts/managed-identity-wallet/README.md | 350 +++++++------ .../tests/custom-values/deployment_test.yaml | 2 +- .../tests/default/deployment_test.yaml | 2 +- charts/managed-identity-wallet/values.yaml | 108 ++-- 9 files changed, 740 insertions(+), 717 deletions(-) diff --git a/.github/workflows/chart-verification.yml b/.github/workflows/chart-verification.yml index 47bafb3ad..07347afea 100644 --- a/.github/workflows/chart-verification.yml +++ b/.github/workflows/chart-verification.yml @@ -156,6 +156,7 @@ jobs: context: . push: true tags: kind-registry:5000/miw:testing + file: ./miw/Dockerfile - uses: actions/setup-python@v4 with: @@ -230,6 +231,7 @@ jobs: charts/managed-identity-wallet \ -n apps \ --wait \ + --timeout 10m \ --set image.tag=testing \ --set image.repository=kind-registry:5000/miw # only run if this is not a PR -OR- if there are new versions available diff --git a/.github/workflows/dast-scan.yaml b/.github/workflows/dast-scan.yaml index 243641724..afe6a25f6 100644 --- a/.github/workflows/dast-scan.yaml +++ b/.github/workflows/dast-scan.yaml @@ -77,6 +77,7 @@ jobs: context: . push: true tags: kind-registry:5000/miw:testing + file: ./miw/Dockerfile - name: Install the chart on KinD cluster run: helm install -n apps --create-namespace --wait --set image.tag=testing --set=image.repository=kind-registry:5000/miw testing charts/managed-identity-wallet diff --git a/.github/workflows/release-miw.yml b/.github/workflows/release-miw.yml index 2e79820a4..358984fe2 100644 --- a/.github/workflows/release-miw.yml +++ b/.github/workflows/release-miw.yml @@ -16,250 +16,251 @@ # SPDX-License-Identifier: Apache-2.0 --- -name: Semantic Release - MIW -on: - push: - paths: - - 'miw/src/**' - - 'miw/build.gradle/**' - - 'wallet-commons/src/**' - - 'build.gradle' - - 'gradle.properties' - - 'settings.gradle' - branches: - - main - - develop - pull_request: - paths: - - 'miw/src/**' - - 'miw/build.gradle/**' - - 'wallet-commons/src/**' - - 'build.gradle' - - 'gradle.properties' - - 'settings.gradle' - branches: - - main - - develop - -env: - IMAGE_NAMESPACE: "tractusx" - IMAGE_NAME: "managed-identity-wallet" - -jobs: - - semantic_release: - name: Repository Release - runs-on: ubuntu-latest - permissions: - # see https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs - contents: write - pull-requests: write - packages: write - outputs: - next_release: ${{ steps.semantic-release.outputs.next_release }} - will_create_new_release: ${{ steps.semantic-release.outputs.will_create_new_release }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@v2 - - - name: Setup Helm - uses: azure/setup-helm@v4.1.0 - - - name: Setup JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - # setup helm-docs as it is needed during semantic-release - - uses: gabe565/setup-helm-docs-action@v1 - name: Setup helm-docs - if: github.event_name != 'pull_request' - with: - version: v1.11.3 - - - name: Run semantic release - id: semantic-release - if: github.event_name != 'pull_request' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com - GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com - run: | - npx --yes -p @semantic-release/exec -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release - - - name: Run semantic release (dry run) - if: github.event_name == 'pull_request' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com - GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com - run: | - npx --yes -p @semantic-release/exec -p @semantic-release/github -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release --dry-run - - - name: Execute Gradle build - run: ./gradlew build - - - name: Upload build artifact - uses: actions/upload-artifact@v4 - with: - name: build - path: ./miw/build - if-no-files-found: error - retention-days: 1 - - - name: Upload Helm chart artifact - uses: actions/upload-artifact@v4 - with: - name: charts - path: ./charts - if-no-files-found: error - retention-days: 1 - - - name: Report semantic-release outputs - run: | - echo "::notice::${{ env.next_release }}" - echo "::notice::${{ env.will_create_new_release }}" - - - name: Upload jar to GitHub release - if: github.event_name != 'pull_request' && steps.semantic-release.outputs.will_create_new_release == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_VERSION: ${{ steps.semantic-release.outputs.next_release }} - run: | - echo "::notice::Uploading jar to GitHub release" - gh release upload "v$RELEASE_VERSION" ./miw/build/libs/miw-latest.jar - - docker: - name: Docker Release - needs: semantic_release - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Download build artifact - uses: actions/download-artifact@v4 - with: - name: build - path: ./miw/build - - - name: Download Helm chart artifact - uses: actions/download-artifact@v4 - with: - name: charts - path: ./charts - - # Create SemVer or ref tags dependent of trigger event - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: | - ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} - # Automatically prepare image tags; See action docs for more examples. - # semver patter will generate tags like these for example :1 :1.2 :1.2.3 - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}},value=${{ needs.semantic_release.outputs.next_release }} - type=semver,pattern={{major}},value=${{ needs.semantic_release.outputs.next_release }} - type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic_release.outputs.next_release }} - type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - - - name: DockerHub login - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - # Use existing DockerHub credentials present as secrets - username: ${{ secrets.DOCKER_HUB_USER }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Push image - uses: docker/build-push-action@v5 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - file: ./miw/Dockerfile - - # https://github.com/peter-evans/dockerhub-description - # Important step to push image description to DockerHub - - name: Update Docker Hub description - if: github.event_name != 'pull_request' - uses: peter-evans/dockerhub-description@v3 - with: - # readme-filepath defaults to toplevel README.md, Only necessary if you have a dedicated file with your 'Notice for docker images' - readme-filepath: Docker-hub-notice.md - username: ${{ secrets.DOCKER_HUB_USER }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - repository: ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} - - helm: - name: Helm Release - needs: semantic_release - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Download Helm chart artifact - uses: actions/download-artifact@v4 - with: - name: charts - path: ./charts - - - name: Install Helm - uses: azure/setup-helm@v4.1.0 - - - name: Add Helm dependency repositories - run: | - helm repo add bitnami https://charts.bitnami.com/bitnami - - - name: Configure Git - run: | - git config user.name "$GITHUB_ACTOR" - git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - - - name: Release chart - if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' - run: | - # Package MIW chart - helm_package_path=$(helm package -u -d helm-charts ./charts/managed-identity-wallet | grep -o 'to: .*' | cut -d' ' -f2-) - echo "HELM_PACKAGE_PATH=$helm_package_path" >> $GITHUB_ENV - - # Commit and push to gh-pages - git add helm-charts - git stash -- helm-charts - git reset --hard - git fetch origin - git checkout gh-pages - git stash pop - - # Generate helm repo index.yaml - helm repo index . --merge index.yaml --url https://${GITHUB_REPOSITORY_OWNER}.github.io/${GITHUB_REPOSITORY#*/}/ - git add index.yaml - - git commit -s -m "Release ${{ needs.semantic_release.outputs.next_release }}" - - git push origin gh-pages - - - name: Upload chart to GitHub release - if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_VERSION: ${{ needs.semantic_release.outputs.next_release }} - HELM_PACKAGE_PATH: ${{ env.HELM_PACKAGE_PATH }} - run: | - echo "::notice::Uploading chart to GitHub release" - gh release upload "v$RELEASE_VERSION" "$HELM_PACKAGE_PATH" + name: Semantic Release - MIW + on: + push: + paths: + - 'miw/src/**' + - 'miw/build.gradle/**' + - 'wallet-commons/src/**' + - 'build.gradle' + - 'gradle.properties' + - 'settings.gradle' + branches: + - main + - develop + pull_request: + paths: + - 'miw/src/**' + - 'miw/build.gradle/**' + - 'wallet-commons/src/**' + - 'build.gradle' + - 'gradle.properties' + - 'settings.gradle' + branches: + - main + - develop + + env: + IMAGE_NAMESPACE: "tractusx" + IMAGE_NAME: "managed-identity-wallet" + + jobs: + + semantic_release: + name: Repository Release + runs-on: ubuntu-latest + permissions: + # see https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs + contents: write + pull-requests: write + packages: write + outputs: + next_release: ${{ steps.semantic-release.outputs.next_release }} + will_create_new_release: ${{ steps.semantic-release.outputs.will_create_new_release }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action@v2 + + - name: Setup Helm + uses: azure/setup-helm@v4.1.0 + + - name: Setup JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + # setup helm-docs as it is needed during semantic-release + - uses: gabe565/setup-helm-docs-action@v1 + name: Setup helm-docs + if: github.event_name != 'pull_request' + with: + version: v1.11.3 + + - name: Run semantic release + id: semantic-release + if: github.event_name != 'pull_request' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com + GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com + run: | + npx --yes -p @semantic-release/exec -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release + + - name: Run semantic release (dry run) + if: github.event_name == 'pull_request' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com + GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com + run: | + npx --yes -p @semantic-release/exec -p @semantic-release/github -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release --dry-run + + - name: Execute Gradle build + run: ./gradlew build + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: build + path: ./miw/build + if-no-files-found: error + retention-days: 1 + + - name: Upload Helm chart artifact + uses: actions/upload-artifact@v4 + with: + name: charts + path: ./charts + if-no-files-found: error + retention-days: 1 + + - name: Report semantic-release outputs + run: | + echo "::notice::${{ env.next_release }}" + echo "::notice::${{ env.will_create_new_release }}" + + - name: Upload jar to GitHub release + if: github.event_name != 'pull_request' && steps.semantic-release.outputs.will_create_new_release == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_VERSION: ${{ steps.semantic-release.outputs.next_release }} + run: | + echo "::notice::Uploading jar to GitHub release" + gh release upload "v$RELEASE_VERSION" ./miw/build/libs/miw-latest.jar + + docker: + name: Docker Release + needs: semantic_release + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Download build artifact + uses: actions/download-artifact@v4 + with: + name: build + path: ./miw/build + + - name: Download Helm chart artifact + uses: actions/download-artifact@v4 + with: + name: charts + path: ./charts + + # Create SemVer or ref tags dependent of trigger event + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} + # Automatically prepare image tags; See action docs for more examples. + # semver patter will generate tags like these for example :1 :1.2 :1.2.3 + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}},value=${{ needs.semantic_release.outputs.next_release }} + type=semver,pattern={{major}},value=${{ needs.semantic_release.outputs.next_release }} + type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic_release.outputs.next_release }} + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} + + - name: DockerHub login + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + # Use existing DockerHub credentials present as secrets + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Push image + uses: docker/build-push-action@v5 + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + file: ./miw/Dockerfile + + # https://github.com/peter-evans/dockerhub-description + # Important step to push image description to DockerHub + - name: Update Docker Hub description + if: github.event_name != 'pull_request' + uses: peter-evans/dockerhub-description@v3 + with: + # readme-filepath defaults to toplevel README.md, Only necessary if you have a dedicated file with your 'Notice for docker images' + readme-filepath: Docker-hub-notice.md + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + repository: ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} + + helm: + name: Helm Release + needs: semantic_release + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Download Helm chart artifact + uses: actions/download-artifact@v4 + with: + name: charts + path: ./charts + + - name: Install Helm + uses: azure/setup-helm@v4.1.0 + + - name: Add Helm dependency repositories + run: | + helm repo add bitnami https://charts.bitnami.com/bitnami + + - name: Configure Git + run: | + git config user.name "$GITHUB_ACTOR" + git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + + - name: Release chart + if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' + run: | + # Package MIW chart + helm_package_path=$(helm package -u -d helm-charts ./charts/managed-identity-wallet | grep -o 'to: .*' | cut -d' ' -f2-) + echo "HELM_PACKAGE_PATH=$helm_package_path" >> $GITHUB_ENV + + # Commit and push to gh-pages + git add helm-charts + git stash -- helm-charts + git reset --hard + git fetch origin + git checkout gh-pages + git stash pop + + # Generate helm repo index.yaml + helm repo index . --merge index.yaml --url https://${GITHUB_REPOSITORY_OWNER}.github.io/${GITHUB_REPOSITORY#*/}/ + git add index.yaml + + git commit -s -m "Release ${{ needs.semantic_release.outputs.next_release }}" + + git push origin gh-pages + + - name: Upload chart to GitHub release + if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_VERSION: ${{ needs.semantic_release.outputs.next_release }} + HELM_PACKAGE_PATH: ${{ env.HELM_PACKAGE_PATH }} + run: | + echo "::notice::Uploading chart to GitHub release" + gh release upload "v$RELEASE_VERSION" "$HELM_PACKAGE_PATH" + \ No newline at end of file diff --git a/.github/workflows/release-revocation.yml b/.github/workflows/release-revocation.yml index 2eeafee7b..3a95fa1c8 100644 --- a/.github/workflows/release-revocation.yml +++ b/.github/workflows/release-revocation.yml @@ -16,250 +16,251 @@ # SPDX-License-Identifier: Apache-2.0 --- -name: Semantic Release - Revocation Service -on: - push: - paths: - - 'revocation-service/src/**' - - 'revocation-service/build.gradle/**' - - 'wallet-commons/src/**' - - 'build.gradle' - - 'gradle.properties' - - 'settings.gradle' - branches: - - main - - develop - pull_request: - paths: - - 'revocation-service/src/**' - - 'revocation-service/build.gradle/**' - - 'wallet-commons/src/**' - - 'build.gradle' - - 'gradle.properties' - - 'settings.gradle' - branches: - - main - - develop - -env: - IMAGE_NAMESPACE: "tractusx" - IMAGE_NAME: "credential-revocation-service" - -jobs: - - semantic_release: - name: Repository Release - runs-on: ubuntu-latest - permissions: - # see https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs - contents: write - pull-requests: write - packages: write - outputs: - next_release: ${{ steps.semantic-release.outputs.next_release }} - will_create_new_release: ${{ steps.semantic-release.outputs.will_create_new_release }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@v2 - - - name: Setup Helm - uses: azure/setup-helm@v4.1.0 - - - name: Setup JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - # setup helm-docs as it is needed during semantic-release - - uses: gabe565/setup-helm-docs-action@v1 - name: Setup helm-docs - if: github.event_name != 'pull_request' - with: - version: v1.11.3 - - - name: Run semantic release - id: semantic-release - if: github.event_name != 'pull_request' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com - GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com - run: | - npx --yes -p @semantic-release/exec -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release - - - name: Run semantic release (dry run) - if: github.event_name == 'pull_request' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com - GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com - run: | - npx --yes -p @semantic-release/exec -p @semantic-release/github -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release --dry-run - - - name: Execute Gradle build - run: ./gradlew build - - - name: Upload build artifact - uses: actions/upload-artifact@v4 - with: - name: build - path: ./revocation-service/build - if-no-files-found: error - retention-days: 1 - - - name: Upload Helm chart artifact - uses: actions/upload-artifact@v4 - with: - name: charts - path: ./charts - if-no-files-found: error - retention-days: 1 - - - name: Report semantic-release outputs - run: | - echo "::notice::${{ env.next_release }}" - echo "::notice::${{ env.will_create_new_release }}" - - - name: Upload jar to GitHub release - if: github.event_name != 'pull_request' && steps.semantic-release.outputs.will_create_new_release == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_VERSION: ${{ steps.semantic-release.outputs.next_release }} - run: | - echo "::notice::Uploading jar to GitHub release" - gh release upload "v$RELEASE_VERSION" ./revocation-service/build/libs/revocation-service-latest.jar - - docker: - name: Docker Release - needs: semantic_release - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Download build artifact - uses: actions/download-artifact@v4 - with: - name: build - path: ./revocation-service/build - - - name: Download Helm chart artifact - uses: actions/download-artifact@v4 - with: - name: charts - path: ./charts - - # Create SemVer or ref tags dependent of trigger event - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: | - ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} - # Automatically prepare image tags; See action docs for more examples. - # semver patter will generate tags like these for example :1 :1.2 :1.2.3 - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}},value=${{ needs.semantic_release.outputs.next_release }} - type=semver,pattern={{major}},value=${{ needs.semantic_release.outputs.next_release }} - type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic_release.outputs.next_release }} - type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - - - name: DockerHub login - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - # Use existing DockerHub credentials present as secrets - username: ${{ secrets.DOCKER_HUB_USER }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Push image - uses: docker/build-push-action@v5 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - file: ./revocation-service/Dockerfile - - # https://github.com/peter-evans/dockerhub-description - # Important step to push image description to DockerHub - - name: Update Docker Hub description - if: github.event_name != 'pull_request' - uses: peter-evans/dockerhub-description@v3 - with: - # readme-filepath defaults to toplevel README.md, Only necessary if you have a dedicated file with your 'Notice for docker images' - readme-filepath: Docker-hub-notice.md - username: ${{ secrets.DOCKER_HUB_USER }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - repository: ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} - - helm: - name: Helm Release - needs: semantic_release - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Download Helm chart artifact - uses: actions/download-artifact@v4 - with: - name: charts - path: ./charts - - - name: Install Helm - uses: azure/setup-helm@v4.1.0 - - - name: Add Helm dependency repositories - run: | - helm repo add bitnami https://charts.bitnami.com/bitnami - - - name: Configure Git - run: | - git config user.name "$GITHUB_ACTOR" - git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - - - name: Release chart - if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' - run: | - # Package Revocation-service chart,this will not work as we do not have any chart there - helm_package_path=$(helm package -u -d helm-charts ./charts/revocation-service | grep -o 'to: .*' | cut -d' ' -f2-) - echo "HELM_PACKAGE_PATH=$helm_package_path" >> $GITHUB_ENV - - # Commit and push to gh-pages - git add helm-charts - git stash -- helm-charts - git reset --hard - git fetch origin - git checkout gh-pages - git stash pop - - # Generate helm repo index.yaml - helm repo index . --merge index.yaml --url https://${GITHUB_REPOSITORY_OWNER}.github.io/${GITHUB_REPOSITORY#*/}/ - git add index.yaml - - git commit -s -m "Release ${{ needs.semantic_release.outputs.next_release }}" - - git push origin gh-pages - - - name: Upload chart to GitHub release - if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_VERSION: ${{ needs.semantic_release.outputs.next_release }} - HELM_PACKAGE_PATH: ${{ env.HELM_PACKAGE_PATH }} - run: | - echo "::notice::Uploading chart to GitHub release" - gh release upload "v$RELEASE_VERSION" "$HELM_PACKAGE_PATH" + name: Semantic Release - Revocation Service + on: + push: + paths: + - 'revocation-service/src/**' + - 'revocation-service/build.gradle/**' + - 'wallet-commons/src/**' + - 'build.gradle' + - 'gradle.properties' + - 'settings.gradle' + branches: + - main + - develop + pull_request: + paths: + - 'revocation-service/src/**' + - 'revocation-service/build.gradle/**' + - 'wallet-commons/src/**' + - 'build.gradle' + - 'gradle.properties' + - 'settings.gradle' + branches: + - main + - develop + + env: + IMAGE_NAMESPACE: "tractusx" + IMAGE_NAME: "credential-revocation-service" + + jobs: + + semantic_release: + name: Repository Release + runs-on: ubuntu-latest + permissions: + # see https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs + contents: write + pull-requests: write + packages: write + outputs: + next_release: ${{ steps.semantic-release.outputs.next_release }} + will_create_new_release: ${{ steps.semantic-release.outputs.will_create_new_release }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action@v2 + + - name: Setup Helm + uses: azure/setup-helm@v4.1.0 + + - name: Setup JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + # setup helm-docs as it is needed during semantic-release + - uses: gabe565/setup-helm-docs-action@v1 + name: Setup helm-docs + if: github.event_name != 'pull_request' + with: + version: v1.11.3 + + - name: Run semantic release + id: semantic-release + if: github.event_name != 'pull_request' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com + GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com + run: | + npx --yes -p @semantic-release/exec -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release + + - name: Run semantic release (dry run) + if: github.event_name == 'pull_request' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com + GIT_COMMITTER_EMAIL: ${{ github.actor }}@users.noreply.github.com + run: | + npx --yes -p @semantic-release/exec -p @semantic-release/github -p @semantic-release/changelog -p @semantic-release/git -p @semantic-release/commit-analyzer -p @semantic-release/release-notes-generator semantic-release --dry-run + + - name: Execute Gradle build + run: ./gradlew build + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: build + path: ./revocation-service/build + if-no-files-found: error + retention-days: 1 + + - name: Upload Helm chart artifact + uses: actions/upload-artifact@v4 + with: + name: charts + path: ./charts + if-no-files-found: error + retention-days: 1 + + - name: Report semantic-release outputs + run: | + echo "::notice::${{ env.next_release }}" + echo "::notice::${{ env.will_create_new_release }}" + + - name: Upload jar to GitHub release + if: github.event_name != 'pull_request' && steps.semantic-release.outputs.will_create_new_release == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_VERSION: ${{ steps.semantic-release.outputs.next_release }} + run: | + echo "::notice::Uploading jar to GitHub release" + gh release upload "v$RELEASE_VERSION" ./revocation-service/build/libs/revocation-service-latest.jar + + docker: + name: Docker Release + needs: semantic_release + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Download build artifact + uses: actions/download-artifact@v4 + with: + name: build + path: ./revocation-service/build + + - name: Download Helm chart artifact + uses: actions/download-artifact@v4 + with: + name: charts + path: ./charts + + # Create SemVer or ref tags dependent of trigger event + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} + # Automatically prepare image tags; See action docs for more examples. + # semver patter will generate tags like these for example :1 :1.2 :1.2.3 + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}},value=${{ needs.semantic_release.outputs.next_release }} + type=semver,pattern={{major}},value=${{ needs.semantic_release.outputs.next_release }} + type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic_release.outputs.next_release }} + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} + + - name: DockerHub login + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + # Use existing DockerHub credentials present as secrets + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Push image + uses: docker/build-push-action@v5 + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + file: ./revocation-service/Dockerfile + + # https://github.com/peter-evans/dockerhub-description + # Important step to push image description to DockerHub + - name: Update Docker Hub description + if: github.event_name != 'pull_request' + uses: peter-evans/dockerhub-description@v3 + with: + # readme-filepath defaults to toplevel README.md, Only necessary if you have a dedicated file with your 'Notice for docker images' + readme-filepath: Docker-hub-notice.md + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + repository: ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} + + helm: + name: Helm Release + needs: semantic_release + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Download Helm chart artifact + uses: actions/download-artifact@v4 + with: + name: charts + path: ./charts + + - name: Install Helm + uses: azure/setup-helm@v4.1.0 + + - name: Add Helm dependency repositories + run: | + helm repo add bitnami https://charts.bitnami.com/bitnami + + - name: Configure Git + run: | + git config user.name "$GITHUB_ACTOR" + git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + + - name: Release chart + if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' + run: | + # Package Revocation-service chart,this will not work as we do not have any chart there + helm_package_path=$(helm package -u -d helm-charts ./charts/revocation-service | grep -o 'to: .*' | cut -d' ' -f2-) + echo "HELM_PACKAGE_PATH=$helm_package_path" >> $GITHUB_ENV + + # Commit and push to gh-pages + git add helm-charts + git stash -- helm-charts + git reset --hard + git fetch origin + git checkout gh-pages + git stash pop + + # Generate helm repo index.yaml + helm repo index . --merge index.yaml --url https://${GITHUB_REPOSITORY_OWNER}.github.io/${GITHUB_REPOSITORY#*/}/ + git add index.yaml + + git commit -s -m "Release ${{ needs.semantic_release.outputs.next_release }}" + + git push origin gh-pages + + - name: Upload chart to GitHub release + if: github.event_name != 'pull_request' && needs.semantic_release.outputs.will_create_new_release == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_VERSION: ${{ needs.semantic_release.outputs.next_release }} + HELM_PACKAGE_PATH: ${{ env.HELM_PACKAGE_PATH }} + run: | + echo "::notice::Uploading chart to GitHub release" + gh release upload "v$RELEASE_VERSION" "$HELM_PACKAGE_PATH" + \ No newline at end of file diff --git a/charts/managed-identity-wallet/Chart.lock b/charts/managed-identity-wallet/Chart.lock index 2fd400183..259b055b1 100644 --- a/charts/managed-identity-wallet/Chart.lock +++ b/charts/managed-identity-wallet/Chart.lock @@ -12,4 +12,4 @@ dependencies: repository: file://charts/pgadmin4 version: 1.19.0 digest: sha256:886b90f763f2320a1601e15b06264065a764f51fc34d592c0f0a08bd76f01635 -generated: "2024-08-22T18:04:25.649769241+05:30" +generated: "2024-09-11T11:53:55.835418982+05:30" diff --git a/charts/managed-identity-wallet/README.md b/charts/managed-identity-wallet/README.md index fb5ba79c6..c157e1e50 100644 --- a/charts/managed-identity-wallet/README.md +++ b/charts/managed-identity-wallet/README.md @@ -1,6 +1,6 @@ -# Managed Identity Wallet - Verifiable Credential Revocation Service +# managed-identity-wallet ![Version: 1.0.0-develop.4](https://img.shields.io/badge/Version-1.0.0--develop.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.0.0-develop.4](https://img.shields.io/badge/AppVersion-1.0.0--develop.4-informational?style=flat-square) @@ -41,9 +41,9 @@ And at the same it shall support an uninterrupted tracking and tracing and docum ### Install Chart - helm install [RELEASE_NAME] charts/managed-identity-wallet + helm install [RELEASE_NAME] tractusx-dev/managed-identity-wallet - #This will spin up the container for Managed Identity Wallet application, Verifiable Credential Revocation Service application, Keycloak and Postgresql + helm install [RELEASE_NAME] tractusx-stable/managed-identity-wallet

(back to top)

@@ -75,179 +75,183 @@ See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command document ## Requirements -| Repository | Name | Version | -| ---------------------------------- | ---------- | ------- | -| file://charts/pgadmin4 | pgadmin4 | 1.19.0 | -| https://charts.bitnami.com/bitnami | common | 2.x.x | -| https://charts.bitnami.com/bitnami | keycloak | 15.1.6 | +| Repository | Name | Version | +|------------|------|---------| +| file://charts/pgadmin4 | pgadmin4 | 1.19.0 | +| https://charts.bitnami.com/bitnami | common | 2.x.x | +| https://charts.bitnami.com/bitnami | keycloak | 15.1.6 | | https://charts.bitnami.com/bitnami | postgresql | 11.9.13 |

(back to top)

## Values -| Key | Type | Default | Description | -| ------------------------------------------------ | ------ | -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| affinity | object | `{}` | Affinity configuration | -| envs | object | `{}` | envs Parameters for the application (will be provided as environment variables) | -| extraVolumeMounts | list | `[]` | add volume mounts to the miw deployment | -| extraVolumes | list | `[]` | add volumes to the miw deployment | -| fullnameOverride | string | `""` | String to fully override common.names.fullname template | -| image.pullPolicy | string | `"Always"` | PullPolicy | -| image.repository | string | `"tractusx/managed-identity-wallet"` | Image repository | -| image.tag | string | `""` | Image tag (empty one will use "appVersion" value from chart definition) | -| ingress.annotations | object | `{}` | Ingress annotations | -| ingress.enabled | bool | `false` | Enable ingress controller resource | -| ingress.hosts | list | `[]` | Ingress accepted hostnames | -| ingress.tls | list | `[]` | Ingress TLS configuration | -| initContainers | list | `[]` | add initContainers to the miw deployment | -| keycloak.auth.adminPassword | string | `""` | Keycloak admin password | -| keycloak.auth.adminUser | string | `"admin"` | Keycloak admin user | -| keycloak.enabled | bool | `true` | Enable to deploy Keycloak | -| keycloak.extraEnvVars | list | `[]` | Extra environment variables | -| keycloak.ingress.annotations | object | `{}` | | -| keycloak.ingress.enabled | bool | `false` | | -| keycloak.ingress.hosts | list | `[]` | | -| keycloak.ingress.tls | list | `[]` | | -| keycloak.keycloakConfigCli.backoffLimit | int | `2` | Number of retries before considering a Job as failed | -| keycloak.keycloakConfigCli.enabled | bool | `true` | Enable to create the miw playground realm | -| keycloak.keycloakConfigCli.existingConfigmap | string | `"keycloak-realm-config"` | Existing configmap name for the realm configuration | -| keycloak.postgresql.auth.database | string | `"miw_keycloak"` | Database name | -| keycloak.postgresql.auth.password | string | `""` | KeycloakPostgresql password to set (if empty one is generated) | -| keycloak.postgresql.auth.username | string | `"miw_keycloak"` | Keycloak PostgreSQL user | -| keycloak.postgresql.enabled | bool | `true` | Enable to deploy PostgreSQL | -| keycloak.postgresql.nameOverride | string | `"keycloak-postgresql"` | Name of the PostgreSQL chart to deploy. Mandatory when the MIW deploys a PostgreSQL chart, too. | -| livenessProbe | object | `{"enabled":true,"failureThreshold":3,"initialDelaySeconds":20,"periodSeconds":5,"timeoutSeconds":15}` | Kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | -| livenessProbe.enabled | bool | `true` | Enables/Disables the livenessProbe at all | -| livenessProbe.failureThreshold | int | `3` | When a probe fails, Kubernetes will try failureThreshold times before giving up. Giving up in case of liveness probe means restarting the container. | -| livenessProbe.initialDelaySeconds | int | `20` | Number of seconds after the container has started before readiness probe are initiated. | -| livenessProbe.periodSeconds | int | `5` | How often (in seconds) to perform the probe | -| livenessProbe.timeoutSeconds | int | `15` | Number of seconds after which the probe times out. | -| miw.authorityWallet.bpn | string | `"BPNL000000000000"` | Authority Wallet BPNL | -| miw.authorityWallet.name | string | `""` | Authority Wallet Name | -| miw.database.encryptionKey.secret | string | `""` | Existing secret for database encryption key | -| miw.database.encryptionKey.secretKey | string | `""` | Existing secret key for database encryption key | -| miw.database.encryptionKey.value | string | `""` | Database encryption key for confidential data. Ignored if `secret` is set. If empty a secret with 32 random alphanumeric chars is generated. | -| miw.database.host | string | `"{{ .Release.Name }}-postgresql"` | Database host | -| miw.database.name | string | `"miw_app"` | Database name | -| miw.database.port | int | `5432` | Database port | -| miw.database.secret | string | `"{{ .Release.Name }}-postgresql"` | Existing secret name for the database password | -| miw.database.secretPasswordKey | string | `""` | Existing secret key for the database password | -| miw.database.useSSL | bool | `false` | Set to true to enable SSL connection to the database | -| miw.database.user | string | `"miw"` | Database user | -| miw.environment | string | `"dev"` | Runtime environment. Should be ether local, dev, int or prod | -| miw.host | string | `"{{ .Release.Name }}-managed-identity-wallet:8080"` | Host name | -| miw.keycloak.clientId | string | `"miw_private_client"` | Keycloak client id | -| miw.keycloak.realm | string | `"miw_test"` | Keycloak realm | -| miw.keycloak.url | string | `"http://{{ .Release.Name }}-keycloak"` | Keycloak URL | -| miw.logging.level | string | `"INFO"` | Log level. Should be ether ERROR, WARN, INFO, DEBUG, or TRACE. | -| miw.ssi.enforceHttpsInDidWebResolution | bool | `true` | Enable to use HTTPS in DID Web Resolution | -| miw.ssi.vcExpiryDate | string | `""` | Verifiable Credential expiry date. Format 'dd-MM-yyyy'. If empty it is set to 31-12- | -| nameOverride | string | `""` | String to partially override common.names.fullname template (will maintain the release name) | -| networkPolicy.enabled | bool | `false` | If `true` network policy will be created to restrict access to managed-identity-wallet | -| networkPolicy.from | list | `[{"namespaceSelector":{}}]` | Specify from rule network policy for miw (defaults to all namespaces) | -| nodeSelector | object | `{"kubernetes.io/os":"linux"}` | NodeSelector configuration | -| pgadmin4.enabled | bool | `false` | Enable to deploy pgAdmin | -| pgadmin4.env.email | string | `"admin@miw.com"` | Preset the admin user email | -| pgadmin4.env.password | string | `"very-secret-password"` | preset password (there is no auto-generated password) | -| pgadmin4.extraServerDefinitions.enabled | bool | `true` | enable the predefined server for pgadmin | -| pgadmin4.extraServerDefinitions.servers | object | `{}` | See [here](https://github.com/rowanruseler/helm-charts/blob/9b970b2e419c2300dfbb3f827a985157098a0287/charts/pgadmin4/values.yaml#L84) how to configure the predefined servers | -| pgadmin4.ingress.annotations | object | `{}` | | -| pgadmin4.ingress.enabled | bool | `false` | Enagle pgAdmin ingress | -| pgadmin4.ingress.hosts | list | `[]` | See [here](https://github.com/rowanruseler/helm-charts/blob/9b970b2e419c2300dfbb3f827a985157098a0287/charts/pgadmin4/values.yaml#L104) how to configure the ingress host(s) | -| pgadmin4.ingress.tls | list | `[]` | See [here](https://github.com/rowanruseler/helm-charts/blob/9b970b2e419c2300dfbb3f827a985157098a0287/charts/pgadmin4/values.yaml#L109) how to configure tls for the ingress host(s) | -| podAnnotations | object | `{}` | PodAnnotation configuration | -| podSecurityContext | object | `{}` | PodSecurityContext | -| postgresql.auth.database | string | `"miw_app"` | Postgresql database to create | -| postgresql.auth.enablePostgresUser | bool | `false` | Enable postgresql admin user | -| postgresql.auth.password | string | `""` | Postgresql password to set (if empty one is generated) | -| postgresql.auth.postgresPassword | string | `""` | Postgresql admin user password | -| postgresql.auth.username | string | `"miw"` | Postgresql user to create | -| postgresql.backup.cronjob.schedule | string | `"* */6 * * *"` | Backup schedule | -| postgresql.backup.cronjob.storage.existingClaim | string | `""` | Name of an existing PVC to use | -| postgresql.backup.cronjob.storage.resourcePolicy | string | `"keep"` | Set resource policy to "keep" to avoid removing PVCs during a helm delete operation | -| postgresql.backup.cronjob.storage.size | string | `"8Gi"` | PVC Storage Request for the backup data volume | -| postgresql.backup.enabled | bool | `false` | Enable to create a backup cronjob | -| postgresql.enabled | bool | `true` | Enable to deploy Postgresql | -| readinessProbe | object | `{"enabled":true,"failureThreshold":3,"initialDelaySeconds":30,"periodSeconds":5,"successThreshold":1,"timeoutSeconds":5}` | Kubernetes [readiness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | -| readinessProbe.enabled | bool | `true` | Enables/Disables the readinessProbe at all | -| readinessProbe.failureThreshold | int | `3` | When a probe fails, Kubernetes will try failureThreshold times before giving up. In case of readiness probe the Pod will be marked Unready. | -| readinessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before readiness probe are initiated. | -| readinessProbe.periodSeconds | int | `5` | How often (in seconds) to perform the probe | -| readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the probe to be considered successful after having failed. | -| readinessProbe.timeoutSeconds | int | `5` | Number of seconds after which the probe times out. | -| replicaCount | int | `1` | The amount of replicas to run | -| resources.limits.cpu | int | `2` | CPU resource limits | -| resources.limits.memory | string | `"1Gi"` | Memory resource limits | -| resources.requests.cpu | string | `"250m"` | CPU resource requests | -| resources.requests.memory | string | `"500Mi"` | Memory resource requests | -| secrets | object | `{}` | Parameters for the application (will be stored as secrets - so, for passwords, ...) | -| securityContext.allowPrivilegeEscalation | bool | `false` | Allow privilege escalation | -| securityContext.privileged | bool | `false` | Enable privileged container | -| securityContext.runAsGroup | int | `11111` | Group ID used to run the container | -| securityContext.runAsNonRoot | bool | `true` | Enable to run the container as a non-root user | -| securityContext.runAsUser | int | `11111` | User ID used to run the container | -| service.port | int | `8080` | Kubernetes Service port | -| service.type | string | `"ClusterIP"` | Kubernetes Service type | -| serviceAccount.annotations | object | `{}` | Annotations to add to the ServiceAccount | -| serviceAccount.create | bool | `true` | Enable creation of ServiceAccount | -| serviceAccount.name | string | `""` | The name of the ServiceAccount to use. | -| tolerations | list | `[]` | Tolerations configuration | -| vcrs.replicaCount | int | `1` | Number of replicas to run | -| vcrs.url | string | `"https://example.com"` | Application URL | -| vcrs.vcContexts | string | `"https://www.w3.org/2018/credentials/v1, https://w3id.org/vc/status-list/2021/v1"` | App VC context | -| vcrs.domain.url | string | `"https://example.com"` | App domain | -| vcrs.domain.host | string | `"localhost"` | The application name | -| vcrs.appName | string | `"verifiable-credential-revocation-service"` | The configmap name | -| vcrs.appPort | string | `"8081"` | The application port | -| vcrs.appProfile | string | `"local"` | The application profile | -| vcrs.applicationLogLevel | string | `"DEBUG"` | The application log level | -| vcrs.configName | string | `"verifiable-credential-revocation-service-config"` | The service name | -| vcrs.serviceName | string | `"verifiable-credential-revocation-service"` | The secret name | -| vcrs.secretName | string | `"verifiable-credential-revocation-service-secret"` | The secret name | -| vcrs.ingressName | string | `"verifiable-credential-revocation-service-ingress"` | Ingress name | -| vcrs.image.repository | string | `"docker.io/example"` | Image repository | -| vcrs.image.pullPolicy | string | `"IfNotPresent"` | PullPolicy | -| vcrs.image.tag | string | `"latest"` | Image tag (empty one will use "appVersion" value from chart definition) | -| vcrs.resources.requests.cpu | string | `"250m"` | CPU resource requests | -| vcrs.resources.requests.memory | string | `"512Mi"` | Memory resource requests | -| vcrs.resources.limits.cpu | string | `"500m"` | CPU resource limits | -| vcrs.resources.limits.memory | string | `"1Gi"` | Memory resource limits | -| vcrs.livenessProbe.enabled | bool | `true` | Enables/Disables the livenessProbe | -| vcrs.livenessProbe.failureThreshold | int | `5` | Failure threshold for liveness probe | -| vcrs.livenessProbe.initialDelaySeconds | int | `60` | Initial delay before liveness probe starts | -| vcrs.livenessProbe.timeoutSeconds | int | `30` | Timeout for liveness probe | -| vcrs.livenessProbe.periodSeconds | int | `15` | How often to perform liveness probe | -| vcrs.readinessProbe.enabled | bool | `true` | Enables/Disables the readinessProbe | -| vcrs.readinessProbe.failureThreshold | int | `5` | Failure threshold for readiness probe | -| vcrs.readinessProbe.initialDelaySeconds | int | `60` | Initial delay before readiness probe starts | -| vcrs.readinessProbe.timeoutSeconds | int | `15` | Timeout for readiness probe | -| vcrs.readinessProbe.periodSeconds | int | `15` | How often to perform readiness probe | -| vcrs.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the readiness probe to be considered successful | -| vcrs.ingress.enabled | bool | `false` | Enable to deploy ingress | -| vcrs.ingress.tls | bool | `false` | TLS configuration for ingress | -| vcrs.ingress.urlPrefix | string | `/` | URL prefix for ingress | -| vcrs.ingress.className | string | `"nginx"` | Ingress class name | -| vcrs.ingress.annotations | object | `{}` | Ingress annotations | -| vcrs.ingress.service.type | string | `"ClusterIP"` | Kubernetes Service type | -| vcrs.ingress.service.port | int | `8081` | Kubernetes Service port | -| vcrs.database.databaseHost | string | `"managed-identity-wallet-postgresql"` | The Database Host | -| vcrs.database.databasePort | int | `5432` | The Database Port | -| vcrs.database.databaseName | string | `"vcrs_app"` | The Database Name | -| vcrs.database.databaseUseSSL | bool | `false` | The Database SSL | -| vcrs.database.databaseUsername | string | `"vcrs"` | The Database Username | -| vcrs.database.databaseConnectionPoolSize | int | `10` | The Database connection pool size | -| vcrs.database.databasepass | string | `""` | The Database password | -| vcrs.swagger.enableSwaggerUi | bool | `true` | Enable Swagger UI | -| vcrs.swagger.enableApiDoc | bool | `true` | Enable Swagger API Doc | -| vcrs.security.serviceSecurityEnabed | bool | `true` | Enable application security | -| vcrs.keycloak.enabled | bool | `false` | Enable Keycloak | -| vcrs.keycloak.keycloakRealm | string | `"miw_test"` | Keycloak Realm | -| vcrs.keycloak.clientId | string | `"miw_private_client"` | Keycloak Client ID | -| vcrs.keycloak.publicClientId | string | `"miw_public_client"` | Keycloak Public Client ID | -| vcrs.keycloak.authServerUrl | string | `"http://{{ .Release.Name }}-keycloak"` | Keycloak Auth Server URL | -| vcrs.logging.revocation | string | `"INFO"` | Logging method for revocation | - +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity configuration | +| envs | object | `{}` | envs Parameters for the application (will be provided as environment variables) | +| extraVolumeMounts | list | `[]` | | +| extraVolumes | list | `[]` | add volumes to the miw deployment | +| fullnameOverride | string | `""` | String to fully override common.names.fullname template | +| image.pullPolicy | string | `"Always"` | PullPolicy | +| image.repository | string | `"tractusx/managed-identity-wallet"` | Image repository | +| image.tag | string | `""` | Image tag (empty one will use "appVersion" value from chart definition) | +| imagePullSecrets | list | `[]` | | +| ingress | object | `{"annotations":{},"className":"nginx","enabled":false,"hosts":[],"tls":[]}` | Ingress Configuration | +| ingress.annotations | object | `{}` | Ingress annotations | +| ingress.enabled | bool | `false` | Enable ingress controller resource | +| ingress.hosts | list | `[]` | Ingress accepted hostnames | +| ingress.tls | list | `[]` | Ingress TLS configuration | +| initContainers | list | `[]` | add initContainers to the miw deployment | +| keycloak | object | `{"auth":{"adminPassword":"","adminUser":"admin"},"enabled":true,"extraEnvVars":[],"ingress":{"annotations":{},"enabled":false,"hosts":[],"tls":[]},"keycloakConfigCli":{"backoffLimit":2,"enabled":true,"existingConfigmap":"keycloak-realm-config"},"postgresql":{"auth":{"database":"miw_keycloak","password":"defaultpassword","username":"miw_keycloak"},"enabled":true,"nameOverride":"keycloak-postgresql","volumePermissions":{"enabled":true}}}` | Values for KEYCLOAK | +| keycloak.auth.adminPassword | string | `""` | Keycloak admin password | +| keycloak.auth.adminUser | string | `"admin"` | Keycloak admin user | +| keycloak.enabled | bool | `true` | Enable to deploy Keycloak | +| keycloak.extraEnvVars | list | `[]` | Extra environment variables | +| keycloak.ingress.annotations | object | `{}` | Ingress annotations | +| keycloak.ingress.enabled | bool | `false` | Enable ingress controller resource | +| keycloak.ingress.hosts | list | `[]` | Ingress accepted hostnames | +| keycloak.ingress.tls | list | `[]` | Ingress TLS configuration | +| keycloak.keycloakConfigCli.backoffLimit | int | `2` | Number of retries before considering a Job as failed | +| keycloak.keycloakConfigCli.enabled | bool | `true` | Enable to create the miw playground realm | +| keycloak.keycloakConfigCli.existingConfigmap | string | `"keycloak-realm-config"` | Existing configmap name for the realm configuration | +| keycloak.postgresql.auth.database | string | `"miw_keycloak"` | Database name | +| keycloak.postgresql.auth.password | string | `"defaultpassword"` | KeycloakPostgresql password to set (if empty one is generated) | +| keycloak.postgresql.auth.username | string | `"miw_keycloak"` | Postgresql admin user password | +| keycloak.postgresql.enabled | bool | `true` | Enable to deploy PostgreSQL | +| keycloak.postgresql.nameOverride | string | `"keycloak-postgresql"` | Name of the PostgreSQL chart to deploy. Mandatory when the MIW deploys a PostgreSQL chart, too. | +| miw | object | `{"authorityWallet":{"bpn":"BPNL000000000000","name":""},"database":{"encryptionKey":{"secret":"","secretKey":"","value":""},"host":"{{ .Release.Name }}-postgresql","name":"miw_app","port":5432,"secret":"verifiable-credential-revocation-service","secretPasswordKey":"password","useSSL":false,"user":"miw"},"environment":"dev","host":"{{ .Release.Name }}-managed-identity-wallet:8080","keycloak":{"clientId":"miw_private_client","realm":"miw_test","url":"http://{{ .Release.Name }}-keycloak"},"livenessProbe":{"enabled":true,"failureThreshold":3,"initialDelaySeconds":20,"periodSeconds":5,"timeoutSeconds":15},"logging":{"level":"INFO"},"readinessProbe":{"enabled":true,"failureThreshold":3,"initialDelaySeconds":30,"periodSeconds":5,"successThreshold":1,"timeoutSeconds":5},"ssi":{"enforceHttpsInDidWebResolution":true,"vcExpiryDate":""}}` | Values for MIW | +| miw.authorityWallet.bpn | string | `"BPNL000000000000"` | Authority Wallet BPNL | +| miw.authorityWallet.name | string | `""` | Authority Wallet Name | +| miw.database.encryptionKey | object | `{"secret":"","secretKey":"","value":""}` | Password encryption configuratons | +| miw.database.encryptionKey.secret | string | `""` | Existing secret for database encryption key | +| miw.database.encryptionKey.secretKey | string | `""` | Existing secret key for database encryption key | +| miw.database.encryptionKey.value | string | `""` | Database encryption key for confidential data. Ignored if `secret` is set. If empty a secret with 32 random alphanumeric chars is generated. | +| miw.database.host | string | `"{{ .Release.Name }}-postgresql"` | Database host | +| miw.database.name | string | `"miw_app"` | Database name | +| miw.database.port | int | `5432` | Database port | +| miw.database.secret | string | `"verifiable-credential-revocation-service"` | Existing secret name for the database password | +| miw.database.secretPasswordKey | string | `"password"` | Existing secret key for the database password | +| miw.database.useSSL | bool | `false` | Set to true to enable SSL connection to the database | +| miw.database.user | string | `"miw"` | Database user | +| miw.environment | string | `"dev"` | Runtime environment. Should be ether local, dev, int or prod | +| miw.host | string | `"{{ .Release.Name }}-managed-identity-wallet:8080"` | Host name | +| miw.keycloak.clientId | string | `"miw_private_client"` | Keycloak client id | +| miw.keycloak.realm | string | `"miw_test"` | Keycloak realm | +| miw.keycloak.url | string | `"http://{{ .Release.Name }}-keycloak"` | Keycloak URL | +| miw.livenessProbe | object | `{"enabled":true,"failureThreshold":3,"initialDelaySeconds":20,"periodSeconds":5,"timeoutSeconds":15}` | Kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | +| miw.livenessProbe.enabled | bool | `true` | Enables/Disables the livenessProbe at all | +| miw.livenessProbe.failureThreshold | int | `3` | When a probe fails, Kubernetes will try failureThreshold times before giving up. Giving up in case of liveness probe means restarting the container. | +| miw.livenessProbe.initialDelaySeconds | int | `20` | Number of seconds after the container has started before readiness probe are initiated. | +| miw.livenessProbe.periodSeconds | int | `5` | How often (in seconds) to perform the probe | +| miw.livenessProbe.timeoutSeconds | int | `15` | Number of seconds after which the probe times out. | +| miw.logging.level | string | `"INFO"` | Log level. Should be ether ERROR, WARN, INFO, DEBUG, or TRACE. | +| miw.readinessProbe | object | `{"enabled":true,"failureThreshold":3,"initialDelaySeconds":30,"periodSeconds":5,"successThreshold":1,"timeoutSeconds":5}` | Kubernetes [readiness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | +| miw.readinessProbe.enabled | bool | `true` | Enables/Disables the readinessProbe at all | +| miw.readinessProbe.failureThreshold | int | `3` | When a probe fails, Kubernetes will try failureThreshold times before giving up. In case of readiness probe the Pod will be marked Unready. | +| miw.readinessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before readiness probe are initiated. | +| miw.readinessProbe.periodSeconds | int | `5` | How often (in seconds) to perform the probe | +| miw.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the probe to be considered successful after having failed. | +| miw.readinessProbe.timeoutSeconds | int | `5` | Number of seconds after which the probe times out. | +| miw.ssi.enforceHttpsInDidWebResolution | bool | `true` | Enable to use HTTPS in DID Web Resolution | +| miw.ssi.vcExpiryDate | string | `""` | Verifiable Credential expiry date. Format 'dd-MM-yyyy'. If empty it is set to 31-12- | +| nameOverride | string | `""` | String to partially override common.names.fullname template (will maintain the release name) | +| networkPolicy.enabled | bool | `false` | If `true` network policy will be created to restrict access to managed-identity-wallet | +| networkPolicy.from | list | `[{"namespaceSelector":{}}]` | Specify from rule network policy for miw (defaults to all namespaces) | +| nodeSelector | object | `{"kubernetes.io/os":"linux"}` | NodeSelector configuration | +| pgadmin4 | object | `{"enabled":false,"env":{"email":"admin@miw.com","password":"very-secret-password"},"extraServerDefinitions":{"enabled":true,"servers":{}},"ingress":{"annotations":{},"enabled":false,"hosts":[],"tls":[]}}` | Values for PGADMIN For more information on how to configure the pgadmin chart see https://artifacthub.io/packages/helm/runix/pgadmin4. | +| pgadmin4.enabled | bool | `false` | Enable to deploy pgAdmin | +| pgadmin4.env.email | string | `"admin@miw.com"` | Preset the admin user email | +| pgadmin4.env.password | string | `"very-secret-password"` | preset password (there is no auto-generated password) | +| pgadmin4.extraServerDefinitions.enabled | bool | `true` | enable the predefined server for pgadmin | +| pgadmin4.extraServerDefinitions.servers | object | `{}` | See [here](https://github.com/rowanruseler/helm-charts/blob/9b970b2e419c2300dfbb3f827a985157098a0287/charts/pgadmin4/values.yaml#L84) how to configure the predefined servers | +| pgadmin4.ingress.enabled | bool | `false` | Enagle pgAdmin ingress | +| pgadmin4.ingress.hosts | list | `[]` | See [here](https://github.com/rowanruseler/helm-charts/blob/9b970b2e419c2300dfbb3f827a985157098a0287/charts/pgadmin4/values.yaml#L104) how to configure the ingress host(s) | +| pgadmin4.ingress.tls | list | `[]` | See [here](https://github.com/rowanruseler/helm-charts/blob/9b970b2e419c2300dfbb3f827a985157098a0287/charts/pgadmin4/values.yaml#L109) how to configure tls for the ingress host(s) | +| podAnnotations | object | `{}` | PodAnnotation configuration | +| podSecurityContext | object | `{}` | Pod security configurations | +| postgresql | object | `{"auth":{"database":"miw_app","enablePostgresUser":true,"existingSecret":"verifiable-credential-revocation-service","username":"miw"},"backup":{"cronjob":{"schedule":"* */6 * * *","storage":{"existingClaim":"","resourcePolicy":"keep","size":"8Gi"}},"enabled":false},"enabled":true,"image":{"debug":true,"tag":"16-debian-12"},"primary":{"extraVolumeMounts":[{"mountPath":"/docker-entrypoint-initdb.d/seed","name":"postgres-seed"}],"extraVolumes":[{"name":"postgres-seed","persistentVolumeClaim":{"claimName":"postgres-seed-pvc"}}],"initdb":{"password":"defaultpassword","scripts":{"init.sql":"CREATE DATABASE vcrs_app;\nCREATE USER vcrs WITH ENCRYPTED PASSWORD 'defaultpassword';\nGRANT ALL PRIVILEGES ON DATABASE vcrs_app TO vcrs;\n\\c vcrs_app\nGRANT ALL ON SCHEMA public TO vcrs;\n"},"user":"postgres"}},"volumePermissions":{"enabled":true}}` | Values for POSTGRESQL For more information on how to configure the PostgreSQL chart see https://github.com/bitnami/charts/tree/main/bitnami/postgresql. | +| postgresql.auth.database | string | `"miw_app"` | Postgresql database to create | +| postgresql.auth.enablePostgresUser | bool | `true` | Enable postgresql admin user | +| postgresql.auth.existingSecret | string | `"verifiable-credential-revocation-service"` | Postgresql root-user and non-root user secret | +| postgresql.auth.username | string | `"miw"` | Postgresql user to create | +| postgresql.backup.cronjob | object | `{"schedule":"* */6 * * *","storage":{"existingClaim":"","resourcePolicy":"keep","size":"8Gi"}}` | Cronjob Configuration | +| postgresql.backup.cronjob.schedule | string | `"* */6 * * *"` | Backup schedule | +| postgresql.backup.cronjob.storage.existingClaim | string | `""` | Name of an existing PVC to use | +| postgresql.backup.cronjob.storage.resourcePolicy | string | `"keep"` | Set resource policy to "keep" to avoid removing PVCs during a helm delete operation | +| postgresql.backup.cronjob.storage.size | string | `"8Gi"` | PVC Storage Request for the backup data volume | +| postgresql.backup.enabled | bool | `false` | Enable to create a backup cronjob | +| postgresql.enabled | bool | `true` | Enable to deploy Postgresql | +| postgresql.image.debug | bool | `true` | Debug logs | +| replicaCount | int | `1` | The amount of replicas to run | +| resources.limits.cpu | int | `2` | CPU resource limits | +| resources.limits.memory | string | `"1Gi"` | Memory resource limits | +| resources.requests.cpu | string | `"250m"` | CPU resource requests | +| resources.requests.memory | string | `"500Mi"` | Memory resource requests | +| secrets | object | `{}` | Parameters for the application (will be stored as secrets - so, for passwords, ...) | +| securityContext | object | `{"allowPrivilegeEscalation":false,"privileged":false,"runAsGroup":11111,"runAsNonRoot":true,"runAsUser":11111}` | Pod security parameters | +| securityContext.allowPrivilegeEscalation | bool | `false` | Allow privilege escalation | +| securityContext.privileged | bool | `false` | Enable privileged container | +| securityContext.runAsGroup | int | `11111` | Group ID used to run the container | +| securityContext.runAsNonRoot | bool | `true` | Enable to run the container as a non-root user | +| securityContext.runAsUser | int | `11111` | User ID used to run the container | +| service.port | int | `8080` | Kubernetes Service port | +| service.type | string | `"ClusterIP"` | Kubernetes Service type | +| serviceAccount.annotations | object | `{}` | Annotations to add to the ServiceAccount | +| serviceAccount.create | bool | `true` | Enable creation of ServiceAccount | +| serviceAccount.name | string | `""` | The name of the ServiceAccount to use. | +| tolerations | list | `[]` | Tolerations configuration | +| vcrs | object | `{"configName":"verifiable-credential-revocation-service","database":{"encryptionKey":{"secret":"","secretKey":"","value":""}},"env":{"APPLICATION_LOG_LEVEL":"DEBUG","APPLICATION_NAME":"verifiable-credential-revocation-service","APPLICATION_PORT":8081,"APPLICATION_PROFILE":"local","APP_LOG_LEVEL":"INFO","AUTH_SERVER_URL":"http://{{ .Release.Name }}-keycloak","DATABASE_CONNECTION_POOL_SIZE":10,"DATABASE_HOST":"managed-identity-wallet-postgresql","DATABASE_NAME":"vcrs_app","DATABASE_PORT":5432,"DATABASE_USERNAME":"vcrs","DATABASE_USE_SSL_COMMUNICATION":false,"DOMAIN_URL":"https://977d-203-129-213-107.ngrok-free.app","ENABLE_API_DOC":true,"ENABLE_SWAGGER_UI":true,"KEYCLOAK_CLIENT_ID":"miw_private_client","KEYCLOAK_PUBLIC_CLIENT_ID":"miw_public_client","KEYCLOAK_REALM":"miw_test","MIW_URL":"https://a888-203-129-213-107.ngrok-free.app","SERVICE_SECURITY_ENABLED":true,"VC_SCHEMA_LINK":"https://www.w3.org/2018/credentials/v1, https://cofinity-x.github.io/schema-registry/w3c/v1.0/BitstringStatusList.json"},"fullnameOverride":"verifiable-credential-revocation-service","host":"localhost","image":{"pullPolicy":"IfNotPresent","repository":"public.ecr.aws/w6s7t8e0/tractusx/verifiable-credential-revocation-service","tag":"latest"},"ingress":{"annotations":{},"className":"","enabled":false,"hosts":null,"service":{"port":8081,"type":"ClusterIP"},"tls":[]},"ingressName":"verifiable-credential-revocation-service-ingress","livenessProbe":{"enabled":true,"failureThreshold":5,"initialDelaySeconds":60,"periodSeconds":15,"timeoutSeconds":30},"nameOverride":"verifiable-credential-revocation-service","readinessProbe":{"enabled":true,"failureThreshold":5,"initialDelaySeconds":60,"periodSeconds":15,"successThreshold":1,"timeoutSeconds":15},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"1Gi"},"requests":{"cpu":"250m","memory":"512Mi"}},"secretName":"verifiable-credential-revocation-service","secrets":{"DATABASE_PASSWORD":"defaultpassword","password":"defaultpassword","postgres-password":"defaultpassword"},"serviceName":"verifiable-credential-revocation-service"}` | Values for Verifiable Credential Revocation Service application | +| vcrs.configName | string | `"verifiable-credential-revocation-service"` | ConfigMap Name | +| vcrs.database.encryptionKey.secret | string | `""` | Existing secret for database encryption key | +| vcrs.database.encryptionKey.secretKey | string | `""` | Existing secret key for database encryption key | +| vcrs.database.encryptionKey.value | string | `""` | Database encryption key for confidential data. Ignored if `secret` is set. If empty a secret with 32 random alphanumeric chars is generated. | +| vcrs.env.APPLICATION_LOG_LEVEL | string | `"DEBUG"` | The application log level | +| vcrs.env.APPLICATION_NAME | string | `"verifiable-credential-revocation-service"` | The application name | +| vcrs.env.APPLICATION_PORT | int | `8081` | The application port | +| vcrs.env.APPLICATION_PROFILE | string | `"local"` | The application profile | +| vcrs.env.AUTH_SERVER_URL | string | `"http://{{ .Release.Name }}-keycloak"` | Auth URL for Keycloak | +| vcrs.env.DATABASE_CONNECTION_POOL_SIZE | int | `10` | The Database connection pool size | +| vcrs.env.DATABASE_HOST | string | `"managed-identity-wallet-postgresql"` | The Database Host | +| vcrs.env.DATABASE_NAME | string | `"vcrs_app"` | The Database Name | +| vcrs.env.DATABASE_PORT | int | `5432` | The Database Port | +| vcrs.env.DATABASE_USERNAME | string | `"vcrs"` | The Database Name | +| vcrs.env.DATABASE_USE_SSL_COMMUNICATION | bool | `false` | The Database SSL | +| vcrs.env.ENABLE_API_DOC | bool | `true` | Swagger Api Doc | +| vcrs.env.ENABLE_SWAGGER_UI | bool | `true` | Swagger UI config | +| vcrs.env.KEYCLOAK_CLIENT_ID | string | `"miw_private_client"` | ClientID Config | +| vcrs.env.KEYCLOAK_PUBLIC_CLIENT_ID | string | `"miw_public_client"` | ClientID Config | +| vcrs.env.KEYCLOAK_REALM | string | `"miw_test"` | KeyClocak Configurations | +| vcrs.env.MIW_URL | string | `"https://a888-203-129-213-107.ngrok-free.app"` | Revocation application configuration | +| vcrs.fullnameOverride | string | `"verifiable-credential-revocation-service"` | String to partially override common.names.fullname template (will maintain the release name) | +| vcrs.host | string | `"localhost"` | Revocation application configuration | +| vcrs.image.pullPolicy | string | `"IfNotPresent"` | PullPolicy | +| vcrs.image.repository | string | `"public.ecr.aws/w6s7t8e0/tractusx/verifiable-credential-revocation-service"` | Image repository | +| vcrs.image.tag | string | `"latest"` | Image tag (empty one will use "appVersion" value from chart definition) | +| vcrs.ingress.service.port | int | `8081` | Kubernetes Service port | +| vcrs.ingress.service.type | string | `"ClusterIP"` | Kubernetes Service type | +| vcrs.livenessProbe | object | `{"enabled":true,"failureThreshold":5,"initialDelaySeconds":60,"periodSeconds":15,"timeoutSeconds":30}` | Kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | +| vcrs.livenessProbe.enabled | bool | `true` | Enables/Disables the livenessProbe at all | +| vcrs.livenessProbe.failureThreshold | int | `5` | When a probe fails, Kubernetes will try failureThreshold times before giving up. Giving up in case of liveness probe means restarting the container. | +| vcrs.livenessProbe.initialDelaySeconds | int | `60` | Number of seconds after the container has started before readiness probes are initiated. | +| vcrs.livenessProbe.periodSeconds | int | `15` | How often (in seconds) to perform the probe | +| vcrs.livenessProbe.timeoutSeconds | int | `30` | Number of seconds after which the probe times out. | +| vcrs.nameOverride | string | `"verifiable-credential-revocation-service"` | The configmap name | +| vcrs.readinessProbe.enabled | bool | `true` | Enables/Disables the readinessProbe at all | +| vcrs.readinessProbe.failureThreshold | int | `5` | When a probe fails, Kubernetes will try failureThreshold times before giving up. In case of readiness probe the Pod will be marked Unready. | +| vcrs.readinessProbe.initialDelaySeconds | int | `60` | Number of seconds after the container has started before readiness probe are initiated. | +| vcrs.readinessProbe.periodSeconds | int | `15` | How often (in seconds) to perform the probe | +| vcrs.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the probe to be considered successful after having failed. | +| vcrs.readinessProbe.timeoutSeconds | int | `15` | Number of seconds after which the probe times out. | +| vcrs.resources.limits.cpu | string | `"500m"` | CPU resource limits | +| vcrs.resources.limits.memory | string | `"1Gi"` | Memory resource limits | +| vcrs.resources.requests.cpu | string | `"250m"` | CPU resource requests | +| vcrs.resources.requests.memory | string | `"512Mi"` | Memory resource requests | +| vcrs.secretName | string | `"verifiable-credential-revocation-service"` | The Secret name | +| vcrs.secrets.DATABASE_PASSWORD | string | `"defaultpassword"` | The Database Password | +| vcrs.secrets.password | string | `"defaultpassword"` | Postgresql password for MIW non-root User | +| vcrs.secrets.postgres-password | string | `"defaultpassword"` | Postgresql password for postgres root-user | +| vcrs.serviceName | string | `"verifiable-credential-revocation-service"` | The Service name | For more information on how to configure the Keycloak see - https://github.com/bitnami/charts/tree/main/bitnami/keycloak. @@ -315,10 +319,10 @@ when deploying the MIW in a production environment: ## Maintainers -| Name | Email | Url | -| -------------- | ---------------------------------- | ---------------------------------- | +| Name | Email | Url | +| ---- | ------ | --- | | Dominik Pinsel | | | -| Rohit Solanki | | | +| Rohit Solanki | | |

(back to top)

diff --git a/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml b/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml index 029f0e0aa..cca4627ad 100644 --- a/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml +++ b/charts/managed-identity-wallet/tests/custom-values/deployment_test.yaml @@ -82,7 +82,7 @@ tests: valueFrom: secretKeyRef: key: password - name: RELEASE-NAME-postgresql + name: verifiable-credential-revocation-service - name: APPLICATION_PORT value: "8080" - name: VC_EXPIRY_DATE diff --git a/charts/managed-identity-wallet/tests/default/deployment_test.yaml b/charts/managed-identity-wallet/tests/default/deployment_test.yaml index 1e2d3d0b7..42b3df296 100644 --- a/charts/managed-identity-wallet/tests/default/deployment_test.yaml +++ b/charts/managed-identity-wallet/tests/default/deployment_test.yaml @@ -137,7 +137,7 @@ tests: valueFrom: secretKeyRef: key: password - name: RELEASE-NAME-postgresql + name: verifiable-credential-revocation-service - name: APPLICATION_PORT value: "8080" - name: VC_EXPIRY_DATE diff --git a/charts/managed-identity-wallet/values.yaml b/charts/managed-identity-wallet/values.yaml index 327e51b1a..09844c059 100644 --- a/charts/managed-identity-wallet/values.yaml +++ b/charts/managed-identity-wallet/values.yaml @@ -16,9 +16,8 @@ # # SPDX-License-Identifier: Apache-2.0 ############################################################### -# -# ----------------------------------------------- Values for Managed Identity Wallet ----------------------------------------------- # -# + +# -- Values for Managed Identity Wallet # -- The amount of replicas to run replicaCount: 1 # -- String to partially override common.names.fullname template (will maintain the release name) @@ -32,6 +31,7 @@ image: pullPolicy: Always # -- Image tag (empty one will use "appVersion" value from chart definition) tag: "" +imagePullSecrets: [] # -- Parameters for the application (will be stored as secrets - so, for passwords, ...) secrets: {} # -- envs Parameters for the application (will be provided as environment variables) @@ -48,8 +48,6 @@ service: type: ClusterIP # -- Kubernetes Service port port: 8080 -# -- Image pull secrets -imagePullSecrets: [] # -- Ingress Configuration ingress: # -- Enable ingress controller resource @@ -67,6 +65,7 @@ ingress: # - secretName: chart-example-tls # hosts: # - chart-example.local + className: nginx # -- Pod security configurations podSecurityContext: {} # -- Pod security parameters @@ -114,9 +113,7 @@ networkPolicy: # -- add volumes to the miw deployment extraVolumes: [] extraVolumeMounts: [] -# -# -----------------------------------------------MIW----------------------------------------------- # -# +# -- Values for MIW miw: ## @param miw.host Host name ## @param miw.logging.level Log level. Should be ether ERROR, WARN, INFO, DEBUG, or TRACE. @@ -150,7 +147,7 @@ miw: # -- Database name name: "miw_app" # -- Existing secret name for the database password - secret: "{{ .Release.Name }}-postgresql" + secret: "verifiable-credential-revocation-service" # -- Existing secret key for the database password secretPasswordKey: "password" # -- Password encryption configuratons @@ -194,32 +191,45 @@ miw: successThreshold: 1 # -- Number of seconds after which the probe times out. timeoutSeconds: 5 -# ----------------------------------------------- KEYCLOAK ----------------------------------------------- # -# For more information on how to configure the Keycloak chart see https://github.com/bitnami/charts/tree/main/bitnami/keycloak. + # For more information on how to configure the Keycloak chart see https://github.com/bitnami/charts/tree/main/bitnami/keycloak. +# -- Values for KEYCLOAK keycloak: # -- Enable to deploy Keycloak enabled: true # -- Extra environment variables extraEnvVars: [] - # - name: KEYCLOAK_HOSTNAME - # value: "{{ .Release.Name }}-keycloak" + # - name: KEYCLOAK_HOSTNAME + # value: "keycloak" postgresql: # -- Name of the PostgreSQL chart to deploy. Mandatory when the MIW deploys a PostgreSQL chart, too. nameOverride: "keycloak-postgresql" # -- Enable to deploy PostgreSQL enabled: true auth: - # -- Keycloak PostgreSQL user + # -- Postgresql admin user password username: "miw_keycloak" # -- KeycloakPostgresql password to set (if empty one is generated) - password: "" + password: "defaultpassword" # -- Database name database: "miw_keycloak" + volumePermissions: + enabled: true ingress: + # -- Enable ingress controller resource enabled: false + # -- Ingress annotations annotations: {} + # -- Ingress accepted hostnames hosts: [] + # - host: chart-example.local + # paths: + # - path: / + # pathType: Prefix + # -- Ingress TLS configuration tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local auth: # -- Keycloak admin user adminUser: "admin" @@ -232,20 +242,22 @@ keycloak: existingConfigmap: keycloak-realm-config # -- Number of retries before considering a Job as failed backoffLimit: 2 -# ----------------------------------------------- POSTGRESQL ----------------------------------------------- # +# -- Values for POSTGRESQL # For more information on how to configure the PostgreSQL chart see https://github.com/bitnami/charts/tree/main/bitnami/postgresql. postgresql: # -- Enable to deploy Postgresql enabled: true + image: + tag: "16-debian-12" + # -- Debug logs + debug: true auth: # -- Enable postgresql admin user enablePostgresUser: true - # -- Postgresql admin user password - postgresPassword: "adminpass" + # -- Postgresql root-user and non-root user secret + existingSecret: "verifiable-credential-revocation-service" # -- Postgresql user to create username: "miw" - # -- Postgresql password to set (if empty one is generated) - password: "adminpass" # -- Postgresql database to create database: "miw_app" # -- Creating a new database for VCRS application (Edit the DB configurations as required in configmap) @@ -259,18 +271,18 @@ postgresql: name: postgres-seed initdb: user: "postgres" - password: "adminpass" + password: "defaultpassword" scripts: init.sql: | CREATE DATABASE vcrs_app; - CREATE USER vcrs WITH ENCRYPTED PASSWORD 'adminpass'; + CREATE USER vcrs WITH ENCRYPTED PASSWORD 'defaultpassword'; GRANT ALL PRIVILEGES ON DATABASE vcrs_app TO vcrs; \c vcrs_app GRANT ALL ON SCHEMA public TO vcrs; backup: # -- Enable to create a backup cronjob enabled: false - #Cronjob Configuration + # -- Cronjob Configuration cronjob: # -- Backup schedule schedule: "* */6 * * *" @@ -284,9 +296,8 @@ postgresql: size: "8Gi" volumePermissions: enabled: true -# ----------------------------------------------- PGADMIN ----------------------------------------------- # +# -- Values for PGADMIN # For more information on how to configure the pgadmin chart see https://artifacthub.io/packages/helm/runix/pgadmin4. -# (Here we're using a stripped-down version of the pgadmin chart, to just ) pgadmin4: # -- Enable to deploy pgAdmin enabled: false @@ -328,9 +339,7 @@ pgadmin4: subPath: servers.json mountPath: "/pgadmin4/servers.json" readOnly: true -# -# ----------------------------------------------- Values for Verifiable Credential Revocation Service application ----------------------------------------------- # -# +# -- Values for Verifiable Credential Revocation Service application vcrs: replicaCount: 1 # -- Revocation application configuration @@ -339,12 +348,12 @@ vcrs: nameOverride: "verifiable-credential-revocation-service" # -- String to partially override common.names.fullname template (will maintain the release name) fullnameOverride: "verifiable-credential-revocation-service" - # -- ConfigMap Name - configName: "verifiable-credential-revocation-service-config" + # -- ConfigMap Name + configName: "verifiable-credential-revocation-service" # -- The Service name serviceName: "verifiable-credential-revocation-service" # -- The Secret name - secretName: "verifiable-credential-revocation-service-secret" + secretName: "verifiable-credential-revocation-service" image: # -- Image repository repository: public.ecr.aws/w6s7t8e0/tractusx/verifiable-credential-revocation-service @@ -360,12 +369,12 @@ vcrs: # -- The application profile APPLICATION_PROFILE: local # -- The Database Host - DATABASE_HOST: "{{ .Release.Name }}-postgresql" + DATABASE_HOST: managed-identity-wallet-postgresql # -- The Database Port DATABASE_PORT: 5432 # -- The Database Name DATABASE_NAME: vcrs_app - # -- The Database SSL + # -- The Database SSL DATABASE_USE_SSL_COMMUNICATION: false # -- The Database Name DATABASE_USERNAME: vcrs @@ -381,7 +390,7 @@ vcrs: SERVICE_SECURITY_ENABLED: true # -- KeyClocak Configurations KEYCLOAK_REALM: miw_test - # -- ClientID Config + # -- ClientID Config KEYCLOAK_CLIENT_ID: miw_private_client # -- ClientID Config KEYCLOAK_PUBLIC_CLIENT_ID: miw_public_client @@ -395,7 +404,11 @@ vcrs: APP_LOG_LEVEL: INFO secrets: # -- The Database Password - DATABASE_PASSWORD: "adminpass" + DATABASE_PASSWORD: "defaultpassword" + # -- Postgresql password for MIW non-root User + password: "defaultpassword" + # -- Postgresql password for postgres root-user + postgres-password: "defaultpassword" resources: requests: # -- CPU resource requests @@ -434,21 +447,22 @@ vcrs: # -- Number of seconds after which the probe times out. timeoutSeconds: 15 # -- ingress configuration + ingressName: "verifiable-credential-revocation-service-ingress" ingress: enabled: false - className: "nginx" - annotations: - kubernetes.io/ingress.class: "nginx" - kubernetes.io/tls-acme: "true" + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" hosts: - - host: vcrs.example.org - paths: - - path: / - pathType: Prefix - tls: - - secretName: chart-example-tls - hosts: - - vcrs.example.org + # - host: chart-example.local + # paths: + # - path: / + # pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local service: # -- Kubernetes Service type type: ClusterIP