====== OpenShift Origin ====== Installation d'OpenShift Origin (version communautaire) sur CentOS 7. ===== Pré-requis ===== ==== NetworkManager ==== NetworkManager est nécessaire, du moins sur les masters et nodes : yum install NetworkManager systemctl enable NetworkManager systemctl start NetworkManager Si NetworkManager n'est pas installé, l'installation via ansible échouera. ==== Configuration des dépôts OpenShift ==== Pour installer les dépôts OpenShift : yum install centos-release-openshift-origin L'installation via playbook ansible configure ce dépôt. ===== Installation du master ===== Pour installer le noeud master : yum install origin-master Installation des dépendances : yum install wget git net-tools bind-utils iptables-services bridge-utils bash-completion origin-clients Installation de docker : yum install docker Il faut onfigurer docker pour autoriser le dépôt docker (registry) local de OpenShift comme source d'images. Cela se fait dans le fichier /etc/sysconfig/docker en y ajoutant la ligne suivante : INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16' ===== Installation d'un node ===== Pour installer un noeud : yum install origin-node ===== Installation cluster etcd ===== Pour installer etcd : yum install etcd ===== Serveur DNS ===== C'est un pré-requis car l'accès aux services des containeurs repose sur l'utilisation d'un serveur DNS. ==== Installation du serveur DNS ==== Pour installer le serveur DNS : yum install bind Il est peut-etre possible d'utiliser dnsmasq Sur les master OpenShift un DNS existe déjà (SkyDNS), et sert pour résoudre les adresses des routeurs qui seront mis en place via OpenShift pour accèder aux services des containeurs. L'idée est donc de configurer le serveur DNS officiel du réseau (ici une VM avec bind) pour que la zone dédiée aux routeurs OpenShift pointe sur le SkyDNS. Pour avoir les utilitaires comme dig : yum install bind-utils ==== Configuration du serveur DNS ==== Création d'une zone pour nos tests (lab.in.noisy.linuxed.net), en ajoutant le bloc suivant dans /etc/named.rfc1912.zones : zone "lab.in.noisy.linuxed.net" IN { type master; file "masters/lab.in.noisy.linuxed.net.zone.master"; allow-update { none; }; }; \\ Création du répertoire masters : mkdir -p /var/named/masters Création du fichier de zone /var/named/masters/lab.in.noisy.linuxed.net.zone.master : $TTL 604800 @ IN SOA lab.in.noisy.linuxed.net. admin.lab.in.noisy.linuxed.net. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.lab.in.noisy.linuxed.net. NS IN A 192.168.2.80 dns-0 IN A 192.168.2.80 cluster IN A 192.168.2.97 master-0 IN A 192.168.2.97 master-1 IN A 192.168.2.98 master-2 IN A 192.168.2.99 etcd-0 IN A 192.168.2.50 etcd-1 IN A 192.168.2.52 etcd-2 IN A 192.168.2.54 node-0 IN A 192.168.2.76 node-1 IN A 192.168.2.77 nfs-0 IN A 192.168.2.89 lb-0 IN A 192.168.2.90 Vérification de la configuration : named-checkconf -z /etc/named.conf Activation et démarrage du service : systemctl enable named systemctl start named Pour tester une résolution : dig @localhost NOM Voilà. ===== Déploiement via ansible ===== Fichier hosts : [OSEv3:children] masters nodes etcd lb [OSEv3:vars] ansible_ssh_user=root deployment_type=origin openshift_dns_ip=192.168.2.50 openshift_master_identity_providers=[{'name': 'htpasswd_auth','login': 'true', 'challenge': 'true','kind': 'HTPasswdPasswordIdentityProvider','filename': '/etc/origin/master/htpasswd'}] openshift_master_default_subdomain=apps.lab.in.noisy.linuxed.net openshift_metrics_install_metrics=true openshift_hosted_metrics_storage_kind=nfs openshift_hosted_metrics_storage_access_modes=['ReadWriteOnce'] openshift_hosted_metrics_storage_host=nfs.lab.in.noisy.linuxed.net openshift_hosted_metrics_storage_nfs_directory=/exports openshift_hosted_metrics_storage_volume_name=metrics openshift_hosted_metrics_storage_volume_size=10Gi openshift_master_cluster_method=native openshift_master_cluster_hostname=cluster.lab.in.noisy.linuxed.net openshift_master_cluster_public_hostname=cluster.lab.in.noisy.linuxed.net [lb] lb-0.lab.in.noisy.linuxed.net openshift_hostname=lb-0.lab.in.noisy.linuxed.net [masters] master-0.lab.in.noisy.linuxed.net openshift_hostname=master-0.lab.in.noisy.linuxed.net master-1.lab.in.noisy.linuxed.net openshift_hostname=master-1.lab.in.noisy.linuxed.net master-2.lab.in.noisy.linuxed.net openshift_hostname=master-2.lab.in.noisy.linuxed.net [nodes] node-0.lab.in.noisy.linuxed.net openshift_hostname=node-0.lab.in.noisy.linuxed.net openshift_node_labels="{'region': 'primary', 'zone': 'lab'}" node-1.lab.in.noisy.linuxed.net openshift_hostname=node-1.lab.in.noisy.linuxed.net openshift_node_labels="{'region': 'primary', 'zone': 'lab'}" master-0.lab.in.noisy.linuxed.net openshift_hostname=master-0.lab.in.noisy.linuxed.net openshift_node_labels="{'region': 'infra', 'zone': 'lab'}" openshift_schedulable=false master-1.lab.in.noisy.linuxed.net openshift_hostname=master-1.lab.in.noisy.linuxed.net openshift_node_labels="{'region': 'infra', 'zone': 'lab'}" openshift_schedulable=false master-2.lab.in.noisy.linuxed.net openshift_hostname=master-2.lab.in.noisy.linuxed.net openshift_node_labels="{'region': 'infra', 'zone': 'lab'}" openshift_schedulable=false [etcd] etcd-0.lab.in.noisy.linuxed.net openshift_hostname=etcd-0.lab.in.noisy.linuxed.net etcd-1.lab.in.noisy.linuxed.net openshift_hostname=etcd-1.lab.in.noisy.linuxed.net etcd-2.lab.in.noisy.linuxed.net openshift_hostname=etcd-2.lab.in.noisy.linuxed.net Pour le déploiement : ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml --inventory ~/archi