Add persistent volume to Glance

In order to run Glance in kubernetes multinode cluster, Glance must use
persistent volume so the glance images would be accessible from any
compute nodes. This PS adds persistent volume, persistent volume claim
and the script to instantiate glance disk.

Change-Id: Icbbcacf2e4c7186d5171c4df6159bd9733df5a2b
Partially-implementes: blueprint glance-kubernetes
This commit is contained in:
Serguei Bezverkhi 2016-07-28 09:03:54 -04:00
parent 39c50262f8
commit 1c66fa47dc
5 changed files with 78 additions and 3 deletions

View File

@ -40,3 +40,8 @@ storage_ceph:
secretName: pkt-ceph-secret
ssh_user: root
user: admin
################################
# Persistent volumes sizes in GB
################################
#glance_volume_size: ""

View File

@ -131,8 +131,18 @@ kolla-kubernetes:
- name: glance-registry
resources:
disk:
- name: glance-disk
template: services/common/common-disk.sh.j2
vars:
size_in_gb: 10
pv:
- name: glance-pv
template: services/glance/glance-pv.yml.j2
vars:
size_in_gb: 10
pvc:
- name: glance-pvc
template: services/glance/glance-pvc.yml.j2
svc:
- name: glance-api-service
template: services/glance/glance-api-service.yml.j2
@ -146,7 +156,6 @@ kolla-kubernetes:
template: services/glance/glance-api-pod.yml.j2
- name: glance-registry-pod
template: services/glance/glance-registry-pod.yml.j2
- name: nova
pods:
- name: nova-compute

View File

@ -34,8 +34,8 @@ spec:
configMap:
name: glance-api-configmap
- name: glance-persistent-storage
hostPath:
path: /var/lib/kolla/glance
persistentVolumeClaim:
claimName: {{ resourceName }}
- name: etc-localtime
hostPath:
path: /etc/localtime

View File

@ -0,0 +1,45 @@
{%- set resourceName = kolla_kubernetes.cli.args.service_name %}
{%- if storage_provider in ["host", "ceph", "gce"] -%}
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ resourceName }}
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: {{ glance_volume_size }}Gi
{%- if storage_provider == "host" %}
hostPath:
path: /var/lib/kolla/volumes/{{ resourceName }}
{%- elif storage_provider == "gce" %}
gcePersistentDisk:
pdName: {{ resourceName }}
fsType: ext4
{%- elif storage_provider == "ceph" %}
rbd:
monitors:
{%- for k in storage_ceph.monitors %}
- "{{ k }}:6789"
{%- endfor %}
pool: {{ storage_ceph.pool }}
image: {{ resourceName }}
user: {{ storage_ceph.user }}
keyring: {{ storage_ceph.keyring }}
secretRef:
name: {{ storage_ceph.secretName }}
fsType: ext4
readOnly: false
{%- endif %}
{%- elif storage_provider == "aws" %}
# NO-OP for AWS, which supports Experimental Persistent Volume Provisioning
# https://github.com/kubernetes/kubernetes/blob/release-1.2/examples/experimental/persistent-volume-provisioning/README.md
{%- else %}
{{ raise('Unknown storage_provider: check kolla-kubernetes.yml:storage_provider') }}
{%- endif %}

View File

@ -0,0 +1,16 @@
{%- set resourceName = kolla_kubernetes.cli.args.service_name %}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ resourceName }}
{%- if storage_provider in ["aws"] %}
annotations:
volume.alpha.kubernetes.io/storage-class: experimental_can_be_anything_in_kubernetes_1_2
{%- endif %}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ glance_volume_size }}Gi