assemblyline-core 4.6.0.dev7__tar.gz → 4.6.0.dev10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/PKG-INFO +1 -1
- assemblyline_core-4.6.0.dev10/assemblyline_core/VERSION +1 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +57 -22
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/scaler_server.py +34 -33
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/updater/run_updater.py +28 -19
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core.egg-info/PKG-INFO +1 -1
- assemblyline_core-4.6.0.dev7/assemblyline_core/VERSION +0 -1
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/LICENCE.md +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/README.md +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/dispatching/__main__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/dispatching/timeout.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/ingester/__main__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/plumber/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/plumber/run_plumber.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/server_base.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/signature_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/submission_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/setup.cfg +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/setup.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_alerter.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_badlist_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_dispatcher.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_expiry.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_plumber.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_replay.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_safelist_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_scaler.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_scheduler.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_signature_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_simulation.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_tasking_client.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_vacuum.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_worker_ingest.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_worker_submit.py +0 -0
- {assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_workflow.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
4.6.0.dev10
|
@@ -1,36 +1,73 @@
|
|
1
1
|
from __future__ import annotations
|
2
|
+
|
2
3
|
import base64
|
3
4
|
import functools
|
4
5
|
import json
|
5
|
-
import uuid
|
6
6
|
import os
|
7
7
|
import threading
|
8
|
+
import uuid
|
8
9
|
import weakref
|
9
|
-
import urllib3
|
10
|
-
|
11
10
|
from base64 import b64encode
|
12
|
-
from cryptography import x509
|
13
|
-
from cryptography.hazmat.primitives.asymmetric import rsa
|
14
|
-
from cryptography.hazmat.primitives import serialization, hashes
|
15
11
|
from collections import OrderedDict, defaultdict
|
16
12
|
from datetime import datetime, timedelta
|
17
|
-
from dateutil.tz import tzlocal
|
18
|
-
from typing import List, Optional, Tuple
|
19
13
|
from time import sleep
|
20
|
-
from
|
14
|
+
from typing import List, Optional, Tuple
|
21
15
|
|
16
|
+
import urllib3
|
17
|
+
from cryptography import x509
|
18
|
+
from cryptography.hazmat.primitives import hashes, serialization
|
19
|
+
from cryptography.hazmat.primitives.asymmetric import rsa
|
20
|
+
from dateutil.tz import tzlocal
|
22
21
|
from kubernetes import client, config, watch
|
23
|
-
from kubernetes.client import
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
from kubernetes.client import (
|
23
|
+
V1Affinity,
|
24
|
+
V1Capabilities,
|
25
|
+
V1ConfigMapVolumeSource,
|
26
|
+
V1Container,
|
27
|
+
V1Deployment,
|
28
|
+
V1DeploymentSpec,
|
29
|
+
V1DeploymentStrategy,
|
30
|
+
V1EnvVar,
|
31
|
+
V1ExecAction,
|
32
|
+
V1LabelSelector,
|
33
|
+
V1LocalObjectReference,
|
34
|
+
V1NetworkPolicy,
|
35
|
+
V1NetworkPolicyEgressRule,
|
36
|
+
V1NetworkPolicyIngressRule,
|
37
|
+
V1NetworkPolicyPeer,
|
38
|
+
V1NetworkPolicySpec,
|
39
|
+
V1NodeAffinity,
|
40
|
+
V1NodeSelector,
|
41
|
+
V1NodeSelectorRequirement,
|
42
|
+
V1NodeSelectorTerm,
|
43
|
+
V1ObjectMeta,
|
44
|
+
V1PersistentVolumeClaim,
|
45
|
+
V1PersistentVolumeClaimSpec,
|
46
|
+
V1PersistentVolumeClaimVolumeSource,
|
47
|
+
V1PodSecurityContext,
|
48
|
+
V1PodSpec,
|
49
|
+
V1PodTemplateSpec,
|
50
|
+
V1Probe,
|
51
|
+
V1ResourceRequirements,
|
52
|
+
V1SeccompProfile,
|
53
|
+
V1Secret,
|
54
|
+
V1SecretVolumeSource,
|
55
|
+
V1SecurityContext,
|
56
|
+
V1Service,
|
57
|
+
V1ServicePort,
|
58
|
+
V1ServiceSpec,
|
59
|
+
V1Toleration,
|
60
|
+
V1Volume,
|
61
|
+
V1VolumeMount,
|
62
|
+
)
|
31
63
|
from kubernetes.client.rest import ApiException
|
32
|
-
from assemblyline.odm.models.service import DependencyConfig, DockerConfig, PersistentVolume
|
33
64
|
|
65
|
+
from assemblyline.odm.models.config import Selector
|
66
|
+
from assemblyline.odm.models.service import (
|
67
|
+
DependencyConfig,
|
68
|
+
DockerConfig,
|
69
|
+
PersistentVolume,
|
70
|
+
)
|
34
71
|
from assemblyline_core.scaler.controllers.interface import ControllerInterface
|
35
72
|
|
36
73
|
# RESERVE_MEMORY_PER_NODE = os.environ.get('RESERVE_MEMORY_PER_NODE')
|
@@ -250,7 +287,7 @@ def parse_cpu(string: str) -> float:
|
|
250
287
|
class KubernetesController(ControllerInterface):
|
251
288
|
def __init__(self, logger, namespace: str, prefix: str, priority: str, dependency_priority: str,
|
252
289
|
cpu_reservation: float, linux_node_selector: Selector, labels=None, log_level="INFO", core_env={},
|
253
|
-
|
290
|
+
cluster_pod_list=True, enable_pod_security=False,
|
254
291
|
default_service_tolerations=[],
|
255
292
|
priv_labels=None):
|
256
293
|
# Try loading a kubernetes connection from either the fact that we are running
|
@@ -295,7 +332,6 @@ class KubernetesController(ControllerInterface):
|
|
295
332
|
self.core_mounts: dict[str, V1VolumeMount] = {}
|
296
333
|
self._external_profiles = weakref.WeakValueDictionary()
|
297
334
|
self._service_limited_env: dict[str, dict[str, str]] = defaultdict(dict)
|
298
|
-
self.default_service_account: Optional[str] = default_service_account
|
299
335
|
self.cluster_pod_list = cluster_pod_list
|
300
336
|
self.security_policy = RESTRICTED_POD_SECURITY_CONTEXT if enable_pod_security else None
|
301
337
|
self.default_service_tolerations = [V1Toleration(**toleration.as_primitives()) for toleration in default_service_tolerations]
|
@@ -836,8 +872,7 @@ class KubernetesController(ControllerInterface):
|
|
836
872
|
metadata = V1ObjectMeta(name=deployment_name, labels=all_labels, annotations={CHANGE_KEY_NAME: change_key})
|
837
873
|
|
838
874
|
# Figure out which (if any) service account to use
|
839
|
-
service_account =
|
840
|
-
(PRIVILEGED_SERVICE_ACCOUNT_NAME if core_mounts else UNPRIVILEGED_SERVICE_ACCOUNT_NAME)
|
875
|
+
service_account = PRIVILEGED_SERVICE_ACCOUNT_NAME if core_mounts else UNPRIVILEGED_SERVICE_ACCOUNT_NAME
|
841
876
|
if docker_config.service_account:
|
842
877
|
service_account = docker_config.service_account
|
843
878
|
|
@@ -2,45 +2,55 @@
|
|
2
2
|
An auto-scaling service specific to Assemblyline services.
|
3
3
|
"""
|
4
4
|
from __future__ import annotations
|
5
|
+
|
6
|
+
import concurrent.futures
|
7
|
+
import copy
|
5
8
|
import functools
|
6
|
-
import
|
7
|
-
from collections import defaultdict
|
8
|
-
from string import Template
|
9
|
-
from typing import Dict, Optional, Any
|
10
|
-
import os
|
9
|
+
import json
|
11
10
|
import math
|
12
|
-
import
|
11
|
+
import os
|
13
12
|
import platform
|
14
|
-
import
|
15
|
-
import
|
13
|
+
import threading
|
14
|
+
import time
|
15
|
+
from collections import defaultdict
|
16
16
|
from contextlib import contextmanager
|
17
|
+
from string import Template
|
18
|
+
from typing import Any, Dict, Optional
|
17
19
|
|
18
20
|
import elasticapm
|
19
|
-
import json
|
20
21
|
import yaml
|
21
22
|
|
22
|
-
from assemblyline.
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
from assemblyline.
|
28
|
-
from assemblyline.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
from assemblyline.common.constants import (
|
24
|
+
SCALER_TIMEOUT_QUEUE,
|
25
|
+
SERVICE_STATE_HASH,
|
26
|
+
ServiceStatus,
|
27
|
+
)
|
28
|
+
from assemblyline.common.dict_utils import flatten, get_recursive_sorted_tuples
|
29
|
+
from assemblyline.common.forge import (
|
30
|
+
get_apm_client,
|
31
|
+
get_classification,
|
32
|
+
get_service_queue,
|
33
|
+
)
|
33
34
|
from assemblyline.common.uid import get_id_from_data
|
34
|
-
from assemblyline.common.forge import get_classification, get_service_queue, get_apm_client
|
35
|
-
from assemblyline.common.constants import SCALER_TIMEOUT_QUEUE, SERVICE_STATE_HASH, ServiceStatus
|
36
35
|
from assemblyline.common.version import FRAMEWORK_VERSION, SYSTEM_VERSION
|
37
|
-
from
|
36
|
+
from assemblyline.odm.messages.changes import Operation, ServiceChange
|
37
|
+
from assemblyline.odm.messages.scaler_heartbeat import Metrics
|
38
|
+
from assemblyline.odm.messages.scaler_status_heartbeat import Status
|
39
|
+
from assemblyline.odm.models.config import Mount
|
40
|
+
from assemblyline.odm.models.service import DockerConfig, EnvironmentVariable, Service
|
41
|
+
from assemblyline.remote.datatypes.events import EventSender, EventWatcher
|
42
|
+
from assemblyline.remote.datatypes.exporting_counter import export_metrics_once
|
43
|
+
from assemblyline.remote.datatypes.hash import ExpiringHash, Hash
|
44
|
+
from assemblyline.remote.datatypes.queues.named import NamedQueue
|
45
|
+
from assemblyline.remote.datatypes.queues.priority import PriorityQueue
|
46
|
+
from assemblyline.remote.datatypes.queues.priority import length as pq_length
|
38
47
|
from assemblyline_core.scaler.controllers import KubernetesController
|
39
48
|
from assemblyline_core.scaler.controllers.interface import ServiceControlError
|
40
49
|
from assemblyline_core.server_base import ServiceStage, ThreadedCoreBase
|
50
|
+
from assemblyline_core.updater.helper import get_registry_config
|
41
51
|
|
42
|
-
from .controllers import DockerController
|
43
52
|
from . import collection
|
53
|
+
from .controllers import DockerController
|
44
54
|
|
45
55
|
APM_SPAN_TYPE = 'scaler'
|
46
56
|
|
@@ -325,7 +335,6 @@ class ScalerServer(ThreadedCoreBase):
|
|
325
335
|
core_env=core_env,
|
326
336
|
cluster_pod_list=self.config.core.scaler.cluster_pod_list,
|
327
337
|
enable_pod_security=self.config.core.scaler.enable_pod_security,
|
328
|
-
default_service_account=self.config.services.service_account,
|
329
338
|
default_service_tolerations=service_defaults_config.tolerations,
|
330
339
|
priv_labels=priv_labels
|
331
340
|
)
|
@@ -347,14 +356,6 @@ class ScalerServer(ThreadedCoreBase):
|
|
347
356
|
|
348
357
|
# Add default mounts for (non-)privileged services
|
349
358
|
for mount in service_defaults_config.mounts:
|
350
|
-
# Deprecated configuration for mounting ConfigMap
|
351
|
-
# TODO: Deprecate code on next major change
|
352
|
-
if mount.config_map:
|
353
|
-
self.controller.add_config_mount(mount.name, config_map=mount.config_map, key=mount.key,
|
354
|
-
target_path=mount.path, read_only=mount.read_only,
|
355
|
-
core=mount.privileged_only)
|
356
|
-
continue
|
357
|
-
|
358
359
|
if mount.resource_type == 'configmap':
|
359
360
|
# ConfigMap-based mount
|
360
361
|
self.controller.add_config_mount(mount.name, config_map=mount.resource_name, key=mount.resource_key,
|
@@ -7,17 +7,31 @@ import os
|
|
7
7
|
import re
|
8
8
|
import time
|
9
9
|
import uuid
|
10
|
-
|
11
10
|
from concurrent.futures import ThreadPoolExecutor
|
12
11
|
from typing import Any, List, Optional
|
13
12
|
|
14
13
|
import docker
|
15
|
-
|
16
|
-
from kubernetes.client import V1Job, V1ObjectMeta, V1JobSpec, V1PodTemplateSpec, V1PodSpec, V1Volume, \
|
17
|
-
V1VolumeMount, V1EnvVar, V1Container, V1ResourceRequirements, \
|
18
|
-
V1ConfigMapVolumeSource, V1Secret, V1SecretVolumeSource, V1LocalObjectReference, V1Toleration, V1SecurityContext, \
|
19
|
-
V1Capabilities, V1SeccompProfile
|
20
14
|
from kubernetes import client, config
|
15
|
+
from kubernetes.client import (
|
16
|
+
V1Capabilities,
|
17
|
+
V1ConfigMapVolumeSource,
|
18
|
+
V1Container,
|
19
|
+
V1EnvVar,
|
20
|
+
V1Job,
|
21
|
+
V1JobSpec,
|
22
|
+
V1LocalObjectReference,
|
23
|
+
V1ObjectMeta,
|
24
|
+
V1PodSpec,
|
25
|
+
V1PodTemplateSpec,
|
26
|
+
V1ResourceRequirements,
|
27
|
+
V1SeccompProfile,
|
28
|
+
V1Secret,
|
29
|
+
V1SecretVolumeSource,
|
30
|
+
V1SecurityContext,
|
31
|
+
V1Toleration,
|
32
|
+
V1Volume,
|
33
|
+
V1VolumeMount,
|
34
|
+
)
|
21
35
|
from kubernetes.client.rest import ApiException
|
22
36
|
|
23
37
|
from assemblyline.common import isotime
|
@@ -26,7 +40,11 @@ from assemblyline.odm.models.config import Mount, Selector
|
|
26
40
|
from assemblyline.odm.models.service import DockerConfig, Service
|
27
41
|
from assemblyline.remote.datatypes.events import EventSender, EventWatcher
|
28
42
|
from assemblyline.remote.datatypes.hash import Hash
|
29
|
-
from assemblyline_core.scaler.controllers.kubernetes_ctl import
|
43
|
+
from assemblyline_core.scaler.controllers.kubernetes_ctl import (
|
44
|
+
PRIVILEGED_SERVICE_ACCOUNT_NAME,
|
45
|
+
create_docker_auth_config,
|
46
|
+
selector_to_node_affinity,
|
47
|
+
)
|
30
48
|
from assemblyline_core.server_base import ThreadedCoreBase
|
31
49
|
from assemblyline_core.updater.helper import get_latest_tag_for_service
|
32
50
|
|
@@ -157,7 +175,7 @@ class DockerUpdateInterface:
|
|
157
175
|
|
158
176
|
class KubernetesUpdateInterface:
|
159
177
|
def __init__(self, logger, prefix, namespace, priority_class, extra_labels, linux_node_selector: Selector,
|
160
|
-
log_level="INFO",
|
178
|
+
log_level="INFO", default_service_tolerations=[], enable_pod_security=False):
|
161
179
|
# Try loading a kubernetes connection from either the fact that we are running
|
162
180
|
# inside of a cluster, or we have a configuration in the normal location
|
163
181
|
try:
|
@@ -187,7 +205,6 @@ class KubernetesUpdateInterface:
|
|
187
205
|
self.priority_class = priority_class
|
188
206
|
self.extra_labels = extra_labels
|
189
207
|
self.log_level = log_level
|
190
|
-
self.default_service_account = default_service_account
|
191
208
|
self.secret_env = []
|
192
209
|
self.linux_node_selector = linux_node_selector
|
193
210
|
self.default_service_tolerations = [V1Toleration(**toleration.as_primitives()) for toleration in default_service_tolerations]
|
@@ -268,13 +285,7 @@ class KubernetesUpdateInterface:
|
|
268
285
|
read_only=mount.read_only,
|
269
286
|
)
|
270
287
|
|
271
|
-
if mount.
|
272
|
-
# Deprecated configuration for mounting ConfigMap
|
273
|
-
# TODO: Deprecate code on next major change
|
274
|
-
vol_kwargs.update(dict(config_map=V1ConfigMapVolumeSource(name=mount.config_map, optional=False)))
|
275
|
-
vol_mount_kwargs.update(dict(sub_path=mount.key))
|
276
|
-
|
277
|
-
elif mount.resource_type == 'secret':
|
288
|
+
if mount.resource_type == 'secret':
|
278
289
|
# Secret-based source
|
279
290
|
vol_kwargs.update(dict(secret=V1SecretVolumeSource(secret_name=mount.resource_name)))
|
280
291
|
vol_mount_kwargs.update(dict(sub_path=mount.resource_key))
|
@@ -346,7 +357,7 @@ class KubernetesUpdateInterface:
|
|
346
357
|
restart_policy='Never',
|
347
358
|
containers=[container],
|
348
359
|
priority_class_name=self.priority_class,
|
349
|
-
service_account_name=docker_config.service_account or
|
360
|
+
service_account_name=docker_config.service_account or PRIVILEGED_SERVICE_ACCOUNT_NAME,
|
350
361
|
affinity=selector_to_node_affinity(self.linux_node_selector),
|
351
362
|
tolerations=self.default_service_tolerations
|
352
363
|
)
|
@@ -487,7 +498,6 @@ class ServiceUpdater(ThreadedCoreBase):
|
|
487
498
|
priority_class='al-core-priority',
|
488
499
|
extra_labels=extra_labels,
|
489
500
|
log_level=self.config.logging.log_level,
|
490
|
-
default_service_account=self.config.services.service_account,
|
491
501
|
linux_node_selector=self.config.core.scaler.linux_node_selector,
|
492
502
|
default_service_tolerations=self.config.core.scaler.service_defaults.tolerations,
|
493
503
|
enable_pod_security=self.config.core.scaler.enable_pod_security)
|
@@ -512,7 +522,6 @@ class ServiceUpdater(ThreadedCoreBase):
|
|
512
522
|
tag = 'stable'
|
513
523
|
else:
|
514
524
|
tag = 'latest'
|
515
|
-
service_key = None
|
516
525
|
try:
|
517
526
|
service = Service(
|
518
527
|
{'name': service_name,
|
@@ -1 +0,0 @@
|
|
1
|
-
4.6.0.dev7
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/__init__.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/alerter/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/badlist_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/expiry/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/metrics/helper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/plumber/__init__.py
RENAMED
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/__init__.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/replay/replay.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/safelist_client.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/scaler/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/server_base.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/signature_client.py
RENAMED
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/tasking_client.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/updater/__init__.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/updater/helper.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/__init__.py
RENAMED
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/crawler.py
RENAMED
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/safelist.py
RENAMED
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/assemblyline_core/vacuum/worker.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{assemblyline_core-4.6.0.dev7 → assemblyline_core-4.6.0.dev10}/test/test_signature_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|