Cómo instalar y configurar el servidor PaaS OpenShift Origin en Ubuntu 20.04

OpenShift es una Plataforma como Servicio (PaaS) gratuita, de código abierto y de desarrollo en la nube, desarrollada por Red Hat, que permite a los desarrolladores desarrollar y desplegar sus aplicaciones en una infraestructura en la nube. Es una distribución comunitaria de Kubernetes y permite ciclos más rápidos de desarrollo y lanzamiento de aplicaciones. Viene con una interfaz web sencilla y fácil de usar que te permite supervisar los recursos del contenedor, la salud del contenedor, los nodos en los que residen los contenedores, las direcciones IP de los nodos, etc.

En este tutorial, explicaremos cómo instalar OpenShift Origin en un servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 20.04.
  • Una contraseña de root configurada en tu servidor.

Instalar Docker CE

En primer lugar, tendrás que instalar Docker CE en tu sistema para ejecutar todos los servicios OKD en contenedores Docker. Por defecto, la última versión de Docker CE está disponible en el repositorio por defecto de Ubuntu 20.04. Puedes instalarlo simplemente ejecutando el siguiente comando:

apt-get install docker.io -y

Una vez instalado, inicia el servicio Docker y habilítalo para que se inicie al arrancar con el siguiente comando:

systemctl start docker
systemctl enable docker

También puedes verificar el estado del servicio Docker con el siguiente comando:

systemctl status docker

Deberías ver la siguiente salida:

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-29 12:25:47 UTC; 2s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 48433 (dockerd)
      Tasks: 10
     Memory: 36.5M
     CGroup: /system.slice/docker.service
             ??48433 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215078550Z" level=warning msg="Your kernel does not support swap memory l>
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215139097Z" level=warning msg="Your kernel does not support cgroup blkio >
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215169580Z" level=warning msg="Your kernel does not support cgroup blkio >
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215721944Z" level=info msg="Loading containers: start."
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.418058547Z" level=info msg="Default bridge (docker0) is assigned with an >
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.515158041Z" level=info msg="Loading containers: done."
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.545778830Z" level=info msg="Docker daemon" commit=afacb8b7f0 graphdriver(>
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.546068892Z" level=info msg="Daemon has completed initialization"
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.599029431Z" level=info msg="API listen on /run/docker.sock"
May 29 12:25:47 ubuntu2004 systemd[1]: Started Docker Application Container Engine.

En este punto, Docker está instalado y en ejecución. Ya puedes pasar al siguiente paso.

Descarga OpenShift Origin

En el momento de escribir este tutorial, la última versión de OpenShift Origin es la v3.11.0. Puedes descargarla desde el repositorio Git Hub utilizando el siguiente comando:

wget https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz

Una vez finalizada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xvzf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz

A continuación, cambia el directorio al extraído y copia los binarios kubectl y oc al directorio /usr/local/bin.

cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit
cp oc kubectl /usr/local/bin/

A continuación, verifica la instalación de la utilidad cliente de OpenShift mediante el siguiente comando:

oc version

Deberías ver la siguiente salida:

oc v3.11.0+0cbc58b
kubernetes v1.11.0+d4cacc0
features: Basic-Auth GSSAPI Kerberos SPNEGO

A continuación, tendrás que crear un nuevo archivo daemon.json y permitir el uso del registro Insecure Docker.

nano /etc/docker/daemon.json

Añade la siguiente línea:

 {
     "insecure-registries" : [ "172.30.0.0/16" ]
 }

Guarda y cierra el archivo y, a continuación, reinicia el servicio Docker para aplicar los cambios.

systemctl restart docker

Inicia el clúster OpenShift Origin

Ahora, inicia el clúster OpenShift Origin especificando la IP de tu sistema:

oc cluster up --public-hostname=your-server-ip

Una vez que el servidor se haya iniciado correctamente, deberías obtener el siguiente resultado:

Login to server ...
Creating initial project "myproject" ...
Server Information ...
OpenShift server started.

The server is accessible via web console at:
    https://your-server-ip:8443

You are logged in as:
    User:     developer
    Password: 

To login as administrator:
    oc login -u system:admin

Ahora, inicia sesión en tu clúster como usuario administrador con el siguiente comando:

oc login -u system:admin

Una vez iniciada la sesión, deberías obtener la siguiente salida:

Logged into "https://your-server-ip:8443" as "system:admin" using existing credentials.

You have access to the following projects and can switch between them with 'oc project ':

    default
    kube-dns
    kube-proxy
    kube-public
    kube-system
  * myproject
    openshift
    openshift-apiserver
    openshift-controller-manager
    openshift-core-operators
    openshift-infra
    openshift-node
    openshift-service-cert-signer
    openshift-web-console

Using project "myproject".

A continuación, cambia al proyecto por defecto con el siguiente comando:

oc project default

Salida:

Now using project "default" on server "https://your-server-ip:8443".

Ahora, verifica el estado actual de tu proyecto con el siguiente comando:

oc status

Deberías obtener la siguiente salida:

In project default on server https://your-server-ip:8443

svc/docker-registry - 172.30.1.1:5000
  dc/docker-registry deploys docker.io/openshift/origin-docker-registry:v3.11 
    deployment #1 deployed 2 minutes ago - 1 pod

svc/kubernetes - 172.30.0.1:443 -> 8443

svc/router - 172.30.94.157 ports 80, 443, 1936
  dc/router deploys docker.io/openshift/origin-haproxy-router:v3.11 
    deployment #1 deployed 2 minutes ago - 1 pod

View details with 'oc describe /' or list everything with 'oc get all'.

Crear proyecto en OpenShift

Ahora, inicia sesión en OpenShift con el usuario desarrollador con el siguiente comando:

oc login

Se te pedirá que proporciones un nombre de usuario y una contraseña como se muestra a continuación:

Authentication required for https://your-server-ip:8443 (openshift)
Username: developer
Password: 

Proporciona el nombre de usuario como desarrollador y la contraseña como desarrollador, y pulsa Intro. Deberías ver la siguiente salida:

Login successful.

You have one project on this server: "myproject"

Using project "myproject".

Para crear un nuevo proyecto, ejecuta el siguiente comando:

oc new-project dev --display-name="Project - Dev" --description="My Project"

Deberías ver el siguiente resultado:

Now using project "dev" on server "https://your-server-ip:8443".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app centos/ruby-25-centos7~https://github.com/sclorg/ruby-ex.git

to build a new example application in Ruby.

Accede a la Consola Web de OpenShift

Ahora, abre tu navegador web y escribe la URL https://your-server-ip:8443/console. Deberías ver la página de inicio de sesión de OpenShift:

Inicio de sesión en la Consola Web de OpenShift

Proporciona tu nombre de usuario y contraseña de desarrollador, y haz clic en el botón Iniciar sesión. Deberías ver la siguiente página:

Panel de la Consola Web de OpenShift

Haz clic en el botón Crear Proyecto. Deberías ver la siguiente página:

Crear un proyecto

Proporciona toda la información requerida y haz clic en el botón Crear para crear un nuevo proyecto.

Desplegar la aplicación en OpenShift Origin

En primer lugar, inicia sesión en OpenShift con el usuario desarrollador ejecutando el siguiente comando:

oc login

Inicia sesión con el usuario desarrollador como se muestra a continuación:

Authentication required for https://your-server-ip:8443 (openshift)
Username: developer
Password: 
Login successful.

You have access to the following projects and can switch between them with 'oc project ':

  * dev
    my-project
    myproject

Using project "dev".

Una vez iniciada la sesión, cambia el proyecto a mi-proyecto que has creado a través de la consola web de OpenShift:

oc project my-project

Salida:

Now using project "my-project" on server "https://your-server-ip:8443".

A continuación, verifica el estado de tu proyecto actual con el siguiente comando:

oc status

Salida:

In project My Project (my-project) on server https://your-server-ip:8443

You have no services, deployment configs, or build configs.
Run 'oc new-app' to create an application.

A continuación, etiqueta una imagen de aplicación del registro Docker Hub con el siguiente comando:

oc tag --source=docker openshift/deployment-example:v2 deployment-example:latest

Salida:

Tag deployment-example:latest set to openshift/deployment-example:v2.

A continuación, despliega una aplicación en OpenShift con el siguiente comando:

oc new-app deployment-example

Deberías ver la siguiente salida:

--> Found image da61bb2 (4 years old) in image stream "my-project/deployment-example" under tag "latest" for "deployment-example"

    * This image will be deployed in deployment config "deployment-example"
    * Port 8080/tcp will be load balanced by service "deployment-example"
      * Other containers can access this service through the hostname "deployment-example"
    * WARNING: Image "my-project/deployment-example:latest" runs as the 'root' user which may not be permitted by your cluster administrator

--> Creating resources ...
    deploymentconfig.apps.openshift.io "deployment-example" created
    service "deployment-example" created
--> Success
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/deployment-example' 
    Run 'oc status' to view your app.

Ahora, verifica el estado de despliegue de la aplicación con el siguiente comando:

oc status

Deberías ver la siguiente salida:

In project My Project (my-project) on server https://your-server-ip:8443

svc/deployment-example - 172.30.87.146:8080
  dc/deployment-example deploys istag/deployment-example:latest 
    deployment #1 deployed 36 seconds ago - 1 pod


2 infos identified, use 'oc status --suggest' to see details.

Para obtener información sobre tu servicio, ejecuta el siguiente comando:

oc get svc

Salida:

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
deployment-example   ClusterIP   172.30.87.146           8080/TCP   1m

Para obtener información detallada, ejecuta el siguiente comando:

oc describe svc deployment-example

Salida:

Name:              deployment-example
Namespace:         my-project
Labels:            app=deployment-example
Annotations:       openshift.io/generated-by=OpenShiftNewApp
Selector:          app=deployment-example,deploymentconfig=deployment-example
Type:              ClusterIP
IP:                172.30.87.146
Port:              8080-tcp  8080/TCP
TargetPort:        8080/TCP
Endpoints:         172.17.0.10:8080
Session Affinity:  None
Events:            

También puedes verificar el estado de los Pods utilizando el siguiente comando:

oc get pods

Salida:

NAME                         READY     STATUS    RESTARTS   AGE
deployment-example-1-b9prf   1/1       Running   0          2m

Ahora, expone la aplicación para el acceso externo utilizando el siguiente comando:

oc expose service/deployment-example

Salida:

route.route.openshift.io/deployment-example exposed

Para mostrar la información de las rutas, ejecuta el siguiente comando:

oc get routes

Deberías obtener la siguiente salida:

NAME                 HOST/PORT                                           PATH      SERVICES             PORT       TERMINATION   WILDCARD
deployment-example   deployment-example-my-project.your-server-ip.nip.io             deployment-example   8080-tcp                 None

Verificar el acceso externo

Ahora, tu aplicación está lista para el acceso externo. Abre tu navegador web y escribe la URL anterior http://deployment-example-my-project.your-server-ip.nip.io. Deberías ver tu aplicación en la siguiente página:

Aplicación desplegada

Si quieres eliminar tu aplicación, ejecuta el siguiente comando:

oc delete all -l app=deployment-example

Deberías ver la siguiente salida:

pod "deployment-example-1-b9prf" deleted
replicationcontroller "deployment-example-1" deleted
service "deployment-example" deleted
deploymentconfig.apps.openshift.io "deployment-example" deleted
route.route.openshift.io "deployment-example" deleted

Conclusión

En este artículo, hemos instalado y configurado con éxito un nodo único OpenShift Origin en Ubuntu 20.04. Ahora puedes empezar a desarrollar tu primera aplicación en el entorno OpenShift. no dudes en preguntarme si tienes alguna duda.

Scroll al inicio