Showing posts with label container. Show all posts
Showing posts with label container. Show all posts

Tuesday, November 27, 2018

[Links of the Day] 27/11/2018 : AWS deployment workflow framework, Dockerize your dev workflow, Nuke your AWS account

  • Odin : yet another AWS deployment solution. But this time with step function!! The concept is rather ingenious. And I wish we could literally script cloud formation deployment cycle using step function and lambda. There is probably a way using the WaitCondition and stuff. But it seems extremely convoluted. In the meantime kudos to Coinbase, I really like it and hope to adopt some of Odin mechanism myself.
  • Binci : containerize development workflow with docker. Personally, I have used docker compose to do it. I have a little bit of an issue with npm/JS as the core language for these type of solution. But all in all, containerizing your development environment and workflow should be standard practice by now in the industry. Sadly it is isn't yet. 
  • cloud-nuke : want to wipe your AWS/Azure/GCP resources associated with an account, use cloud-nuke. Alternative solution: aws-nuke Nuka-Cola sold separately...





Wednesday, May 09, 2018

A look at Google gVisor OCI runtime

Google released a new OCI container runtime: gVisor. This runtime aim at solving part of the security concerns associated with the current container technology stack. One of the big argument of the virtualisation crowd has always been that the lack of explicit partitioning and protection of resource can facilitate “leakage” from the containers to the host or other adjacent containers. 

This stem from the historical evolution of containers in Linux. Linux has no such concept of native containers. Not like BSD with Jails or Solaris with Zones. Containers in Linux are the result of the gradual emergence of a stack of various security and isolation technology that was introduced in the Linux kernel. As a result, Linux ended up with a highly broad technology stack that can be separately turned on / off or tuned. However, there is no such thing as a pure sandbox solution. The classic jack of all trade curse, it’s a master of none solution.
The Docker runtime (Containerd) package all the Linux kernel isolation and security stack (namespaces, cgroup, capabilities, seccomp, apparmor, SELinux) into a neat solution that is easy to deploy and use. 
It allows the user to restrict what the application can do such as which file it can access with which permission or limits resource consumption such as networks, disk I/O or CPU. It allows the applications to share resources without stepping on each other toes happily. Also, limits the risk any of their data being accessed while sitting on the same machine. 
With a correct configuration ( the default one is quite reasonable ) will allow blocking anything that is not authorised and in principle protect from any leak from a malicious or badly coded piece of code running in the container. 







However, you have to understand that Docker has some real limitation already. It has only limited support for user-namespace. The user-namespace allows applications to have UID 0 permission within the containers ( aka root ) while the containers and user running has a lower privilege level. As a result, each container would run under a different user ID without stepping on each other toes. 

All of these features rely on the reliability and security (as in no bugs) of the Linux kernel. Most of Docker advanced feature relies on kernel features. And getting new features is a multi-year effort, it took a while for good resource isolation mechanism percolates from the first RFC to the stable branch by example. As a result, Docker and current container ecosystem are directly dependent on the Linux kernel update inertia as well as its code quality. While being excellent, no system is entirely free of bug, not to mention the eternal race for patching them when they are discovered and fixed. 

Hence the idea is to, rather than having to share the kernel between all the containers, have one kernel per container. Explicitly limiting potential leakage, interference and reduce the attack surface. gVisor adopts this approach, which is not new as KataContainers already implemented something similar. Katacontainers is the result of the fusion of ClearContainer (intel) and runV (hyper). Katacontainers use KVM as a minimalistic kernel dedicated to the container runtime. But, you still need to manage the host machine to ensure fair resource sharing and their securitisation. This additional layer of indirection limits the attack surface as even if a kernel bug is discovered you will be challenged to exploit it to escape to another an adjacent container or underlying one as they are not shared. 






gVisor can use a KVM as kernel; however, it was initially and is still primarily designed around ptrace. User Mode Linux already used the same technique, which is to start a process in userspace for the subsystem that will be running on top. Similarly to a hypervisor model used by virtual machines. All the system calls will be executed using the permission of the userspace process on behalf of the subsystem via an interception mechanism. 








Now, how do you intercept these system calls which should be executed by the kernel? UML and gVisor divert ptrace primary goal ( which is debugging ) and inject a breakpoint in the executable code to intercept and stop for every system call execution. Once caught the new userspace kernel will execute the call on behalf the original process within userspace. It works well, but as you guessed, there is no free lunch. This method what heavily used by the first virtualisation solution. But rapidly, processor vendors realised that offering hardware-specific acceleration method would be highly beneficial ( and sell more at the same time).

KVM and other hypervisor leverage such accelerator. Now you even have AWS and Azure deploying completely dedicated coprocessor for handling virtualization related acceleration. Allowing VM to run almost that the same speed as a bare metal system. 

And like Qemu leveraging KVM, gVisor also offer KVM as underlying runtime environment. However, there is significant work to be done to enable any container to run on to of it. While ptrace allow to directly leverage existing Linux stack, with KVM you need need to reimplement a good chunk of the system to make it work. Have a look at Qemu code to understand the complexity of the task. This is the reason behind the limited set of supported applications as not all syscalls are implemented yet.

As is, gVisor is probably not ready yet for production. However, this looks like a promising solution providing a middle ground between the Docker approach and the Virtualization one while taking some of the excellent ideas coming from the unikernel world. I hope that this technology gets picked up, and the KVM runtime becomes the default solution for gVisor. It will allow the system to benefit from a rock-solid hardware acceleration with all the paravirtualisation goodies such as virtio. 


Thursday, October 19, 2017

[Links of the Day] 19/10/2017 : Distroless minimal container images, Strangeloop and CppCon 2017

  • Distroless : a toolkit for creating container images which contain only your application and its runtime dependencies. No package shells, managers, any other programs. This is really awesome as you always end up with a lot of clutter in your layer. too often you see apt-get update ; apt-get upgrade in your Dockerfile. Or you could simply move to Golang and enjoy a From scratch environment! [talk] [video]
  • Strangeloop: a very good review of the excellent strange loop conference. Every time I watch some of these talks, I tell myself I should get into functional programming .. Then life ( and three kids under 6 ) takes over. [slides] [videos]
  • CppCon : another dev conference, this time C++. Some interesting talks, especially the includeOS one. Which provides a C++ microkernel functionality by simply including a single header #include ! A lot of in-depth and technical talks, give it a look if you are a C++ dev. [slides] [videos]





Friday, April 14, 2017

[Links of the Day] 14/04/2016 : OpenFabric Workshop , Docker's Containerd , Category Theory

  • OpenFabrics Workshop 2017 : Some interesting talk this year at the open fabric conference:
    • uRDMA : Userspace RDMA using DPDK. This opens up a certain amount of possibility, especially for object storage solution. [Video , Slides, github]
    • Crail : Using urdma above to deliver accelerated storage solution for Apache big data projects [Slides, github]
    • Remote Persistent Memory: I think this is the next killer app for RDMA. If Intel doesn't jump onto it and deliver a dpdk like solution. [Video, Slides]
    • On Demand paging: slowly the tech is crawling its way up to upstream acceptance. While on-demand paging introduces a certain performance cost. It also allows a greater flexibility in consuming RDMA. One of the interesting aspects that nobody mentioned yet is how this feature could be used with persistent memory. I think that there is some good potential for p2p NVM storage solution.[Video, Slides]
  • Containerd : Containerd move to github, the docker "industry standard" container runtime is also reaching its v.0.2.x release.  [github]
  • Category Theory : If you are into functional programming and Haskell. This is a must read book for you.

Monday, October 10, 2016

[Links of the day] 10/10/2016 : k8s Stateful container App platform, Modern Bank Backend, Fast websocket & tcp server

  • Deepstream.io : fast, secure and scalable websocket & tcp server for mobile, web & iot
  • SuperGiant : Application platform specializing in stateful container orchestration, based on Kubernetes
  • Building a Modern Bank Backend : Nothing much on the real detail, but it can be summarized: We took "classic" banking features and used a new stack to deliver it. The HN discussion is also worth checkking out. What is interesting is the discussion on Industrial vs open source software when it come to audit and security as well as reactivity. However what the authors of the discussion is that it often boil down to the blame game and emergency patch by industrial are NOT always thoroughly tested / audited / secured but you benefit from the insurance / SLA in case something goes wrong. [HN discussion]

Wednesday, April 27, 2016

[Links of the day] 27/04/2015 : Containers at CERN, Nvidia Tesla and Usenix Hotcloud16

  • Containers and Orchestration in the CERN Cloud : interesting talk looking at how CERN embrace containers on its cloud platform. And how they leverage Magnum which relies heavily on Heat for the orchestration part of the container clusters - called bays. I would be curious to find out how they scaled Heat and pitfall with this approach. 
  • NVIDIA Tesla P100 : Nvidia whitepaper on the next generation accelerator . Impressive spec, however I always feel that there is still significant room for making it easier to consume those type of ressource.
  • HotCloud16  : Usenix program is out, some interesting papers especially these two : 
    • Cloud Spot Markets are Not Sustainable: The Case for Transient Guarantees
    • Mlcached: Multi-level DRAM-NAND Key-value Cache

Wednesday, March 23, 2016

[Links of the day] 23/03/2016: containers patterns, delta CRDTs, probabilistic DB

  • Container Patterns : WiP but promising documentation of containers patterns. Check v1.0 branch 
  • Efficient State-based CRDTs by Delta-Mutation :  instead of maintaining a full information in a CRDT the authors propose to use delta based messages in order to reduce storage and network space overhead.
  • BlinkDB : allows users to trade-ošff query accuracy for response time, enabling interactive queries over massive data by running queries on data samples and presenting results annotated with meaningful error bars. Really cool, we start to see the emergence of probabilistic programming everywhere. We just have to get used to that like real life, computer programs can be more efficient when not everything is certain.


Tuesday, August 25, 2015

Links of the day 25/08/2015 : #container conference ( #docker ), Hardware management interface standard , Computer System design

  • Redfish : Intel and other main player data center and systems management systems specification that aims to supply improved performance, functionality, scalability and security. Basically they are trying to sort out the IPMI and other ILO interface mess in order to offer a simple clean interface. Let's hope they achieve it. 
  • Hints for Computer System Design : nice presentation and discution on how how Lampson's hints can still be used, some thirty years later, to implement functionally accurate, high-performing fault-tolerant software systems.
  • Workshop on Containers 2015 (WoC) : some interesting bits in that conference, Obviously the performance comparison ( linked yesterday) but the lesson learned slides show a very interesting bit regarding containers. It seems that the cost of security group is quite heavy as you scale the number of VM / containers.

Wednesday, July 08, 2015

Links of the day 08 - 07 - 2015

Links of the day 08/07/2015: Storage tipping point, SSL, reverse proxy, #Container with the virtualization goodies on top ( or under )

  • The Storage Tipping Point -- the performance optimization technologies of the last decade – log structured file systems, coalesced writes, out-of-place updates and, soon, byte-addressable NVRAM – are conflicting with similar-but-different techniques used in SSDs and arrays. The software we use is written for dumb storage; we're getting smart storage; but smart+smart = fragmentation, write amplification, and over-consumption.
  • s2n -- Amazon's open source ssl implementation.
  • pushpin -- a reverse proxy server that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services. It communicates with backend web applications using regular, short-lived HTTP requests (GRIP protocol). This allows backend applications to be written in any language and use any webserver.
  • Hyper : Make VM run like Container. Fast as Container, Isolated by VM. Intersting approach, Upon the RUN command, Hyper launches a new VM instance, instead of containers, and mount the specified image onto the instance. Inside to the VM, a minimalist Linux kernel, called HyperKernel, is booted. HyperKernel is built with a tiny Init service, called HyperStart, which creates a Pod, setup Mountnamespace, and launch apps from the loaded image.

Friday, June 19, 2015

Links of the day 19 - 06 - 2015

Today's links 19/06/2015: Google network, Replication with RDMA, Triton #container

  • Google Network : TL:DR version without the "OMG we are so great tone"  SDN relying on an underlying clos switch topology. [Video]
  • DRBD9 : now with RDMA added .. Next DPDK? We are moving away slowly from the all kernel solution for low latency and a userspace oriented ecosystem.
  • Triton : Joyent triton container tech. Interestingly enough they offer CPU bursting and RAM pooling for extra oomph when needed ( and if available)



Thursday, June 18, 2015

Links of the day 18 - 05 - 2015

Links of the day 18/05/2015: NVM biblio , Author of Pegasus and Heracles PhD dissertation, Container for #apple #OSX
  • Pegasus and Heracles : PhD defense of David Lo presenting his result in data-center orchestration system. He developed the Pegasus and Heracles platform for Google which resulted in significant power consumption reduction as well as resources usage efficiency increase. My guess is that Google is probably running between 13x and 15x more efficient than classic data-center and the gap is growing. I m not really sure that the whole container craze is actually improving the efficiency side as fragmentation often mean more complex and difficult orchestration. Ha almost forgot the PhD defense slides are here
  • NVMDB : comprehensive survey of the (at last count) 340 non-volatile memory technology papers published between 2000 and 2014 in International Solid-State Circuits Conference (ISSCC), Symposia on VLSI Technology and Circuits (VLSI Technology, VLSI Circuits), and International Electron Devices Meeting (IEDM). The resulting data set provides a clear picture of how these memory technologies have evolved over time. [ Online Biblio ]
  • xhyve : Mac fanatic rejoice, you thought you avoided the container craze so far. But fear no more here comes the lightweight virtualization solution for OS X in all its glory. CoreOS is already talking about supporting it

Wednesday, May 20, 2015

Links of the day 20 - 05 - 2015

Today's links 20/05/2015: #BigData anomaly detection, Machine learning, Secure #Containers

Generic and Scalable Framework for Automated Time-series Anomaly Detection : Yahoo time series anaomaly detection framework.
A Few Useful Things to Know about Machine Learning : very good overview of machine learning, it summarizes twelve key lessons that machine learning researchers and practitioners have learned. These include pitfalls to avoid, important issues to focus on, and answers to common questions.
Clear Containers : Intel effort to improve security of containers by using the VT-x technology.[LWN]


 

Thursday, May 14, 2015

Links of the day 14 - 05 - 2015

Today's links 14/05/2015 : #Openstack #container , Http/2 PCie switch, #google Heracles resources management
  • magnum : Openstack container project in all its glory .. more tools and knobs ( but sadly no production ready distribution without heavy work)
  • HTTP/2 : how architecting Websites will change with the coming HTTP/2 Era 
  • Avago PEX9700 : the first PCIe switch product release after the acuqisition of PLX by avago. Some nice feature, host to host coms, Nic mode dma, etc.. 
  • Heracles : Descendant of Google pegasus project, moving from power management to full blown resources orchestration.





Tuesday, December 02, 2014

Links of the day 2 - 12 - 2014

Today's links 2/12/2014:  #CoreOS #docker Rocket container runtime, #Go Probabilistic data-structure, software define stuff.
  • Rocket:  after lxd and nspawn , Coreos brings its own container run-time, as long as the API stay stable across the product who cares. Competition is good even if I feel that the departure from LXC is premature and more effort should be poured into it rather than going for the its doomed lets rewrite it attitude.
  • Probabilistic Data Structures for Go : When you do not always know what you are getting, trade off between speed/ memory and flexibility. 
  • Software-Defined Application Delivery : Software defined everything.. but more seriously the fragmentation of the software engineering landscape is interesting.

Wednesday, November 05, 2014

Links of the day 05 - 11 -2014

Today's links 05/11/2014: #Docker and #LXD, scalability rule, Google #containers engine

  • LXD : Shuttleworth announce LXD, a secure container technology design to address the isolation and security concern of exiting solution.
  • Scalable commutativity rule : Whenever interface operations commute, they can be implemented in a way that scales
  • Container engine: interesting that Google offer multiple container per VM management (1:M) while all its concurrent only offer a 1:1 mapping. 

Tuesday, July 29, 2014

Links of the day 29 - 07 -2014

Today : Deep learning,  cloud market state of play, Cloud Infrastructure Mgmt tool, and Container vs Hypervisor performance comparison.