{"id":23533088,"url":"https://github.com/imarsman/unikerneltests","last_synced_at":"2025-05-14T16:34:45.488Z","repository":{"id":133060239,"uuid":"398395517","full_name":"imarsman/unikerneltests","owner":"imarsman","description":"A unikernel test using NanoVMS and Ops, finding out what can be done with unikernels and the base instance and instance group capabilities of cloud providers..","archived":false,"fork":false,"pushed_at":"2022-02-15T15:01:21.000Z","size":35792,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T05:11:16.216Z","etag":null,"topics":["gcp","golang","unikernel"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imarsman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-20T20:41:09.000Z","updated_at":"2024-03-03T05:26:24.000Z","dependencies_parsed_at":"2024-06-20T20:47:42.419Z","dependency_job_id":null,"html_url":"https://github.com/imarsman/unikerneltests","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imarsman%2Funikerneltests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imarsman%2Funikerneltests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imarsman%2Funikerneltests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imarsman%2Funikerneltests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imarsman","download_url":"https://codeload.github.com/imarsman/unikerneltests/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254183332,"owners_count":22028478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gcp","golang","unikernel"],"created_at":"2024-12-25T23:13:46.219Z","updated_at":"2025-05-14T16:34:45.466Z","avatar_url":"https://github.com/imarsman.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# unikerneltests\n\nNOTE: this code does not work in a finished way. It is part of a learning and\nexperimentation process to integrate the OPS tool which manages nanovms images\nand currently, the gloud CLI to set up images. This code and project are in a\nrough and unfinished state. Please don't use it for anything important.\n\nThis repository is designed to be a collection of various tests of the Nanovms\nunikernel in the cloud. At the moment the cloud being tested is the Google\nCloud. The AWS cloud looks to have similar overall supported instance API data\nsuch as public and private ips, instance groups, etc. \n\nThis project is a way for me to learn about how to use a unikernel instance in\nthe GCP, doing things like cloud logging, obtaining an instance's public IP,\nprivate IP, and determining whether an instance is running in a managed instance\ngroup.\n\nOne possible thing that could be done if for instance, a managed instance group\nof a clustered NATS messaging service was running, each instance hopefully would\nbe able to ascertain the IPs of the other instances in the group, thus forming\nan ad-hoc cluster. A client could use the same technique with sufficient\nprivileges, to obtain the IPs of the group's instances and thus join a NATS\ncluster. I have not finished testing out setting up a cluster based on finding\nIPs for an instance group at startup. We'll see.\n\nI expect that much of what I am exploring here is already known. The goal is for\nme to get to know it. I would like to find ways to avoid things like building a\nKubernetes cluster when Google already offers managed clusters.\n\n## What works\n\n- straightforward logging to GCP logs\n\n## What is in progress\n\n- core instance attributes like public/private IPs for GCE\n  - use of interfaces works as does quickly testing if code running in cloud\n- Abstraction of logging for supported clouds - at the moment is hard-coded for\n  GCP, though that works fine.\n\n## What does not work\n\n- AWS support for instance information\n- Any other cloud provider for instance information\n- Setup of NATS cluster in context of instance group's IPs. This is the goal of\n  the NATS part of the project. The idea is to avoid use of pre-known IPs when\n  starting NATS cluster. This is new for me in terms of choosing a starting\n  master instance. I am considering either just picking the instance with the\n  earliest creation timestamp or using an algorithm such as the bully algorithm\n  to choose a leader and use that to initiate the cluster. I am new to this.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimarsman%2Funikerneltests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimarsman%2Funikerneltests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimarsman%2Funikerneltests/lists"}