Servicios proporcionados por los usuarios

Los usuarios pueden aprovechar los servicios que no están disponibles en el mercado creando instancias de servicios proporcionadas por el usuario. Una vez creadas, las instancias de servicio proporcionadas por el usuario se comportan como las instancias de servicio creadas a través del marketplace. Kf admite la creación, la enumeración, la actualización, la eliminación, la vinculación y la desvinculación de servicios proporcionados por el usuario.

Crear una instancia de servicio proporcionada por el usuario

El alias de kf create-user-provided-service es kf cups.

El nombre asignado a un servicio proporcionado por el usuario debe ser único en todas las instancias de servicio de un espacio, incluidos los servicios creados a través de un intermediario de servicios.

Proporcionar credenciales de servicio a una aplicación

Una instancia de servicio proporcionada por el usuario se puede usar para proporcionar credenciales a una aplicación. Por ejemplo, un administrador de bases de datos puede tener un conjunto de credenciales para una base de datos gestionada fuera de Kf. Estas credenciales incluyen la URL, el puerto, el nombre de usuario y la contraseña que se usan para conectarse a la base de datos.

El administrador puede crear un servicio proporcionado por el usuario con las credenciales y el desarrollador puede vincular la instancia del servicio a la aplicación. De esta forma, las credenciales se pueden compartir sin salir de la plataforma. Vincular una instancia de servicio a una aplicación tiene el mismo efecto independientemente de si el servicio es un servicio proporcionado por el usuario o un servicio de Marketplace.

La aplicación se configura con las credenciales proporcionadas por el usuario y la variable de entorno de tiempo de ejecución de la aplicación VCAP_SERVICES se rellena con información sobre todos los servicios vinculados a esa aplicación.

Se puede crear un servicio proporcionado por el usuario con credenciales o con una lista de etiquetas.

kf cups my-db -p '{"username":"admin", "password":"test123", "some-int-val": 1, "some-bool": true}' -t "comma, separated, tags"

De esta forma, se creará la instancia de servicio proporcionada por el usuario my-db con las credenciales y las etiquetas proporcionadas. Las credenciales que se transfieren a la marca -p deben ser un archivo JSON válido (ya sea insertado directamente o cargado desde una ruta de archivo).

Para enviar las credenciales a una o varias aplicaciones, el usuario puede ejecutar kf bind-service.

Supongamos que tenemos una aplicación con un servicio enlazado, el servicio proporcionado por el usuario my-db definido anteriormente. La variable de entorno VCAP_SERVICES de esa aplicación tendrá el siguiente contenido:

{
  "user-provided": [
    {
      "name": "my-db",
      "instance_name": "my-db",
      "label": "user-provided",
      "tags": [
        "comma",
        "separated",
        "tags"
      ],
      "credentials": {
        "username": "admin",
        "password": "test123",
        "some-int-val": 1,
        "some-bool": true
      }
    }
  ]
}

Actualizar una instancia de servicio proporcionada por el usuario

El alias de kf update-user-provided-service es kf uups.

Un servicio proporcionado por el usuario se puede actualizar con el comando uups. Las nuevas credenciales o etiquetas que se transfieran sobrescribirán por completo las que ya haya. Por ejemplo, si el usuario ha creado el servicio proporcionado por el usuario my-db anterior, llamado kf bind-service, para vincular el servicio a una aplicación y, a continuación, ha ejecutado el comando.

kf uups my-db -p '{"username":"admin", "password":"new-pw", "new-key": "new-val"}'

Las credenciales actualizadas solo se reflejarán en la aplicación después de que el usuario desvincule y vuelva a vincular el servicio a la aplicación. No es necesario reiniciar ni volver a poner en marcha la aplicación. La variable de entorno VCAP_SERVICES actualizada tendrá el siguiente contenido:

{
  "user-provided": [
    {
      "name": "my-db",
      "instance_name": "my-db",
      "label": "user-provided",
      "tags": [
        "comma",
        "separated",
        "tags"
      ],
      "credentials": {
        "username": "admin",
        "password": "new-pw",
        "new-key": "new-val"
      }
    }
  ]
}

Las nuevas credenciales sobrescriben las antiguas y las etiquetas no cambian porque no se especificaron en el comando de actualización.