Zaroz
Guías de Workloads

Añade un puerto público a un Workload

Continúa desde Despliega un Workload desde una imagen pública. Usa el ayudante api de esa guía, además de PROJECT_ID y SERVICE_ID. Lee Puertos públicos y endpoints HTTPS para elegir entre los dos tipos.

TerminalCode
export EP="$ZAROZ_API/projects/$PROJECT_ID/service-instances/$SERVICE_ID/endpoints"

Estado de la API

Las rutas de endpoints las usa la consola y están marcadas como solo consola en la referencia de la API. Aceptan tu token de sesión o un token de acceso personal.

Un puerto TCP o UDP raw

Indica en qué puerto escucha tu app dentro del contenedor (internal_port) y con qué protocolo. Zaroz asigna la dirección y el número públicos.

TerminalCode
curl -s -X POST "$EP" \ -H "Authorization: Bearer $ZAROZ_TOKEN" -H "Content-Type: application/json" \ -d '{"kind":"port","internal_port":25565,"protocol":"tcp"}'
TypeScriptCode
const base = `/projects/${projectId}/service-instances/${serviceId}/endpoints`; const port = await api("POST", base, { kind: "port", internal_port: 25565, protocol: "tcp" }); console.log(`${port.public_ip}:${port.public_port}`, port.state);
Code
base = f"/projects/{project_id}/service-instances/{service_id}/endpoints" port = api("POST", base, {"kind": "port", "internal_port": 25565, "protocol": "tcp"}) print(f"{port['public_ip']}:{port['public_port']}", port["state"])

La respuesta trae id, public_ip, public_port y state (active cuando está abierto). Usa "protocol": "tcp_udp" para un solo número público con ambos protocolos. Los puertos raw se facturan por las horas que se mantienen; el plan de un Workload no incluye ninguno gratis (mira Facturación).

Si el servicio aún no está en marcha, la petición se rechaza con not_ready. Espera al despliegue y reintenta.

Un endpoint HTTPS gratuito para una web o una API

Tu app sirve HTTP plano en internal_port; Zaroz gestiona el TLS.

TerminalCode
curl -s -X POST "$EP" \ -H "Authorization: Bearer $ZAROZ_TOKEN" -H "Content-Type: application/json" \ -d '{"kind":"https","internal_port":80,"label":"my-web"}'
TypeScriptCode
const site = await api("POST", base, { kind: "https", internal_port: 80, label: "my-web" }); console.log(site.https); // el host y los dominios, si los hay
Code
site = api("POST", base, {"kind": "https", "internal_port": 80, "label": "my-web"}) print(site["https"])

label es opcional y elige la primera parte del host gratuito, <label>.zone.<zone>.zaroz.cloud. Para servir también tus propios dominios, envía "domains": ["www.example.com"]; cada uno debe ser un dominio que tu organización haya verificado, o un subdominio de uno. Si se rechaza uno, no se abre nada.

Listar y cerrar

TerminalCode
curl -s "$EP" -H "Authorization: Bearer $ZAROZ_TOKEN" | jq '.data[] | {id, kind, state, public_ip, public_port}' curl -s -X DELETE "$EP/$ENDPOINT_ID" -H "Authorization: Bearer $ZAROZ_TOKEN" -w "%{http_code}\n"
TypeScriptCode
const list = await api("GET", base); for (const e of list.data) console.log(e.id, e.kind, e.state, e.public_ip, e.public_port); await api("DELETE", `${base}/${port.id}`); // 204; cerrar un puerto ya cerrado también funciona
Code
for e in api("GET", base)["data"]: print(e["id"], e["kind"], e["state"], e.get("public_ip"), e.get("public_port")) api("DELETE", f"{base}/{port['id']}") # 204; cerrar un puerto ya cerrado también funciona

La lista muestra primero los puertos pendientes y después todos los que el servicio ha tenido, los más nuevos antes. Un puerto cerrado sigue apareciendo con su última dirección, para poder contrastar la factura de un mes. Cerrarlo detiene la facturación desde ese momento.

Cuando se rechaza

Los details de un rechazo empiezan con un código antes de los dos puntos: port_limit, port_in_use, no_address_available, no_port_available, internal_port_out_of_range, protocol_required, y en HTTPS host_taken, domain_not_verified y otros. La lista completa está en Puertos públicos y endpoints HTTPS.

Un puerto va a una unidad. Si ejecutas varias unidades y necesitas una dirección pública para cada una, mira Puertos públicos y Nombres privados.

Last modified on