0

以下のような階層を持つ新しいマラソンアプリケーショングループをデプロイした後 (読みやすくするために、json ではなく yaml として表示されていることに注意してください):

id: root_id
groups: 
- id: data_center_id
  groups:
  - id: category_id
    groups:
    - id: app_or_svc_type_id
      apps
      - id: app_id
        ....
      - id: app_id
        ....
      - id: app_id
        ....
    - id: app_or_svc_type_id
      apps
      - id: app_id
        ....
      - id: app_id
        ....
      - id: app_id
        ....

ここで、カテゴリ レベルでサブグループを追加したいので、次のようになります。

id: root_id
groups: 
- id: data_center_id
  groups:
  - id: category_id
    groups:
    - id: app_or_svc_type_id
      apps
      - id: app_id
        ....
      - id: app_id
        ....
      - id: app_id
        ....
    - id: app_or_svc_type_id
      apps
      - id: app_id
        ....
      - id: app_id
        ....
      - id: app_id
        ....
  # this is the new subgroup to add
  - id: category_id
    groups:
    - id: app_or_svc_type_id
      apps
      - id: app_id
        ....
      - id: app_id
        ....
      - id: app_id
        ....
    - id: app_or_svc_type_id
      apps
      - id: app_id
        ....
      - id: app_id
        ....
      - id: app_id
        ....

Marathon REST API を使用して PUT 経由でこれを試みると、既存のグループが破棄され、新しいサブグループが作成されます。ここで何かが足りないかもしれませんが、たとえば新しいマイクロサービスを既存のアプリケーション グループ階層に追加するには、この機能が重要です。

どんな助けでも大歓迎です

4

2 に答える 2

1

あなたが正確に何をしたかはよくわかりません。正確な HTTP リクエストについて教えていただけると助かります。

グループとアプリの ID が正しくないことが問題である可能性があります。場合によっては、これにより明らかにエラーなしでグループ/アプリが無視されることがあります: https://github.com/mesosphere/marathon/issues/1890

次の HTTP リクエストが機能します。

サブグループを 1 つ含む初期グループを作成します。

PUT /v2/groups/group HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 185
Content-Type: application/json
Host: localhost:8080
User-Agent: HTTPie/0.9.2

{
    "groups": [
        {
            "apps": [
                {
                    "cmd": "python -m SimpleHTTPServer $PORT",
                    "id": "/group/subgroup1/app"
                }
            ],
            "id": "/group/subgroup1"
        }
    ],
    "id": "/group"
}

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Content-Type: application/json
Expires: 0
Pragma: no-cache
Server: Jetty(8.1.15.v20140411)
Transfer-Encoding: chunked
X-Marathon-Leader: http://localhost:8080

{
    "deploymentId": "6c59b425-49e2-4db8-8de0-a29020a34be7",
    "version": "2015-07-28T12:00:01.171Z"
}

追加のサブグループを含む新しい定義でグループを更新します。

PUT /v2/groups/group HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 335
Content-Type: application/json
Host: localhost:8080
User-Agent: HTTPie/0.9.2

{
    "groups": [
        {
            "apps": [
                {
                    "cmd": "python -m SimpleHTTPServer $PORT",
                    "id": "/group/subgroup1/app"
                }
            ],
            "id": "/group/subgroup1"
        },
        {
            "apps": [
                {
                    "cmd": "python -m SimpleHTTPServer $PORT",
                    "id": "/group/subgroup2/app"
                }
            ],
            "id": "/group/subgroup2"
        }
    ],
    "id": "/group"
}

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Content-Type: application/json
Expires: 0
Pragma: no-cache
Server: Jetty(8.1.15.v20140411)
Transfer-Encoding: chunked
X-Marathon-Leader: http://localhost:8080

{
    "deploymentId": "b72801f7-8a18-434e-bebb-81d55e698ef1",
    "version": "2015-07-28T12:03:17.109Z"
}

既存のアプリケーション/グループは変更されません。

または、そのサブグループの定義のみでPUTリクエストを使用することもできます。/v2/groups/group/subgroup2

于 2015-07-28T12:07:14.750 に答える