Tuesday, March 12, 2019

Controladores de la replicación


Cuando necesitamos hacer escalamiento horizontal, ya sea por que un POD se nos está quedando sin recurso, necesitamos usar la característica de auto escaling de Openshift.
Para esto, se manejan los Controladores de Replicación.

$ oc autoscale dc/frontend --min 1 --max 10 --cpu-percent=80
deploymentconfig "frontend" autoscaled
Acá tenemos un ejemplo de un autoescalamiento de POD.

Mirando un Horizontal Pod Autoscaler

To view the status of a horizontal pod autoscaler:
  • Use the oc get command to view information on the CPU utilization and pod limits:
    $ oc get hpa/hpa-resource-metrics-cpu
    NAME                         REFERENCE                                 TARGET    CURRENT  MINPODS        MAXPODS    AGE
    hpa-resource-metrics-cpu     DeploymentConfig/default/frontend/scale   80%       79%      1              10         8d
    The output includes the following:
    • Target. The targeted average CPU utilization across all pods controlled by the deployment configuration.
    • Current. The current CPU utilization across all pods controlled by the deployment configuration.
    • Minpods/Maxpods. The minimum and maximum number of replicas that can be set by the autoscaler.
  • Use the oc describe command for detailed information on the horizontal pod autoscaler object.
    $ oc describe hpa/hpa-resource-metrics-cpu
    Name:                           hpa-resource-metrics-cpu
    Namespace:                      default
    Labels:                         
    CreationTimestamp:              Mon, 26 Oct 2015 21:13:47 -0400
    Reference:                      DeploymentConfig/default/frontend/scale
    Target CPU utilization:         80% 
    Current CPU utilization:        79% 
    Min replicas:                   1 
    Max replicas:                   4 
    ReplicationController pods:     1 current / 1 desired
    Conditions: 
      Type                  Status  Reason                  Message
      ----                  ------  ------                  -------
      AbleToScale           True    ReadyForNewScale        the last scale time was sufficiently old as to warrant a new scale
      ScalingActive         True    ValidMetricFound        the HPA was able to successfully calculate a replica count from pods metric http_requests
      ScalingLimited        False   DesiredWithinRange      the desired replica count is within the acceptable range
    Events:
    The average percentage of the requested memory that each pod should be using.
    The current CPU utilization across all pods controlled by the deployment configuration.
    The minimum number of replicas to scale down to.
    The maximum number of replicas to scale up to.
    If the object used the v2alpha1 API, status conditions are displayed.

Monday, March 11, 2019

Secrets

Los secrets son una forma de "ocultar" las credenciales, en formato yaml.
estos luegos son "montados", por openshift.
esto sirve para no tener que andar pasando contraseeñas si no se desea.
Para hacerlo, la forma via cli es la siguiente.

oc create secret generic mysql \
--from-literal='database-user'='mysql' \
--from-literal='database-password'='centos' \
--from-literal='database-root-password'='centos-admin'
Como vemos aca, esto después nos generará un yaml que puede ser montado por el project para poder seguir trabajandolo.

oc get secret mysql -o yaml
Con esto vemos la estructura del yaml que acabamos de crear.


Creando Exportaciones NFS para los PVS

Cuando exportemos un volumen NFS, debeemos tener los siguientes cuidados.

el ownership debe ser nfsnobody
Los permisos deben ser 0700
exportarlos usando all_squash

Por ejemplo

/mnt/exports *(rw,async,all_squash)
lo que sigue es

ver que selinux no moleste, si esta activado tenemos que ver la forma de exclusión de booleans policys.


Saturday, March 9, 2019

Manejo de Usuarios

Para agregar Usuarios, ( Con autenticacion de httpasswd )

htpasswd -b /etc/origin/master/htpasswd user1 centos

Sunday, March 3, 2019

Playbooks a correr

ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/prerequisites.yml 




ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml 

El archivo hosts que me falto!

[OSEv3:children]
masters
nodes
etcd

[OSEv3:vars]
# admin user created in previous section
ansible_ssh_user=root
ansible_become=true
openshift_deployment_type=origin

# use HTPasswd for authentication
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
# CHANGE THIS LINE / openssl passwd -apr1 redhat
openshift_master_htpasswd_users={'admin':'$apr1$qEufOSTX$R1ObTWs7YVwmKSjmaWzCa0', 'developer': '$apr1$ojtj8hHs$C9UZtdLoDs2Hcdw2msKOm0'}
os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'
# define default sub-domain for Master node
openshift_master_default_subdomain=apps.mylabserver.com
# allow unencrypted connection within cluster
openshift_docker_insecure_registries=172.30.0.0/16
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability
[masters]
qqmelo1c.mylabserver.com openshift_schedulable=true containerized=false

[etcd]
qqmelo1c.mylabserver.com

[nodes]
# defined values for [openshift_node_group_name] in the file below
# [/usr/share/ansible/openshift-ansible/roles/openshift_facts/defaults/main.yml]
qqmelo1c.mylabserver.com openshift_node_group_name='node-config-all-in-one'
qqmelo2c.mylabserver.com openshift_node_group_name='node-config-compute'

Sunday, February 24, 2019

OKD 3.11 , aun mas facil!!!!

Y bueno, siguiendo abrazando a esta locura, que me encanta, instale un OKD 3.11 de dos nodos, con un maestro y un nodo.

empezando

Host Maestro

qqmelo1c.mylabserver.com

Host Nodo

qqmelo2c.mylabserver.com

lo primero que hacemos es cruzar llaves, ( ssh-keygen / ssh-copy-id, entrada en /etc/hosts que queden igual ).

Ejemplo del /etc/hosts.

[root@qqmelo1c cloud_user]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# Cloud Server Hostname mapping
172.31.121.72   qqmelo1c.mylabserver.com master
172.31.114.177   qqmelo2c.mylabserver.com nodo


Lo que falta ahora, es instalar los paquetes, el sistema operativo de base es Centos 7.6, e instalaremos OKD 3.11

yum -y install centos-release-openshift-origin311 epel-release docker git pyOpenSSL

Acá instalamos los paquetes básicos. Debemos habilitar docker y levantarlo.

 systemctl start docker
 systemctl enable docker

Ahora instalamos los playbooks de ansible para desplegar el cluster de OKD. 

yum -y install openshift-ansible

Este paso que puse ahora, es para tener la configuración de entrada a la consola de okd.

 openssl passwd -apr1 centos

La salida del hash la usaremos más adelante en el archivo hosts.

Como dijimos, vamos a instalar un cluster donde habra un master, y un nodo. Para eso, configuramos el archivo /etc/ansible/hosts
de la siguiente manera.