I'm wanting to start my own VPS providing service. I noticed that the big companies of the domain are using public IPs for the client's VPS (the client directly accesses the VPS using a public IP that is assigned to this VPS).
Is this mandatory? Because IPv4 is expensive, even a /29. Or else, is there any way to provide the simplest access to the VPS for the client (like Bastion for SSH gateway, or something like that)?
The internet is the least effort way for a hosting provider to provide access to instances. No need to stand up VPNs or a jump box. Launch an instance and ssh in from wherever you are. However, IPv4 exhaustion has made this expensive. Wouldn't it be nice if there was a way to get back to the simpler scheme of addressing every host?
There is. Implement IPv6.
Use public globally routable addresses on every host. Private networks would also be in "public" address space, but with firewall rules denying access. Provide IPv4 as a service where necessary.
A /48 prefix for every customer network (VPC, if you want to call it that) is easily justifiable to your ISP or LIR. Each of those has the address space for many /64 subnets. Do some capacity estimates and come up with an address plan.
Default to IPv6 only for hosts. Acquire enough IPv4 addresses to provide necessary services: NAT64, load balancer as a service, VPN endpoints, SMTP relays, v4 to v6 proxies in general.
Ungleich hosting is perhaps the most vocal advocate for such an infrastructure.
/29 of IPv4 space is not large, and also inexpensive compared to the investment presumably required for a hosting venture. Have someone look over your business plan and check that it is viable.
Universally the customers of your VPS business will need to be able to access their VPS. As a provider you will need to provide them with that access.
Depending on what the customers of your VPS business intend to with their VPS they will need either only access for themselves (the VPS is used for internal business processes only ) or their VPS needs to be accessible from the internet.
When their VPS needs to be accessible from the internet assigning that VPS a public IP-address is the easiest technical solution, because that doesn't impose any limits on what services your customers can use their VPS for.
And also important: as the provider your only responsibility is that IP-access and not an additional service like a reverse proxy, mail relay and you don't have to solve access for other protocols...
When your customers need only access for themselves and don't run any public services, you can of course provide access to those VPS instances in a manner that doesn't require a public IP-address for every VPS.
A VPN server would be one such access method.