====== 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