瀏覽代碼

traefik swarm updates 1

xcad 4 月之前
父節點
當前提交
d13bcc8bae
共有 3 個文件被更改,包括 21 次插入13 次删除
  1. 16 8
      cli/modules/compose.py
  2. 4 4
      library/compose/traefik/compose.yaml.j2
  3. 1 1
      library/compose/traefik/template.yaml

+ 16 - 8
cli/modules/compose.py

@@ -133,24 +133,32 @@ spec = OrderedDict(
       "swarm": {
         "title": "Docker Swarm",
         "toggle": "swarm_enabled",
-        "description": "Deploy service in Docker Swarm mode with replicas.",
+        "description": "Deploy service in Docker Swarm mode.",
         "vars": {
           "swarm_enabled": {
             "description": "Enable Docker Swarm mode",
             "type": "bool",
             "default": False,
           },
+          "swarm_placement_mode": {
+            "description": "Swarm placement mode",
+            "type": "enum",
+            "options": ["replicated", "global"],
+            "default": "replicated",
+            "extra": "replicated=run specific number of tasks, global=run one task per node",
+          },
           "swarm_replicas": {
-            "description": "Number of replicas in Swarm",
+            "description": "Number of replicas",
             "type": "int",
             "default": 1,
+            "needs": "swarm_placement_mode=replicated",
+          },
+          "swarm_placement_host": {
+            "description": "Target hostname for placement constraint",
+            "type": "hostname",
+            "needs": "swarm_placement_mode=replicated",
+            "extra": "Constrains service to run on specific node by hostname",
           },
-          "swarm_placement": {
-            "description": "Swarm placement mode or node constraint",
-            "type": "str",
-            "default": "replicated",
-            "extra": "Options: 'replicated', 'global', or 'node.hostname==myhost' for custom placement",
-          }
         },
       },
       "database": {

+ 4 - 4
library/compose/traefik/compose.yaml.j2

@@ -43,9 +43,9 @@ services:
         mode: 0400
     {% endif %}
     deploy:
-      {% if swarm_placement in ['global', 'replicated'] %}
-      mode: {{ swarm_placement }}
-      {% if swarm_placement == 'replicated' %}
+      {% if swarm_placement_mode in ['global', 'replicated'] %}
+      mode: {{ swarm_placement_mode }}
+      {% if swarm_placement_mode == 'replicated' %}
       replicas: {{ swarm_replicas }}
       {% endif %}
       {% else %}
@@ -53,7 +53,7 @@ services:
       replicas: {{ swarm_replicas }}
       placement:
         constraints:
-          - {{ swarm_placement }}
+          - {{ swarm_placement_mode }}
       {% endif %}
     {% else %}
     restart: {{ restart_policy }}

+ 1 - 1
library/compose/traefik/template.yaml

@@ -141,7 +141,7 @@ spec:
         default: "proxy"
   swarm:
     vars:
-      swarm_placement:
+      swarm_placement_mode:
         default: "global"
   authentik:
     title: Authentik Middleware