Categorías
cloud elasticsearch kubernetes

Elastic Cloud on Kubernetes

Elastic Cloud on Kubernetes o ECK amplía la capacidad de orquestación de Kubernetes para desplegar, securizar y actualizar tu clúster de Elasticsearch. En este artíulo aprenderás a desplegar Elastic Cloud en un clúster de Kubernetes en Google Cloud. ECK está basado en el patrón kubernetes operator y además de Elasticsearch también soporta la configuración y administración de Kibana. Puedes desplegar sobre la distribución que tú elijas, incluidos Google Kubernetes Engine, Azure Kubernetes Service, Amazon Elastic Kubernetes Service y Openshift.

Las versiones soportadas por ECK son las siguientes:

  • kubectl 1.11 o superior
  • Kubernetes 1.12 o superior o Openshift 3.11 o superior
  • Elastic Stack 6.8 o superior, 7.1 o superior

Google Kubernetes Engine

Lo primero que necesitamos para desplegar a través de ECK es tener disponible un cluster de Kubernetes. Google Kubernetes Engine o GKE es el entorno gestionado de kubernetes de Google Cloud Platform.

Para crear un cluster de kubernetes en Google Cloud Platform tan solo tenemos que entrar en la consola (https://console.cloud.google.com) y una vez que nos hemos autenticado y estamos dentro, entrar en el menú de navegación y seleccionar Kubernetes Engine / Clusters. Una vez dentro pulsamos la opción «Crear clúster«.

Nos aparecerá un formulario para especificar las características de nuestro clúster. Lo primero es darle un nombre, por ejemplo cluster-eck y seleccionamos la zona, por ejemplo europe-west1-c o a europe-west1-b. La versión de kubernetes ya vimos que tenía que ser la 1.12 o superior, así que podemos dejar la que venga por defecto.

En grupo de nodos seleccionamos el tipo de nodo en cuanto a cpu y memoria. Podemos arrancar el clúster con el mínimo de memoria, pero si queremos un deployment de Elasticsearch con varios nodos para alta disponibilidad + un deployment de Kibana, necesitaremos al menos nodos de 7,5Gb.

Cómo se trata de un cluster para probar ECK seleccionamos la opción de clúster público en la categoría Redes.

Pulsamos crear y comenzará a desplegarse el clúster en nuestro proyecto de Google Cloud. Si lo deseamos podemos crear el clúster a través del SDK o de Cloud Shell a través del comando que te ofrece el propio proceso de creación.

Crear clúster desde SDK de Google Cloud
Creación del clúster de Kubernetes completada

Kubernetes Operator

Una vez que tenemos el cluster de kuberntes listo, necesitamos instalar las custom resource definitions y el operador de kubernetes con sus reglas RBAC. Para ello tenemos que tener instalado el cliente kubectl en el SDK de Google Cloud Shell, ya está instalado por defecto en Cloud Shell. Para shell en local ejecutar:

gcloud components install kubectl

Antes de operar el cluster con kubectl necesitamos obtener las credenciales con el siguiente comando y así generar la entrada correspondiente en kubeconfig. Debes modificar la zona y el nombre del proyecto por el que corresponda.

gcloud container clusters get-credentials cluster-eck --zone europe-west1-b --project miprimerproyecto

Fetching cluster endpoint and auth data.
kubeconfig entry generated for cluster-eck.

La instalación del operador de kubernetes se realizaría con el comando:

kubectl apply -f https://download.elastic.co/downloads/eck/1.0.1/all-in-one.yaml

El comando anterior crea en el clúster un namespace llamado elastic-system. Podemos ver los logs del operador con el siguiente comando:

kubectl -n elastic-system logs -f statefulset.apps/elastic-operator

Desplegar un cluster Elasticsearch

Para desplegar un cluster de Elasticsearch, debes aplicar la siguiente especificación. En ella verás que se especifica un único nodo. El nodo debe tener más de 2Gb de memoria o el pod no arrancará adecuadamente:

cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 7.6.1
  nodeSets:
  - name: default
    count: 1
    config:
      node.master: true
      node.data: true
      node.ingest: true
      node.store.allow_mmap: false
EOF

El operador automáticamente crea el clúster de Elasticsearch con la configuración deseada. Esto lleva algunos minutos hasta que el clúster está preparado para su uso. Puedes ver el estado con el siguiente comando:

kubectl get elasticsearch

NAME         HEALTH   NODES   VERSION   PHASE   AGE
quickstart   green    1       7.6.0     Ready   3m4s

Para acceder a Elasticsearch necesitamos obtener las credenciales de acceso. Un usuario predeterminado llamado elastic se crea automáticamente con la contraseña almacenada en un secreto de Kubernetes:

PASSWORD=$(kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode)

Ahora podemos acceder al cluster a través del comando curl:

curl -u "elastic:$PASSWORD" -k "https://quickstart-es-http:9200"

{
  name: "quickstart-es-default-0",
  cluster_name: "quickstart",
  cluster_uuid: "I2jl0QQlT_GEbzFhNUXy2Q",
    version: {
    number: "7.6.0",
    build_flavor: "default",
    build_type: "docker",
    build_hash: "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    build_date: "2020-02-06T00:09:00.449973Z",
    build_snapshot: false,
    lucene_version: "8.4.0",
    minimum_wire_compatibility_version: "6.8.0",
    minimum_index_compatibility_version: "6.0.0-beta1"
    },
  tagline: "You Know, for Search"
}

Si tenemos SDK Shell en local, en vez de probarlo con un curl como en el párrafo anterior, podemos hacer forward del puerto y probar desde el navegador con el usuario «elastic» y la contraseña obtenida desde los secrets de kubernetes:

kubectl port-forward service/quickstart-es-http 9200

Desplegar Kibana

Para desplegar kibana debemos especificar la siguiente configuración. En ella debemos asociar kibana con el cluster de Elastic:

cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 7.6.1
  count: 1
  elasticsearchRef:
    name: quickstart
EOF

Puedes ver el estado con el siguiente comando:

kubectl get kibana

NAME         HEALTH   NODES   VERSION   AGE
quickstart   red              7.6.0     4s

Para acceder a kibana podemos ver el servicio creado para kibana:

kubectl get service quickstart-kb-http

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
quickstart-kb-http   ClusterIP   10.44.4.49   <none>        5601/TCP   3m57s

Usamos kubectl port-forward para acceder a Kibana desde el pc local:

kubectl port-forward service/quickstart-kb-http 5601

Abrimos en el navegador la url https://localhost:5601 y accederemos a la interfaz de kibana a la que podemos acceder con el usuario elastic y la password obtenida más arriba.

Si has llegado hasta aquí habrás sido capaz de desplegar Elastic cloud en un cluster de Kubernetes en Google Cloud. Se trata de un despliegue básico que puedes ir completando. Si modificas la especificación y aumentas el número de nodos, verás que el clúster irá añadiendo nodos de forma transparente. También puedes añadir nodos para master dedicados, subir de versión, etc. Desde luego se trata de un paso adelante para la orquestación de nuestros despliegues de Elasticsearch. IMPORTANTE: No olvides eliminar tus despliegues y cluster de kubernetes si no quieres incurrir en gastos innecesarios.

Categorías
google Internet wordpress

Cómo añadir el botón +1 de Google en tu WordPress

En fechas recientes Google ha lanzado el botón +1 en el buscador, como una manera de recomendar sitios a tus amigos y contactos. Al pulsar el botón en la lista de resultados del buscador estamos recomendando ese enlace, de manera que cuando aparezca dicho resultado en la búsqueda de tus amigos, aparecerá un mensaje indicando que lo recomiendas junto a tu foto. Pero el botón no se restringe únicamente a los resultados del buscador. Cómo habrás podido comprobar el botón aparece en multitud de webs, de manera que cuando visitas una página puedas recomendarla directamente. A continuación se detalla el proceso para incluir el botón +1 en tu web:

Cómo conseguir el código del botón

  1. Ir al sitio de Google para Webmasters dónde se configura el botón.
  2. Lo primero que tenemos que especificar es el tamaño del botón (en píxeles) que más se aproxima a las dimensiones que disponemos en nuestra web. También debemos elegir el idioma.
  3. Tras esto hacemos clic en Opciones Avanzadas de modo que se despliegan más opciones de configuración. Aquí podemos desmarcar la casilla «Incluir recuento» en caso de que no deseemos que aparezca el número de veces que se ha pulsado el botón junto al mismo. También tenemos que incluir la dirección URL que queremos recomendar cuando se pulse el botón, que suele ser la url de nuestra página. En caso de que vayamos a incluir el botón en WordPress sería el permalink con la llamada a la función: <?php the_permalink(); ?>.

Con todo esto se generará un código para incluir en nuestras páginas.

<!-- Añade esta etiqueta en la cabecera o delante de la etiqueta body. -->
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
  {lang: 'es'}
</script>

<!-- Añade esta etiqueta donde quieras colocar el botón +1 -->
<g:plusone size="medium" href="<?php the_permalink(); ?>"></g:plusone>

Inserción del código en WordPress

Lo normal es que la primera parte del código, que va entre las etiquetas <script></script> se inserte en la cabecera de la página, justo antes de la etiqueta <body>. Desde el escritorio de WordPress, dentro del menú Apariencia, seleccionamos el menú Editor. Aparecerá entonces una ventana de edición y a la derecha una lista de páginas. Seleccionamos la correspondiente a la cabecera (header.php) para visualizarla en el editor. Copiamos y pegamos la primera parte del código del botón generado dentro de las etiquetas <head></head> justo antes de la etiqueta <body> y pulsamos el botón Actualizar Archivo.

La segunda parte del código debemos insertarla dónde queramos colocar el botón. En mi caso lo incluiré tanto en la página principal como en la página de cada uno de las entradas, así que copio y pego esta segunda parte del código tanto en la página principal (index.php) como en la página de entrada individual (single.php). Pulsamos el botón Actualizar Archivo para cada página y ya tenemos el botón +1 en nuestra web.

Categorías
google Internet

Posicionamiento Web en Google

Durante las últimas semanas estoy bastante volcado en un tema que trae de cabeza a webmasters de todo el mundo: el posicionamiento web en buscadores, y más concretamente el posicionamiento web en Google. Tenemos que tener en cuenta que Google es el más utilizado y responde a más del 60% de las búsquedas en la Web. Conseguir un buen posicionamiento en el buscador, y aparecer en la primera lista de resultados, es lo que todo el mundo anhela para conseguir más tráfico hacia su sitio en Internet. Conociendo el algoritmo que Google utiliza podemos identificar una serie de técnicas para desarrollar sitios web sencillos, accesibles y fácilmente indexables por parte del buscador, aunque no debemos esperar resultados inmediatos, se trata de un trabajo constante y los resultados son a largo plazo.

Logo Google

Buenos Contenidos

Lo fundamental es tener buenos contenidos que atraigan al mayor número de visitantes. Si los contenidos merecen la pena seguro que tendrás más enlaces de otros sitios web. Google valora positivamente el número de enlaces externos a tu contenido. Además es recomendable actualizar periódicamente los contenidos ya que a Google le gustan los sitios que se renuevan y actualizan sus contenidos y además, el robot ‘Freshbot‘ pasa regularmente por aquellas páginas con los contenidos más frescos y los actualiza en la base de datos de Google en cuestión de horas.

Debes introducir contenidos reservando varias palabras clave (con 2 o 3 serán suficientes) para las cuáles quieres aparecer en las primeras posiciones de Google. Estas palabras clave las debes situar en:

  • TITLE. Es el lugar más importante. Intenta que en el título aparezcan las keywords o palabras clave. Los títulos no deben ser muy largos e intenta no repetir las palabras o Google lo penalizará (lo considera spam).
  • ALT: La etiqueta ALT está dentro del tag de imágenes y es el texto alternativo cuando no es posible cargar las imágenes. Google lo tiene en cuenta cuando es un enlace a otro sitio web.
  • META TAGS: Aunque no se tiene en cuenta es recomendable utilizarlos.
  • URL: Se sospecha que se valora positivamente que la dirección de la página contenga las palabras clave, aunque no le da demasiado peso. Intenta que el nombre de la página tenga las palabras deseadas sin abusar o Google podría penalizar. Separa las palabras con guión alto en vez de guión bajo.

En el resto de la página intenta incluir las palabras clave pensando en la legibilidad de los contenidos para los visitantes y no para los buscadores.  Vigila la ortografía de las palabras clave.  Además Google da mayor relevancia a aquellas palabras que aparecen en títulos (h1, h2,…) en negrita o en cursiva.

Tecnología Web

Para conseguir un buen posicionamiento debes tener buenos conocimientos sobre tecnología web, dominar el lenguaje HTML, conocer el funcionamiento de un servidor web, etc. Es recomendable que tengas tu propio dominio, tener tu sitio web en un portal de sitios gratuitos no da buena imagen.

Intenta utilizar páginas dinámicas generadas en el servidor (CGI, PHP, ASP, JSP, etc.), guardando el contenido en base de datos y no generar las páginas una a una. De igual forma, si un menú se repite en múltiples páginas deberíamos editar el código del menú una vez e incluirlo las veces que haga falta y no repetir el mismo menú en todas las páginas. Google sí indexa las páginas dinámicas pero hemos de intentar no incluir muchos parámetros en la URL o el robot no indexará la página ya que considerará que el contenido no es estable (sobre todo no incluir parámetros del tipo sessId o sessionID o similares).

Sencillez

Es muy importante diseñar páginas web sencillas y claras. A Google le gustan las páginas sin demasiados adornos, como se puede comprobar visitando su web. El robot  de Google fue diseñado para rastrear páginas sencillas y los enlaces a los que apunta, es decir al robot únicamente le interesa el texto y los enlaces a otras páginas, no valora el diseño. Google no reconoce el contenido en los siguientes elementos:

  • JavaScript
  • DHTML
  • Flash
  • Frames
  • Session IDs
  • Applets de Java
  • Imágenes: no insertes textos dentro de ellas

Intenta que tu página web se vea igual con un navegador que con otro, pero sobre todo, que se ‘vea’ con el robot de Google, es decir en modo texto sin imágenes, javascript, flash…

Como recomendación, intenta no incluir páginas muy grandes, con mucho contenido y cuida la usabilidad de las mismas para que los visitantes no se cansen y naveguen a gusto por los contenidos, de manera que vuelvan a menudo a la página.

Alta en Google

Para obtener un buen posicionamiento debemos dar de alta la URL en Google. El método más sencillo es acudir a esta página: http://www.google.com/intl/es/addurl.html aunque no se asegura el tiempo en el que aparecerá en los resultados. Google recibe multitud de sugerencias y su robot no es capaz de rastrearlas todas.

Otra opción es conseguir un enlace en alguna página que ya esté en la lista de resultados. Con esto nos aseguramos que la siguiente vez que pase el robot, indexará el contenido de dicho enlace.

Enlaces

Conseguir Enlaces

Esta es una de las labores más complicadas. En función del número de enlaces que obtengamos tendremos mayor PageRank (valor numérico que inserta Google a cada página web) o popularidad. A mayor PageRank, mayor valoración, pero si el enlace es de un sitio con un PageRank alto, la valoración se multiplica por lo que hay que buscar enlaces de calidad. Hay que tener en cuenta que Googlebot (robot de Google) no indexa los enlaces hechos con javascript. Al insertar enlaces, las palabras clave deben estar dentro de la etiqueta del enlace:
<a href=http://www.dominio.com/page.html>Palabra(s) clave(s)</a>

Por todo lo anterior, nuestra labor se centrará en conseguir el mayor número de enlaces de calidad posible, bien en directorios online o bien en sitios web, sobre todo si son de temática similar. Una práctica extendida es la poner comentarios  (del tipo ‘estoy de acuerdo contigo, buen sitio web’) en otros sitios incluyendo el enlace deseado. Esto, aparte de ser poco ético y conseguir que el webmaster se enfade, se rumorea que está siendo vigilado por Google para penalizar sitios enlazados sin permiso del webmaster, como los libros de firmas. Otras recomendaciones son:

  • Evita enlazar a sitios sospechosos de malas prácticas, ya que si Google les penaliza, también te penalizará a ti.
  • Vigila que no tengas enlaces rotos, puesto que un número excesivo puede penalizar.
  • Evita cobrar por enlazar o pagar por insertar enlaces. Google no consiente el hecho de que el PageRank sea un negocio
  • Si es posible crea un mapa de la web con todos los enlaces de la web. A Google le gustan estos mapas y tú te aseguras que tienes toda la web indexada. Si el número de enlaces es mayor que 100, divide este mapa, puesto que Google lo puede considerar una link farm y penalizarte.
  • Debes darte de alta en otros buscadores, no sólo en Google.
  • Los enlaces internos también son valorados, pero debes tener también enlaces externos, pues Google puede penalizarte.

Evitar Penalizaciones

Para evitar que los usuarios abusen e intenten situar su web en las primeras posiciones, pese a que esos sitios no tienen nada que ver con lo que se ha buscado, Google  puede penalizar dichas webs borrando los resultados, disminuyendo su PageRank o no teniendo en cuenta sus enlaces. Aparte de las penalizaciones comentadas en el punto anterior podemos añadir las siguientes:

  • No utilices la técnica Cloaking. Es la técnica por la que se encubre la página que ven los usuarios con otra que es la que indexa el robot de Google con mayor número de palabras clave.
  • Tampoco se debe redirigir por javascript al usuario hacia una página desde otra en la que hay multitud de palabras clave, pero prácticamente ininteligible que el robot sí que se toma su tiempo en indexar.
  • Texto oculto. Muchos webmaster insertan multitud de palabras clave al final de la página con el mismo color de letra que el fondo. Google es capaz de detectarlo y penalizar dichas web.
  • Del mismo modo ocurre con los enlaces ocultos.
  • No duplicar páginas.

seo

Conclusiones

En la actualidad es imprescindible conocer lo máximo posible sobre el algoritmo utilizado por Google para posicionar nuestra web dentro de la lista de resultados. Cada vez aparecen más SEOs (Search Engine Optimizer), personas o empresas dedicadas a que una web aparezca en las primeras posiciones de la página de resultados, utilizando diversas técnicas de posicionamiento. Para ver más información puedes leer este manual de posicionamiento web en Google.

Categorías
google Internet publicidad Sin categoría superbowl

Anuncios en la Super Bowl

Este pasado domingo tuvo lugar en Estados Unidos la final de la liga profesional de fútbol americano (NFL), más conocida como Super Bowl. Siempre se celebra el primer domingo de Febrero. Este acontecimiento se podría comparar en Europa a la final de la Champions League y a nivel mundial a la final de la Copa del Mundo de Fútbol, pero la gran variedad de equipos finalistas hace único a este espectáculo que es el más visto en Norteamérica y uno de los más seguidos en todo el mundo.

Según los datos que he podido consultar en la Wikipedia, los estadounidenses consumen durante el desarrollo del evento el 5% de las ventas totales de cerveza, cosa que me parece una pasada, y son muchos los artistas de renombrado prestigio que actúan tanto en el espectáculo previo como en los entretiempos. Otro dato relevante es el coste de la publicidad durante el encuentro: un anuncio de 30 segundos puede costar más de 2 millones de dólares (este año 2010 ha sido más barato debido a la actual crisis económica). Gracias a Internet he podido ver algunos de éstos anuncios en los que abunda la creatividad y la aparición de famosos (Megan Fox, Beyoncé, Oprah o incluso los Simpsons). Os recomiendo que los veáis porque hay algunos bastante buenos (http://mashable.com/2010/02/08/super-bowl-ads-2010). Este es mi favorito:

La verdad es que Google no suele publicitarse en televisión, pero hay que reconocer que se ha salido. Sólo con unas pocas búsquedas narra una historia de amor con final feliz. ¿Qué os parece? ¿Hay algún otro que os guste más?