Giter Site home page Giter Site logo

openstack-helm's Introduction

Openstack-Helm

NOTICE: This project has moved under Openstack as Openstack-Helm.

openstack-helm's People

Contributors

alanmeadows avatar alraddarla avatar ciello89 avatar dtadrzak avatar galthaus avatar intlabs avatar korroot avatar laplague avatar larryrensing avatar maris-accenture avatar mattmceuen avatar renmak avatar rmjozsa avatar ss7pro avatar stannum-l avatar v1k0d3n avatar wilkers-steve avatar wilreichert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openstack-helm's Issues

feat: Ensure that critical services have pod disruption budgets set

http://kubernetes.io/docs/admin/disruptions/

This ensures that operators can safely drain nodes without having to understand all the complexity underneath.

Services that would require this and likely require "minAvailable:" would be:

  • ceph monitors (2 for quorum)
  • ceph osds (would think 2 but could be 1 since our default pool maintains 3 copies - this is understandably a simplification of more advanced configurations users may place on top such as pools with only 1 or 2 copies which would contradict this for now)
  • mariadb (2 for quorum)
  • All OpenStack API services: (1)
  • DHCP and L3 services: (1)

Kolla-Build Containers via Jenkins workflow as a Kubernetes Pod

Create a container that can then be used in a Kubernetes/Jenkins workflow. The goal should be:

  • Use the existing Jenkins Helm chart to deploy a complete Jenkins system that can be used for building out Kolla containers.
  • Add entrypoint logic (again, using Kolla-build --include-footer flags).
  • Should be developer initiated into the CI pipeline.
  • Make it useable for anyone (create sensible ENV's).

feat/docs: Default values for development do not work on Atomic Linux

Many mount points including / are read-only on RPM-OSTREE Linux distros like Atomic, as a result, the default development values do not work: as there is no /data directory.

We should either update the documentation to tell users how to change this value, or update it to one that is acceptable for both minikube and Atomic Linux e.g: /var/lib/localkube.

create cinder helm charts

@DTadrzak @PiotrProkop we started to document things a little better for outside collaborators (others have expressed interest too). there's now a project under this repo that will help keep things sane.

feat: Use PodAffinity and NodeAffinity instead of Daemonsets

In order to get rid of Daemonsets We should use a Deployments which use NodeAffinity/PodAffinity/PodAnti-Affinity.

Thanks to this approach we would be able to use only two kinds of labels (openstack-control-plane, openstack-compute-node), we don't need to take care about ovs label. It makes cluster administrating easier.

What's more It's first step to support drain command(#36) in OpenStack-helm solution.

Regarding to dynamic changes in cluster configuration. We can set replicas: 1000 so that Operators don't need to take care about increasing the amount every time, when a new server is discovered. What's more if we add PodAnti-Affinity to deployment annotations we are sure that only 1 instance per node is deployed.

guidelines: Helm standardization of values key:pairs (and nesting)

Once the initial 0.1.0 release is cut I think it would be good idea to formally define a structure for use within values.yaml, this will make the orchestration of multiple services much easier to manage and provide a source of truth for both new contributors and services to use as a reference source.

In particular, I think this should cover (as a starting point):

  • Image Tags & Pull Policy
  • Resouces:
    • Replicas
    • RAM/CPU allocation
  • Service/Networking
    • Ports
    • K8s Service name/type
    • Ingress
    • Namespacing
  • Keystone
    • Admin Creds
    • Service Creds
  • Database
    • URI
    • Admin Creds
    • User Creds
  • Service specific config (a generic structure layout)

NodeSelctors looking for wrong keys/values in some jobs

Commit 6f124d5 added NodeSelectors to several jobs across several components, using the value ".Vales.labels.node_selector_key". However, some components (neutron, nova) have more granular node selection, e.g. ".Values.labels.server.node_selector_key", and this is causing make to fail with errors like the following for me:

==> Linting neutron
[ERROR] templates/job-db-sync.yaml: unable to parse YAML
error converting YAML to JSON: yaml: line 9: did not find expected key
[ERROR] templates/job-init.yaml: unable to parse YAML
error converting YAML to JSON: yaml: line 9: did not find expected key
[ERROR] templates/job-post.yaml: unable to parse YAML
error converting YAML to JSON: yaml: line 9: did not find expected key

Release 0.1.0 - Jan 10th, 2017

Foundational Elements for Openstack (charts):

  • MaaS (Bare Metal Provisioning)
    • Ensure ceph storage is persistent #15
    • Persistant Volumes for MaaS #23
  • Ceph (Persistent Storage)
    • Initial commit of ceph helm chart #1
    • aic-helm normalization #14
    • Ensure ceph storage is persistent #15
    • Update readme to fix secret generation ordering #33
    • Allow more control over ceph chart #39
    • Create a globals or master.yaml override harness for all independent charts #42
  • MariaDB (Database)
    • Adding MariaDB #3
    • Add missing init_containers for keystone and MariaDB #8
    • Refactor MariaDB now that rbd PVCs can be leveraged #9
    • General Cleanup #11
    • Refactor keystone with new subdirectory template layout #19
    • Refactor MariaDB to match keystone template layout #40
    • Convert Helm chart to 2.1.0 format and Kubernetes 1.5 StatefulSets #51
  • RabbitMQ
    • Basic version of rabbitmq #6
    • Fixing labels in rabbitmq #7
    • General Cleanup #11
    • aic-helm normalization #14
  • Memcached
    • Adding Memcached #5
    • General Cleanup #11
    • Refactor Memcached #85

Primary Openstack Services (charts):

  • Keystone (Persistent Storage)
    • Adding keystone #4
    • Add missing init_containers for keystone and MariaDB #8
    • General Cleanup #11
    • Keystone fix #12
    • Refactor keystone with new subdirectory template layout #19
    • Refactor mariadb to match keystone template layout #40
    • Refactor glance to match keystone template layout #41
    • Create a globals or master.yaml override harness for all independent charts #42
  • Glance (Database)
    • Adding support for glance service #17
    • Refactor keystone with new subdirectory template layout #19
    • Refactor glance #118
  • Nova
  • Neutron
  • Heat
  • Cinder
  • Horizon

CI Workflow(s):

In this release, we are able to demonstrate the following:

Create a globals or master.yaml override harness for all independent charts

The goal here is to allow you to run:

"./tool.py master.yaml"

Where master.yaml contains:

ceph:
...
keystone:
...

This will generate:

/tmp/xk92012/ceph.yaml
/tmp/xk92012/keystone.yaml
/tmp/xk92012/horizon.yaml

You can then install charts:

helm install --values=/tmp/xk92012/horizon.yaml ./horizon-0.1.0.tgz

This is a requirement because a raw native master.yaml does not support an upper level namespace of "chartname", requiring it to be all in the same namespace if used across various charts.

This tool will be required until Helm issue #1520 is resolved or they introduce plugins that support this. Either will work.

feat: Investigate replacement for stackanetes-entrypoint

The stackanetes-entrypoint image consistently leveraged runs into issues with DAEMONSET dependencies, and has trouble with config file dependencies. These should be documented in this issue subsequently but I do not have readily available access to tracebacks at the moment.

We either need to:

  1. Investigate whether since its creation there is a now "standard" init container for dependency checking that is being widely used

  2. If we continue to use it, ensure we are including it in our CI/CD pipelines we will develop and be creating issues to have the issues we encountered resolved in the upstream repository: https://github.com/stackanetes/kubernetes-entrypoint

migrating helm charts to kubernetes/charts

i would like to see these charts end up in kubernetes/helm upstream. in order to make this happen they need to incubate, and i would like to get eyes on them. we should talk about the low hanging fruit, and critical items (Ceph, MaaS), and work towards getting them incubated for easier consumption.

development: determine long term path

@alanmeadows we should determine a good development path for 2017. minikube supports all of the versions that we need now, however the issue will be with persistent volumes.

$ minikube get-k8s-versions
The following Kubernetes versions are available:
	- v1.5.1
	- v1.4.5
	- v1.4.3
        . . .
        . . .
        . . .

Some interesting considerations:

I think it would be helpful for us to unblock development with an upstream, development-friendly too, and ditch Halcyon Vagrant option for development at some point, because it's just going to get hard to maintain, and will be resource intensive for developers. If our manifests are created in a way where a single daemonset is enough for consensus, than this may be a better path forward (long term). If we need changes, we can always just throw them at minikube directly.

ci: basic linting for repository

we need some basic linting and CI gating for our repository. this will make the community more confident in the changes they are submitting, and help assist reviewers before merging code into our repository as well.

feat: Template Naming Convention

Template names are global, even when used in sub-charts. As a result, it is very easy for collision to occur, with non-deterministic outcomes - which could (and has in my development work) result in effects ranging from failed services to potential security risks.

Due to this, I propose that template names, and macros, should always be scoped to the name of the chart they come from, this would require refactoring, but will I feel make the future development of charts much simpler, and more manageable.

As a result things like:

{{- define "env_ks_user_create_openrc_tpl" }}

should be written as:

{{- define "common.env_ks_user_create_openrc_tpl" }}

(from: https://github.com/att-comdev/openstack-helm/blob/master/common/templates/snippets/_ks_env_user_create_openrc.tpl#L1)

feat: Drain a Kubernetes node, and upgrade foundational elements.

PoC to demonstration draining a Kubernetes node, upgrade foundational elements (i.e. Docker, host kernel, etc), and bring back into the cluster. This is to identify a useful, and documented path for users as part of our PoC. This ends up going into Documentation after exploration.

feat: Suggestion to rename bootstrap chart

@alanmeadows i'm a bit torn on this idea, because it will require some work, but I think during the 0.2.0 release we should rename the bootstrap chart to something that is a bit more clearer for new users (even thought it's lightly documented). so we can either make the documentation more clear, rename, or both. thoughts?

help: Can't login to container

Hi,

I can't edit the /etc/resolv.conf file within the container following the instructions:

[root@kub1 ~]# kubectl exec kube-controller-manager-kub1.localdomain -it -n kube-system -- /bin/bash
exec: "/bin/bash": stat /bin/bash: no such file or directory
error: error stream protocol error: invalid exit code value "-1"

however

[root@kub1 ~]# kubectl exec kube-controller-manager-kub1.localdomain -it -n kube-system -- echo $0
-bash

Any idea?

thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.