NOTE
En caso de tener que aislar las VMs en una red interna en 1.2. Montar Gateway hay instrucciones para montar una VM como una Gateway NAT entre la red interna (Host-Only) y la red de las máquinas Hosts (Bridged)
TIP
Se recomienda partir de los ficheros de https://github.com/cragr/okd4_files e ir cambiando las IPs según correspondan. (La configuración DHCP no se incluye)
git clone https://github.com/cragr/okd4_files
Importante
En AlmaLinux 9 si no se configura el firewall con lo contrario estará todo denegado por defecto. Por lo tanto los comandos de configuración
firewall-cmd
son fundamentales. Una forma intuitiva de saber que lo hicimos mal es si al intentar acceder al servicio desde otra máquina el puerto estáfitered
.
Configuración de DHCP
Reservar IP según MAC
Para reservar una IP según la MAC usando dhcpd
en AlmaLinux, edita el archivo de configuración de dhcpd
, normalmente ubicado en:
/etc/dhcp/dhcpd.conf
Se agregan entradas de “host” indicando la MAC y la IP reservada. Por ejemplo:
host nombre_del_host {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.100;
}
Asegurarse de que la IP esté dentro del subnet definido o sea coherente con la red configurada en dhcpd.conf
. Ejemplo de un bloque subnet:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
}
Nota
Como nosotros solo vamos a tener en la red máquinas con IPs reservadas según MAC así que podemos omitir el range.
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
}
Ejemplo completo de configuración
Basado en los datos proporcionados Macs e ips vmware.csv:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.112.0 netmask 255.255.255.0 {
# range 192.168.112.200 192.168.112.210;
# option subnet-mask 255.255.255.0;
option routers 192.168.112.254;
option domain-name-servers 192.168.112.102;
option domain-name "okd.local";
# Reservas estáticas
host Manager {
hardware ethernet 00:0C:29:CE:C7:EA;
fixed-address 192.168.112.102;
}
host Compute1 {
hardware ethernet 00:0C:29:6D:79:61;
fixed-address 192.168.112.104;
}
host Compute2 {
hardware ethernet 00:0C:29:AB:F1:5F;
fixed-address 192.168.112.105;
}
host Bootstrap {
hardware ethernet 00:0C:29:F0:1C:B8;
fixed-address 192.168.112.101;
}
host Control {
hardware ethernet 00:0C:29:C4:66:56;
fixed-address 192.168.112.103;
}
}
cp dhcpd.conf /etc/dhcp/dhcpd.conf
sudo systemctl enable dhcpd
sudo systemctl stop dhcpd
sudo systemctl start dhcpd
sudo systemctl status dhcpd
Configuración de DNS
Ficheros
Configuración de named.conf
Basado en la red 192.168.112.0/24:
options {
listen-on port 53 { 127.0.0.1; 192.168.112.102; };
# 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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; 192.168.112.0/24; };
recursion yes;
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.root.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";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/named/named.conf.local";
Configuración de named.conf.local
zone "okd.local" {
type master;
file "/etc/named/zones/db.okd.local"; # zone file path
};
zone "112.168.192.in-addr.arpa" {
type master;
file "/etc/named/zones/db.192.168.112"; # 192.168.112.0/24 subnet
};
Configuración de db.okd.local
$TTL 604800
@ IN SOA okd4-services.okd.local. admin.okd.local. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ; Negative Cache TTL
)
; name servers - NS records
IN NS okd4-services
; name servers - A records
okd4-services.okd.local. IN A 192.168.112.102
; OpenShift Container Platform Cluster - A records
okd4-bootstrap.lab.okd.local. IN A 192.168.112.101
okd4-control-plane-1.lab.okd.local. IN A 192.168.112.103
okd4-compute-1.lab.okd.local. IN A 192.168.112.104
okd4-compute-2.lab.okd.local. IN A 192.168.112.105
; OpenShift internal cluster IPs - A records
api.lab.okd.local. IN A 192.168.112.102
api-int.lab.okd.local. IN A 192.168.112.102
*.apps.lab.okd.local. IN A 192.168.112.102
etcd-0.lab.okd.local. IN A 192.168.112.103
console-openshift-console.apps.lab.okd.local. IN A 192.168.112.102
oauth-openshift.apps.lab.okd.local. IN A 192.168.112.102
; OpenShift internal cluster IPs - SRV records
_etcd-server-ssl._tcp.lab.okd.local. 86400 IN SRV 0 10 2380 etcd-0.lab
Configuración de db.192.168.112
$TTL 604800
@ IN SOA okd4-services.okd.local. admin.okd.local. (
6 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ; Negative Cache TTL
)
; name servers - NS records
IN NS okd4-services.okd.local.
; name servers - PTR records
102 IN PTR okd4-services.okd.local.
; OpenShift Container Platform Cluster - PTR records
101 IN PTR okd4-bootstrap.lab.okd.local.
103 IN PTR okd4-control-plane-1.lab.okd.local.
104 IN PTR okd4-compute-1.lab.okd.local.
105 IN PTR okd4-compute-2.lab.okd.local.
102 IN PTR api.lab.okd.local.
102 IN PTR api-int.lab.okd.local.
Donde colocar los ficheros de configuración y lanzado del servicio.
sudo cp named.conf /etc/named.conf
sudo cp named.conf.local /etc/named/
sudo mkdir /etc/named/zones
sudo cp db* /etc/named/zones
sudo systemctl enable named
sudo systemctl start named
sudo systemctl status named
sudo firewall-cmd --permanent --add-port=53/udp
sudo firewall-cmd --reload
HAproxy
Para configurar haproxy según el esquema anterior uso el fichero de configuración /etc/haproxy/haproxy.cfg
:
# Global settings
global
maxconn 20000
log /dev/log local0 info
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 300s
timeout server 300s
timeout http-keep-alive 10s
timeout check 10s
maxconn 20000
listen stats
bind :9000
mode http
stats enable
stats uri /
frontend okd4_k8s_api_fe
bind :6443
default_backend okd4_k8s_api_be
mode tcp
option tcplog
backend okd4_k8s_api_be
balance source
mode tcp
server okd4-bootstrap 192.168.112.101:6443 check
server okd4-control-plane-1 192.168.112.103:6443 check
frontend okd4_machine_config_server_fe
bind :22623
default_backend okd4_machine_config_server_be
mode tcp
option tcplog
backend okd4_machine_config_server_be
balance source
mode tcp
server okd4-bootstrap 192.168.112.101:22623 check
server okd4-control-plane-1 192.168.112.103:22623 check
frontend okd4_http_ingress_traffic_fe
bind :80
default_backend okd4_http_ingress_traffic_be
mode tcp
option tcplog
backend okd4_http_ingress_traffic_be
balance source
mode tcp
server okd4-compute-1 192.168.112.104:80 check
server okd4-compute-2 192.168.112.105:80 check
frontend okd4_https_ingress_traffic_fe
bind :443
default_backend okd4_https_ingress_traffic_be
mode tcp
option tcplog
backend okd4_https_ingress_traffic_be
balance source
mode tcp
server okd4-compute-1 192.168.112.104:443 check
server okd4-compute-2 192.168.112.105:443 check
En el siguiente bloque de código se descarga el binario, se establece la configuración, se permite establecer conexiones salientes a cualquier IP y puerto (Explicacion setsebool) y se modifican las reglas del firewall necesarias.
sudo dnf install haproxy -y
sudo cp haproxy.cfg /etc/haproxy/haproxy.cfg
sudo setsebool -P haproxy_connect_any 1
sudo systemctl enable haproxy
sudo systemctl start haproxy
sudo systemctl status haproxy
sudo firewall-cmd --permanent --add-port=6443/tcp
sudo firewall-cmd --permanent --add-port=22623/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
HTTPD
Se instala Apache, se cambia el puerto de escucha al 8080 para no ocupar el 80 que usaremos más tarde con algún servicio de OKD (creo jajas). Sirve para permitir que el servidor web pueda leer archivos del directorio del usuario (lo usan en la guía de Craig, no sé porqué en verdad).
sudo dnf install -y httpd
sudo sed -i 's/Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf
sudo setsebool -P httpd_read_user_content 1
sudo systemctl enable httpd
sudo systemctl start httpd
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
Siguiente |
---|
2. Lanzamiento de los nodos |