From f1eadf739f4896f5301d881bc49bc211a721e383 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Thu, 18 Apr 2024 23:30:09 -0400 Subject: [PATCH] `score-compose init|generate` (#119) * Makefile * make score-compose|compose-up|compose-test * Fix compose.override * app vs. workload vs. container * Fix container image * Fix container image * Fix container image in helm * Fix container name in Helm * prepare container image for helm * fix typo --- .github/workflows/open-pr.yml | 35 ++++++---------- .gitignore | 5 +++ Makefile | 42 +++++++++++++++++++ score/humanitec.score.yaml | 2 +- ...re-with-file-content-in-shared-values.yaml | 4 +- score/score-with-file-source.yaml | 4 +- score/score-with-shared-values.yaml | 4 +- score/score.deploy.yaml | 2 +- score/score.yaml | 4 +- 9 files changed, 70 insertions(+), 32 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile diff --git a/.github/workflows/open-pr.yml b/.github/workflows/open-pr.yml index 8f2122f..30caa4f 100644 --- a/.github/workflows/open-pr.yml +++ b/.github/workflows/open-pr.yml @@ -12,7 +12,8 @@ env: IMAGE_NAME: ${{ secrets.REGISTRY_LOCATION }}-docker.pkg.dev/${{ secrets.PROJECT_ID }}/${{ secrets.REGISTRY_NAME }}/${{ vars.APP_NAME }} SCORE_COMPOSE_VERSION: 'latest' SCORE_HELM_VERSION: 'latest' - WORKLOAD_NAME: my-sample-app + WORKLOAD_NAME: my-sample-workload + CONTAINER_NAME: my-sample-container HUMCTL_VERSION: '0.21.0' jobs: build-run-test-push: @@ -36,40 +37,30 @@ jobs: file: score-compose token: ${{ secrets.GITHUB_TOKEN }} version: ${{ env.SCORE_COMPOSE_VERSION }} - - name: generate docker compose files + - name: score-compose run: | - docker build -t ${{ env.IMAGE_NAME }}:${{ env.ENVIRONMENT_ID }} app/ - score-compose run \ - --build app/ \ - -f score/score.yaml \ - -o compose.yaml + make score-compose cat < compose.override.yaml services: - ${{ env.WORKLOAD_NAME }}: - image: ${{ env.IMAGE_NAME }}:${{ env.ENVIRONMENT_ID }} + ${{ env.WORKLOAD_NAME }}-${{ env.CONTAINER_NAME }}: read_only: true cap_drop: - ALL user: "1000" EOF - - name: build & run container + - name: compose-up run: | - docker compose \ - up \ - --build \ - -d \ - --wait \ - --wait-timeout 30 - - name: test container + make compose-up + - name: compose-test run: | sleep 10 - curl \ - -s \ - --connect-timeout 30 \ - localhost:8080 + make compose-test - name: create kind cluster run: | kind create cluster + - name: prepare container image + run: | + docker tag sail-sharp-${{ env.WORKLOAD_NAME }}-${{ env.CONTAINER_NAME }} ${{ env.IMAGE_NAME }}:${{ env.ENVIRONMENT_ID }} kind load docker-image ${{ env.IMAGE_NAME }}:${{ env.ENVIRONMENT_ID }} - name: install score-helm uses: score-spec/setup-score@v2 @@ -92,7 +83,7 @@ jobs: ${{ env.WORKLOAD_NAME }} \ score-helm-charts/workload \ --values ${{ env.WORKLOAD_NAME }}-values.yaml \ - --set containers.${{ env.WORKLOAD_NAME }}.image.name=${{ env.IMAGE_NAME }}:${{ env.ENVIRONMENT_ID }} \ + --set containers.${{ env.CONTAINER_NAME }}.image.name=${{ env.IMAGE_NAME }}:${{ env.ENVIRONMENT_ID }} \ --wait \ --timeout=30s kubectl wait \ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9996364 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.score-compose/99-default.provisioners.yaml +.score-compose/state.yaml +.score-compose/mounts/routing-ToNP4f/nginx.conf +.score-compose/mounts/routing-opq6wX/nginx.conf +compose.yaml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3854943 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +score-compose: + score-compose init \ + --no-sample + score-compose generate score/score.yaml \ + --build my-sample-container=app/ \ + --override-property containers.my-sample-container.variables.MESSAGE="Hello, Compose!" + +compose-up: + docker compose up --build -d + +compose-test: + curl localhost:8080 + +compose-down: + docker compose down -v --remove-orphans + +score-helm: + score-helm run \ + -f score.yaml \ + -p containers.my-sample-container.image=sail-sharp-my-sample-app-my-sample-app \ + -p containers.my-sample-container.variables.MESSAGE="Hello, Kubernetes!" \ + -o values.yaml + +NAMESPACE ?= default +k8s-up: + helm upgrade \ + -n ${NAMESPACE} \ + --install \ + --create-namespace \ + my-sample-workload \ + --repo https://score-spec.github.io/score-helm-charts \ + workload \ + --values values.yaml \ + --set containers.my-sample-container.image.name=registry.humanitec.io/public/sample-score-app:latest + +k8s-test: + kubectl port-forward service/my-sample-workload 8080:8080 + +k8s-down: + helm uninstall \ + -n ${NAMESPACE} \ + my-sample-workload \ No newline at end of file diff --git a/score/humanitec.score.yaml b/score/humanitec.score.yaml index 21f1bb1..1ded19b 100644 --- a/score/humanitec.score.yaml +++ b/score/humanitec.score.yaml @@ -2,7 +2,7 @@ apiVersion: humanitec.org/v1b1 profile: humanitec/default-module spec: containers: - my-sample-app: + my-sample-container: env: - name: POD_NAME value: "${pod.metadata.name}" diff --git a/score/score-with-file-content-in-shared-values.yaml b/score/score-with-file-content-in-shared-values.yaml index a8c08e0..1009f22 100644 --- a/score/score-with-file-content-in-shared-values.yaml +++ b/score/score-with-file-content-in-shared-values.yaml @@ -1,8 +1,8 @@ apiVersion: score.dev/v1b1 metadata: - name: my-sample-app + name: my-sample-workload containers: - my-sample-app: + my-sample-container: image: . resources: limits: diff --git a/score/score-with-file-source.yaml b/score/score-with-file-source.yaml index b850b69..4932066 100644 --- a/score/score-with-file-source.yaml +++ b/score/score-with-file-source.yaml @@ -1,8 +1,8 @@ apiVersion: score.dev/v1b1 metadata: - name: my-sample-app + name: my-sample-workload containers: - my-sample-app: + my-sample-container: image: . resources: limits: diff --git a/score/score-with-shared-values.yaml b/score/score-with-shared-values.yaml index e3aa58d..997a366 100644 --- a/score/score-with-shared-values.yaml +++ b/score/score-with-shared-values.yaml @@ -1,8 +1,8 @@ apiVersion: score.dev/v1b1 metadata: - name: my-sample-app + name: my-sample-workload containers: - my-sample-app: + my-sample-container: image: . resources: limits: diff --git a/score/score.deploy.yaml b/score/score.deploy.yaml index b1c78fc..6fee83d 100644 --- a/score/score.deploy.yaml +++ b/score/score.deploy.yaml @@ -1,6 +1,6 @@ apiVersion: config.humanitec.io/v1b1 kind: ScoreDeployConfig workloads: - - name: my-sample-app/my-sample-app + - name: my-sample-app/my-sample-workload specFile: ./score.yaml extensionsFile: ./humanitec.score.yaml \ No newline at end of file diff --git a/score/score.yaml b/score/score.yaml index 7c56300..bbb98b3 100644 --- a/score/score.yaml +++ b/score/score.yaml @@ -1,8 +1,8 @@ apiVersion: score.dev/v1b1 metadata: - name: my-sample-app + name: my-sample-workload containers: - my-sample-app: + my-sample-container: image: . resources: limits: