|
13 | 13 | sys.path.insert(0, os.path.join(BASE_DIR, 'apps_extra')) |
14 | 14 | # A boolean that turns on/off debug mode. |
15 | 15 | # https://docs.djangoproject.com/en/1.11/ref/settings/#debug |
16 | | -DEBUG = bool(os.environ.get('DRYCC_DEBUG', False)) |
| 16 | +DEBUG = bool(strtobool(os.environ.get('DRYCC_DEBUG', 'false'))) |
17 | 17 |
|
18 | 18 | # If set to True, Django's normal exception handling of view functions |
19 | 19 | # will be suppressed, and exceptions will propagate upwards |
|
277 | 277 |
|
278 | 278 | PLATFORM_DOMAIN = os.environ.get('DRYCC_PLATFORM_DOMAIN', 'local.drycc.cc') |
279 | 279 |
|
280 | | -IMAGE_PULL_POLICY = os.environ.get('IMAGE_PULL_POLICY', "IfNotPresent") # noqa |
| 280 | +IMAGE_PULL_POLICY = os.environ.get('IMAGE_PULL_POLICY', "IfNotPresent") |
281 | 281 |
|
282 | 282 | # True, true, yes, y and more evaluate to True |
283 | 283 | # False, false, no, n and more evaluate to False |
|
290 | 290 | # If the user has a Procfile in both deploys then processes are scaled up / down as per usual |
291 | 291 | # |
292 | 292 | # By default the process types are scaled down unless this setting is turned on |
293 | | -DRYCC_DEPLOY_PROCFILE_MISSING_REMOVE = bool(strtobool(os.environ.get('DRYCC_DEPLOY_PROCFILE_MISSING_REMOVE', 'true'))) # noqa |
| 293 | +DRYCC_DEPLOY_PROCFILE_MISSING_REMOVE = bool(strtobool(os.environ.get( |
| 294 | + 'DRYCC_DEPLOY_PROCFILE_MISSING_REMOVE', 'true'))) |
294 | 295 |
|
295 | 296 | # True, true, yes, y and more evaluate to True |
296 | 297 | # False, false, no, n and more evaluate to False |
|
300 | 301 | # If a previous deploy had a Procfile but then the following deploy has no Procfile then it will |
301 | 302 | # result in a 406 - Not Acceptable |
302 | 303 | # Has priority over DRYCC_DEPLOY_PROCFILE_MISSING_REMOVE |
303 | | -DRYCC_DEPLOY_REJECT_IF_PROCFILE_MISSING = bool(strtobool(os.environ.get('DRYCC_DEPLOY_REJECT_IF_PROCFILE_MISSING', 'false'))) # noqa |
| 304 | +DRYCC_DEPLOY_REJECT_IF_PROCFILE_MISSING = bool(strtobool(os.environ.get( |
| 305 | + 'DRYCC_DEPLOY_REJECT_IF_PROCFILE_MISSING', 'false'))) |
304 | 306 |
|
305 | 307 | # Define a global default on how many pods to bring up and then |
306 | 308 | # take down sequentially during a deploy |
|
324 | 326 |
|
325 | 327 | DRYCC_APP_STORAGE_CLASS = os.environ.get('DRYCC_APP_STORAGE_CLASS', "") |
326 | 328 |
|
327 | | -KUBERNETES_DEPLOYMENTS_REVISION_HISTORY_LIMIT = os.environ.get('KUBERNETES_DEPLOYMENTS_REVISION_HISTORY_LIMIT', None) # noqa |
328 | | - |
329 | 329 | DRYCC_DEFAULT_CONFIG_TAGS = os.environ.get('DRYCC_DEFAULT_CONFIG_TAGS', '') |
330 | 330 |
|
| 331 | +KUBERNETES_DEPLOYMENTS_REVISION_HISTORY_LIMIT = os.environ.get( |
| 332 | + 'KUBERNETES_DEPLOYMENTS_REVISION_HISTORY_LIMIT', None) |
| 333 | + |
331 | 334 | # How long k8s waits for a pod to finish work after a SIGTERM before sending SIGKILL |
332 | | -KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS = int(os.environ.get('KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS', 30)) # noqa |
| 335 | +KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS = int(os.environ.get( |
| 336 | + 'KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS', 30)) |
333 | 337 |
|
| 338 | +# min and max memory for a CPU |
| 339 | +KUBERNETES_CPU_MEMORY_RATIO = tuple(map(lambda x: x.strip(), os.environ.get( |
| 340 | + 'DRYCC_CPU_MEMORY_DISTRIBUTION_RATIO', '1G,4G').split(","))) |
334 | 341 | # CPU request ratio |
335 | 342 | KUBERNETES_REQUEST_CPU_RATIO = int(os.environ.get('KUBERNETES_REQUEST_CPU_RATIO', '10')) |
336 | 343 | # Memory request ratio |
337 | 344 | KUBERNETES_REQUEST_MEMORY_RATIO = int(os.environ.get('KUBERNETES_REQUEST_MEMORY_RATIO', '2')) |
338 | | -# Minimum limits cpu, units are represented in the millicpu of CPUs |
339 | | -KUBERNETES_LIMITS_MIN_CPU = int(os.environ.get('KUBERNETES_LIMITS_MIN_CPU', '9')) |
340 | | -# Minimum limits memory, units are represented in Megabytes(M) |
341 | | -KUBERNETES_LIMITS_MIN_MEMORY = int(os.environ.get('KUBERNETES_LIMITS_MIN_MEMORY', '63')) |
342 | | -# Maximum limits cpu, units are represented in the millicpu of CPUs |
343 | | -KUBERNETES_LIMITS_MAX_CPU = int(os.environ.get('KUBERNETES_LIMITS_MAX_CPU', '32000')) |
344 | | -# Maximum limits memory, units are represented in Megabytes(M) |
345 | | -KUBERNETES_LIMITS_MAX_MEMORY = int(os.environ.get('KUBERNETES_LIMITS_MAX_MEMORY', '131072')) |
346 | | -# Default CPU limit, units are represented in the millicpu of CPUs |
347 | | -KUBERNETES_LIMITS_DEFAULT_CPU = (KUBERNETES_LIMITS_MIN_CPU + 1) * KUBERNETES_REQUEST_CPU_RATIO |
348 | | -# Default Memory limit, units are represented in Megabytes(M) |
349 | | -KUBERNETES_LIMITS_DEFAULT_MEMORY = (KUBERNETES_LIMITS_MIN_MEMORY + 1) * KUBERNETES_REQUEST_MEMORY_RATIO # noqa |
| 345 | + |
| 346 | +# Minimum CPU limit, units are represented in the millicpu of CPUs |
| 347 | +KUBERNETES_LIMITS_MIN_CPU = 125 |
| 348 | +# Minimum CPU limit, units are represented in the millicpu of CPUs |
| 349 | +KUBERNETES_LIMITS_MAX_CPU = 32 * 1000 |
| 350 | +# Minimum Memory limit, units are represented in Megabytes(M) |
| 351 | +KUBERNETES_LIMITS_MIN_MEMORY = 128 |
| 352 | +# Minimum Memory limit |
| 353 | +KUBERNETES_LIMITS_MAX_MEMORY = 128 * 1024 |
350 | 354 |
|
351 | 355 | # Default pod spec for application. |
352 | 356 | KUBERNETES_POD_DEFAULT_RESOURCES = os.environ.get( |
|
366 | 370 | ) |
367 | 371 | # Default limit range spec for application namespace |
368 | 372 | KUBERNETES_NAMESPACE_DEFAULT_LIMIT_RANGES_SPEC = os.environ.get( |
369 | | - 'KUBERNETES_NAMESPACE_DEFAULT_LIMIT_RANGES_SPEC', |
370 | | - json.dumps({ |
371 | | - "limits": [ |
372 | | - { |
373 | | - "default": { |
374 | | - "cpu": "%sm" % KUBERNETES_LIMITS_DEFAULT_CPU, |
375 | | - "memory": "%sMi" % KUBERNETES_LIMITS_DEFAULT_MEMORY |
376 | | - }, |
377 | | - "defaultRequest": { |
378 | | - "cpu": "%sm" % (KUBERNETES_LIMITS_MIN_CPU + 1), |
379 | | - "memory": "%sMi" % (KUBERNETES_LIMITS_MIN_MEMORY + 1) |
380 | | - }, |
381 | | - "max": { |
382 | | - "cpu": "%sm" % KUBERNETES_LIMITS_MAX_CPU, |
383 | | - "memory": "%sMi" % KUBERNETES_LIMITS_MAX_MEMORY |
384 | | - }, |
385 | | - "min": { |
386 | | - "cpu": "%sm" % KUBERNETES_LIMITS_MIN_CPU, |
387 | | - "memory": "%sMi" % KUBERNETES_LIMITS_MIN_MEMORY |
388 | | - }, |
389 | | - "type": "Container" |
390 | | - }, |
391 | | - { |
392 | | - "max": { |
393 | | - "storage": "100Gi" |
394 | | - }, |
395 | | - "min": { |
396 | | - "storage": "100Mi" |
397 | | - }, |
398 | | - "type": "PersistentVolumeClaim" |
399 | | - } |
400 | | - ] |
401 | | - }) |
| 373 | + 'KUBERNETES_NAMESPACE_DEFAULT_LIMIT_RANGES_SPEC', '' |
402 | 374 | ) |
403 | 375 |
|
404 | 376 | # registry settings |
|
463 | 435 | CACHES = { |
464 | 436 | "default": { |
465 | 437 | "BACKEND": "django_redis.cache.RedisCache", |
466 | | - "LOCATION": ['redis://:{}@{}'.format(DRYCC_REDIS_PASSWORD, DRYCC_REDIS_ADDR) \ |
467 | | - for DRYCC_REDIS_ADDR in DRYCC_REDIS_ADDRS], # noqa |
| 438 | + "LOCATION": [ |
| 439 | + 'redis://:{}@{}'.format( |
| 440 | + DRYCC_REDIS_PASSWORD, DRYCC_REDIS_ADDR) for DRYCC_REDIS_ADDR in DRYCC_REDIS_ADDRS |
| 441 | + ], |
468 | 442 | "OPTIONS": { |
469 | 443 | "CLIENT_CLASS": "django_redis.client.ShardClient", |
470 | 444 | } |
|
0 commit comments