A declarative framework for resilient Kubernetes deployment.
Go to file
Felipe Monteiro d0b23f3eeb Fix Deckhand render throwing exception on missing sub source
This PS resolves a recent issue with Deckhand in which missing
substitution sources cause Promenade to fail during genesis,
while using Deckhand to render documents. The fix involves
introducing a new flag called fail_on_missing_sub_src which
if False logs a warning rather than raises an exception
in the event that a substitution source document is missing.

Also adds better exception handling and logging around
Deckhand.

Example error:

Traceback (most recent call last):
  File "/usr/local/bin/promenade", line 10, in <module>
    sys.exit(promenade())
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/opt/promenade/promenade/cli.py", line 55, in genereate_certs
    debug=debug, streams=config_files, substitute=True, validate=False)
  File "/opt/promenade/promenade/config.py", line 49, in from_streams
    return cls(documents=documents, **kwargs)
  File "/opt/promenade/promenade/config.py", line 29, in __init__
    documents = [dict(d) for d in deckhand_eng.render()]
  File "/usr/local/lib/python3.6/site-packages/deckhand/engine/layering.py", line 485, in render
    self.secrets_substitution.substitute_all(doc))
  File "/usr/local/lib/python3.6/site-packages/deckhand/engine/secrets_manager.py", line 182, in substitute_all
    document_name=document.name)

Depends-On: https://review.gerrithub.io/#/c/400880/
Change-Id: I4486535d4555ece54eb4d47bfb56472250f97ab4
2018-02-22 19:19:34 +00:00
charts Fix DNS name list for kube services in certs 2018-02-14 15:33:41 -06:00
docs/source Add ability to specify target-manifest for Armada 2018-02-16 12:20:40 -05:00
etc/promenade Minor testing-related cleanup 2018-01-02 10:14:10 -06:00
examples Add ability to specify target-manifest for Armada 2018-02-16 12:20:40 -05:00
promenade Fix Deckhand render throwing exception on missing sub source 2018-02-22 19:19:34 +00:00
tests Fix DNS name list for kube services in certs 2018-02-14 15:33:41 -06:00
tools Merge "Report disk IO in resiliency gate" 2018-02-13 16:02:26 -05:00
.dockerignore Add initial Makefile 2017-10-31 12:46:23 -05:00
.gitignore Report disk IO in resiliency gate 2018-02-13 12:49:44 -06:00
.gitreview Add gitreview file 2017-08-11 01:18:30 -05:00
Dockerfile Add initial chart for Promenade API 2017-11-15 14:19:43 -06:00
LICENSE Initial commit 2017-02-14 11:13:39 -08:00
Makefile Fix: revert to openstack-helm/helm-toolkit 2017-11-02 10:16:28 -05:00
README.md Docs: Add design doc 2017-11-16 13:50:46 -05:00
entrypoint.sh Use HAProxy for apiserver discovery 2018-02-08 14:30:35 -06:00
requirements-direct.txt Migrate to DH-managed config files 2018-01-26 13:43:18 -05:00
requirements-frozen.txt Migrate to DH-managed config files 2018-01-26 13:43:18 -05:00
requirements.txt Avoid directly installing non-frozen dependencies 2017-10-20 10:54:10 -05:00
setup.cfg Migrate to self hosted using charts 2017-10-17 13:29:46 -05:00
setup.py Basic HA kubernetes deployment (#7) 2017-06-15 20:57:22 -07:00
test-requirements.txt Minor testing-related cleanup 2018-01-02 10:14:10 -06:00
tox.ini Fix DNS name list for kube services in certs 2018-02-14 15:33:41 -06:00

README.md

Promenade

Promenade is a tool for bootstrapping a resilient Kubernetes cluster and managing its life-cycle via Helm charts.

Documentation can be found here.

Roadmap

The detailed Roadmap can be viewed on the LCOO JIRA.

  • Cluster bootstrapping
    • Initial Genesis process results in a single node Kubernetes cluster with Under-cloud components deployed using Armada.
    • Joining sufficient master nodes results in a resilient Kubernetes cluster.
    • Destroy Genesis node after bootstrapping and re-provision as a normal node to ensure consistency.
  • Life-cycle management
    • Decommissioning of nodes.
    • Updating Kubernetes version.

Getting Started

To get started, see getting started.

Configuration is documented here.

Bugs

Bugs are tracked in LCOO JIRA. If you find a bug, feel free to create a GitHub issue and it will be synced to JIRA.