Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo crear un certificado SSL en Apache para Debian 8

marzo 4, 2020

 

Introducción

Con la naturaleza distribuida y dinámica de los contenedores, la gestión y configuración de almacenamiento estática se ha convertido en un problema difícil en Kubernetes, con cargas de trabajo ahora ser capaz de moverse de una máquina virtual (VM) a otro en cuestión de segundos. Para abordar esto, Kubernetes gestiona volúmenes con un sistema de volúmenes persistentes (PV), objetos de la API que representan una configuración de almacenamiento / volumen, y PersistentVolumeClaims (PVC), una petición de almacenamiento para ser satisfecho por un volumen persistente. Además, los conductores de interfaz de almacenamiento de contenedores (CSI) pueden ayudar a automatizar y gestionar el manejo y la provisión de almacenamiento para cargas de trabajo en contenedores. Estos controladores son responsables de aprovisionamiento, montaje, desmontaje, eliminación y snapshotting volúmenes.

El digitalocean-CSI integra una Kubernetes cluster con el producto digitalocean bloque de almacenamiento. Un desarrollador puede usar esto para volúmenes bloque de almacenamiento de provisión de forma dinámica para aplicaciones en contenedores en Kubernetes. Sin embargo, las aplicaciones a veces puede requerir datos que se persistieron y se comparten a través de múltiples gotas. solución bloque de almacenamiento CSI predeterminado del digitalocean es incapaz de soportar el montaje volumen de almacenamiento a una cuadra de muchas gotitas simultáneamente. Esto significa que esta es una solución ReadWriteOnce (RWO), ya que el volumen se limita a un nodo. El protocolo Network File System (NFS), por el contrario, ¿son compatibles con la exportación de la misma parte de muchos consumidores. Esto se llama ReadWriteMany (RWX), debido a que muchos nodos pueden montar el volumen como lectura-escritura. Por tanto, podemos utilizar un servidor NFS dentro de nuestro clúster para proporcionar almacenamiento que puede aprovechar el respaldo fiable de digitalocean bloque de almacenamiento con la flexibilidad de los recursos compartidos NFS.

En este tutorial, se configurará el aprovisionamiento dinámico de volúmenes NFS dentro de un grupo digitalocean Kubernetes (Doks) en el que las exportaciones están almacenados en volúmenes de almacenamiento digitalocean bloque. A continuación, desplegar múltiples instancias de una aplicación Nginx demo y probar los datos que comparten entre cada instancia.

Requisitos previos

Antes de empezar esta guía que necesitará la siguiente:

  • La interfaz de línea de comandos kubectl instalado en su máquina local. Puede leer más acerca de la instalación y configuración kubectl en su documentación oficial. cúmulo
  • Un digitalocean Kubernetes con su conexión configurado como predeterminado kubectl. Para crear un clúster Kubernetes en digitalocean, ver nuestra Kubernetes de inicio rápido. Las instrucciones sobre cómo configurar kubectl se muestran bajo la Conexión con el paso de clústeres cuando se crea el clúster.
  • El timón gestor de paquetes instalado en el equipo local y del timón instalado en el clúster. Para ello, siga los pasos 1 y 2 del cómo instalar el software en Kubernetes Clusters con el tutorial del timón Administrador de paquetes.

La interfaz de línea de comandos kubectl instalado en su máquina local. Puede leer más acerca de la instalación y configuración kubectl en su documentación oficial. cúmulo

Un digitalocean Kubernetes con su conexión configurado como predeterminado kubectl. Para crear un clúster Kubernetes en digitalocean, ver nuestra Kubernetes de inicio rápido. Las instrucciones sobre cómo configurar kubectl se muestran bajo el Conectar a su paso Cluster al crear el clúster.

El timón gestor de paquetes instalado en el equipo local y del timón instalado en el clúster. Para ello, siga los pasos 1 y 2 del cómo instalar el software en Kubernetes Clusters con el tutorial del timón Administrador de paquetes.

Nota: A partir de la versión 3.0 del timón, timón ya no necesita ser instalado en el timón de trabajo. Si está utilizando la última versión del timón, consulte la documentación de instalación del timón para obtener instrucciones.

Paso 1 – Implementación del servidor NFS con el timón

Para implementar el servidor NFS, que va a utilizar un gráfico de Helm. La implementación de una tabla de timón es una solución automatizada que es más rápido y menos propenso a errores que la creación de la implementación del servidor de NFS con la mano.

En primer lugar, asegúrese de que la tabla de repositorio estable por defecto es su disposición añadiendo el repositorio:

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

  • timón repo add estable https://kubernetes-charts.storage.googleapis.com/

continuación, tire de la metadatos del repositorio que acaba de añadir. Esto asegurará que el cliente timón se actualiza:

helm repo update

  • actualización timón repo

para verificar el acceso al repositorio estable, realizar una búsqueda en las listas:

helm search repo stable

  • búsqueda timón repo estable

Esto le dará lista de gráficos disponibles, de forma similar a lo siguiente:

OutputNAME CHART VERSION APP VERSION DESCRIPTION
stable/acs-engine-autoscaler 2.2.2 2.1.1 DEPRECATED Scales worker nodes within agent pools
stable/aerospike 0.3.2 v4.5.0.5 A Helm chart for Aerospike in Kubernetes
stable/airflow 5.2.4 1.10.4 Airflow is a platform to programmatically autho...
stable/ambassador 5.3.0 0.86.1 A Helm chart for Datawire Ambassador
...

Esto significa que su cliente resultado del timón está en funcionamiento y hasta a la fecha.

Ahora que tiene timón configurar, instalar el diagrama de timón nfs-server-provisioner para configurar el servidor NFS. Si desea examinar el contenido de la carta, echar un vistazo a su documentación en GitHub.

Al implementar la tabla de Helm, que se va a establecer algunas variables para el servidor de NFS para especificar aún más la configuración para su aplicación. También puede investigar otras opciones de configuración y modificar para adaptarlos a las necesidades de la aplicación.

Para instalar la tabla de Helm, utilice el siguiente comando:

helm install nfs-server stable
fs-server-provisioner --set persistence.enabled=true,persistence.storageClass=do-block-storage,persistence.size=200Gi

  • timón instalar estable NFS-servidor / servidor NFS-provisioner –set persistence.enabled = true, persistence.storageClass = do-bloque de almacenamiento, la persistencia. size = 200Gi

disposiciones Este comando un servidor NFS con las siguientes opciones de configuración:

  • añade un volumen persistente para el servidor NFS con la bandera –set. Esto asegura que todos NFS compartidos persiste datos a través de la vaina se reinicia.
  • Para el almacenamiento persistente, se utiliza la clase de almacenamiento do-bloque de almacenamiento. Disposiciones
  • un total de 200Gi para el servidor NFS para poder dividirse en las exportaciones.

Nota: La opción persistence.size determinará la capacidad total de todos los volúmenes NFS puede aprovisionar. En el momento de esta publicación, sólo se Doks versión 1.16.2-do.3 y el volumen de ayuda más adelante en expansión, por lo que cambiar el tamaño de este volumen será una tarea manual si se encuentra en una versión anterior. Si este es el caso, asegúrese de establecer este tamaño con sus necesidades futuras en mente.

Después de este comando se completa, obtendrá un resultado similar al siguiente:

OutputNAME: nfs-server
LAST DEPLOYED: Thu Feb 13 19:30:07 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The NFS Provisioner service has now been installed.

A storage class named 'nfs' has now been created
and is available to provision dynamic volumes.

You can use this storageclass by creating a PersistentVolumeClaim with the
correct storageClassName attribute. For example:

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-dynamic-volume-claim
spec:
storageClassName: "nfs"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi

Para ver el servidor NFS aprovisionó, ejecute el siguiente comando:

kubectl get pods

  • kubectl obtener vainas

Esto mostrará lo siguiente:

OutputNAME READY STATUS RESTARTS AGE
nfs-server-nfs-server-provisioner-0 1/1 Running 0 11m

a continuación, cheque para el Almacenamiento haya creado:

kubectl get storageclass

  • kubectl get Almacenamiento

Esto le dará una salida similar a la siguiente:

OutputNAME PROVISIONER AGE
do-block-storage (default) dobs.csi.digitalocean.com 90m
nfs cluster.local
fs-server-nfs-server-provisioner 3m

ahora tiene un servidor NFS que se ejecuta, así como Almacenamiento que se puede utilizar para aprovisionamiento dinámico de volúmenes. A continuación, puede crear una implantación que va a utilizar este almacenamiento y compartirlo a través de múltiples instancias.

Paso 2 – implementar una aplicación con una Compartido PersistentVolumeClaim

En este paso, creará una implementación de ejemplo en el clúster Doks con el fin de probar su configuración de almacenamiento. Esta será una aplicación de servidor web Nginx llamado web.

Para implementar esta aplicación, primero escribir el archivo YAML para especificar el despliegue. Abrir un archivo nginx-test.yaml con su editor de texto; este tutorial utilizará nano:

nano nginx-test.yaml

  • nano-nginx test.yaml

En este archivo, agregue las siguientes líneas para definir el despliegue con un nombre PersistentVolumeClaim NFS-data:

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: web
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx:latest
name: nginx
resources: {}
volumeMounts:
- mountPath: /data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: nfs-data
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-data
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
storageClassName: nfs

Guarde el archivo y salga del editor de texto .

Este despliegue está configurado para utilizar los PersistentVolumeClaim NFS-datos que acompañan y montarlo en / data.

En la definición de PVC, se encuentra que el storageClassName se establece en NFS. Esto le dice al clúster para satisfacer este almacenamiento utilizando las reglas de los NFS Almacenamiento que ha creado en el paso anterior. Los nuevos PersistentVolumeClaim serán procesados, y luego un recurso compartido NFS se suministrarán para satisfacer la demanda en la forma de un volumen persistente. La vaina intentará montar PVC que una vez que se ha aprovisionado. Una vez que haya terminado el montaje, se verificará la funcionalidad ReadWriteMany (RWX).

Ejecutar el despliegue con el siguiente comando:

kubectl apply -f nginx-test.yaml

  • kubectl aplica -f nginx-test.yaml

Esto le dará el siguiente resultado:

Outputdeployment.apps/web created
persistentvolumeclaim
fs-data created

A continuación, compruebe la vaina web spinning:

kubectl get pods

  • kubectl llegar vainas

Esta es la salida siguiente:

OutputNAME READY STATUS RESTARTS AGE
nfs-server-nfs-server-provisioner-0 1/1 Running 0 23m
web-64965fc79f-b5v7w 1/1 Running 0 4m

Ahora que el despliegue ejemplo está en funcionamiento, puede escalar hacia fuera para tres casos utilizando el comando escala kubectl:

kubectl scale deployment web --replicas=3

  • escala kubectl implantación en la web – réplicas = 3

Esto le dará a la salida:

Outputdeployment.extensions/web scaled

ahora ejecute el comando kubectl get nuevo:

kubectl get pods

  • kubectl llegar vainas

encontrará los casos amplificada de la implementación:

OutputNAME READY STATUS RESTARTS AGE
nfs-server-nfs-server-provisioner-0 1/1 Running 0 24m
web-64965fc79f-q9626 1/1 Running 0 5m
web-64965fc79f-qgd2w 1/1 Running 0 17s
web-64965fc79f-wcjxv 1/1 Running 0 17s

ahora tiene tres instancias de la implementación de Nginx que están conectados en el mismo volumen persistente. En el siguiente paso, usted se asegurará de que puedan compartir datos entre sí.

Paso 3 – Validación de datos NFS compartido de

Para el paso final, se validará que los datos se comparte a través de todas las instancias que están montados en el recurso compartido de NFS. Para ello, se creará un archivo en el directorio / datos en una de las vainas, a continuación, compruebe que el archivo existe en el directorio de otra vaina / datos.

Para validar esta, que va a utilizar el comando kubectl Exec. Este comando le permite especificar una vaina y llevar a cabo un comando dentro de esa vaina. Para obtener más información sobre la inspección de los recursos que utilizan kubectl, echar un vistazo a nuestra kubectl Hoja de trucos.

Para crear un archivo llamado hola_mundo dentro de uno de sus vainas web, utilice el ejecutivo kubectl a pasar a lo largo del comando touch. Tenga en cuenta que el número después de web en el nombre de la vaina será diferente para ti, así que asegúrese de cambiar el nombre de la vaina se destaca con una de sus propias vainas que ha encontrado como la salida de kubectl get vainas en el último paso.

kubectl exec web-64965fc79f-q9626 -- touch /data/hello_world

  • kubectl ejecutivo web 64965fc79f-q9626 – touch / datos / hola_mundo

A continuación, cambiar el nombre de la vaina y utilizar el comando ls para listar los archivos en el directorio / datos de una vaina diferente:

kubectl exec web-64965fc79f-qgd2w -- ls /data

  • kubectl ejecutivo web 64965fc79f-qgd2w – ls / datos

su salida se mostrará el archivo que ha creado dentro de la primera vaina:

Outputhello_world

Esto demuestra que todas las vainas comparten datos a través de NFS y de que la configuración funciona correctamente .

Conclusión

En este tutorial, se crea un servidor NFS que fue respaldado por digitalocean bloque de almacenamiento. El servidor de NFS utiliza entonces que el almacenamiento de bloques para el suministro y la exportación NFS acciones a las cargas de trabajo en un protocolo compatible con RWX. Al hacer esto, que fueron capaces de moverse por una limitación técnica del digitalocean almacenamiento de bloques y compartir los mismos datos de PVC a través de muchas vainas. Al seguir este tutorial, el clúster Doks ya está configurado para dar cabida a un conjunto mucho más amplio de casos de uso de despliegue.

Si desea obtener más información sobre Kubernetes, echa un vistazo a nuestros Kubernetes de plan de estudios completo Pila Desarrolladores, o una mirada a través de la documentación del producto para digitalocean Kubernetes.