Getting NOVA pieces together to launch VM
This PS gets NOVA related pieces together in order to be able to launch a VM. It builds upon the work done by wirehead. Partially-Implements: blueprint nova-kubernetes Change-Id: I528fc5d84e790bd739c8cb900a9ee14ba7bec9fb
This commit is contained in:
parent
d30e5a2a1a
commit
316f546f04
|
@ -117,3 +117,11 @@ keystone_admin_url: "{{ admin_protocol }}://keystone-admin:{{ keystone_admin_por
|
||||||
keystone_internal_url: "{{ internal_protocol }}://keystone-internal:{{ keystone_public_port }}/v3"
|
keystone_internal_url: "{{ internal_protocol }}://keystone-internal:{{ keystone_public_port }}/v3"
|
||||||
keystone_public_url: "{{ public_protocol }}://{{ kolla_kubernetes_external_vip }}:{{ keystone_public_port }}/v3"
|
keystone_public_url: "{{ public_protocol }}://{{ kolla_kubernetes_external_vip }}:{{ keystone_public_port }}/v3"
|
||||||
keystone_database_address: "mariadb"
|
keystone_database_address: "mariadb"
|
||||||
|
|
||||||
|
########################
|
||||||
|
# NOVA variables
|
||||||
|
########################
|
||||||
|
openstack_nova_auth: "{'auth_url':'{{ keystone_auth_url }}','username':'{{ openstack_auth.username }}','password':'$KEYSTONE_ADMIN_PASSWORD','project_name':'{{ openstack_auth.project_name }}','domain_name':'default'}"
|
||||||
|
nova_admin_endpoint: "http://nova-api:{{ nova_api_port }}/v2/%(tenant_id)s"
|
||||||
|
nova_public_endpoint: "http://{{ kolla_kubernetes_external_vip }}:{{ nova_api_port }}/v2/%(tenant_id)s"
|
||||||
|
nova_internal_endpoint: "http://nova-api:{{ nova_api_port }}/v2/%(tenant_id)s"
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
apiVersion: batch/v1
|
apiVersion: batch/v1
|
||||||
kind: Job
|
kind: Job
|
||||||
spec:
|
spec:
|
||||||
|
parallelism: 1
|
||||||
|
completions: 1
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
name: nova-compute-generate
|
name: nova-compute-generate
|
||||||
|
|
|
@ -1,88 +1,101 @@
|
||||||
apiVersion: v1
|
apiVersion: extensions/v1beta1
|
||||||
kind: Pod
|
kind: DaemonSet
|
||||||
|
metadata:
|
||||||
|
name: nova-compute
|
||||||
|
labels:
|
||||||
|
component: nova
|
||||||
|
system: nova-compute
|
||||||
|
namespace: default
|
||||||
spec:
|
spec:
|
||||||
hostNetwork: True
|
template:
|
||||||
hostPID: True
|
metadata:
|
||||||
containers:
|
name: nova-compute
|
||||||
- name: nova-compute
|
labels:
|
||||||
image: "{{ nova_compute_image_full }}"
|
component: nova
|
||||||
securityContext:
|
system: nova-compute
|
||||||
privileged: true
|
namespace: default
|
||||||
volumeMounts:
|
annotations:
|
||||||
- mountPath: {{ container_config_directory }}
|
pod.alpha.kubernetes.io/init-containers: '[
|
||||||
name: nova-compute-config
|
{
|
||||||
- mountPath: /var/lib/nova
|
"name": "initialize-nova-compute",
|
||||||
name: nova-compute-persistent-storage
|
"image": "{{ nova_compute_image_full }}",
|
||||||
- mountPath: /etc/localtime
|
"command": [
|
||||||
name: etc-localtime
|
"sh",
|
||||||
- mountPath: /lib/modules
|
"-c",
|
||||||
name: lib-modules
|
"cp -a /config/..data/* /nova/;
|
||||||
- mountPath: /run
|
ip=$(ip addr show dev {{ tunnel_interface }} | grep -G ''inet '' | awk ''{print $2}'');
|
||||||
name: run
|
sed -i ''s|^my_ip.*=.*|my_ip=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
- mountPath: /dev
|
sed -i ''s|^novncproxy_host.*=.*|novncproxy_host=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
name: dev
|
sed -i ''s|^vncserver_listen.*=.*|vncserver_listen=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
- mountPath: /sys/fs/cgroup
|
sed -i ''s|^vncserver_proxyclient_address.*=.*|vncserver_proxyclient_address=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
name: sys-fs-cgroup
|
sed -i ''s|^novncproxy_base_url.*=.*|novncproxy_base_url=http://''${ip%/*}'':6080/vnc_auto.html|g'' /nova/nova.conf;
|
||||||
- mountPath: /var/log/kolla
|
sed -i ''s|^connection_uri.*=.*|connection_uri=\"qemu+tcp://''${ip%/*}''/system\"|g'' /nova/nova.conf;"],
|
||||||
name: kolla-logs
|
"volumeMounts": [
|
||||||
env:
|
{
|
||||||
- name: KOLLA_CONFIG_STRATEGY
|
"name": "nova-compute-config",
|
||||||
value: {{ config_strategy }}
|
"mountPath": "/config/"
|
||||||
- name: nova-libvirt
|
},
|
||||||
image: "{{ nova_libvirt_image_full }}"
|
{
|
||||||
securityContext:
|
"name": "nova-config",
|
||||||
privileged: true
|
"mountPath": "/nova/"
|
||||||
volumeMounts:
|
}
|
||||||
- mountPath: {{ container_config_directory }}
|
]
|
||||||
name: nova-libvirt-config
|
}
|
||||||
- mountPath: /var/lib/libvirt
|
]'
|
||||||
name: nova-libvirt-persistent-storage
|
spec:
|
||||||
- mountPath: /var/lib/nova
|
hostNetwork: True
|
||||||
name: nova-compute-persistent-storage
|
containers:
|
||||||
- mountPath: /etc/localtime
|
- name: nova-compute
|
||||||
name: etc-localtime
|
image: "{{ nova_compute_image_full }}"
|
||||||
- mountPath: /lib/modules
|
securityContext:
|
||||||
name: lib-modules
|
privileged: true
|
||||||
- mountPath: /run
|
volumeMounts:
|
||||||
name: run
|
- mountPath: {{ container_config_directory }}
|
||||||
- mountPath: /dev
|
name: nova-config
|
||||||
name: dev
|
- mountPath: /var/lib/nova
|
||||||
- mountPath: /sys/fs/cgroup
|
name: nova-compute-persistent-storage
|
||||||
name: sys-fs-cgroup
|
- mountPath: /etc/localtime
|
||||||
- mountPath: /var/log/kolla
|
name: etc-localtime
|
||||||
name: kolla-logs
|
- mountPath: /lib/modules
|
||||||
env:
|
name: lib-modules
|
||||||
- name: KOLLA_CONFIG_STRATEGY
|
- mountPath: /run
|
||||||
value: {{ config_strategy }}
|
name: run
|
||||||
volumes:
|
- mountPath: /dev
|
||||||
- name: nova-compute-config
|
name: dev
|
||||||
configMap:
|
- mountPath: /sys/fs/cgroup
|
||||||
name: nova-compute-configmap
|
name: sys-fs-cgroup
|
||||||
- name: nova-libvirt-config
|
- mountPath: /nova
|
||||||
configMap:
|
name: nova-config
|
||||||
name: nova-libvirt-configmap
|
- mountPath: /var/log/kolla
|
||||||
- name: nova-compute-persistent-storage
|
name: kolla-logs
|
||||||
hostPath:
|
env:
|
||||||
path: /var/lib/nova
|
- name: KOLLA_CONFIG_STRATEGY
|
||||||
- name: nova-libvirt-persistent-storage
|
value: {{ config_strategy }}
|
||||||
hostPath:
|
volumes:
|
||||||
path: /var/lib/libvirt
|
- name: nova-compute-config
|
||||||
- name: etc-localtime
|
configMap:
|
||||||
hostPath:
|
name: nova-compute-configmap
|
||||||
path: /etc/localtime
|
- name: nova-compute-persistent-storage
|
||||||
- name: lib-modules
|
hostPath:
|
||||||
hostPath:
|
path: /var/lib/nova
|
||||||
path: /lib/modules
|
- name: etc-localtime
|
||||||
- name: run
|
hostPath:
|
||||||
hostPath:
|
path: /etc/localtime
|
||||||
path: /run
|
- name: lib-modules
|
||||||
- name: dev
|
hostPath:
|
||||||
hostPath:
|
path: /lib/modules
|
||||||
path: /dev
|
- name: run
|
||||||
- name: sys-fs-cgroup
|
hostPath:
|
||||||
hostPath:
|
path: /run
|
||||||
path: /sys/fs/cgroup
|
- name: dev
|
||||||
- name: kolla-logs
|
hostPath:
|
||||||
emptyDir: {}
|
path: /dev
|
||||||
|
- name: sys-fs-cgroup
|
||||||
|
hostPath:
|
||||||
|
path: /sys/fs/cgroup
|
||||||
|
- name: nova-config
|
||||||
|
emptyDir: {}
|
||||||
|
- name: kolla-logs
|
||||||
|
emptyDir: {}
|
||||||
metadata:
|
metadata:
|
||||||
name: nova-compute
|
name: nova-compute
|
||||||
|
|
|
@ -1,26 +1,55 @@
|
||||||
apiVersion: v1
|
apiVersion: apps/v1alpha1
|
||||||
kind: ReplicationController
|
kind: PetSet
|
||||||
spec:
|
spec:
|
||||||
|
serviceName: "nova"
|
||||||
replicas: {{ nova_api_replicas }}
|
replicas: {{ nova_api_replicas }}
|
||||||
selector:
|
|
||||||
service: nova
|
|
||||||
type: api
|
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
service: nova
|
service: nova
|
||||||
type: api
|
type: api
|
||||||
|
annotations:
|
||||||
|
pod.alpha.kubernetes.io/initialized: "true"
|
||||||
|
pod.alpha.kubernetes.io/init-containers: '[
|
||||||
|
{
|
||||||
|
"name": "initialize-nova-api",
|
||||||
|
"image": "{{ nova_api_image_full }}",
|
||||||
|
"command": [
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"cp -a /config/..data/* /nova/;
|
||||||
|
ip=$(ip addr show dev {{ tunnel_interface }} | grep -G ''inet '' | awk ''{print $2}'');
|
||||||
|
sed -i ''s|^my_ip.*=.*|my_ip=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^novncproxy_host.*=.*|novncproxy_host=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^vncserver_listen.*=.*|vncserver_listen=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^vncserver_proxyclient_address.*=.*|vncserver_proxyclient_address=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^novncproxy_base_url.*=.*|novncproxy_base_url=http://''${ip%/*}'':6080/vnc_auto.html|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^connection_uri.*=.*|connection_uri=qemu+tcp://''${ip%/*}''/system|g'' /nova/nova.conf;" ],
|
||||||
|
"volumeMounts": [
|
||||||
|
{
|
||||||
|
"name": "nova-api-config",
|
||||||
|
"mountPath": "/config/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nova-config",
|
||||||
|
"mountPath": "/nova/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]'
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: nova-api
|
- name: nova-api
|
||||||
image: "{{ nova_api_image_full }}"
|
image: "{{ nova_api_image_full }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: {{ container_config_directory }}
|
- mountPath: {{ container_config_directory }}
|
||||||
name: nova-api-config
|
name: nova-config
|
||||||
- mountPath: /etc/localtime
|
- mountPath: /etc/localtime
|
||||||
name: etc-localtime
|
name: etc-localtime
|
||||||
- mountPath: /lib/modules
|
- mountPath: /lib/modules
|
||||||
name: lib-modules
|
name: lib-modules
|
||||||
|
- mountPath: /nova
|
||||||
|
name: nova-config
|
||||||
- mountPath: /var/log/kolla
|
- mountPath: /var/log/kolla
|
||||||
name: kolla-logs
|
name: kolla-logs
|
||||||
env:
|
env:
|
||||||
|
@ -43,7 +72,9 @@ spec:
|
||||||
- name: lib-modules
|
- name: lib-modules
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /lib/modules
|
path: /lib/modules
|
||||||
|
- name: nova-config
|
||||||
|
emptyDir: {}
|
||||||
- name: kolla-logs
|
- name: kolla-logs
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
metadata:
|
metadata:
|
||||||
name: nova-api
|
name: nova-api
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
spec:
|
||||||
|
parallelism: 1
|
||||||
|
completions: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: nova-control-database-upgrade
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: "{{ nova_api_image_full }}"
|
||||||
|
name: nova-control-database-upgrade
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: {{ container_config_directory }}
|
||||||
|
name: nova-api-config
|
||||||
|
- mountPath: /etc/localtime
|
||||||
|
name: etc-localtime
|
||||||
|
- mountPath: /lib/modules
|
||||||
|
name: lib-modules
|
||||||
|
- mountPath: /var/log/kolla
|
||||||
|
name: kolla-logs
|
||||||
|
env:
|
||||||
|
- name: KOLLA_BOOTSTRAP
|
||||||
|
value: ""
|
||||||
|
- name: KOLLA_CONFIG_STRATEGY
|
||||||
|
value: {{ config_strategy }}
|
||||||
|
volumes:
|
||||||
|
- name: nova-api-config
|
||||||
|
configMap:
|
||||||
|
name: nova-api-configmap
|
||||||
|
- name: etc-localtime
|
||||||
|
hostPath:
|
||||||
|
path: /etc/localtime
|
||||||
|
- name: lib-modules
|
||||||
|
hostPath:
|
||||||
|
path: /lib/modules
|
||||||
|
- name: kolla-logs
|
||||||
|
emptyDir: {}
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
metadata:
|
||||||
|
name: nova-control-databse-upgrade
|
|
@ -0,0 +1,84 @@
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
spec:
|
||||||
|
parallelism: 1
|
||||||
|
completions: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: nova-control-bootstrap-create-nova-db
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: "{{ kolla_toolbox_image_full }}"
|
||||||
|
name: creating-nova-database-and-users
|
||||||
|
command: ["sh", "-c"]
|
||||||
|
args:
|
||||||
|
- ansible localhost -m mysql_db -a
|
||||||
|
"login_host=mariadb
|
||||||
|
login_port='{{ mariadb_port }}'
|
||||||
|
login_user='{{ database_user }}'
|
||||||
|
login_password='$DATABASE_PASSWORD'
|
||||||
|
name='{{ nova_database_name }}'" &&
|
||||||
|
ansible localhost -m mysql_db -a
|
||||||
|
"login_host=mariadb
|
||||||
|
login_port='{{ mariadb_port }}'
|
||||||
|
login_user='{{ database_user }}'
|
||||||
|
login_password='$DATABASE_PASSWORD'
|
||||||
|
name='{{ nova_api_database_name }}'" &&
|
||||||
|
ansible localhost -m mysql_user -a
|
||||||
|
"login_host=mariadb
|
||||||
|
login_port='{{ mariadb_port }}'
|
||||||
|
login_user='{{ database_user }}'
|
||||||
|
login_password='$DATABASE_PASSWORD'
|
||||||
|
name='{{ nova_database_name }}'
|
||||||
|
password='$NOVA_DATABASE_PASSWORD'
|
||||||
|
host='%'
|
||||||
|
priv='{{ nova_database_name }}.*:ALL'
|
||||||
|
append_privs='yes'" &&
|
||||||
|
ansible localhost -m mysql_user -a
|
||||||
|
"login_host=mariadb
|
||||||
|
login_port='{{ mariadb_port }}'
|
||||||
|
login_user='{{ database_user }}'
|
||||||
|
login_password='$DATABASE_PASSWORD'
|
||||||
|
name='{{ nova_api_database_name }}'
|
||||||
|
password='$NOVA_API_DATABASE_PASSWORD'
|
||||||
|
host='%'
|
||||||
|
priv='{{ nova_api_database_name }}.*:ALL'
|
||||||
|
append_privs='yes'"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/log/kolla
|
||||||
|
name: kolla-logs
|
||||||
|
env:
|
||||||
|
- name: ANSIBLE_NOCOLOR
|
||||||
|
value: "1"
|
||||||
|
- name: ANSIBLE_LIBRARY
|
||||||
|
value: "/usr/share/ansible"
|
||||||
|
- name: DATABASE_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: database-password
|
||||||
|
key: password
|
||||||
|
- name: NOVA_DATABASE_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nova-database-password
|
||||||
|
key: password
|
||||||
|
- name: NOVA_API_DATABASE_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nova-api-database-password
|
||||||
|
key: password
|
||||||
|
volumes:
|
||||||
|
- name: nova-api-config
|
||||||
|
configMap:
|
||||||
|
name: nova-api-configmap
|
||||||
|
- name: etc-localtime
|
||||||
|
hostPath:
|
||||||
|
path: /etc/localtime
|
||||||
|
- name: lib-modules
|
||||||
|
hostPath:
|
||||||
|
path: /lib/modules
|
||||||
|
- name: kolla-logs
|
||||||
|
emptyDir: {}
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
metadata:
|
||||||
|
name: nova-control-bootstrap-create-nova-db
|
|
@ -1,71 +1,13 @@
|
||||||
apiVersion: batch/v1
|
apiVersion: batch/v1
|
||||||
kind: Job
|
kind: Job
|
||||||
spec:
|
spec:
|
||||||
|
parallelism: 1
|
||||||
|
completions: 1
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
name: nova-compute-generate
|
name: nova-control-bootstrap-create-endpoints
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- image: "{{ kolla_toolbox_image_full }}"
|
|
||||||
name: creating-nova-database-and-users
|
|
||||||
command: ["sh", "-c"]
|
|
||||||
args:
|
|
||||||
- ansible localhost -vvvv -m mysql_db -a
|
|
||||||
"login_host={{ nova_database_address }}
|
|
||||||
login_port='{{ mariadb_port }}'
|
|
||||||
login_user='{{ database_user }}'
|
|
||||||
login_password='{{ database_password }}'
|
|
||||||
name='{{ nova_database_name }}'" &&
|
|
||||||
ansible localhost -vvvv -m mysql_db -a
|
|
||||||
"login_host={{ nova_api_database_address }}
|
|
||||||
login_port='{{ mariadb_port }}'
|
|
||||||
login_user='{{ database_user }}'
|
|
||||||
login_password='{{ database_password }}'
|
|
||||||
name='{{ nova_api_database_name }}'" &&
|
|
||||||
ansible localhost -m mysql_user -a
|
|
||||||
"login_host={{ nova_database_address }}
|
|
||||||
login_port='{{ mariadb_port }}'
|
|
||||||
login_user='{{ database_user }}'
|
|
||||||
login_password='{{ database_password }}'
|
|
||||||
name='{{ nova_database_name }}'
|
|
||||||
password='{{ nova_database_password }}'
|
|
||||||
host='%'
|
|
||||||
priv='{{ nova_database_name }}.*:ALL'
|
|
||||||
append_privs='yes'" &&
|
|
||||||
ansible localhost -m mysql_user -a
|
|
||||||
"login_host={{ nova_api_database_address }}
|
|
||||||
login_port='{{ mariadb_port }}'
|
|
||||||
login_user='{{ database_user }}'
|
|
||||||
login_password='{{ database_password }}'
|
|
||||||
name='{{ nova_api_database_name }}'
|
|
||||||
password='{{ nova_api_database_password }}'
|
|
||||||
host='%'
|
|
||||||
priv='{{ nova_api_database_name }}.*:ALL'
|
|
||||||
append_privs='yes'"
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /var/log/kolla
|
|
||||||
name: kolla-logs
|
|
||||||
env:
|
|
||||||
- name: ANSIBLE_NOCOLOR
|
|
||||||
value: "1"
|
|
||||||
- name: ANSIBLE_LIBRARY
|
|
||||||
value: "/usr/share/ansible"
|
|
||||||
- image: "{{ nova_api_image_full }}"
|
|
||||||
name: nova-api
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: {{ container_config_directory }}
|
|
||||||
name: nova-api-config
|
|
||||||
- mountPath: /etc/localtime
|
|
||||||
name: etc-localtime
|
|
||||||
- mountPath: /lib/modules
|
|
||||||
name: lib-modules
|
|
||||||
- mountPath: /var/log/kolla
|
|
||||||
name: kolla-logs
|
|
||||||
env:
|
|
||||||
- name: KOLLA_BOOTSTRAP
|
|
||||||
value: ""
|
|
||||||
- name: KOLLA_CONFIG_STRATEGY
|
|
||||||
value: {{ config_strategy }}
|
|
||||||
- image: "{{ kolla_toolbox_image_full }}"
|
- image: "{{ kolla_toolbox_image_full }}"
|
||||||
name: creating-nova-endpoints
|
name: creating-nova-endpoints
|
||||||
command: ["sh", "-c"]
|
command: ["sh", "-c"]
|
||||||
|
@ -104,7 +46,7 @@ spec:
|
||||||
-m kolla_keystone_user
|
-m kolla_keystone_user
|
||||||
-a "project=service
|
-a "project=service
|
||||||
user=nova
|
user=nova
|
||||||
password={{ nova_keystone_password }}
|
password=$NOVA_KEYSTONE_PASSWORD
|
||||||
role=admin
|
role=admin
|
||||||
region_name={{ openstack_region_name }}
|
region_name={{ openstack_region_name }}
|
||||||
auth={{ '{{ openstack_nova_auth }}' }}"
|
auth={{ '{{ openstack_nova_auth }}' }}"
|
||||||
|
@ -117,6 +59,16 @@ spec:
|
||||||
value: "1"
|
value: "1"
|
||||||
- name: ANSIBLE_LIBRARY
|
- name: ANSIBLE_LIBRARY
|
||||||
value: "/usr/share/ansible"
|
value: "/usr/share/ansible"
|
||||||
|
- name: KEYSTONE_ADMIN_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: keystone-admin-password
|
||||||
|
key: password
|
||||||
|
- name: NOVA_KEYSTONE_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nova-keystone-password
|
||||||
|
key: password
|
||||||
volumes:
|
volumes:
|
||||||
- name: nova-api-config
|
- name: nova-api-config
|
||||||
configMap:
|
configMap:
|
||||||
|
@ -131,4 +83,4 @@ spec:
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
restartPolicy: OnFailure
|
restartPolicy: OnFailure
|
||||||
metadata:
|
metadata:
|
||||||
name: nova-control-bootstrap
|
name: nova-control-bootstrap-create-endpoints
|
|
@ -1,24 +1,53 @@
|
||||||
apiVersion: v1
|
apiVersion: apps/v1alpha1
|
||||||
kind: ReplicationController
|
kind: PetSet
|
||||||
spec:
|
spec:
|
||||||
|
serviceName: "nova"
|
||||||
replicas: {{ nova_conductor_replicas }}
|
replicas: {{ nova_conductor_replicas }}
|
||||||
selector:
|
|
||||||
service: nova
|
|
||||||
type: conductor
|
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
service: nova
|
service: nova
|
||||||
type: conductor
|
type: conductor
|
||||||
|
annotations:
|
||||||
|
pod.alpha.kubernetes.io/initialized: "true"
|
||||||
|
pod.alpha.kubernetes.io/init-containers: '[
|
||||||
|
{
|
||||||
|
"name": "initialize-nova-conductor",
|
||||||
|
"image": "{{ nova_conductor_image_full }}",
|
||||||
|
"command": [
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"cp -a /config/..data/* /nova/;
|
||||||
|
ip=$(ip addr show dev {{ tunnel_interface }} | grep -G ''inet '' | awk ''{print $2}'');
|
||||||
|
sed -i ''s|^my_ip.*=.*|my_ip=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^novncproxy_host.*=.*|novncproxy_host=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^vncserver_listen.*=.*|vncserver_listen=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^vncserver_proxyclient_address.*=.*|vncserver_proxyclient_address=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^novncproxy_base_url.*=.*|novncproxy_base_url=http://''${ip%/*}'':6080/vnc_auto.html|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^connection_uri.*=.*|connection_uri=qemu+tcp://''${ip%/*}''/system|g'' /nova/nova.conf;" ],
|
||||||
|
"volumeMounts": [
|
||||||
|
{
|
||||||
|
"name": "nova-conductor-config",
|
||||||
|
"mountPath": "/config/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nova-config",
|
||||||
|
"mountPath": "/nova/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]'
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: nova-conductor
|
- name: nova-conductor
|
||||||
image: "{{ nova_conductor_image_full }}"
|
image: "{{ nova_conductor_image_full }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: {{ container_config_directory }}
|
- mountPath: {{ container_config_directory }}
|
||||||
name: nova-conductor-config
|
name: nova-config
|
||||||
- mountPath: /etc/localtime
|
- mountPath: /etc/localtime
|
||||||
name: etc-localtime
|
name: etc-localtime
|
||||||
|
- mountPath: /nova
|
||||||
|
name: nova-config
|
||||||
- mountPath: /var/log/kolla
|
- mountPath: /var/log/kolla
|
||||||
name: kolla-logs
|
name: kolla-logs
|
||||||
env:
|
env:
|
||||||
|
@ -34,6 +63,8 @@ spec:
|
||||||
- name: lib-modules
|
- name: lib-modules
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /lib/modules
|
path: /lib/modules
|
||||||
|
- name: nova-config
|
||||||
|
emptyDir: {}
|
||||||
- name: kolla-logs
|
- name: kolla-logs
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
metadata:
|
metadata:
|
||||||
|
|
|
@ -1,29 +1,62 @@
|
||||||
apiVersion: v1
|
apiVersion: apps/v1alpha1
|
||||||
kind: ReplicationController
|
kind: PetSet
|
||||||
spec:
|
spec:
|
||||||
|
serviceName: "nova"
|
||||||
replicas: {{ nova_scheduler_replicas }}
|
replicas: {{ nova_scheduler_replicas }}
|
||||||
selector:
|
|
||||||
service: nova
|
|
||||||
type: scheduler
|
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
service: nova
|
service: nova
|
||||||
type: scheduler
|
type: scheduler
|
||||||
|
annotations:
|
||||||
|
pod.alpha.kubernetes.io/initialized: "true"
|
||||||
|
pod.alpha.kubernetes.io/init-containers: '[
|
||||||
|
{
|
||||||
|
"name": "initialize-nova-scheduler",
|
||||||
|
"image": "{{ nova_scheduler_image_full }}",
|
||||||
|
"command": [
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"cp -a /config/..data/* /nova/;
|
||||||
|
ip=$(ip addr show dev {{ tunnel_interface }} | grep -G ''inet '' | awk ''{print $2}'');
|
||||||
|
sed -i ''s|^my_ip.*=.*|my_ip=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^novncproxy_host.*=.*|novncproxy_host=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^vncserver_listen.*=.*|vncserver_listen=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^vncserver_proxyclient_address.*=.*|vncserver_proxyclient_address=''${ip%/*}''|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^novncproxy_base_url.*=.*|novncproxy_base_url=http://''${ip%/*}'':6080/vnc_auto.html|g'' /nova/nova.conf;
|
||||||
|
sed -i ''s|^connection_uri.*=.*|connection_uri=qemu+tcp://''${ip%/*}''/system|g'' /nova/nova.conf;" ],
|
||||||
|
"volumeMounts": [
|
||||||
|
{
|
||||||
|
"name": "nova-scheduler-config",
|
||||||
|
"mountPath": "/config/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nova-config",
|
||||||
|
"mountPath": "/nova/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]'
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: nova-scheduler
|
- name: nova-scheduler
|
||||||
image: "{{ nova_scheduler_image_full }}"
|
image: "{{ nova_scheduler_image_full }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: {{ container_config_directory }}
|
- mountPath: {{ container_config_directory }}
|
||||||
name: nova-scheduler-config
|
name: nova-config
|
||||||
- mountPath: /etc/localtime
|
- mountPath: /etc/localtime
|
||||||
name: etc-localtime
|
name: etc-localtime
|
||||||
|
- mountPath: /nova
|
||||||
|
name: nova-config
|
||||||
- mountPath: /var/log/kolla
|
- mountPath: /var/log/kolla
|
||||||
name: kolla-logs
|
name: kolla-logs
|
||||||
env:
|
env:
|
||||||
- name: KOLLA_CONFIG_STRATEGY
|
- name: KOLLA_CONFIG_STRATEGY
|
||||||
value: {{ config_strategy }}
|
value: {{ config_strategy }}
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
command: ["sh", "-c"]
|
||||||
|
args:
|
||||||
volumes:
|
volumes:
|
||||||
- name: nova-scheduler-config
|
- name: nova-scheduler-config
|
||||||
configMap:
|
configMap:
|
||||||
|
@ -34,6 +67,8 @@ spec:
|
||||||
- name: lib-modules
|
- name: lib-modules
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /lib/modules
|
path: /lib/modules
|
||||||
|
- name: nova-config
|
||||||
|
emptyDir: {}
|
||||||
- name: kolla-logs
|
- name: kolla-logs
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
metadata:
|
metadata:
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: DaemonSet
|
||||||
|
metadata:
|
||||||
|
name: nova-libvirt
|
||||||
|
labels:
|
||||||
|
component: nova
|
||||||
|
system: nova-libvirt
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: nova-libvirt
|
||||||
|
labels:
|
||||||
|
component: nova
|
||||||
|
system: nova-libvirt
|
||||||
|
namespace: default
|
||||||
|
annotations:
|
||||||
|
pod.alpha.kubernetes.io/init-containers: '[
|
||||||
|
{
|
||||||
|
"name": "initialize-nova-libvirt",
|
||||||
|
"image": "{{ nova_libvirt_image_full }}",
|
||||||
|
"command": [
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"cp -a /config/..data/* /nova/;
|
||||||
|
ip=$(ip addr show dev {{ tunnel_interface }} | grep -G ''inet '' | awk ''{print $2}'');
|
||||||
|
sed -i ''s|^listen_addr.*=.*|listen_addr=\"''${ip%/*}''\"|g'' /nova/libvirtd.conf;"],
|
||||||
|
"volumeMounts": [
|
||||||
|
{
|
||||||
|
"name": "nova-libvirt-config",
|
||||||
|
"mountPath": "/config/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nova-config",
|
||||||
|
"mountPath": "/nova/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]'
|
||||||
|
spec:
|
||||||
|
hostNetwork: True
|
||||||
|
hostPID: True
|
||||||
|
containers:
|
||||||
|
- name: nova-libvirt
|
||||||
|
image: "{{ nova_libvirt_image_full }}"
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: {{ container_config_directory }}
|
||||||
|
name: nova-config
|
||||||
|
- mountPath: /var/lib/libvirt
|
||||||
|
name: nova-libvirt-persistent-storage
|
||||||
|
- mountPath: /var/lib/nova
|
||||||
|
name: nova-compute-persistent-storage
|
||||||
|
- mountPath: /etc/localtime
|
||||||
|
name: etc-localtime
|
||||||
|
- mountPath: /lib/modules
|
||||||
|
name: lib-modules
|
||||||
|
- mountPath: /run
|
||||||
|
name: run
|
||||||
|
- mountPath: /dev
|
||||||
|
name: dev
|
||||||
|
- mountPath: /sys/fs/cgroup
|
||||||
|
name: sys-fs-cgroup
|
||||||
|
- mountPath: /nova
|
||||||
|
name: nova-config
|
||||||
|
- mountPath: /var/log/kolla
|
||||||
|
name: kolla-logs
|
||||||
|
env:
|
||||||
|
- name: KOLLA_CONFIG_STRATEGY
|
||||||
|
value: {{ config_strategy }}
|
||||||
|
volumes:
|
||||||
|
- name: nova-compute-persistent-storage
|
||||||
|
hostPath:
|
||||||
|
path: /var/lib/nova
|
||||||
|
- name: nova-libvirt-config
|
||||||
|
configMap:
|
||||||
|
name: nova-libvirt-configmap
|
||||||
|
- name: nova-libvirt-persistent-storage
|
||||||
|
hostPath:
|
||||||
|
path: /var/lib/libvirt
|
||||||
|
- name: etc-localtime
|
||||||
|
hostPath:
|
||||||
|
path: /etc/localtime
|
||||||
|
- name: lib-modules
|
||||||
|
hostPath:
|
||||||
|
path: /lib/modules
|
||||||
|
- name: run
|
||||||
|
hostPath:
|
||||||
|
path: /run
|
||||||
|
- name: dev
|
||||||
|
hostPath:
|
||||||
|
path: /dev
|
||||||
|
- name: sys-fs-cgroup
|
||||||
|
hostPath:
|
||||||
|
path: /sys/fs/cgroup
|
||||||
|
- name: nova-config
|
||||||
|
emptyDir: {}
|
||||||
|
- name: kolla-logs
|
||||||
|
emptyDir: {}
|
||||||
|
metadata:
|
||||||
|
name: nova-libvirt
|
Loading…
Reference in New Issue