-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from ii/new-site
add new site stuff
- Loading branch information
Showing
176 changed files
with
5,152 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
use flake . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,16 @@ | ||
#+title: ii.nz | ||
#+title: Homepage | ||
#+image: /assets/ii-fresh.png | ||
#+image_alt_text: "the ii logo, bright yellow, filled with cartoon versions of software mascots from the various free software we use in our work." | ||
#+exclude_footer: true | ||
|
||
coming soon! | ||
* Hello! | ||
We are a tech company based in Aotearoa New Zealand. We develop and consult on | ||
open-source, cloud-based solutions that focus on collaboration. Specializing in | ||
cloud-native technology like Kubernetes, Talos, Knative, and more, our goal is | ||
to contribute to community growth and wellbeing through service and technology. | ||
|
||
Check out [[/projects/][the projects]] we work on, meet our [[/team][team]], read our [[/post/][blog]], or | ||
[[mailto:[email protected]][say hello]]! | ||
|
||
|
||
**Let's pair!** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#+title: Get in touch | ||
|
||
Let us know how we can help |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
+++ | ||
title = "5 Dollar USB Gadgets for Everyone" | ||
date = 2015-12-06 | ||
author = ["Hippie Hacker"] | ||
lastmod = "Sun Dec 06 00:10:35 NZDT 2015" | ||
+++ | ||
|
||
|
||
In my work trying to create devices that can install OSes from scratch on computers and flash phones and embedded IoT devices, I'm always looking for things that can support being both a usb host and a usb gadget. | ||
|
||
Think about your phone, how it works to connect a micro-B to charge and connect to it as a gadget to your computer, then when you connect a micro-A cable you plug mice, keyboard, and thumb drives into your phone. | ||
|
||
As a usb host, you can plug a mouse, keyboard, and pretty much anything you'd plug into your computer to it. Allowing you to do things like: | ||
|
||
* Format a thumb drive or microSD card | ||
* bootstrap embedded devices like intel edison | ||
* flash a phone | ||
|
||
As a usb gadget, you can plug the device into a computer and have it show up as a usb keyboard, disk, network, and other interesting things. | ||
|
||
* show up as a network adapter | ||
* provide a web / programming interface to the gadget without needing internet | ||
* send some keystrokes a computer | ||
* present a dynamic USB cdrom / dvd drive | ||
* re-install a computer from scratch combining keyboard and drive support | ||
* install OSes to a drive hosted on the device and snapshot them | ||
|
||
I'm looking to see if we can't get the new $5 RPi zero to [function as both](http://blog.ii.delivery/rpi-zero-gadget-support/). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
+++ | ||
title = "Bringing the cloud to your community" | ||
author = ["Hippie Hacker"] | ||
date = 2017-01-04 | ||
lastmod = 2017-01-04T16:00:03+13:00 | ||
tags = ["kubernetes", "cloud"] | ||
categories = ["guides"] | ||
draft = false | ||
summary = "Creating local clouds should not be hard" | ||
+++ | ||
|
||
# creating local clouds should not be hard | ||
|
||
It should be easy to deploy complex cloud infrastructure onto _real hardware_ | ||
without having to be an IT guru. We want to use a $9 C.H.I.P flashed from the | ||
web with a paperclip to setup the same open source cloud infrastructure used by | ||
Google. | ||
|
||
Several years ago we demoed a Banana Pi powering on and installing different | ||
cloud operating systems to real hardware. | ||
|
||
The advent of [Docker](https://www.docker.com/) and IoT provisioning platforms | ||
that utilize containers like [Resin](http://resin.io/) are democratizing access | ||
to deploy and manage complex infrastructure. | ||
|
||
# Resin and IoT hardware can create and manage your local cloud | ||
|
||
It just takes a few steps: | ||
|
||
* flash a [C.H.I.P.](https://getchip.com/pages/chip) (or Raspberry Pi) with | ||
Resin OS via the web | ||
* connect the Resin device to some computers set to [netboot | ||
PXE](https://en.wikipedia.org/wiki/Preboot_Execution_Environment) | ||
* watch your Resin console as your computers are turned into a cloud | ||
(Kubernetes running GitLab or OpenStack) | ||
|
||
## Flash a CHIP (or Raspi) with Resin OS | ||
|
||
We have recently pulled together a [Docker | ||
build](https://gitlab.ii.org.nz/iichip/Hanlon/blob/resin/Dockerfile) | ||
that we push to our resin project. | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_resin.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
## Connect the Resin device to some computers configured to netboot | ||
|
||
Once the Resin + ii device is connected to our network we power on the servers. | ||
This could be done manually, but what fun would that be? | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_poweron.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
We use some software that listens to the network boot requests and orchestrates | ||
the installation of the OS installs called | ||
[Hanlon](https://github.com/csc/Hanlon). | ||
|
||
When the servers power up they register with the Hanlon. This process is [fairly | ||
complex](https://github.com/csc/Hanlon/wiki/How-is-it-all-connected#breakdown) | ||
but allows us to [save information about the server | ||
hardware](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/node_setup.rb) | ||
and the servers wait to be told what to do next via the [Hanlon | ||
API](https://github.com/csc/Hanlon/wiki/Hanlon-API-Overview). | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_register.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
## Watch your Resin console as your computers are turned into a cloud | ||
|
||
Once we have enough nodes, we use Hanlon info about the hardware (number of | ||
cores for now) to [select the right | ||
hardware](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/node_state.rb) | ||
for the Kubernetes master (the one with the least cores) and allocate the rest | ||
as minions. | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_waiting.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
This allows us to generate a local ssl Certificate Authority and [create signed | ||
certificates](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/certs.rb) | ||
for all our nodes. | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_certs.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
Now we tie it all together with [Hanlon tags, models, and policies per | ||
node](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/hanlon.rb) | ||
that deploy CoreOS. | ||
|
||
<figure> | ||
<img src="/images/2017/01/ii_provision_hanlon.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
We wait for all the [CoreOS nodes to be provisioned and | ||
available](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/hanlon.rb#L51), | ||
logging the state changes along the way. | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_os_complete.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
Next we use chef-provisioning-ssh to [ensure each CoreOS node is | ||
ready](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/via_ssh.rb#L10). | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_ready.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
Then the master [needs to be | ||
initialized](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/via_ssh.rb#L46). | ||
|
||
<figure> | ||
<img src="/images/2017/01/ii_k8s_configure_master.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
And then [the | ||
minions](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/via_ssh.rb#L83). | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_minions.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
We [setup | ||
kubectl](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/kubectl.rb) | ||
to communicate to our new Kubernetes cluster. | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_kubectl.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
[Create Kubernetes | ||
manifest](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/blob/master/provision/recipes/main.rb#L20) | ||
specific to our [deploy of | ||
gitlab](https://gitlab.ii.org.nz/iichip/chef-provisioning-k8s/tree/master/provision/files). | ||
|
||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_gitlab.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
The end result is a gitlab instance running on kubernetes! | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_pods.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
We can looking up our service ip, which we can add to DNS. | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_k8s_ingress.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
## Start developing in your community on a local cloud | ||
|
||
Yes... that's gitlab, deployed from any resin device, to real hardware running kubernetes. | ||
|
||
<figure class="oversized"> | ||
<img src="/images/2017/01/ii_gitlab_running.png" /> | ||
<figcaption> | ||
</figcaption> | ||
</figure> | ||
|
||
# Why is this important? | ||
|
||
GitLab published a blog post detailing how quickly you can take your ideas to production using a local cloud | ||
|
||
* [In 13 minutes from Kubernetes to a complete application development | ||
tool](https://about.gitlab.com/2016/11/14/idea-to-production/) | ||
|
||
**There are so many places to go from here. We are looking for funding and | ||
people who share our passion for creating instant infrastructure that is easy | ||
for others to use, change, and replicate.** Send [us an | ||
email](mailto://ii.org.nz/) or give us a ring at +64 22 646 1502. | ||
|
||
|
Oops, something went wrong.