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:
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:
Haz clic en el botón Crear Proyecto. Deberías ver la siguiente página:
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:
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.