From 98108989754533ca4d944cb7806a4d8c651e6661 Mon Sep 17 00:00:00 2001 From: liu-hm19 Date: Wed, 12 Jun 2024 17:46:02 +0800 Subject: [PATCH] feat: update example apps with latest modules (#162) --- .github/workflows/apply.yml | 192 +++++++++++------------ .github/workflows/preview.yml | 3 +- .gitignore | 3 + example/nginx/dev/kcl.mod | 6 +- example/nginx/dev/main.k | 7 +- example/nginx/project.yaml | 2 - example/service-multi-stack/base/base.k | 6 +- example/service-multi-stack/dev/kcl.mod | 5 +- example/service-multi-stack/dev/main.k | 12 +- example/service-multi-stack/prod/kcl.mod | 5 +- example/service-multi-stack/prod/main.k | 24 +-- example/service-multi-stack/project.yaml | 2 - example/simple-job/dev/kcl.mod | 3 +- example/simple-job/dev/main.k | 6 +- example/simple-job/project.yaml | 2 - example/simple-service/dev/kcl.mod | 9 +- example/simple-service/dev/main.k | 8 +- example/wordpress-cloud-rds/prod/kcl.mod | 7 +- example/wordpress-cloud-rds/prod/main.k | 6 +- example/wordpress-cloud-rds/project.yaml | 4 +- example/wordpress-local-db/prod/kcl.mod | 7 +- example/wordpress-local-db/prod/main.k | 6 +- 22 files changed, 169 insertions(+), 156 deletions(-) diff --git a/.github/workflows/apply.yml b/.github/workflows/apply.yml index 0b7332df..9dbaa073 100644 --- a/.github/workflows/apply.yml +++ b/.github/workflows/apply.yml @@ -1,96 +1,96 @@ -name: Apply -on: - push: - branches: - - "main" - -jobs: - get-changed-project-stack: - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install Python - uses: actions/setup-python@v4 - with: - python-version: 3.9 - - - name: Install Pytest Html - run: python3 -m pip install pytest-html pyyaml -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com - - - name: Git Diff - id: git-diff - uses: technote-space/get-diff-action@v6 - - - name: Get Changed Projects and Stacks - id: get-changed-projects-and-stacks - env: - CHANGED_PATHS: ${{ steps.git-diff.outputs.diff }} - run: | - export CHANGED_PATHS="${{ steps.git-diff.outputs.diff }}" - python3 hack/get_changed_projects_and_stacks.py - - - name: Print Changed Projects and Stacks - run: | - echo "Changed projects: ${{ steps.get-changed-projects-and-stacks.outputs.changed_projects }}" - echo "Changed stacks: ${{ steps.get-changed-projects-and-stacks.outputs.changed_stacks }}" - outputs: - changed_projects: ${{ steps.get-changed-projects-and-stacks.outputs.changed_projects }} - changed_stacks: ${{ steps.get-changed-projects-and-stacks.outputs.changed_stacks }} - - apply: - needs: [ get-changed-project-stack ] - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install Kusion - run: curl https://www.kusionstack.io/scripts/install.sh | sh -s 0.12.0-rc.1 - - - name: Install Python - uses: actions/setup-python@v4 - with: - python-version: 3.9 - - - name: Install Pytest Html - run: python3 -m pip install pytest-html pyyaml -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com - - - name: Setup K3d&K3s - uses: nolar/setup-k3d-k3s@v1 - - - name: Apply - id: apply - env: - CHANGED_STACKS: ${{ needs.get-changed-project-stack.outputs.changed_stacks }} - OSS_ACCESS_KEY_ID: '${{ secrets.OSS_ACCESS_KEY_ID }}' - OSS_ACCESS_KEY_SECRET: '${{ secrets.OSS_ACCESS_KEY_SECRET }}' - WORKSPACE_FILE_DIR: workspaces - run: | - # manually source kusion env file - source "$HOME/.kusion/.env" - - # setup remote backend for kusion cli - kusion config set backends.oss_test '{"type":"oss","configs":{"bucket":"kusion-test","endpoint":"oss-cn-shanghai.aliyuncs.com"}}' - kusion config set backends.current oss_test - - # execute python script for applying - python3 hack/apply_changed_stacks.py - - - name: Upload Report - id: upload-report - if: ${{ steps.apply.outputs.apply_success == 'true' }} - uses: actions/upload-artifact@v4 - with: - name: apply-report - path: hack/report/apply-result.zip - - - name: Echo URL - if: ${{ steps.apply.outputs.apply_success == 'true' }} - run: | - echo "Please check the apply result at: ${{ steps.upload-report.outputs.artifact-url }}" +# name: Apply +# on: +# push: +# branches: +# - "main" + +# jobs: +# get-changed-project-stack: +# runs-on: ubuntu-latest +# steps: +# - name: Checkout Code +# uses: actions/checkout@v4 +# with: +# fetch-depth: 0 + +# - name: Install Python +# uses: actions/setup-python@v4 +# with: +# python-version: 3.9 + +# - name: Install Pytest Html +# run: python3 -m pip install pytest-html pyyaml -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com + +# - name: Git Diff +# id: git-diff +# uses: technote-space/get-diff-action@v6 + +# - name: Get Changed Projects and Stacks +# id: get-changed-projects-and-stacks +# env: +# CHANGED_PATHS: ${{ steps.git-diff.outputs.diff }} +# run: | +# export CHANGED_PATHS="${{ steps.git-diff.outputs.diff }}" +# python3 hack/get_changed_projects_and_stacks.py + +# - name: Print Changed Projects and Stacks +# run: | +# echo "Changed projects: ${{ steps.get-changed-projects-and-stacks.outputs.changed_projects }}" +# echo "Changed stacks: ${{ steps.get-changed-projects-and-stacks.outputs.changed_stacks }}" +# outputs: +# changed_projects: ${{ steps.get-changed-projects-and-stacks.outputs.changed_projects }} +# changed_stacks: ${{ steps.get-changed-projects-and-stacks.outputs.changed_stacks }} + +# apply: +# needs: [ get-changed-project-stack ] +# runs-on: ubuntu-latest +# steps: +# - name: Checkout Code +# uses: actions/checkout@v4 +# with: +# fetch-depth: 0 + +# - name: Install Kusion +# run: curl https://www.kusionstack.io/scripts/install.sh | sh -s 0.12.0-rc.1 + +# - name: Install Python +# uses: actions/setup-python@v4 +# with: +# python-version: 3.9 + +# - name: Install Pytest Html +# run: python3 -m pip install pytest-html pyyaml -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com + +# - name: Setup K3d&K3s +# uses: nolar/setup-k3d-k3s@v1 + +# - name: Apply +# id: apply +# env: +# CHANGED_STACKS: ${{ needs.get-changed-project-stack.outputs.changed_stacks }} +# OSS_ACCESS_KEY_ID: '${{ secrets.OSS_ACCESS_KEY_ID }}' +# OSS_ACCESS_KEY_SECRET: '${{ secrets.OSS_ACCESS_KEY_SECRET }}' +# WORKSPACE_FILE_DIR: workspaces +# run: | +# # manually source kusion env file +# source "$HOME/.kusion/.env" + +# # setup remote backend for kusion cli +# kusion config set backends.oss_test '{"type":"oss","configs":{"bucket":"kusion-test","endpoint":"oss-cn-shanghai.aliyuncs.com"}}' +# kusion config set backends.current oss_test + +# # execute python script for applying +# python3 hack/apply_changed_stacks.py + +# - name: Upload Report +# id: upload-report +# if: ${{ steps.apply.outputs.apply_success == 'true' }} +# uses: actions/upload-artifact@v4 +# with: +# name: apply-report +# path: hack/report/apply-result.zip + +# - name: Echo URL +# if: ${{ steps.apply.outputs.apply_success == 'true' }} +# run: | +# echo "Please check the apply result at: ${{ steps.upload-report.outputs.artifact-url }}" diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 70e4a5ad..0f76d116 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 - name: Install Kusion - run: curl https://www.kusionstack.io/scripts/install.sh | sh -s 0.12.0-rc.1 + run: curl https://www.kusionstack.io/scripts/install.sh | sh -s 0.12.0-rc.2 - name: Install Python uses: actions/setup-python@v4 @@ -72,6 +72,7 @@ jobs: OSS_ACCESS_KEY_ID: '${{ secrets.OSS_ACCESS_KEY_ID }}' OSS_ACCESS_KEY_SECRET: '${{ secrets.OSS_ACCESS_KEY_SECRET }}' WORKSPACE_FILE_DIR: workspaces + AWS_REGION: us-east-1 run: | # manually source kusion env file source "$HOME/.kusion/.env" diff --git a/.gitignore b/.gitignore index 4d71ae20..412f0a3d 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ changed_list.txt # kusion state kusion_state.yaml + +# kcl mod lock files +kcl.mod.lock \ No newline at end of file diff --git a/example/nginx/dev/kcl.mod b/example/nginx/dev/kcl.mod index ed922469..25f6478b 100644 --- a/example/nginx/dev/kcl.mod +++ b/example/nginx/dev/kcl.mod @@ -3,9 +3,9 @@ name = "nginx" version = "0.1.0" [dependencies] -kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.1.0" } -network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.1.0" } +kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" } +service = { oci = "oci://ghcr.io/kusionstack/service", tag = "0.1.0" } +network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.2.0" } [profile] entries = ["main.k"] - diff --git a/example/nginx/dev/main.k b/example/nginx/dev/main.k index b72dfa1c..e557607b 100644 --- a/example/nginx/dev/main.k +++ b/example/nginx/dev/main.k @@ -1,10 +1,10 @@ import kam.v1.app_configuration as ac -import kam.v1.workload as wl -import kam.v1.workload.container as c +import service +import service.container as c import network as n nginx: ac.AppConfiguration { - workload: wl.Service { + workload: service.Service { containers: { wordpress: c.Container { image = "nginx:1.25.2" @@ -22,7 +22,6 @@ nginx: ac.AppConfiguration { n.Port { port: 80 protocol: "TCP" - public: True } ] } diff --git a/example/nginx/project.yaml b/example/nginx/project.yaml index d3398312..2101d969 100644 --- a/example/nginx/project.yaml +++ b/example/nginx/project.yaml @@ -1,4 +1,2 @@ # The project basic info name: nginx -generator: - type: AppConfiguration diff --git a/example/service-multi-stack/base/base.k b/example/service-multi-stack/base/base.k index a70db8e9..9aa863c2 100644 --- a/example/service-multi-stack/base/base.k +++ b/example/service-multi-stack/base/base.k @@ -1,10 +1,10 @@ import kam.v1.app_configuration as ac -import kam.v1.workload as wl -import kam.v1.workload.container as c +import service +import service.container as c import network as n echoserver: ac.AppConfiguration { - workload: wl.Service { + workload: service.Service { containers: { "server": c.Container { image = "" diff --git a/example/service-multi-stack/dev/kcl.mod b/example/service-multi-stack/dev/kcl.mod index 4bf4fa34..6f3e222f 100644 --- a/example/service-multi-stack/dev/kcl.mod +++ b/example/service-multi-stack/dev/kcl.mod @@ -3,8 +3,9 @@ name = "service-multi-stack-dev" version = "0.1.0" [dependencies] -kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.1.0" } -network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.1.0" } +kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" } +service = { oci = "oci://ghcr.io/kusionstack/service", tag = "0.1.0" } +network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.2.0" } [profile] entries = ["../base/base.k", "main.k"] diff --git a/example/service-multi-stack/dev/main.k b/example/service-multi-stack/dev/main.k index 66f93e0c..ff22af83 100644 --- a/example/service-multi-stack/dev/main.k +++ b/example/service-multi-stack/dev/main.k @@ -1,9 +1,15 @@ import kam.v1.app_configuration as ac +import service +import service.container as c # main.k declares customized configurations for dev stack. echoserver: ac.AppConfiguration { - workload.containers.server: { - # dev stack use latest echoserver image - image = "cilium/echoserver" + workload: service.Service { + containers: { + "server": c.Container { + # dev stack use latest echoserver image + image = "cilium/echoserver" + } + } } } \ No newline at end of file diff --git a/example/service-multi-stack/prod/kcl.mod b/example/service-multi-stack/prod/kcl.mod index 389c30f6..9061a745 100644 --- a/example/service-multi-stack/prod/kcl.mod +++ b/example/service-multi-stack/prod/kcl.mod @@ -3,8 +3,9 @@ name = "service-multi-stack-prod" version = "0.1.0" [dependencies] -kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.1.0" } -network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.1.0" } +kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" } +service = { oci = "oci://ghcr.io/kusionstack/service", tag = "0.1.0" } +network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.2.0" } [profile] entries = ["../base/base.k", "main.k"] diff --git a/example/service-multi-stack/prod/main.k b/example/service-multi-stack/prod/main.k index 61d7b50a..978cc3dc 100644 --- a/example/service-multi-stack/prod/main.k +++ b/example/service-multi-stack/prod/main.k @@ -1,16 +1,22 @@ import kam.v1.app_configuration as ac +import service +import service.container as c # main.k declares customized configurations for prod stack. echoserver: ac.AppConfiguration { - # replicas is 2 for prod - workload.replicas = 2 - workload.containers.server: { - # prod stack use older stable echoserver image - image = "cilium/echoserver:1.10.3" - # also prod stack require more resources - resources = { - "cpu": "500m" - "memory": "512Mi" + workload: service.Service { + containers: { + "server": c.Container { + # prod stack use older stable echoserver image + image = "cilium/echoserver:1.10.3" + # also prod stack require more resources + resources: { + "cpu" = "500m" + "memory" = "512Mi" + } + } } + # replicas is 2 for prod + replicas = 2 } } \ No newline at end of file diff --git a/example/service-multi-stack/project.yaml b/example/service-multi-stack/project.yaml index 37923f05..557cb122 100644 --- a/example/service-multi-stack/project.yaml +++ b/example/service-multi-stack/project.yaml @@ -1,4 +1,2 @@ # The project basic info name: service-multi-stack -generator: - type: AppConfiguration \ No newline at end of file diff --git a/example/simple-job/dev/kcl.mod b/example/simple-job/dev/kcl.mod index 6024760f..eb4bd8d9 100644 --- a/example/simple-job/dev/kcl.mod +++ b/example/simple-job/dev/kcl.mod @@ -3,7 +3,8 @@ name = "simple-job" version = "0.1.0" [dependencies] -kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.1.0" } +kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" } +job = { oci = "oci://ghcr.io/kusionstack/job", tag = "0.1.0" } [profile] entries = ["main.k"] diff --git a/example/simple-job/dev/main.k b/example/simple-job/dev/main.k index 11589963..7bdbadc2 100644 --- a/example/simple-job/dev/main.k +++ b/example/simple-job/dev/main.k @@ -1,9 +1,9 @@ import kam.v1.app_configuration as ac -import kam.v1.workload as wl -import kam.v1.workload.container as c +import job +import job.container as c helloworld: ac.AppConfiguration { - workload: wl.Job { + workload: job.Job { containers: { "busybox": c.Container { # The target image diff --git a/example/simple-job/project.yaml b/example/simple-job/project.yaml index 6072de8c..23d40244 100644 --- a/example/simple-job/project.yaml +++ b/example/simple-job/project.yaml @@ -1,4 +1,2 @@ # The project basic info name: simple-job -generator: - type: AppConfiguration \ No newline at end of file diff --git a/example/simple-service/dev/kcl.mod b/example/simple-service/dev/kcl.mod index e69cde96..2148d4ce 100644 --- a/example/simple-service/dev/kcl.mod +++ b/example/simple-service/dev/kcl.mod @@ -3,10 +3,11 @@ name = "simple-service" version = "0.1.0" [dependencies] -kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.1.0" } -network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.1.0" } -opsrule = { oci = "oci://ghcr.io/kusionstack/opsrule", tag = "0.1.0" } -monitoring = { oci = "oci://ghcr.io/kusionstack/monitoring", tag = "0.1.0" } +kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" } +service = { oci = "oci://ghcr.io/kusionstack/service", tag = "0.1.0" } +network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.2.0" } +opsrule = { oci = "oci://ghcr.io/kusionstack/opsrule", tag = "0.2.0" } +monitoring = { oci = "oci://ghcr.io/kusionstack/monitoring", tag = "0.2.0" } [profile] entries = ["main.k"] diff --git a/example/simple-service/dev/main.k b/example/simple-service/dev/main.k index 4c54e4c7..4bb700b9 100644 --- a/example/simple-service/dev/main.k +++ b/example/simple-service/dev/main.k @@ -1,13 +1,13 @@ import kam.v1.app_configuration as ac -import kam.v1.workload as wl -import kam.v1.workload.container as c -import kam.v1.workload.container.probe as p +import service +import service.container as c +import service.container.probe as p import monitoring as m import opsrule as o import network as n helloworld: ac.AppConfiguration { - workload: wl.Service { + workload: service.Service { containers: { "helloworld": c.Container { image: "gcr.io/google-samples/gb-frontend:v4" diff --git a/example/wordpress-cloud-rds/prod/kcl.mod b/example/wordpress-cloud-rds/prod/kcl.mod index 036d8ec3..719e6a4a 100644 --- a/example/wordpress-cloud-rds/prod/kcl.mod +++ b/example/wordpress-cloud-rds/prod/kcl.mod @@ -3,9 +3,10 @@ name = "wordpress-cloud-rds" version = "0.1.0" [dependencies] -mysql = { oci = "oci://ghcr.io/kusionstack/mysql", tag = "0.1.0" } -kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.1.0" } -network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.1.0" } +kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" } +service = { oci = "oci://ghcr.io/kusionstack/service", tag = "0.1.0" } +network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.2.0" } +mysql = { oci = "oci://ghcr.io/kusionstack/mysql", tag = "0.2.0" } [profile] entries = ["main.k"] diff --git a/example/wordpress-cloud-rds/prod/main.k b/example/wordpress-cloud-rds/prod/main.k index 51c0d7fd..db606334 100644 --- a/example/wordpress-cloud-rds/prod/main.k +++ b/example/wordpress-cloud-rds/prod/main.k @@ -1,12 +1,12 @@ import kam.v1.app_configuration as ac -import kam.v1.workload as wl -import kam.v1.workload.container as c +import service +import service.container as c import network as n import mysql as m # main.k declares customized configurations for prod stacks. wordpress: ac.AppConfiguration { - workload: wl.Service { + workload: service.Service { containers: { wordpress: c.Container { image: "wordpress:6.3" diff --git a/example/wordpress-cloud-rds/project.yaml b/example/wordpress-cloud-rds/project.yaml index 4b3399a7..a24e1ba3 100644 --- a/example/wordpress-cloud-rds/project.yaml +++ b/example/wordpress-cloud-rds/project.yaml @@ -1,4 +1,2 @@ # The project basic info -name: wordpress-cloud-rds -generator: - type: AppConfiguration \ No newline at end of file +name: wordpress-cloud-rds \ No newline at end of file diff --git a/example/wordpress-local-db/prod/kcl.mod b/example/wordpress-local-db/prod/kcl.mod index 511a5a39..0bfc9ba5 100644 --- a/example/wordpress-local-db/prod/kcl.mod +++ b/example/wordpress-local-db/prod/kcl.mod @@ -3,9 +3,10 @@ name = "wordpress-local-db" version = "0.1.0" [dependencies] -kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.1.0" } -network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.1.0" } -mysql = { oci = "oci://ghcr.io/kusionstack/mysql", tag = "0.1.0" } +kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" } +service = { oci = "oci://ghcr.io/kusionstack/service", tag = "0.1.0" } +network = { oci = "oci://ghcr.io/kusionstack/network", tag = "0.2.0" } +mysql = { oci = "oci://ghcr.io/kusionstack/mysql", tag = "0.2.0" } [profile] entries = ["main.k"] diff --git a/example/wordpress-local-db/prod/main.k b/example/wordpress-local-db/prod/main.k index ff279e8d..b9cf13fb 100644 --- a/example/wordpress-local-db/prod/main.k +++ b/example/wordpress-local-db/prod/main.k @@ -1,12 +1,12 @@ import kam.v1.app_configuration as ac -import kam.v1.workload as wl -import kam.v1.workload.container as c +import service +import service.container as c import network as n import mysql as m # main.k declares customized configurations for prod stack. wordpress: ac.AppConfiguration { - workload: wl.Service { + workload: service.Service { containers: { wordpress: c.Container { image: "wordpress:6.3"