Commit Graph

110 Commits

Author SHA1 Message Date
Michał Dulko
cfab320f26 Add setup and rotate job for credential keys
Keystone is using keys to encrypt credentials saved into the database.
The mechanism is very similar to fernet tokens. This commit implements a
job setting key repository up and rotate job for those keys. All is
based on implementation of fernet tokens.

Change-Id: I88faf1d02d2b317563e8603cebba542f8b133c6a
Closes-Bug: 1693807
2017-08-02 13:22:05 +02:00
Michał Dulko
03543a3d53 Add support for Keystone's fernet tokens
Keystone supports (and that's a default setting since Ocata) using
non-persistent fernet tokens instead of UUID tokens written into the DB.
This setting is in some cases better in terms of performance and
manageability (no more tokens DB table cleanups). OpenStack-Helm should
be able to support it.

General issue with fernet tokens is that keys used to encrypt them need
to be persistent and shared accross the cluster. Moreover "rotate"
operation generates a new key, so key repository will change over time.

This commit implements fernet tokens support by:
* A 'keystone-fernet-keys' secret is created to serve as keys repository.
* New fernet-setup Job will populate secret with initial keys.
* New fernet-rotate CronJob will be run periodically (weekly by default)
  and perform key rotation operation and update the secret.
* Secret is attached to keystone-api pods in /etc/keystone/fernet-tokens
  directory.

Turns out k8s is updating secrets attached to pods automatically, so
because of Keystone's fernet tokens implementation, we don't need to
worry about synchronization of the key repository. Everything should be
fine unless fernet-rotate job will run before all of the pods will
notice the change in the secret. As in real-world scenario you would
rotate your keys no more often than once an hour, this should be totally
fine.

Implements: blueprint keystone-fernet-tokens
Change-Id: Ifc84b8c97e1a85d30eb46260582d9c58220fbf0a
2017-08-02 13:22:05 +02:00
Pete Birley
f30cbcf108 Update pod affinity to allow customisation
This PS updates the pod affinity function to allow customisation by
operators at the point of deployment.

Change-Id: I8b7b2f584e990e068051d9a6d5cc7b1e1adb5aa5
2017-07-28 15:02:47 +00:00
Pete Birley
cbae720d1d Values: Move mounts to pod key
This PS moves the mounts key to be under the pod key in the values.
It brings further consolation of related configuration params to be
nested under common keys across all charts.

Change-Id: If9963e4f8b438847e2fcad3bdd8c0d71ca9ecdd8
2017-07-14 10:44:35 -05:00
Pete Birley
4d066332a7 Values: Move replicas to pod key
This PS move s the replicas key to be under the pod key in the values.
It brings further consolation of related configuration params to be
nested under common keys across all charts.

Change-Id: I420b06debd0a62ba5d83497be43ff6c49c49d339
2017-07-13 23:08:08 -05:00
Pete Birley
20527cb57c Move k8s pod params under common key
This PS moves K8s pod params under a common key.

Change-Id: Ib4e72e82a4f1540fa800c39d0dcc91b286d96c93
2017-07-11 23:28:47 +00:00
Pete Birley
37b9c2c7b5 Keystone: Chart cleanup
This PS cleans up the values file, and renames some manifests to better
reflect their function.

Change-Id: Ia48db0b583b2236d554e2f12532601413fb1a01e
2017-07-09 14:38:28 -05:00
Tin Lam
670a78bcbe Fix file permission and readOnly flag
This patchset enforces stricter file permission on *-etc configmap and
sets readOnly flag to true in a number of charts.

Change-Id: I233689a5d56dd1352e0d81997a94b4cdd6bed5d2
Signed-off-by: Tin Lam <tin@irrational.io>
2017-07-08 13:24:14 -05:00
Pete Birley
ac06f49849 Unify and normalise K8s Resources and Upgrade Strategy
This PS unifies and normalises Kubernetes resource allocation and
update strategy across all OpenStack-Helm elements.

Change-Id: Ia41fc453cb5191fa447ca6e1aa0f5b431c939dc8
2017-07-06 17:48:16 +00:00
Pete Birley
c221fa5248 Secret and endpoint standardisation.
This PS moves keystone credentials to the endpoints section within
the values.yaml, and also adds a 'secrets' key, allowing standardiation
of secrets and credential management across OpenStack-Helm.

Change-Id: I86a21e625afd822379ac11351603b2c606a3769f
2017-07-05 12:22:04 -05:00
Jenkins
2d7fe938c0 Merge "Fix MultiOpt options in gen-oslo-openstack-helm" 2017-07-05 13:46:14 +00:00
Michał Dulko
9eaa08678c Fix MultiOpt options in gen-oslo-openstack-helm
gen-oslo-openstack-helm generated configuration file templates in
incorrect form, causing setting mulitple values in Values.yaml to
produce something like:

  foo=barfoo=baz

This commit fixes this in the generator and updates config file
templates to generate configs correctly:

  foo=bar
  foo=baz

Change-Id: Iea661dcf1710987b2e111d7141ba888f01c44a50
Closes-Bug: 1699581
2017-07-04 17:26:06 +02:00
Pete Birley
c5bbc97ab7 Soft pod anti-affinity for all pods
This PS adds soft anti-affinity to all pods in OS-H. By doing so
resiliancy is improved by attempting to ensure that pods are created
on seperate nodes.

Change-Id: I0c1092498f7a1e44218ef785ca3f73fa9f49819c
2017-07-03 14:15:40 -05:00
Pete Birley
c0cf2337a2 Ingress controller for public endpoints
This PS provides the framework for Ingress controller based access to
public APIs.

Services covered:
 * Barbican
 * Cinder
 * Glance
 * Heat
 * Horizon
 * Keystone
 * Magnum
 * Mistral
 * Neutron
 * Nova
 * Senlin

Change-Id: I82d55f6ca41859ebed3312ec7d95b353df09e772
Implements: blueprint api-ingress
External-Tracking-Id: OSH-58, OSH-62
2017-06-28 17:37:10 -05:00
Pete Birley
198ce69e71 Keystone: Member role fixes
This PS makes the initial Keystone Admin and Service account users
members of the projects that they are in.

Change-Id: I2de081a216b7e7b99d301ab605c84d882cdb5840
2017-06-24 16:28:56 +00:00
Jenkins
359827ef4a Merge "Remove admin_token_auth" 2017-06-22 01:13:34 +00:00
Pete Birley
a7503a7d3f Kubernetes Entrypoint: Lookup service names for dependency checks
The existing entrypoint logic used static names to reolve dependencies.
This prevented the service names, and thus the hostnames of services
being altered. This PS resolves that issue by looking up the service name
from the endpoints specified in the values for a chart.

Partial-Implements: blueprint enhance-entrypoint-dependency-checking
External-Tracking-Id: OSH-21
Change-Id: Ib49490f332f8cd88e98c50d9335dfd314a170936
2017-06-20 08:51:36 -05:00
Tin Lam
57d7c852dd Remove admin_token_auth
The admin_token_auth in keystone paste posts a security issue, and has
been deprecated in the M release, and removed in O release.  Operators
should be using ``keystone-manage bootstrap`` to bootstrap the "admin"
user.  This patch set removes the filter and its usage in the various
pipelines from the paste.ini file.

Implements: bp keystone-admin-token-disable
External-Tracking-Id: OSH-102

[0] https://blueprints.launchpad.net/openstack-helm/+spec/keystone-admin-token-disable

Change-Id: I5ae29cad4f7daa4bc8fa117b6f5ed998c2ec6cad
2017-06-19 10:13:59 -05:00
Tin Lam
9b6e57aa6b Fix cpu and memory limits for keystone
Currently, the memory and cpu limits are identical to the requests.
This patch set ups the limits to be similar to other services
such as nova and neutron.

Change-Id: I16985e622bdca95d88585d2f1e5bbb09e7dc766b
2017-06-18 01:14:54 -05:00
Pete Birley
5aaf6ec121 Keystone: Add memcached as required dep.
Memcached is required by keystone to work optimally, this PS adds
it as a requirement. It could be argued that RabbitMQ should be
added as well, but this is only required when using Ceilometer AFAIK.

Change-Id: If2eec45455e05972c0fbb534262e5b1b69cef3b3
2017-06-16 07:46:22 -05:00
Jenkins
98bb2e0a7e Merge "Keystone Bootstrapping" 2017-06-12 21:11:49 +00:00
Pete Birley
af493beb04 Keystone Bootstrapping
This PS adds a bootstrapping option to the Keystone Chart.

Partially implements: blueprint service-bootstrap

See: https://blueprints.launchpad.net/openstack-helm/+spec/service-bootstrap

Change-Id: I01432967d2ad71249e90d4beda3380125b210a7f
2017-06-12 15:11:41 -05:00
Jenkins
c37aaaa857 Merge "Image-Agnostic: Keystone" 2017-06-12 17:05:15 +00:00
Pete Birley
81aef1ecea Configmaps: set default mode of files in *-bin configmaps to +x
This PS sets the default modetype of mounts from *-bin configmaps
to 0555, and removes the then unnecessary commands from the manifests.

Change-Id: I93ce0facb06affdf362a58f8520e69ba94ea3034
2017-06-12 00:22:30 -05:00
Pete Birley
9b8f6aef88 Image-Agnostic: Keystone
This PS helps improve the Image agnosticism of the Keystone chart.

This is achieved by removing the presumed locations of the Keystone
WSGI scripts, enabling support for images that either do not use a venv
or the same venv location that Kolla uses.

Change-Id: Id04f5e485d6a421b6ac7464cbb14f0e3819b778d
2017-06-11 23:03:39 +00:00
Steve Wilkerson
161170bf96 Move init containers from annotation to official object
With 1.6, init containers are officially part of the kubernetes
API.  This changes the format of the helm template for the
entrypoint container from json to yaml, and updates the
charts accordingly.

Co-Authored-By: Pete Birley <pete@port.direct>

Change-Id: I569566ce4b031d107af2d38483040a26210bec45
2017-06-09 16:31:53 -05:00
Pete Birley
97f781d6c3 Helm Test: Framework & Keystone
This PS introduces 'helm test' functionaility to keystone and
provides the basic framwork for charts to use.

Change-Id: Ie84a6ca0ed007fb55e10d503d1c3e49788908eec
Partial-Implements: blueprint implement-helm-test-for-charts
2017-06-06 16:52:34 -05:00
Jenkins
086411857b Merge "Fix some warnings from keystone-manage doctor" 2017-06-06 19:44:16 +00:00
Jenkins
fa0bfeb0b5 Merge "Refactor start scripts, to support graceful termination" 2017-06-06 16:26:26 +00:00
Michał Dulko
807ec54afd Fix some warnings from keystone-manage doctor
This commit fixes some warnings shown by `keystone-manage doctor`
command that are present in Keystone installed with default chart
configuration. In particular:

* Set max_toke_size=32 as this is correct value for uuid token provider.
* Enable caching using memcache by setting [cache] memcache_servers
  option correctly in configmap-etc.yaml

Change-Id: I38cc7be577e0a7cd9be715e633f3637baafcc21b
Closes-Bug: 1693806
2017-06-06 09:39:32 +02:00
Jenkins
59cb374ad3 Merge "Keystone: Update config to clean Newton checkout" 2017-06-06 04:44:54 +00:00
Pete Birley
0df7427dc4 Refactor start scripts, to support graceful termination
This PS add Barbican support, and moves all potentially container
specific logic into the service start script from the api manifests.

Also fixes a permissions issue with the nova-api, which incorrectly
had the NET_ADMIN capability.

Change-Id: I18fc1ea5d7aa70ea7dabb829361a3da57e905100
2017-06-05 17:37:22 -05:00
Darla Ahlert
c394d22112 Add Graceful Termination to all existing charts
This commit adds graceful termination to all existing charts.
It also adds a setting in the values.yaml file for clarity and
the ability to override if wished.

Change-Id: I42025e4be86d248be467c1d2f0980f864c4d440e
2017-06-05 12:38:26 -05:00
Pete Birley
31b1c3f1cc Keystone: Update config to clean Newton checkout
This PS updates the Keystone template to use a template generated
from the current version of the oslo-gen util.

Change-Id: Id900da732a49b2e154baf950881f0bd15ce3672e
2017-06-05 11:32:07 -05:00
Darla Ahlert
78dd37efc2 Update deployment for kubernetes 1.6
In Kubernetes 1.6, the deployment API version was changed
from extensions/v1beta1 to apps/v1beta1

Change-Id: I14ee465de381d25866224b9eae3512f0b42588d3
2017-06-02 08:45:08 -05:00
Jenkins
a5420f4290 Merge "Helm-Toolkit: Update naming to be explict and remove old functions." 2017-06-01 14:49:54 +00:00
Pete Birley
8c29949c0d Helm-Toolkit: Update naming to be explict and remove old functions.
This PS updates the way helm-toolkit functions are named to
reference the full path they are loacted at. This should make
development and debugging easier. Addtionally unused functions
have been pruned as well.

Change-Id: I03c553f1d01bccc70c86768b416b147c90d9b2f0
2017-05-31 19:52:02 +00:00
Pete Birley
5e193580ed Pod Disruption Budget: Set default to 0
With pod disruption budget set it is not possible to drain nodes
and perform other expected operations. This PS changes the default
value to 0, restoring the typically expected operation of pods.

Change-Id: I43ef35638c98caee2cf567487173399157000ada
2017-05-31 06:11:58 -05:00
Mark Burnett
de20cbb15d Use the standard Dockerhub MariaDB image
Addresses consistency issues that appear with autoincrement fields in
the existing chart, as demonstrated in [1].  It should allow automatic
recovery of 2 out of the 3 (default) cluster members.

It does not address automatic recovery of a complete shutdown of all
cluster nodes.

[1] https://review.openstack.org/#/c/465977/

Change-Id: I84c86e1862f03a6d381bf219b821ea3636049f0b
2017-05-25 08:56:35 -05:00
Larry Rensing
2cfabc43bf Add pod disruption budget for keystone
This is the initial pod disruption budget that will serve as the template
for all services in OpenStack-Helm.

Partially-Implements: blueprint add-pod-disruption-budgets

Change-Id: I67eeaa66257e793f77a089f3bc0dd4b700638c63
2017-05-18 21:04:33 +00:00
Michał Dulko
d95bad0b5c Add project mascots as charts icons
OpenStack Foundation started serving project mascots files on
openstack.org. This commit adds URLs to those files as chart icons for
OpenStack projects.

Change-Id: I2482174cd1d9a0f32df91d7d81974a0dc37f5c4d
2017-05-09 14:28:11 +02:00
Tin Lam
1a48b79db4 Remove duplicate selector
Keystone service.yaml currently has duplicate selector entries.
This patch set removes the duplicate.

Change-Id: Ic3e195e354b69683f8f3e8b6bb8f4b3a72b75cdb
2017-04-28 11:04:02 -05:00
Jenkins
b917ea3364 Merge "chart.yaml enhancement: keystone" 2017-04-18 18:13:56 +00:00
Jenkins
e836b6b09c Merge "Move keystone config files to manifests" 2017-04-18 14:24:51 +00:00
Pete Birley
424d9785b9 chart.yaml enhancement: keystone
This PS proposes a potential enhancement to the chart.yaml, idealy
this would also reference the project Mascot but currently there is
no CDN (that I'm aware of) hosting these images publicly.

Change-Id: I5160290e1e6b4bc67486e9834461ebfaa00bf665
2017-04-18 08:57:40 -05:00
Larry Rensing
96bfcb57ef Move keystone config files to manifests
This patch set moves the required keystone config files to the manifests, and
allows users to specify their own additional volume mounts if necessary.

Change-Id: I622abbba3e19390ce1003441eb9c0a3477754b82
2017-04-17 14:02:01 -05:00
Pete Birley
b6aed791fb Update chart.yaml to be consistent across repo
This PS updates the chart.yaml to be consistent across the repo, and
changes the description to make clear that they are the OpenStack-Helm
derived versions of the charts while using `helm search`.

Change-Id: Iac3cfd2cddba7130b28a65c3d353712c8a3aa02b
2017-04-16 11:21:07 -05:00
Brandon B. Jozsa
98ee01e983 Update Keystone image values
These changes pick a standard image for use with OSH.

Change-Id: I7c74e299b0912e3e52fd5837fa1672708cdc7ff6
2017-04-14 14:33:58 -04:00
Pete Birley
e19a9cb503 Remove trailing whitespace from Keystone Chart
The Keystone Chart had some extranious whitespace at the
end of lines, this commit rectifies that.

Change-Id: I4da8e4812a5aa92b85cc3baa3f76d08ba5967091
2017-04-12 01:43:03 -05:00
Alan Meadows
16508c32ee Nova Configuration Override (#319)
* Initial Commit of Nova Configuration Overrides

This commit is an evolution of the initial keystone configuration
overrides work

It expands upon that work by introducing many of the same concepts
into nova.  It differs in that a few concepts were changed.  Namely
the helm-toolkit/_oslo.tpl concept was abandoned, as there are too
many unique oslo paths for configuration elements, so dynamic oslo
setting mechanism was moved locally into configmap-etc.yaml, where
it is generally used.

Secondly, in nova the mount override effort was altered to instead
provide mount "append" capability.  Keeping the manifest mounts
closer to the actual pod, and keeping values.yaml a tad smaller.
This still allows the original flexibility of operators adding
mounts, but they cannot "undo" any of the charts built in mounts.

There were several manual tweaks that needd to be done to _nova.conf.tpl
after the oslo-config-gen process this time.  This is because there is a
bug in the newton version of generating this file. It does not include
the proper service authentication credentials in the [keystone_authtoken]
section.  Future releases have a separate service credentials section
so future config generations will likely not need these added lines.

* Remove unused values.yaml parameters

Fix references to removed helm-toolkit oslo macro

* resolve nova feedback

* bugfix nova-etc/nova-bin swap
2017-04-10 14:41:41 -05:00