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)
def _make_env(self, app_spec): constants = self._fiaas_env.copy() constants["ARTIFACT_NAME"] = app_spec.name constants["IMAGE"] = app_spec.image constants["VERSION"] = app_spec.version env = [ EnvVar(name=name, value=value) for name, value in constants.iteritems() ] # For backward compatibility. https://github.schibsted.io/finn/fiaas-deploy-daemon/pull/34 global_env = [] for name, value in self._global_env.iteritems(): if "FIAAS_{}".format( name) not in constants and name not in constants: global_env.extend([ EnvVar(name=name, value=value), EnvVar(name="FIAAS_{}".format(name), value=value) ]) else: LOG.warn( "Reserved environment-variable: {} declared as global. Ignoring and continuing" .format(name)) env.extend(global_env) env.extend([ EnvVar( name="FIAAS_REQUESTS_CPU", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="requests.cpu", divisor=1))), EnvVar( name="FIAAS_REQUESTS_MEMORY", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="requests.memory", divisor=1))), EnvVar( name="FIAAS_LIMITS_CPU", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="limits.cpu", divisor=1))), EnvVar( name="FIAAS_LIMITS_MEMORY", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="limits.memory", divisor=1))), EnvVar(name="FIAAS_NAMESPACE", valueFrom=EnvVarSource(fieldRef=ObjectFieldSelector( fieldPath="metadata.namespace"))), EnvVar(name="FIAAS_POD_NAME", valueFrom=EnvVarSource(fieldRef=ObjectFieldSelector( fieldPath="metadata.name"))), ]) env.sort(key=lambda x: x.name) return env
def _make_env(self, app_spec): fiaas_managed_env = { 'FIAAS_ARTIFACT_NAME': app_spec.name, 'FIAAS_IMAGE': app_spec.image, 'FIAAS_VERSION': app_spec.version, } if not self._disable_deprecated_managed_env_vars: fiaas_managed_env.update({ 'ARTIFACT_NAME': app_spec.name, 'IMAGE': app_spec.image, 'VERSION': app_spec.version, }) # fiaas_managed_env overrides global_env overrides legacy_fiaas_env static_env = merge_dicts(self._legacy_fiaas_env, self._global_env, fiaas_managed_env) env = [ EnvVar(name=name, value=value) for name, value in static_env.items() ] # FIAAS managed environment variables using the downward API env.extend([ EnvVar( name="FIAAS_REQUESTS_CPU", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="requests.cpu", divisor=1))), EnvVar( name="FIAAS_REQUESTS_MEMORY", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="requests.memory", divisor=1))), EnvVar( name="FIAAS_LIMITS_CPU", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="limits.cpu", divisor=1))), EnvVar( name="FIAAS_LIMITS_MEMORY", valueFrom=EnvVarSource(resourceFieldRef=ResourceFieldSelector( containerName=app_spec.name, resource="limits.memory", divisor=1))), EnvVar(name="FIAAS_NAMESPACE", valueFrom=EnvVarSource(fieldRef=ObjectFieldSelector( fieldPath="metadata.namespace"))), EnvVar(name="FIAAS_POD_NAME", valueFrom=EnvVarSource(fieldRef=ObjectFieldSelector( fieldPath="metadata.name"))), ]) env.sort(key=lambda x: x.name) return env
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 )