Switch to helm 2.1.0 and kubernetes 1.5+

This ps swiches the gate to use helm 2.1.0 and kubernetes 1.5+

Change-Id: Ic9ecf6480f3890988e6bb73f279887bf8c76991a
This commit is contained in:
Kevin Fox 2016-12-13 15:53:12 -08:00
parent 2eac374001
commit e9ad4c7c3b
30 changed files with 74 additions and 55 deletions

View File

@ -7,6 +7,8 @@ common:
kolla_base_distro: centos
kolla_install_type: binary
image_pull_policy: IfNotPresent
enable_resolve_conf_net_host_workaround: true
enable_openvswitch_tcp: false
enable_neutron_dvr: false

View File

@ -22,10 +22,11 @@ spec:
#FIXME once all services are converted, bind_host can be dropped here and changed to default to 127.0.0.1 instead of 0.0.0.0.
# The init container overrides the listen address and port to ensure it does not conflict with haproxy and prevent
# other containers from directly accessing the service
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": {{ include "kolla_toolbox_image_full" . | quote }},
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"/bin/sh",
"-c",

View File

@ -1,6 +1,6 @@
{{- define "common_statefulset" }}
apiVersion: apps/v1alpha1
kind: PetSet
apiVersion: apps/v1beta1
kind: StatefulSet
spec:
serviceName: {{ .serviceName | quote }}
replicas: {{ .Values.replicas }}
@ -10,11 +10,11 @@ spec:
service: {{ .Values.element_name }}
type: {{ .serviceType }}
annotations:
pod.alpha.kubernetes.io/initialized: "true"
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-config",
"image": {{ include "kolla_toolbox_image_full" . | quote }},
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"/bin/sh",
"-ce",
@ -57,4 +57,4 @@ spec:
emptyDir: {}
metadata:
name: {{ .Values.element_name }}
{{- end }}
{{- end }}

View File

@ -4,8 +4,8 @@
{{- $netHostTrue := false }}
{{- $podTypeBootstrap := false }}
{{- with $env := dict "netHostTrue" $netHostTrue "podTypeBootstrap" $podTypeBootstrap "resourceName" $resourceName "Values" .Values }}
apiVersion: apps/v1alpha1
kind: PetSet
apiVersion: apps/v1beta1
kind: StatefulSet
spec:
serviceName: {{ .Values.element_name }}
replicas: 1
@ -13,8 +13,6 @@ spec:
metadata:
labels:
service: {{ .Values.element_name }}
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
nodeSelector:
{{ .Values.selector_key }}: {{ .Values.selector_value | quote }}

View File

@ -23,10 +23,11 @@ spec:
annotations:
#FIXME Its unclear if ovsdb_connection, local_ip, and/or hostPID required. Try removing them once we have a working gate to test with.
#FIXME Once out of alpha, this should be converted to yaml.
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": {{ include "kolla_toolbox_image_full" . | quote }},
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"/bin/sh",
"-c",
@ -65,6 +66,7 @@ spec:
{
"name": "update-permissions",
"image": {{ $l3AgentImageFull | quote }},
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"securityContext": {
"runAsUser": 0
},

View File

@ -22,10 +22,11 @@ spec:
system: openvswitch-agent-{{ $restype }}
annotations:
#FIXME Once out of alpha, this should be converted to yaml.
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": {{ include "kolla_toolbox_image_full" . | quote }},
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"/bin/sh",
"-c",
@ -57,6 +58,7 @@ spec:
{
"name": "update-permissions",
"image": "{{ $openvswitchAgentImageFull }}",
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"securityContext": {
"runAsUser": 0
},

View File

@ -24,10 +24,11 @@ spec:
component: {{ $serviceName }}
system: {{ .Values.element_name }}
annotations:
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-nova-compute",
"image": {{ include "kolla_toolbox_image_full" . | quote }},
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"sh",
"-xec",
@ -76,6 +77,7 @@ spec:
{
"name": "initialize-nova",
"image": "{{ $imageFull }}",
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"sh",
"-ce",

View File

@ -21,10 +21,11 @@ spec:
component: {{ $serviceName }}
system: {{ .Values.element_name }}
annotations:
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-nova-libvirt",
"image": "{{ $imageFull }}",
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"sh",
"-xec",

View File

@ -19,10 +19,11 @@ spec:
component: openvswitch
system: openvswitch-db-{{ $restype }}
annotations:
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-ovs-db",
"image": "{{ $openvswitchDBFull }}",
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"sh",
"-xec",

View File

@ -19,10 +19,11 @@ spec:
component: openvswitch
system: openvswitch-vswitchd-{{ $restype }}
annotations:
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-ovs-vswitchd",
"image": "{{ $openvswitchVswitchdFull }}",
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"sh",
"-xec",
@ -48,6 +49,7 @@ spec:
{
"name": "dependencies",
"image": {{ include "kubernetes_entrypoint_image_full" . | quote }},
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"env": [
{
"name": "DEPENDENCY_SOCKET",

View File

@ -4,8 +4,8 @@
{{- $netHostTrue := false }}
{{- $podTypeBootstrap := false }}
{{- with $env := dict "netHostTrue" $netHostTrue "podTypeBootstrap" $podTypeBootstrap "resourceName" $resourceName "Values" .Values }}
apiVersion: apps/v1alpha1
kind: PetSet
apiVersion: apps/v1beta1
kind: StatefulSet
spec:
serviceName: {{ .Values.element_name }}
replicas: 1
@ -14,11 +14,11 @@ spec:
labels:
service: {{ .Values.element_name }}
annotations:
pod.alpha.kubernetes.io/initialized: "true"
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ include "kolla_toolbox_image_full" . }}",
"imagePullPolicy": {{ .Values.image_pull_policy | quote }},
"command": [
"/bin/sh",
"-c",

View File

@ -275,6 +275,7 @@ class Resource(ResourceTemplate):
def _kind_to_cli(self, kind):
kind_map = {
'PetSet': 'petset',
'StatefulSet': 'statefulset',
'Pod': 'pod',
'ReplicationController': 'rc',
'DaemonSet': 'daemonset',

View File

@ -96,7 +96,8 @@ class TestTemplatesTest(base.BaseTestCase):
if part.lower() in ('petset', 'deployment', 'job',
'replicationcontroller', 'pod',
'daemonset', 'configmap',
'secret', 'configmap'
'secret', 'configmap',
'statefulset',
'ps', 'pv', 'pvc', 'disk',
'ds', 'persistentvolume',
'persistentvolumeclaim') and \

View File

@ -11,10 +11,11 @@ spec:
metadata:
annotations:
#FIXME Once out of alpha, this should be converted to yaml.
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",

View File

@ -9,10 +9,11 @@ metadata:
namespace: {{ kolla_kubernetes_namespace }}
annotations:
#FIXME Once out of alpha, this should be converted to yaml.
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",

View File

@ -16,10 +16,11 @@ spec:
system: mon
annotations:
#FIXME Once out of alpha, this should be converted to yaml.
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",

View File

@ -8,10 +8,11 @@ metadata:
namespace: {{ kolla_kubernetes_namespace }}
annotations:
#FIXME Once out of alpha, this should be converted to yaml.
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",

View File

@ -1,7 +1,7 @@
{%- set resourceName = kolla_kubernetes.cli.args.resource_name %}
{%- import "services/common/common-lib.yml.j2" as lib with context %}
apiVersion: apps/v1alpha1
kind: PetSet
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: cinder-backup
namespace: {{ kolla_kubernetes_namespace }}
@ -14,11 +14,11 @@ spec:
service: cinder-backup
type: backup
annotations:
pod.alpha.kubernetes.io/initialized: "true"
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-cinder-volume",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"sh",
"-ce",

View File

@ -1,7 +1,7 @@
{%- set resourceName = kolla_kubernetes.cli.args.resource_name %}
{%- import "services/common/common-lib.yml.j2" as lib with context %}
apiVersion: apps/v1alpha1
kind: PetSet
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: cinder-scheduler
namespace: {{ kolla_kubernetes_namespace }}
@ -13,8 +13,6 @@ spec:
labels:
service: cinder
type: scheduler
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
nodeSelector:
{%- set selector = kolla_kubernetes_hostlabel_cinder_scheduler |

View File

@ -1,8 +1,8 @@
{%- set resourceName = kolla_kubernetes.cli.args.resource_name %}
{%- set loggerConfigmapName = "cinder-volume" %}
{%- import "services/common/common-lib.yml.j2" as lib with context %}
apiVersion: apps/v1alpha1
kind: PetSet
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: cinder-volume-ceph
namespace: {{ kolla_kubernetes_namespace }}
@ -18,11 +18,11 @@ spec:
component: cinder-volume-ceph
system: cinder-volume-ceph
annotations:
pod.alpha.kubernetes.io/initialized: "true"
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"bash",
"-ec",

View File

@ -49,10 +49,11 @@ spec:
#FIXME once all services are converted, bind_host can be dropped here and changed to default to 127.0.0.1 instead of 0.0.0.0.
# The init container overrides the listen address and port to ensure it does not conflict with haproxy and prevent
# other containers from directly accessing the service
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",

View File

@ -1,7 +1,7 @@
{%- set resourceName = kolla_kubernetes.cli.args.resource_name %}
{%- import "services/common/common-lib.yml.j2" as lib with context %}
apiVersion: apps/v1alpha1
kind: PetSet
apiVersion: apps/v1beta1
kind: StatefulSet
spec:
serviceName: "elasticsearch"
replicas: {{ elasticsearch_replicas }}
@ -11,11 +11,11 @@ spec:
service: elasticsearch
type: elasticsearch
annotations:
pod.alpha.kubernetes.io/initialized: "true"
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-elasticsearch",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"sh",
"-c",

View File

@ -32,10 +32,11 @@ spec:
#FIXME once all services are converted, bind_host can be dropped here and changed to default to 127.0.0.1 instead of 0.0.0.0.
# The init container overrides the listen address and port to ensure it does not conflict with haproxy and prevent
# other containers from directly accessing the service
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",

View File

@ -14,10 +14,11 @@ spec:
service: horizon
type: api
annotations:
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",

View File

@ -12,10 +12,11 @@ spec:
service: keystone
type: api
annotations:
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "initialize-keystone-logs",
"image": "{{ keystone_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"sh",
"-ce",

View File

@ -18,10 +18,11 @@ spec:
annotations:
#FIXME Its unclear if ovsdb_connection, local_ip, and/or hostPID required. Try removing them once we have a working gate to test with.
#FIXME Once out of alpha, this should be converted to yaml.
pod.alpha.kubernetes.io/init-containers: '[
pod.beta.kubernetes.io/init-containers: '[
{
"name": "update-config",
"image": "{{ kolla_toolbox_image_full }}",
"imagePullPolicy": "IfNotPresent",
"command": [
"/bin/sh",
"-c",
@ -49,6 +50,7 @@ spec:
{
"name": "update-permissions",
"image": "{{ neutron_dhcp_agent_image_full }}",
"imagePullPolicy": "IfNotPresent",
"securityContext": {
"runAsUser": 0
},

View File

@ -24,8 +24,8 @@ kubectl get svc --all-namespaces -o yaml > $WORKSPACE/logs/svc.yaml
kubectl get deployments --all-namespaces -o yaml > \
$WORKSPACE/logs/deployments.yaml
kubectl describe node $(hostname -s) > $WORKSPACE/logs/node.txt
kubectl get pods --all-namespaces -o yaml > $WORKSPACE/logs/pods.yaml
kubectl get pods --all-namespaces -o json | jq -r \
kubectl get pods -a --all-namespaces -o yaml > $WORKSPACE/logs/pods.yaml
kubectl get pods -a --all-namespaces -o json | jq -r \
'.items[].metadata | .namespace + " " + .name' | while read line; do
NAMESPACE=$(echo $line | awk '{print $1}')
NAME=$(echo $line | awk '{print $2}')

View File

@ -1,6 +1,6 @@
#!/bin/bash -e
#!/bin/bash -xe
NAMESPACE=$(kolla-kubernetes resource-template create bootstrap ceph-bootstrap-initial-mon -o json | jq -r '.metadata.namespace')
pods=$(kubectl get pods --selector=job-name=ceph-bootstrap-initial-mon --namespace=$NAMESPACE --output=jsonpath={.items..metadata.name})
pods=$(kubectl get pods -a --selector=job-name=ceph-bootstrap-initial-mon --namespace=$NAMESPACE --output=jsonpath={.items..metadata.name})
kubectl logs $pods --namespace=$NAMESPACE | grep FETCH_CEPH_KEYS | sed 's/^FETCH_CEPH_KEYS: //' > /tmp/$$
[ "x$(jq .failed /tmp/$$)" != "xfalse" ] && echo failed to read keys. && exit -1

View File

@ -90,14 +90,12 @@ if [ "x$4" == "xceph-multi" ]; then
scp tools/setup_kubernetes.sh $line:
scp tests/bin/fix_gate_iptables.sh $line:
scp /usr/bin/kubectl $line:kubectl
NODENAME=$(ssh $line hostname)
ssh $line bash fix_gate_iptables.sh
ssh $line sudo iptables-save > $WORKSPACE/logs/iptables-$line.txt
ssh $line sudo setenforce 0
ssh $line sudo mv kubectl /usr/bin/
ssh $line bash setup_kubernetes.sh slave "$(cat /etc/kubernetes/token.txt)" "$(cat /etc/kubernetes/ip.txt)"
ssh $line sudo sed -i "'s@KUBELET_EXTRA_ARGS=@KUBELET_EXTRA_ARGS=--hostname-override=$line @'" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
ssh $line sudo systemctl daemon-reload
ssh $line sudo systemctl restart kubelet
set +xe
count=0
while true; do
@ -110,7 +108,7 @@ if [ "x$4" == "xceph-multi" ]; then
[ $count -gt 30 ] && echo Node failed to join. && exit -1
set -xe
kubectl get nodes
kubectl label node $line kolla_compute=true
kubectl label node $NODENAME kolla_compute=true
done
fi

View File

@ -59,7 +59,7 @@ if [ "$1" == "master" ]; then
count=$((count + 1))
[ $count -gt 30 ] && echo kube-apiserver failed to come back up. && exit -1
done
curl http://storage.googleapis.com/kubernetes-helm/helm-v2.0.1-linux-amd64.tar.gz | sudo tar --strip-components 1 -C /usr/bin linux-amd64/helm -zxf -
curl http://storage.googleapis.com/kubernetes-helm/helm-v2.1.0-linux-amd64.tar.gz | sudo tar --strip-components 1 -C /usr/bin linux-amd64/helm -zxf -
mkdir -p ~/.kube
sudo cat /etc/kubernetes/kubelet.conf > ~/.kube/config
helm init