GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de Istio:Primeros pasos con los conceptos básicos de Istio

Introducción

Una forma práctica de administrar los microservicios de una aplicación nativa de la nube es automatizar las funciones de red de la aplicación.

Istio es una plataforma de malla de servicio configurable que actúa como un plano de control, distribuyendo la configuración a servidores proxy y puertas de enlace sidecar. Es una opción popular para conectar, monitorear y asegurar contenedores en un clúster de Kubernetes.

En este tutorial, aprenderá a instalar Istio, implementar una aplicación de prueba y configurar su clúster de Kubernetes para que funcione con la plataforma.

Requisitos previos

  • Un clúster de Kubernetes (o minikube)
  • herramienta de línea de comandos kubectl

Descargue la última versión de Istio

Para descargar la versión más reciente de Istio, vaya a la página de versiones de Istio en GitHub.

Alternativamente, los usuarios de Linux pueden usar curl para descargar y extraer la última versión automáticamente:

curl -L https://istio.io/downloadIstio | sh -

El comando extrae los archivos de instalación a la carpeta llamada istio-[version] :

Para descargar una versión anterior de Istio, use curl , pero especifique la versión y la arquitectura del procesador utilizando la siguiente sintaxis:

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh -

Guía de instalación de Istio

1. Inicie su clúster de Kubernetes. Este artículo usa minikube:

minikube start

2. A continuación, inicie la instalación de Istio moviéndose a la carpeta con los archivos extraídos:

cd istio-1.9.2

3. El bin/ directorio contiene istioctl binario del cliente. En Linux, agregue el cliente a su ruta escribiendo:

export PATH=$PWD/bin:$PATH

La variable configurada de esta manera solo dura hasta que finaliza la sesión de shell actual. Para establecer la variable de forma permanente, lea cómo establecer variables de entorno en Linux.

4. Usa el istioctl herramienta para iniciar el proceso de instalación:

istioctl install --set profile=demo -y

El resultado confirma la instalación exitosa:

5. Istio puede inyectar automáticamente proxies sidecar de Envoy al implementar la aplicación. Para habilitar esto, use kubectl para agregar una etiqueta de espacio de nombres que contenga esta instrucción:

kubectl label namespace default istio-injection=enabled

Esto concluye el proceso de instalación de Istio.

Implementación de prueba a través de la aplicación Bookinfo

El archivo de instalación de Istio contiene todos los archivos necesarios para implementar la aplicación de muestra llamada Bookinfo .

1. Comienza aplicando el bookinfo.yaml archivo usando kubectl :

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

El sistema crea varias implementaciones, servicios y pods:

2. Compruebe los servicios en ejecución:

kubectl get services

3. Compruebe si los pods están listos:

kubectl get pods

A medida que suben los pods, Istio despliega sidecars junto con ellos:

4. Espera hasta que aparezca READY la etiqueta de cada grupo es 2/2 . Luego ejecute el siguiente comando para ver si la aplicación está sirviendo páginas HTML correctamente:

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o ""

El resultado debe ser la etiqueta de título de la página, junto con el título mismo:

5. El siguiente paso es abrir la aplicación al tráfico externo. Aplicar bookinfo-gateway.yaml archivo de las samples carpeta:

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

El resultado confirma que la aplicación se asoció correctamente con la puerta de enlace de Istio:

6. Usa istioctl para analizar la configuración y verificar posibles problemas:

istioctl analyze

Si el sistema no encuentra problemas, se muestra el siguiente mensaje:


7. Para acceder a la puerta de enlace configurada en el paso anterior, configure las variables de ingreso. Primero, exporta INGRESS_PORT :

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

8. Ahora, repita el proceso para SECURE_INGRESS_PORT :

export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

9. Utilice el comando echo para comprobar si los puertos se han asignado correctamente:

echo "$INGRESS_PORT" && echo "$SECURE_INGRESS_PORT"

La salida muestra los números de puerto:


10. Exporte el INGRESS_HOST variables:

export INGRESS_HOST=$(minikube ip)

11. Comprueba la variable con echo :

echo "$INGRESS_HOST"

12. Para dirigir el tráfico a Istio Ingress Gateway, abra una nueva ventana de terminal y escriba el siguiente comando:

minikube tunnel

Minikube ahora sirve como balanceador de carga para Istio. El resultado muestra minikube dirigiendo el tráfico:


13. Vuelva a la ventana de terminal anterior y exporte el GATEWAY_URL variable, que consiste en INGRESS_HOST y INGRESS_PORT Variables:

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

14. Usa echo para ver la dirección IP completa y el número de puerto:

echo "$GATEWAY_URL"

15. Escriba el siguiente comando para ver la dirección externa de la aplicación:

echo http://$GATEWAY_URL/productpage

16. Copie la dirección obtenida en el paso anterior y péguela en un navegador web. El sitio web de Bookinfo se carga correctamente:

Configurar un clúster de Kubernetes para Istio

Istio viene con una serie de complementos para los servicios populares de Istio, como el panel de control de Grafana, el software de seguimiento de transacciones de Jaeger, el extractor de métricas de Prometheus y la consola de administración de Kiali.

1. Instale esos complementos aplicando los samples/addons carpeta:

kubectl apply -f samples/addons

2. Ahora, cree un recurso de Kubernetes Ingress para cada uno de los complementos. Haga esto pegando lo siguiente en un yaml archivo.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: istio-system
  namespace: istio-system
  annotations:
    kubernetes.io/ingress.class: istio
spec:
  rules:
  - host: my-istio-dashboard.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: grafana
          servicePort: 3000
  - host: my-istio-tracing.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: tracing
          servicePort: 9411
  - host: my-istio-logs-database.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: prometheus
          servicePort: 9090
  - host: my-kiali.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: kiali
          servicePort: 20001

3. Guarde el archivo y aplique la configuración con kubectl:

kubectl apply -f [file-name]

Los complementos ahora están configurados y listos para usarse.


Linux
  1. Comenzando con Zsh

  2. Comenzando con ls

  3. Primeros pasos con Samba para la interoperabilidad

  4. Primeros pasos con PostgreSQL en Linux

  5. Primeros pasos con SSH en Linux

Tutorial de Docker:Primeros pasos con Docker en Linux

Tutorial de Vagrant:Primeros pasos con Vagrant en Linux

Tutorial de Podman:comience a usar Podman

Primeros pasos con el administrador de paquetes de Nix

Primeros pasos con systemctl

Tutorial de introducción a Azure Docker