OPENSHIFT V3 – INSTALACIÓN BASE
Disponemos de dos procesos de instalación:
1.- Simplificado: Que a su vez consta de tres versiones. La información de este mecanismo no la detallaré en este tutorial, pero si queréis probarlo, lo tenéis disponible en la documentación de OpenShift.
• Contenedor Docker: Podemos obtener de dockehub una imagen all-in-one.
• Descargar el binario: Red Hat ofrece binarios para ser ejecutados en nuestro sistema. Otro modelo all-in-one disponible en el github de OpenShift.
• Compilar el código fuente: Es una alternativa al binario, compilar el código fuente de OpenShift. También all-in-one en github.
2.- Avanzado: Hace uso de Ansible y será el que sigamos en este tutorial, por aproximarse a lo que sería un entorno de producción.
¿EMPEZAMOS?
La estructura de máquinas virtuales será la siguiente:
• 4 máquinas virtuales con al menos 1024MB de RAM y 1vCpu (Opcionalmente pueden reducirse a 2 máquinas, master y node, en cuyo caso necesitarán al menos de 2048MB de RAM).
• gw.osc.test (Máquina gateway con servicios DNS).
• master.osc.test (Máquina master).
• node-[1-2].osc.test (Nodos de computación).
• Instalación de Centos 7 mínima, sin entorno gráfico.
• Conexión a internet desde todas las máquinas.
• IP estática para cada una de las máquinas.
Todas las operaciones de instalación se realizarán con el usuario root.
Lo primero de todo será instalar y configurar un servidor DNS que, aunque puede ir en Master, se aconseja que sea externo. Yo lo haré en Gateway.
yum install bind bind-utils
yum install bind-utils
El siguiente paso es configurar el servidor, por ello editaremos el fichero /etc/named.conf de la siguiente manera:
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any; };
//listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
forwarders { 8.8.8.8; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "osc.test" IN {
type master;
file "osc.test.zone";
};
zone "100.168.192.IN-ADDR.ARPA." IN {
type master;
file "100.168.192.IN-ADDR.ARPA.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Y ahora editaremos los ficheros de zona y de zona inversa que estarán en /var/named/osc.test.zone y /var/named/100.168.192.IN-ADDR.ARPA.zone respectivamente. Esta configuración es de ejemplo, las IP, los hostname, dominios, etc, se podrán ajustar a vuestras necesidades:
$ORIGIN osc.test.
$TTL 3H
@ IN SOA osc.test. root.osc.test. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS gw.osc.test.
@ IN A 192.168.100.99
gw IN A 192.168.100.99
master IN A 192.168.100.100
node-1 IN A 192.168.100.101
node-2 IN A 192.168.100.102
; This wildcard record is intended to allow OpenShift router to route applications by hostname
*.apps.osc.test. 300 IN A 192.168.100.100
$ORIGIN 100.168.192.IN-ADDR.ARPA.
$TTL 3H
@ IN SOA osc.test. root.osc.test. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS gw.osc.test.
99 PTR gw.osc.test.
100 PTR master.osc.test.
101 PTR node-1.osc.test.
102 PTR node-2.osc.test.
Configuramos el propietario:
chown named:named /var/named/{osc.test.zone,100.168.192.IN-ADDR.ARPA.zone}
Ahora sólo queda arrancar y habilitar el servicio:
systemctl start named
systemctl enable named
Para finalizar, ajustaremos el firewall:
firewall-cmd --add-service=dns
firewall-cmd --add-service=dns --permanent
Y desde uno de nuestros nodos, que debería apuntar a la IP de Gateway como DNS en el fichero /etc/resolv.conf, probamos una transferencia de dominio:
root@node-1 ~]# dig -t axfr osc.test
; DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 -t axfr osc.test
;; global options: +cmd
osc.test. 10800 IN SOA osc.test. root.osc.test. 0 86400 3600 604800 10800
osc.test. 10800 IN NS gw.osc.test.
osc.test. 10800 IN A 192.168.100.99
gw.osc.test. 10800 IN A 192.168.100.99
master.osc.test. 10800 IN A 192.168.100.100
node-1.osc.test. 10800 IN A 192.168.100.101
node-2.osc.test. 10800 IN A 192.168.100.102
osc.test. 10800 IN SOA osc.test. root.osc.test. 0 86400 3600 604800 10800
;; Query time: 0 msec
;; SERVER: 192.168.100.99#53(192.168.100.99)
;; WHEN: Thu Sep 01 12:19:41 UTC 2016
;; XFR size: 7 records (messages 1, bytes 202)
FIREWALL
Como preparación para el resto de las configuraciones, vamos a dejar configurado el firewall.
Puertos:
INSTALANDO PAQUETES
Llegó el momento de instalar cosas interesantes. Empezaremos por los paquetes básicos:
yum install wget git net-tools bind-utils iptables-services bridge-utils bash-completion
Vamos a instalar también los repositorios de EPEL, aunque los tendremos deshabilitados:
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
Ahora vamos a instalar, sólo en el Gateway, openshift-ansible, que será la herramienta que utilicemos para instalar OpenShift.
Primero instalaremos Ansible, y luego clonaremos el repositorio de github de openshift-ansible. Debemos asegurarnos de estar en la rama master, que será la última versión estable:
yum -y --enablerepo=epel install ansible pyOpenSSL
cd ~
git clone https://github.com/openshift/openshift-ansible
cd openshift-ansible
git checkout master
Tiempo de instalar y configurar Docker para usar el registry interno:
yum install docker
sed -i '/OPTIONS=.*/c\OPTIONS="--selinux-enabled --insecure-registry 172.30.0.0/16"' /etc/sysconfig/docker
cat <<EOF > /etc/sysconfig/docker-storage-setup
DEVS=/dev/vdb
VG=docker-vg
EOF
docker-storage-setup
systemctl start docker
systemctl enable docker
Al modificar OPTIONS hemos configurado Docker para que confíe en cualquier registry dentro de esa subred, sin necesidad de validar certificados. Docker, por defecto, requiere el uso de certificados para acceder a cualquier registry. Esto es una medida de seguridad. Se puede securizar el registry interno, pero eso está más allá del objetivo de este tutorial.
Durante la configuración del almacenamiento persistente en la opción DEVS selecciona el dispositivo que tengas disponible.
Por último, configuraremos el Master para que pueda acceder vía SSH a los nodos. Crearemos una clave de tipo rsa con passphrase en blanco:
ssh-keygen
ssh-copy-id root@master.osc.test
ssh-copy-id root@node-1.osc.test
ssh-copy-id root@node-2.osc.test
Y hasta aquí la instalación básica. En el próximo post empezaremos con la instalación de nuestro cluster, pero primero veremos cómo funciona Ansible.
¡Nos vemos!
Essi Projects
Comparte la noticia