diff --git a/conf.yaml b/conf.yaml index 572d8d32dcc262549e79752988c0e7a1e2b065bc..363323546ed0fe8598dfc90cebf68045af343fde 100644 --- a/conf.yaml +++ b/conf.yaml @@ -2,33 +2,32 @@ vars: {} vagrant: backend: libvirt - box: generic/debian9 + box: generic/debian11 resources: machines: - - roles: [kube-node, k8s-cluster] + - roles: [kube_node, k8s_cluster] flavour: medium number: 1 - - roles: [etcd, kube-master, kube-ingress, k8s-cluster, vault] + - roles: [etcd, kube_control_plane, kube_ingress, k8s_cluster, vault] flavour: large number: 1 networks: - cidr: 172.16.42.0/16 roles: [n1] g5k: - env_name: debian9-x64-base walltime: 03:00:00 job_type: allow_classic_ssh job_name: enos-kubernetes resources: machines: - - roles: [kube-node, k8s-cluster] - cluster: parapluie + - roles: [kube_node, k8s_cluster] + cluster: paravance nodes: 1 min: 1 primary_network: n1 secondary_networks: [] - - roles: [etcd, kube-master, kube-ingress, k8s-cluster, vault] - cluster: parapluie + - roles: [etcd, kube_control_plane, kube_ingress, k8s_cluster, vault] + cluster: paravance nodes: 1 min: 1 primary_network: n1 @@ -41,12 +40,10 @@ g5k: vmong5k: walltime: 03:00:00 job_name: enos-kubernetes-vms - image: "/grid5000/virt-images/debian9-x64-std-2019040916.qcow2" - gateway: access.grid5000.fr - gateway_user: msimonin + image: "/grid5000/virt-images/debian11-x64-big-2022041914.qcow2" resources: machines: - - roles: [kube-node, k8s-cluster, etcd, kube-master, kube-ingress, vault] + - roles: [kube_node, k8s_cluster, etcd, kube_control_plane, kube_ingress, vault] cluster: dahu number: 1 flavour_desc : @@ -59,10 +56,10 @@ chameleon: lease_name: kubernetes resources: machines: - - roles: [etcd, kube-master, kube-ingress, vault, k8s-cluster] + - roles: [etcd, kube_control_plane, kube_ingress, vault, k8s_cluster] flavour: compute_skylake number: 1 - - roles: [kube-node, k8s-cluster] + - roles: [kube_node, k8s_cluster] flavour: compute_skylake number: 3 networks: ["my_network"] diff --git a/enos_kubernetes/ansible/post_install.yml b/enos_kubernetes/ansible/post_install.yml index d5a5c849cbbf946cc55e6125a16372d8769815ac..b1aa6592459f17f22e80abd269f540d1921729e0 100644 --- a/enos_kubernetes/ansible/post_install.yml +++ b/enos_kubernetes/ansible/post_install.yml @@ -2,7 +2,7 @@ - name: Post-install # Roles defined in the resource section of the configuration file can be used # here - hosts: kube-master + hosts: kube_control_plane roles: - post_install diff --git a/enos_kubernetes/ansible/roles/common/tasks/deploy.yml b/enos_kubernetes/ansible/roles/common/tasks/deploy.yml index 2fadc019802a5bcc87f0dc60fba533ebadd8764c..b12cb73fd86ce43b92ef7a622f0aa8377b51b1f6 100644 --- a/enos_kubernetes/ansible/roles/common/tasks/deploy.yml +++ b/enos_kubernetes/ansible/roles/common/tasks/deploy.yml @@ -5,8 +5,9 @@ - name: Install pip apt: - name: python-pip + name: python3-pip state: present + update_cache: yes - name: Install Openshift client (for k8s module) pip: diff --git a/enos_kubernetes/ansible/roles/post_install/defaults/main.yml b/enos_kubernetes/ansible/roles/post_install/defaults/main.yml index 3287edea500f4cee3235039e049b17cde1424eff..283d8e5807d9a02af95c271418d05c59dd10a811 100644 --- a/enos_kubernetes/ansible/roles/post_install/defaults/main.yml +++ b/enos_kubernetes/ansible/roles/post_install/defaults/main.yml @@ -1,2 +1,2 @@ --- -master: "{{ groups['kube-master'][0] }}" +master: "{{ groups['kube_control_plane'][0] }}" diff --git a/enos_kubernetes/ansible/roles/post_install/files/dashboard/admin-serviceaccount.yaml b/enos_kubernetes/ansible/roles/post_install/files/dashboard/admin-serviceaccount.yaml index 5d76d390214b8cece4daf7b164363eee22ce7977..3c395a3f77efe4a08811440913e8187625cbb38f 100644 --- a/enos_kubernetes/ansible/roles/post_install/files/dashboard/admin-serviceaccount.yaml +++ b/enos_kubernetes/ansible/roles/post_install/files/dashboard/admin-serviceaccount.yaml @@ -1,4 +1,4 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 +apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard @@ -12,3 +12,5 @@ subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kube-system +- kind: User + name: system:anonymous diff --git a/enos_kubernetes/ansible/roles/post_install/tasks/dashboard.yml b/enos_kubernetes/ansible/roles/post_install/tasks/dashboard.yml index df127c8333a128af3446c6a76cdf76fb36640434..b088de281246fab60f6e41c7aa9194cd00407b3f 100644 --- a/enos_kubernetes/ansible/roles/post_install/tasks/dashboard.yml +++ b/enos_kubernetes/ansible/roles/post_install/tasks/dashboard.yml @@ -6,6 +6,15 @@ src: dashboard/admin-serviceaccount.yaml dest: admin-serviceaccount.yaml +- name: Wait for kube-apiserver + uri: + url: "https://localhost:6443/healthz" + validate_certs: no + register: result + until: result.status == 200 + retries: 60 + delay: 1 + - name: Creating the RBAC rules for the dashboard shell: > kubectl get clusterrolebinding kubernetes-dashboard || kubectl create -f admin-serviceaccount.yaml diff --git a/enos_kubernetes/ansible/roles/post_install/tasks/monitoring.yml b/enos_kubernetes/ansible/roles/post_install/tasks/monitoring.yml index 38cd8ed694221cf9422d93539fb6956d244d6613..3737f211b7b5fe655beddd4af1b493718ba118bc 100644 --- a/enos_kubernetes/ansible/roles/post_install/tasks/monitoring.yml +++ b/enos_kubernetes/ansible/roles/post_install/tasks/monitoring.yml @@ -1,9 +1,9 @@ --- -- name: Starting prometheus-operator +- name: Starting kube-prometheus-stack shell: > - helm list | grep prometheus-operator + helm list | grep kube-prometheus-stack || - helm install stable/prometheus-operator --name prometheus-operator --namespace monitoring + helm install --repo https://prometheus-community.github.io/helm-charts kube-prometheus-stack kube-prometheus-stack --namespace monitoring --create-namespace - name: Set default ROOT_URL for grafana - shell: "kubectl set env deployment/prometheus-operator-grafana GF_SERVER_ROOT_URL='http://{{ master }}:8001/api/v1/namespaces/monitoring/services/prometheus-operator-grafana:80/proxy/' -n monitoring" + shell: "kubectl set env deployment/kube-prometheus-stack-grafana GF_SERVER_ROOT_URL='http://{{ master }}:8001/api/v1/namespaces/monitoring/services/kube-prometheus-stack-grafana:80/proxy/' -n monitoring" diff --git a/enos_kubernetes/build_conf.yml b/enos_kubernetes/build_conf.yml index 69d413bd05f26a47f3966d32b3af8e386fcf0995..ec00fdbf3afb2610aaa1d85d06b2a2029e6c9377 100644 --- a/enos_kubernetes/build_conf.yml +++ b/enos_kubernetes/build_conf.yml @@ -6,7 +6,7 @@ vmong5k: strategy: copy resources: machines: - - roles: [kube-node, k8s-cluster, etcd, kube-master, kube-ingress, vault] + - roles: [kube_node, k8s_cluster, etcd, kube_control_plane, kube_ingress, vault] cluster: paravance number: 1 flavour_desc : @@ -14,12 +14,12 @@ vmong5k: mem: 12288 networks: ["my_network"] g5k: - env_name: debian9-x64-nfs + env_name: debian11-nfs walltime: 04:00:00 job_name: enos-kubernetes-build-g5k resources: machines: - - roles: [kube-node, k8s-cluster, etcd, kube-master, kube-ingress, vault] + - roles: [kube_node, k8s_cluster, etcd, kube_control_plane, kube_ingress, vault] cluster: paravance nodes: 1 min: 1 diff --git a/enos_kubernetes/constants.py b/enos_kubernetes/constants.py index 9a99df6fa7b5fab8e7e15589e23869ac052fb40f..51e7c15d0d372a0767717648cf319bd8ff9d259b 100644 --- a/enos_kubernetes/constants.py +++ b/enos_kubernetes/constants.py @@ -10,7 +10,7 @@ KUBESPRAY_VENV = os.path.join(os.getcwd(), "current", "kubespray-venv") KUBESPRAY_PATH = "kubespray" KUBESPRAY_URL = "https://github.com/kubernetes-sigs/kubespray.git" -KUBESPRAY_VERSION = "release-2.12" +KUBESPRAY_VERSION = "release-2.18" # Enforce this defaut parameters if they are not given as variable in the # configuration @@ -18,8 +18,13 @@ DEFAULT_K_VARS = { "kubelet_max_pods": 100, "helm_enabled": True, "etcd_deployment_type": "docker", + "dashboard_enabled": True, # since 2.9.0 "dashboard_skip_login": True, + # Since 2.18.0 + "container_manager": "docker", + "docker_registry_mirrors": ["http://docker-cache.grid5000.fr"], + "docker_insecure_registries": ["docker-cache.grid5000.fr"], # fix a transient bug (unreferenced for now) "enable_nodelocaldns": False, } diff --git a/enos_kubernetes/tasks.py b/enos_kubernetes/tasks.py index 67949551ba41eef6958976e4835d6137a9265ee0..0fd83a0efbdcd3c2f799eb798722eb2341180e85 100644 --- a/enos_kubernetes/tasks.py +++ b/enos_kubernetes/tasks.py @@ -6,8 +6,6 @@ from enoslib.infra.enos_vagrant.configuration import Configuration as VagrantCon from enoslib.infra.enos_vagrant.provider import Enos_vagrant from enoslib.infra.enos_vmong5k.configuration import Configuration as VMonG5kConf from enoslib.infra.enos_vmong5k.provider import VMonG5k -from enoslib.infra.enos_chameleonbaremetal.provider import Chameleonbaremetal as Cb -from enoslib.infra.enos_chameleonbaremetal.configuration import Configuration as CbConf import logging import os from subprocess import check_call @@ -93,8 +91,10 @@ def vmong5k(config, force, env=None, **kwargs): @enostask(new=True) def chameleon(config, force, env=None, **kwargs): - conf = CbConf.from_dictionnary(config["chameleon"]) - provider = Cb(conf) + from enoslib.infra.enos_chameleonbaremetal.provider import Chameleonbaremetal + from enoslib.infra.enos_chameleonbaremetal.configuration import Configuration + conf = Configuration.from_dictionnary(config["chameleon"]) + provider = Chameleonbaremetal(conf) roles, networks = provider.init(force_deploy=force) env["config"] = config env["roles"] = roles @@ -127,7 +127,7 @@ def prepare(**kwargs): logger.info("Remove previous Kubespray installation") check_call("rm -rf %s" % kspray_path, shell=True) - logger.info("Cloning Kubespray rekubernetes-dashboard-7fc94b7fc5-ff5rqpository...") + logger.info("Cloning Kubespray repository...") check_call( "git clone -b {ref} --depth 1 --single-branch --quiet {url} {dest}".format( ref=KUBESPRAY_VERSION, url=KUBESPRAY_URL, dest=kspray_path @@ -176,7 +176,7 @@ def post_install(**kwargs): @enostask() def hints(**kwargs): env = kwargs["env"] - master = env["roles"]["kube-master"][0].address + master = env["roles"]["kube_control_plane"][0].address hints = [] hints.append( "dashboard url : https://{}:6443/api/v1/namespaces/" @@ -197,7 +197,7 @@ def hints(**kwargs): hints.append( "Grafana dashboard: http://{}:8001/api/v1/namespaces/" - "monitoring/services/prometheus-operator-grafana:80" + "monitoring/services/kube-prometheus-stack-grafana:80" "/proxy/#!/login".format(master) )