diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..86ccad97 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,33 @@ + + +**Is this a bug report or feature request?** (choose one): + + + +**Kubernetes Version** (output of `kubectl version`): + +**Helm Client and Tiller Versions** (output of `helm version`): + +**Development or Deployment Environment?**: + +**Release Tag or Master**: + +**Expected Behavior**: + +**What Actually Happened**: + +**How to Reproduce the Issue** (as minimally as possible): + +**Any Additional Comments**: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..b1395ce0 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,14 @@ + + +**What is the purpose of this pull request?**: + +**What issue does this pull request address?**: Fixes # + +**Notes for reviewers to consider**: + +**Specific reviewers for pull request**: diff --git a/README.md b/README.md index 8c8bcae0..6014cf59 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # Openstack-Helm -Join us on [freenode](https://freenode.net/): `#openstack-helm` +**Join us on [Slack](http://slack.k8s.io/):** `#openstack-helm`
+**Join us on [Freenode](https://freenode.net/):** `#openstack-helm`
+**Community Meetings:** [Every other Tuesday @ 3PM UTC](https://calendar.google.com/calendar/embed?src=rnd4tpeoncig91pvs05il4p29o%40group.calendar.google.com&ctz=America/New_York) (Provided by [Zoom](https://zoom.us/j/562328746))
+**Community Agenda Items:** [Google Docs](https://docs.google.com/document/d/1Vm2OnMzjSru3cuvxh4Oa7R_z7staU-7ivGy8foOzDCs/edit#heading=h.bfc0dkav9gk2) Openstack-Helm is a fully self-contained Helm-based OpenStack deployment on Kubernetes. It will provide baremetal provisioning, persistent storage, full-stack resiliency, full-stack scalability, performance monitoring and tracing, and an optional development pipeline (using Jenkins). This project, along with the tools used within are community-based and open sourced. diff --git a/ceph/templates/deployment-mds.yaml b/ceph/templates/deployment-mds.yaml index 0485c5e7..e2f71811 100644 --- a/ceph/templates/deployment-mds.yaml +++ b/ceph/templates/deployment-mds.yaml @@ -32,7 +32,7 @@ spec: secret: secretName: ceph-bootstrap-rgw-keyring containers: - - name: ceph-mon + - name: ceph-mds image: {{ .Values.images.daemon }} imagePullPolicy: {{ .Values.images.pull_policy }} ports: diff --git a/ceph/templates/deployment-moncheck.yaml b/ceph/templates/deployment-moncheck.yaml index 459074f0..d2d93333 100644 --- a/ceph/templates/deployment-moncheck.yaml +++ b/ceph/templates/deployment-moncheck.yaml @@ -42,8 +42,8 @@ spec: value: MON_HEALTH - name: KV_TYPE value: k8s - - name: NETWORK_AUTO_DETECT - value: "4" + - name: MON_IP_AUTO_DETECT + value: "1" - name: CLUSTER value: ceph volumeMounts: @@ -61,4 +61,4 @@ spec: cpu: {{ .Values.resources.mon_check.requests.cpu | quote }} limits: memory: {{ .Values.resources.mon_check.limits.memory | quote }} - cpu: {{ .Values.resources.mon_check.limits.cpu | quote }} \ No newline at end of file + cpu: {{ .Values.resources.mon_check.limits.cpu | quote }} diff --git a/ceph/templates/deployment-rgw.yaml b/ceph/templates/deployment-rgw.yaml index 57ba1c95..72069d43 100644 --- a/ceph/templates/deployment-rgw.yaml +++ b/ceph/templates/deployment-rgw.yaml @@ -16,7 +16,6 @@ spec: app: ceph daemon: rgw spec: - hostNetwork: true nodeSelector: {{ .Values.labels.node_selector_key }}: {{ .Values.labels.node_selector_value }} serviceAccount: default diff --git a/ceph/templates/statefulset-mon.yaml b/ceph/templates/statefulset-mon.yaml index d7971a72..265dafba 100644 --- a/ceph/templates/statefulset-mon.yaml +++ b/ceph/templates/statefulset-mon.yaml @@ -72,10 +72,16 @@ spec: value: MON - name: KV_TYPE value: k8s - - name: NETWORK_AUTO_DETECT - value: "4" - name: CLUSTER value: ceph + - name: NETWORK_AUTO_DETECT + value: "0" + - name: CEPH_PUBLIC_NETWORK + value: {{ .Values.network.public | quote }} + - name: MON_IP + valueFrom: + fieldRef: + fieldPath: status.podIP volumeMounts: - name: ceph-conf mountPath: /etc/ceph diff --git a/ceph/values.yaml b/ceph/values.yaml index b88644a6..aa55e644 100644 --- a/ceph/values.yaml +++ b/ceph/values.yaml @@ -17,7 +17,7 @@ service: name: ceph-mon images: - daemon: quay.io/attcomdev/ceph-daemon:latest + daemon: docker.io/library/ceph/daemon:tag-build-master-jewel-ubuntu-16.04 pull_policy: IfNotPresent labels: @@ -25,6 +25,7 @@ labels: node_selector_value: enabled network: + public: "10.25.0.0/16" port: mon: 6789 rgw_ingress: 80 diff --git a/cinder/templates/etc/_cinder.conf.tpl b/cinder/templates/etc/_cinder.conf.tpl index a576fe1f..1c8c1052 100644 --- a/cinder/templates/etc/_cinder.conf.tpl +++ b/cinder/templates/etc/_cinder.conf.tpl @@ -15,7 +15,7 @@ api_paste_config = /etc/cinder/api-paste.ini glance_api_servers = "{{ .Values.glance.proto }}://{{ .Values.glance.host }}:{{ .Values.glance.port }}" glance_api_version = {{ .Values.glance.version }} -enabled_backends = {{ include "joinListWithColon" .Values.backends.enabled }} +enabled_backends = {{ include "joinListWithComma" .Values.backends.enabled }} auth_strategy = keystone os_region_name = {{ .Values.keystone.cinder_region_name }} diff --git a/common/templates/_funcs.tpl b/common/templates/_funcs.tpl index fe6c9a67..d3a25177 100644 --- a/common/templates/_funcs.tpl +++ b/common/templates/_funcs.tpl @@ -1,4 +1,4 @@ -{{- define "joinListWithColon" -}} +{{- define "joinListWithComma" -}} {{ range $k, $v := . }}{{ if $k }},{{ end }}{{ $v }}{{ end }} {{- end -}} diff --git a/common/templates/snippets/_k8s_init_dep_check.tpl b/common/templates/snippets/_k8s_init_dep_check.tpl index 0188ac1c..d6ba9a20 100644 --- a/common/templates/snippets/_k8s_init_dep_check.tpl +++ b/common/templates/snippets/_k8s_init_dep_check.tpl @@ -34,15 +34,15 @@ }, { "name": "DEPENDENCY_SERVICE", - "value": "{{ include "joinListWithColon" $deps.service }}" + "value": "{{ include "joinListWithComma" $deps.service }}" }, { "name": "DEPENDENCY_JOBS", - "value": "{{ include "joinListWithColon" $deps.jobs }}" + "value": "{{ include "joinListWithComma" $deps.jobs }}" }, { "name": "DEPENDENCY_DAEMONSET", - "value": "{{ include "joinListWithColon" $deps.daemonset }}" + "value": "{{ include "joinListWithComma" $deps.daemonset }}" }, { "name": "DEPENDENCY_CONTAINER", diff --git a/docs/developer/minikube.md b/docs/developer/minikube.md index 0e6ece18..7833ceb7 100644 --- a/docs/developer/minikube.md +++ b/docs/developer/minikube.md @@ -27,20 +27,19 @@ If your environment meets all of the prerequisites above, you can simply use the ``` # Clone the project: -$ git clone https://github.com/att-comdev/openstack-helm.git && cd openstack-helm +git clone https://github.com/att-comdev/openstack-helm.git && cd openstack-helm # Get a list of the current tags: -$ git tag -l -0.1.0 +git tag -l # Checkout the tag you want to work with (if desired, or use master for development): -$ git checkout 0.1.0 +git checkout 0.1.0 # Start a local Helm Server: -$ helm serve & +helm serve & # You may need to change these params for your environment. Look up use of --iso-url if needed: -$ minikube start \ +minikube start \ --network-plugin=cni \ --kubernetes-version v1.5.1 \ --disk-size 40g \ @@ -53,25 +52,25 @@ $ minikube start \ kubectl create -f http://docs.projectcalico.org/v2.0/getting-started/kubernetes/installation/hosted/calico.yaml # Initialize Helm/Deploy Tiller: -$ helm init +helm init # Package the Openstack-Helm Charts, and push them to your local Helm repository: -$ make +make # Label the Minikube as an Openstack Control Plane node: -$ kubectl label nodes openstack-control-plane=enabled --all --namespace=openstack +kubectl label nodes openstack-control-plane=enabled --all --namespace=openstack # Deploy each chart: -$ helm install --name mariadb --set development.enabled=true local/mariadb --namespace=openstack -$ helm install --name=memcached local/memcached --namespace=openstack -$ helm install --name=rabbitmq local/rabbitmq --namespace=openstack -$ helm install --name=keystone local/keystone --namespace=openstack -$ helm install --name=cinder local/cinder --namespace=openstack -$ helm install --name=glance local/glance --namespace=openstack -$ helm install --name=heat local/heat --namespace=openstack -$ helm install --name=nova local/nova --namespace=openstack -$ helm install --name=neutron local/neutron --namespace=openstack -$ helm install --name=horizon local/horizon --namespace=openstack +helm install --name mariadb --set development.enabled=true local/mariadb --namespace=openstack +helm install --name=memcached local/memcached --namespace=openstack +helm install --name=rabbitmq local/rabbitmq --namespace=openstack +helm install --name=keystone local/keystone --namespace=openstack +helm install --name=cinder local/cinder --namespace=openstack +helm install --name=glance local/glance --namespace=openstack +helm install --name=heat local/heat --namespace=openstack +helm install --name=nova local/nova --namespace=openstack +helm install --name=neutron local/neutron --namespace=openstack +helm install --name=horizon local/horizon --namespace=openstack ``` # Getting Started diff --git a/docs/installation/getting-started.md b/docs/installation/getting-started.md index 230fad3e..a0d26172 100644 --- a/docs/installation/getting-started.md +++ b/docs/installation/getting-started.md @@ -190,11 +190,17 @@ Please ensure that you have verified and completed the steps above to prevent is Although Ceph is mentioned throughout this guide, our deployment is flexible to allow you the option of bringing any type of persistent storage. Although most of these verification steps are the same, if not very similar, we will use Ceph as our example throughout this guide. ## Node Labels -First, we must label our nodes according to their role. Although we are labeling `all` nodes, you are free to label only the nodes you wish. You must have at least one, although a minimum of three are recommended. +First, we must label our nodes according to their role. Although we are labeling `all` nodes, you are free to label only the nodes you wish. You must have at least one, although a minimum of three are recommended. Nodes are labeled according to their Openstack roles: + +**Storage Nodes:** `ceph-storage` +**Control Plane:** `openstack-control-plane` +**Compute Nodes:** `openvswitch`, `openstack-compute-node` ``` admin@kubenode01:~$ kubectl label nodes openstack-control-plane=enabled --all admin@kubenode01:~$ kubectl label nodes ceph-storage=enabled --all +admin@kubenode01:~$ kubectl label nodes openvswitch=enabled --all +admin@kubenode01:~$ kubectl label nodes openstack-compute-node=enabled --all ``` ## Obtaining the Project @@ -262,7 +268,7 @@ Please ensure that you use ``--purge`` whenever deleting a project. ## Ceph Installation and Verification Install the first service, which is Ceph. If all instructions have been followed as mentioned above, this installation should go smoothly. Use the following command to install Ceph: ``` -admin@kubenode01:~$ helm install --name=ceph local/ceph --namespace=ceph +admin@kubenode01:~$ helm install --set network.public=$osd_public_network --name=ceph local/ceph --namespace=ceph ``` ## Bootstrap Installation diff --git a/neutron/templates/etc/_ml2-conf.ini.tpl b/neutron/templates/etc/_ml2-conf.ini.tpl index 8a903a17..7219aa7f 100644 --- a/neutron/templates/etc/_ml2-conf.ini.tpl +++ b/neutron/templates/etc/_ml2-conf.ini.tpl @@ -1,11 +1,11 @@ [ml2] # Changing type_drivers after bootstrap can lead to database inconsistencies -type_drivers = {{ include "joinListWithColon" .Values.ml2.type_drivers }} +type_drivers = {{ include "joinListWithComma" .Values.ml2.type_drivers }} tenant_network_types = {{ .Values.ml2.tenant_network_types }} -mechanism_drivers = {{ include "joinListWithColon" .Values.ml2.mechanism_drivers }} +mechanism_drivers = {{ include "joinListWithComma" .Values.ml2.mechanism_drivers }} [ml2_type_flat] -flat_networks = {{ include "joinListWithColon" .Values.ml2.ml2_type_flat.flat_networks }} +flat_networks = {{ include "joinListWithComma" .Values.ml2.ml2_type_flat.flat_networks }} [ml2_type_gre] # (ListOpt) Comma-separated list of : tuples enumerating ranges @@ -35,7 +35,7 @@ arp_responder = false {{- end }} [ovs] -bridge_mappings = {{ include "joinListWithColon" .Values.ml2.ovs.bridge_mappings }} +bridge_mappings = {{ include "joinListWithComma" .Values.ml2.ovs.bridge_mappings }} tenant_network_type = {{ .Values.ml2.agent.tunnel_types }} [vxlan]