Beispiel #1
0
    def _create_datadog_container(self, app_spec, besteffort_qos_is_required):
        if besteffort_qos_is_required:
            resource_requirements = ResourceRequirements()
        else:
            resource_requirements = ResourceRequirements(limits={
                "cpu": "400m",
                "memory": "2Gi"
            },
                                                         requests={
                                                             "cpu": "200m",
                                                             "memory": "2Gi"
                                                         })

        tags = app_spec.datadog.tags
        tags["app"] = app_spec.name
        tags["k8s_namespace"] = app_spec.namespace
        # Use an alphabetical order based on keys to ensure that the
        # output is predictable
        dd_tags = ",".join("{}:{}".format(k, tags[k]) for k in sorted(tags))

        return Container(
            name=self.DATADOG_CONTAINER_NAME,
            image=self._datadog_container_image,
            imagePullPolicy="IfNotPresent",
            env=[
                EnvVar(name="DD_TAGS", value=dd_tags),
                EnvVar(name="DD_API_KEY",
                       valueFrom=EnvVarSource(secretKeyRef=SecretKeySelector(
                           name="datadog", key="apikey"))),
                EnvVar(name="NON_LOCAL_TRAFFIC", value="false"),
                EnvVar(name="DD_LOGS_STDOUT", value="yes"),
                EnvVar(name="DD_EXPVAR_PORT", value="42622"),
                EnvVar(name="DD_CMD_PORT", value="42623"),
            ],
            resources=resource_requirements)
Beispiel #2
0
def _create_resource_requirements(namespace, spec_config):
    if not spec_config or _only_besteffort_qos_is_allowed(namespace):
        return ResourceRequirements()
    else:
        return ResourceRequirements(
            limits=spec_config.get('resources', {}).get('limits', None),
            requests=spec_config.get('resources', {}).get('requests', None))
Beispiel #3
0
def _make_resource_requirements(resources_spec):
    def as_dict(resource_requirement_spec):
        return {
            "cpu": resource_requirement_spec.cpu,
            "memory": resource_requirement_spec.memory
        }

    return ResourceRequirements(limits=as_dict(resources_spec.limits),
                                requests=as_dict(resources_spec.requests))
Beispiel #4
0
 def _create_datadog_container(self, app_spec, besteffort_qos_is_required):
     if besteffort_qos_is_required:
         resource_requirements = ResourceRequirements()
     else:
         resource_requirements = ResourceRequirements(limits={"cpu": "400m", "memory": "2Gi"},
                                                      requests={"cpu": "200m", "memory": "2Gi"})
     return Container(
         name=self.DATADOG_CONTAINER_NAME,
         image=self._datadog_container_image,
         imagePullPolicy="IfNotPresent",
         env=[
             EnvVar(name="DD_TAGS", value="app:{},k8s_namespace:{}".format(app_spec.name, app_spec.namespace)),
             EnvVar(name="API_KEY",
                    valueFrom=EnvVarSource(secretKeyRef=SecretKeySelector(name="datadog", key="apikey"))),
             EnvVar(name="NON_LOCAL_TRAFFIC", value="false"),
             EnvVar(name="DD_LOGS_STDOUT", value="yes"),
             EnvVar(name="DD_EXPVAR_PORT", value="42622"),
             EnvVar(name="DD_CMD_PORT", value="42623"),
         ],
         resources=resource_requirements
     )