Agente del servicio de AWS

El agente del servicio de AWS expone los servicios de AWS mediante el protocolo de Open Service Broker (OSB). Estos documentos se basan en la documentación del agente del servicio de AWS. Este documento abarca dos instalaciones posibles:

  1. Instalación del agente del servicio de AWS en el clúster de Kubernetes de Kf (recomendado)
  2. Instalación del agente del servicio de AWS en AWS y exposición de la API a través de un puente de VPC

Requisitos previos

Además de un clúster de Kubernetes con Kf y Service Catalog instalado (consulta estas instrucciones), las siguientes herramientas deben instalarse en la estación de trabajo en la que usarás la CLI de kf:

  1. helm: Sigue estas instrucciones para instalar la CLI de helm.

Método 1: Instala en GKE

El agente del servicio de AWS se implementa con el gráfico de Helm de la guía de introducción del agente del servicio de AWS para Kubernetes.

Infraestructura

El agente del servicio de AWS requiere una tabla de DynamoDB y un usuario de IAM para acceder a la tabla. El método más sencillo es implementar la plantilla de CloudFormation proporcionada. Para realizar una instalación manual, consulta los documentos de los requisitos previos.

Helm

Primero, agrega el repositorio de Helm a tu máquina:

$ helm repo add aws-sb https://awsservicebroker.s3.amazonaws.com/charts

Luego, implementa el gráfico de Helm y configura el accesskeyid y la secretkey correctos de AWS:

$ helm install aws-sb/aws-servicebroker \
  --name aws-servicebroker \
  --namespace aws-sb \
  --set aws.secretkey=REPLACEME \
  --set aws.accesskeyid=REPLACEME

Si no deseas que el agente instale en todo el clúster, establece la marca --set deployNamespacedServiceBroker=true, que registrará el agente en el espacio de nombres implementado.

Puedes encontrar una lista completa de los parámetros de configuración en la definición de values.yaml de la plantilla de Helm.

Verificación

Después de implementar el gráfico de Helm, se debería crear un recurso ClusterServiceBroker. Puedes verificarlo con kubectl:

$ kubectl get ClusterServiceBroker aws-servicebroker

NAME              URL                                                                    STATUS   AGE
aws-servicebroker https://aws-servicebroker-aws-servicebroker.aws-sb.svc.cluster.local   Ready    3d

Si STATUS no está listo, significa que hubo un problema. A continuación, se indican algunos aspectos que debes verificar mientras solucionas los problemas:

  • La infraestructura de DynamoDB está funcionando.
  • El usuario de AWS tiene acceso a la tabla de DynamoDB a través de políticas o grupos.
  • Los valores del gráfico de Helm se establecieron correctamente.

Tu agente puede tardar varios minutos en aparecer y registrarse en el catálogo de servicios. Una vez que se registra el agente, puedes ver los servicios proporcionados con el comando kf marketplace.

Método 2: Instalación en AWS

La desventaja de instalar el agente del servicio de AWS en un clúster de GKE es el uso obligatorio de las credenciales de usuario de AWS en lugar de una función de AWS. Sin embargo, el único recurso de Kubernetes que se necesita para que el agente del servicio de AWS funcione con Kf es el de ClusterServiceBroker, suponiendo que se puede acceder a la API del agente del servicio de AWS desde el clúster de GKE.

Hay dos métodos en los que la API puede exponerse al clúster de GKE:

  1. Se puede acceder a la API a través de un puente de VPN entre Google Cloud y AWS.
  2. El acceso a la API es público (no se recomienda)

En cualquier caso, se recomienda enfáticamente proteger la API del agente del servicio con un certificado TLS de confianza y credenciales de acceso.

Una vez que se pueda acceder a la API, kubectl apply un ClusterServiceBroker y un Secret de Kubernetes que contiene las credenciales para autorizar con el agente del servicio.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
  name: aws-sb
spec:
  # For all configuration options, look at the service catalog's
  # type definitions:
  #  https://github.com/kubernetes-sigs/service-catalog/blob/master/pkg/apis/servicecatalog/v1beta1/types.go#L185
  url: https://replace.with.url.to.service.broker
  insecureSkipTLSVerify: false # use a trusted TLS certificate
  authInfo:
    bearer: # or basic
      secretRef:
        namespace: some-namespace
        name: some-secret-name