CloudStack
En el panel de administración: Infrastructure › Cloud provider › CloudStack › API connection (
/infra/cloudstack?tab=connect). La primera conexión también puede realizarse en el setup wizard, paso 2.
Qué hace
NexCMP vende máquinas virtuales que se ejecutan en su nube de Apache CloudStack. Despliega, inicia, detiene, redimensiona, crea Snapshots y elimina VM mediante la API de CloudStack, asigna direcciones IP públicas desde la zona, lee el consumo para facturación y ancho de banda, y muestra capacidad y estado en la consola de administración. CloudStack sigue siendo la fuente de referencia de los hipervisores; NexCMP es la tienda, la facturación y el portal superpuestos.
Utilice esta página cuando CloudStack sea (o vaya a ser) su fuente principal de VM. Para configurar una segunda fuente complementaria, consulte Proxmox VE.
Requisitos
| Elemento | Requisito |
|---|---|
| Versión de CloudStack | 4.23 es la versión probada. La consola de VM requiere 4.18 o posterior, y el escalado en caliente de CPU/RAM de una VM en ejecución requiere 4.23 con KVM. |
| Tipo de zona | Una zona con al menos una red de invitados para las VM de los clientes y un rango de IP públicas con direcciones libres. |
| Hipervisor | KVM es el hipervisor probado. |
| Cuenta | Un dominio y cuenta dedicados creados para NexCMP. Nunca utilice la clave de administrador ROOT. |
| Accesibilidad de la API | El servidor del panel debe poder comunicarse con la URL de la API del servidor de administración (https://cloudstack.example.com/client/api) mediante HTTP(S). La consola de VM, el ancho de banda y las funciones de Kubernetes utilizan este mismo endpoint. |
| Clave de solo lectura opcional | Una segunda clave de solo lectura permite que la consola de administración muestre hosts, almacenamiento, VM del sistema y rangos de IP públicas. No es necesaria para vender VM. |
| IP pública | Direcciones IPv4 públicas libres en la zona. El prefijo que NexCMP puede vender se configura en Sales IP pools. |
| Plantillas | Al menos una plantilla lista y con contraseña habilitada, y un service offering que su cuenta pueda ver. Consulte Templates. |
| Almacenamiento | Almacenamiento primario para los volúmenes de la cuenta y, si vende snapshots o imágenes, almacenamiento secundario. |
| Depende de | Nada. Kubernetes, Private Cloud, Images y Bandwidth dependen de esta página. |
No use la clave de administrador ROOT
Cree un dominio y una cuenta dedicados para NexCMP. De este modo, la clave solo tendrá alcance sobre ese dominio y una clave filtrada no podrá afectar al resto de su cloud. El asistente de configuración también verifica que la red que elija pertenezca a la zona y a la cuenta propietaria de la clave.
Preparar la infraestructura
Los comandos utilizan CloudMonkey (cmk) con la sesión iniciada como administrador de CloudStack. Reemplace los nombres de ejemplo y los marcadores de posición entre corchetes angulares.
Crear una cuenta y clave API dedicadas
Cree el dominio que contendrá todo lo que pertenezca a NexCMP.
bashcmk create domain name=nexcmpAnote el
iden la salida; se utilizará como<domain-id>más adelante.Busque el rol que desea asignar a la cuenta.
bashcmk list roles type=DomainAdmin filter=id,nameRol Cuándo elegirlo Domain Admin (recomendado) Conjunto completo de funciones: VM, redes, proyectos para Kubernetes, VPC, imágenes. Su alcance se limita al dominio nexcmp.Usuario Solo el ciclo de vida de las VM. Un usuario estándar no puede purgar VM a menos que la configuración global allow.user.expunge.recover.vmsea true; en ese caso, NexCMP detiene la VM y CloudStack la purga después deexpunge.delay.Cree la cuenta y su primer usuario. Utilice una contraseña aleatoria larga; no volverá a escribirla.
bashcmk create account name=nexcmp-api username=nexcmp-api \ password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \ firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>Genere el par de claves API para el nuevo usuario.
bashcmk list users domainid=<domain-id> username=nexcmp-api filter=id,username cmk generate userkeys id=<user-id>Copie
apikeyysecretkey. Son la API key y la Secret key que debe introducir en NexCMP. NexCMP las almacena cifradas y posteriormente solo muestra los últimos cuatro caracteres.Asegúrese de que el dominio no tenga límites de recursos restrictivos (instances, volúmenes, IP públicas, redes, snapshots, plantillas, proyectos).
bashcmk list resourcelimits domainid=<domain-id>
Crear la red de invitados para las VM de los clientes
Las VM de los clientes se despliegan en una red de invitados que pertenece a la nueva cuenta. Una red aislada con un router virtual (VR) y los servicios Static NAT, Firewall y Port Forwarding funciona adecuadamente, ya que NexCMP asocia una IP pública a cada VM mediante NAT estático.
bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>Compruebe la directiva de salida predeterminada de la oferta: si es "deny", las VM de los clientes no tendrán acceso saliente hasta que se añadan reglas de salida en el firewall.
Hacer visibles las ofertas y plantillas
- Las service offerings y network offerings deben ser públicas o estar asignadas al dominio
nexcmp; de lo contrario, la cuenta no podrá enumerarlas ni utilizarlas. - Registre o comparta al menos una plantilla (consulte Templates). NexCMP lista las plantillas que están listas y destacadas.
Opcional: clave de solo lectura para las páginas de infraestructura
Las pestañas Capacity, Host, Storage y System VM, así como la lista de rangos de IP públicas, utilizan una segunda clave que solo necesita acceso de lectura a seis comandos. Cree un rol limitado en lugar de reutilizar una clave de administrador completa:
bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=denyA continuación, cree una cuenta con ese rol (en el dominio ROOT, ya que lee datos de toda la zona), genere sus claves como en el paso 4 e introdúzcalas como RO API key en la siguiente sección.
Comprobar la ruta de red
Desde el servidor del panel:
bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/apiCualquier respuesta HTTP (incluso 4xx) confirma que el puerto es accesible. Un tiempo de espera agotado indica un problema de firewall o DNS de su parte.
Conectar en NexCMP
En el asistente de configuración
El paso 2 del asistente de configuración solicita los mismos valores. Test connection enumera las zonas y redes visibles para la clave; elija la zona y la red de invitados, un nombre para mostrar para la zona y el país, y luego haga clic en Save CloudStack. El asistente rechaza cualquier red que no pertenezca a esa zona o que no sea visible para la clave.

Más tarde, en la consola de administración
Abra Infrastructure › Cloud provider › CloudStack y seleccione la pestaña API connection.
Complete la sección Connection:
Campo Valor de ejemplo Endpoint API https://cloudstack.example.com/client/apiClave de API (acceso de escritura) XXXX(dejar vacío para conservar la clave guardada)Secret key XXXXClave de API de solo lectura / Clave secreta de solo lectura opcional, de la cuenta de solo lectura Zone ID el UUID de su zona 
Haga clic en Test connection antes de guardar. Comprueba las claves introducidas sin guardarlas: la clave de escritura con
listZonesylistCapabilities, y la clave de solo lectura conlistSystemVms.Haga clic en Save connection. Mantenga activado Enable CloudStack connection; desactivarlo hace que el worker detenga todos los trabajos de CloudStack sin perder datos.
Abra Services › Virtual Machines › Policy › Provisioning para configurar la red de invitados predeterminada, las ofertas personalizadas y el par de claves predeterminado para las nuevas VM.

Abra Infrastructure › Cloud provider › Sales IP pools y, en Configure sales ranges, configure Sellable IP range prefixes (por ejemplo
203.0.113.) y Excluded IP prefixes si algunas direcciones de la zona no deben venderse nunca. Deje el prefijo vacío para permitir todas las direcciones libres.
Qué lee y escribe NexCMP
| Área | Lecturas | Modificaciones |
|---|---|---|
| VMs | lista, estados, historial de uso, endpoint de consola | desplegar, iniciar, detener, reiniciar, reinstalar, destruir, escalar, restablecer contraseña y clave SSH |
| Discos y Snapshots | volúmenes, Snapshots de VM, Backups | crear, adjuntar, desconectar, redimensionar, eliminar, crear snapshot, restaurar |
| Redes | redes, routers, IP públicas, firewall, reenvío de puertos, reglas de balanceador de carga | asociar y liberar IP públicas, NAT estático, firewall, reenvío de puertos, reglas de salida, redes y ACL para Private Cloud |
| Catálogo | ofertas de servicio, disco y red, plantillas, ISO, tipos de SO | registrar y eliminar plantillas e ISO (Images), ofertas de servicio al crear planes personalizados |
| Kubernetes | versiones compatibles, clústeres, configuración | proyectos, límites de recursos, redes, clústeres (módulo Kubernetes) |
| Clave de solo lectura | hosts, clústeres, pools de almacenamiento, VM del sistema, capacidad, rangos de IP de VLAN | nada |
CPU y RAM en tiempo real, y ancho de banda
- Hot-plug. Una VM en ejecución solo se puede redimensionar sin reiniciar cuando su plantilla lo permite (escalable dinámicamente) y el sistema invitado activa las nuevas CPU y la nueva RAM. NexCMP activa Auto Scaling para plantillas cuyo nombre termina en
vNcon una N igual o superior a 6, o cuando se configura manualmente en el campo vCPU/RAM hot-plug de la plantilla. Consulte Templates. - Bandwidth source. Con la configuración predeterminada, NexCMP mide el tráfico a partir de las estadísticas de VM de CloudStack (
listVirtualMachinesUsageHistory, consultadas cada 5 minutos y sumadas por interfaz de red de la VM). Las cifras incluyen el tráfico entre VM, por lo que pueden ser ligeramente superiores a las que contabilizaría un router perimetral. Mantenga habilitada la recopilación de estadísticas de VM de CloudStack; los intervalos superiores a la retención de estadísticas se omiten. Consulte Bandwidth.
Verificación
- Test connection devuelve "Write key: OK" con su zona y la versión de CloudStack.
- Infrastructure › Cloud provider › Providers muestra el proveedor como activo con una hora de prueba reciente. El panel de estado del dashboard ya no muestra "CloudStack: not connected".
- Sales IP pools enumera las direcciones libres (se actualiza aproximadamente una vez por minuto).
- Solicite una VM pequeña desde el portal de clientes o la consola de administración y compruebe que pase a Running, tenga una IP pública y que pueda abrir la consola.
Límites y notas
- En esta versión de NexCMP se puede conectar un clúster de CloudStack. El cuadro de diálogo Add cloud provider puede probar las claves de un segundo clúster, pero no puede guardarlo.
- Se vincula una zona de CloudStack a la zona predeterminada de NexCMP; un entorno de CloudStack con varias zonas se limita a la zona ingresada, por lo que se ignoran las VM, las IP y las redes de otras zonas.
- Eliminar la red de invitados en CloudStack hace que falle cada nuevo despliegue. La consola de administración muestra un aviso en rojo cuando desaparece la red.
- Las credenciales nunca salen del servidor. La API solo devuelve los últimos cuatro caracteres.
Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature | API key o secret incorrectos, clave de otro usuario o un problema de reloj en el servidor del panel | Genere las claves de nuevo con cmk generate userkeys y pegue ambas. Compruebe la hora del servidor del panel. |
Prueba: listZones: … o tiempo de espera agotado | El servidor del panel no puede comunicarse con la URL de la API | Compruebe el DNS, el firewall y la ruta exacta de /client/api. |
| Asistente: "network not found in that zone for this API key" | La red seleccionada pertenece a otra cuenta o zona | Cree la red en la cuenta dedicada (consulte más arriba) y ejecute Test connection de nuevo. |
| Asistente: "pick a zone and a network" | No se ejecutó la prueba, o no se seleccionó ninguna zona ni red | Haga clic en Test connection y seleccione en ambas listas. |
| Aviso "CloudStack key not configured" | Aún no se ha guardado ninguna clave ("Connect later") | Complete la tarjeta Connection, haga clic en Save connection y luego en Test connection. |
| Banner "CloudStack connection is OFF" | El interruptor Enable CloudStack connection está desactivado | Actívelo y guarde los cambios. |
| Clave de solo lectura: "unusable …" en la prueba | Falta de permisos de rol o cuenta incorrecta | Compruebe los seis comandos permitidos y que la cuenta pertenezca al dominio ROOT. |
| "Zone public IP ranges not measured yet" o "no public IP ranges declared" | No hay clave de solo lectura o la zona realmente no tiene ningún rango público | Añada la clave de solo lectura o agregue un rango de IP públicas en CloudStack. |
| "Pool vacío — espere 60 s para la sincronización de vmd" | El worker actualiza la lista de IP una vez por minuto | Espere un minuto y vuelva a cargar. |
| "sin IP libres en el rango 203.0.113." | Todas las direcciones del prefijo comercializable están ocupadas | Añada direcciones a la zona, amplíe el prefijo o libere las IP no utilizadas. |
| "Error al obtener los datos de la red (CloudStack no responde o la clave carece de permisos)" | La clave perdió el acceso o CloudStack no está disponible | Ejecute Test connection; compruebe que la cuenta esté habilitada. |
| "La red de invitados NO existe" | La red se eliminó en CloudStack | Cree la red de nuevo y establézcala como predeterminada en Provisioning. |