rabbit-slide-unasuke-rejectkaigi2019 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/README.md +22 -0
- data/Rakefile +17 -0
- data/config.yaml +21 -0
- data/img/icon_raw.jpg +0 -0
- data/img/oci-tweet.png +0 -0
- data/pdf/rejectkaigi2019-slide.pdf +0 -0
- data/slide.md +142 -0
- metadata +64 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1c0ea49009bb146bd4a75428add9e248221272f050e8b7258691eb1ee0ea049e
|
4
|
+
data.tar.gz: c568d2db1642dc61786ed2f8c57375ef40ef3f8f7ceb29ef4734b3b87d5a604e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 41840cc9470e45110f4aaf722cb4ca353ebcbcde14df09d24c527d9a6510c894ddd69677a7fb02c336a4b3908e4b8cd48af895621b81b09b330e878500d85f5b
|
7
|
+
data.tar.gz: 3beaf932666fe2b3338e952ed74526189566a512c304b628ec161a7d0544537199f0e2c61febd6af048e408c27453fcbf94014f3bb352dacb3296b4bf10b5c7f
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
slide.md
|
data/README.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# RejectKaigi 2019
|
2
|
+
|
3
|
+
## 作者向け
|
4
|
+
|
5
|
+
### 表示
|
6
|
+
|
7
|
+
rake
|
8
|
+
|
9
|
+
### 公開
|
10
|
+
|
11
|
+
rake publish
|
12
|
+
|
13
|
+
## 閲覧者向け
|
14
|
+
|
15
|
+
### インストール
|
16
|
+
|
17
|
+
gem install rabbit-slide-unasuke-rejectkaigi2019
|
18
|
+
|
19
|
+
### 表示
|
20
|
+
|
21
|
+
rabbit rabbit-slide-unasuke-rejectkaigi2019.gem
|
22
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
spec = nil
|
6
|
+
Rabbit::Task::Slide.new do |task|
|
7
|
+
spec = task.spec
|
8
|
+
# spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
# spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Tag #{spec.version}"
|
14
|
+
task :tag do
|
15
|
+
sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
|
16
|
+
sh("git", "push", "--tags")
|
17
|
+
end
|
data/config.yaml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
id: rejectkaigi2019
|
3
|
+
base_name: slide
|
4
|
+
tags: ['haconiwa', 'mruby', 'container']
|
5
|
+
presentation_date:
|
6
|
+
presentation_start_time:
|
7
|
+
presentation_end_time:
|
8
|
+
version: 1.0.0
|
9
|
+
licenses: []
|
10
|
+
slideshare_id:
|
11
|
+
speaker_deck_id:
|
12
|
+
ustream_id:
|
13
|
+
vimeo_id:
|
14
|
+
youtube_id:
|
15
|
+
author:
|
16
|
+
markup_language: :markdown
|
17
|
+
name: unasuke
|
18
|
+
email: yusuke1994525@gmail.com
|
19
|
+
rubygems_user: unasuke
|
20
|
+
slideshare_user:
|
21
|
+
speaker_deck_user:
|
data/img/icon_raw.jpg
ADDED
Binary file
|
data/img/oci-tweet.png
ADDED
Binary file
|
Binary file
|
data/slide.md
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
# OCI-compatible haconiwa
|
2
|
+
subtitle
|
3
|
+
: ─ hurdles and advantages ─
|
4
|
+
|
5
|
+
subtitle
|
6
|
+
: 2019-04-12
|
7
|
+
|
8
|
+
subtitle
|
9
|
+
: RejectKaigi 2019 @ pixiv Inc
|
10
|
+
|
11
|
+
author
|
12
|
+
: Yusuke Nakamura (unasuke)
|
13
|
+
|
14
|
+
theme
|
15
|
+
: unasuke-white
|
16
|
+
|
17
|
+
# about me
|
18
|
+
- Yusuke Nakamura (also known as "unasuke")
|
19
|
+
- Employee of BANK Inc
|
20
|
+
- Develop Rails application, manage Infrastructure <https://cash.jp/>
|
21
|
+
- RubyKaigi 2019 helper
|
22
|
+
- {::tag name="x-small"}GitHub [@unasuke](https://github.com/unasuke){:/tag}
|
23
|
+
- {::tag name="x-small"}Twitter [@yu\_suke1994](https://twitter.com/yu_suke1994){:/tag}
|
24
|
+
- {::tag name="x-small"}Mastodon [@unasuke@mstdn.unasuke.com](https://mstdn.unasuke.com/@unasuke){:/tag}
|
25
|
+
|
26
|
+
![](img/icon_raw.jpg){:relative_width="24" align="right" relative_margin_right="-9" relative_margin_top="42"}
|
27
|
+
|
28
|
+
# introduction
|
29
|
+
First, to clearly where we stand.
|
30
|
+
|
31
|
+
# Your perception of containers
|
32
|
+
- Are you use container?
|
33
|
+
- In production env? or(and) development env?
|
34
|
+
- Use Docker? or the other one?
|
35
|
+
- Orchestrate by ECS? or GKE? or on-premises?
|
36
|
+
|
37
|
+
# We use Docker mostly
|
38
|
+
- de facto standard of a Linux container
|
39
|
+
- Easy installation
|
40
|
+
- for Mac, for Windows...
|
41
|
+
- The first famous Linux container inplementation
|
42
|
+
|
43
|
+
# "Container" is not equal "Docker"
|
44
|
+
- Before Docker
|
45
|
+
- LXC (Linux)
|
46
|
+
- Jail (FreeBSD)
|
47
|
+
- etc...
|
48
|
+
- After Docker
|
49
|
+
- cri-o
|
50
|
+
- Kata Container
|
51
|
+
- etc...
|
52
|
+
|
53
|
+
# What's haconiwa
|
54
|
+
- The Linux contianer runtime written by C and mruby
|
55
|
+
- <https://speakerdeck.com/udzura/the-alternative-container?slide=11>
|
56
|
+
- > OCIのspecを必ずしも満たすことは想定していない
|
57
|
+
- Independent from "Container" world
|
58
|
+
- "Container" means OCI
|
59
|
+
|
60
|
+
# What's OCI
|
61
|
+
The initialism of "Open Container Initiative"
|
62
|
+
|
63
|
+
<https://www.opencontainers.org/>
|
64
|
+
|
65
|
+
- OCI specs
|
66
|
+
- Image spec
|
67
|
+
- specifitation of the container image format
|
68
|
+
- Runtime spec
|
69
|
+
- specification of the container runtime interface
|
70
|
+
|
71
|
+
|
72
|
+
# CRI and Kubernetes world
|
73
|
+
![](https://d3vv6lp55qjaqc.cloudfront.net/items/0I3X2U0S0W3r1D1z2O0Q/Image%202016-12-19%20at%2017.13.16.png){:relative_width="95"}
|
74
|
+
|
75
|
+
- kubelet uses Container-Runtime-Interface(CRI) to communicate to container runtime
|
76
|
+
- > The kubelet is the primary “node agent” that runs on each node.
|
77
|
+
|
78
|
+
# Diff of OCI/CRI compatible means...
|
79
|
+
- CRI compatible
|
80
|
+
- usable as backend of kubelet
|
81
|
+
- OCI compatible
|
82
|
+
- Exchangeable image and runtime
|
83
|
+
|
84
|
+
\\n
|
85
|
+
easy → CRI compatible → OCI compatible → hard
|
86
|
+
|
87
|
+
# Why CRI-compatible?
|
88
|
+
haconiwa is just run container. Doesn't orchestrate.
|
89
|
+
|
90
|
+
- Pros
|
91
|
+
- Orchestration by Kubernetes
|
92
|
+
- Cons
|
93
|
+
- Cannot use haconiwa-specific functions (hook)
|
94
|
+
- maybe...
|
95
|
+
|
96
|
+
# Why OCI-compatible?
|
97
|
+
- Pros
|
98
|
+
- possible to share the existing assets
|
99
|
+
- hub.docker.com
|
100
|
+
- Cons
|
101
|
+
- Cannot use haconiwa-specific functions (hook)
|
102
|
+
- https://github.com/haconiwa/haconiwa/blob/master/sample/hooks.haco
|
103
|
+
- maybe...
|
104
|
+
|
105
|
+
# hurdles and advantages
|
106
|
+
- hurdles
|
107
|
+
- it's hard to comply with the standard
|
108
|
+
- advantages
|
109
|
+
- more users
|
110
|
+
- wealth of existing assets
|
111
|
+
|
112
|
+
# How to implement CRI
|
113
|
+
<https://github.com/kubernetes/kubernetes/blob/release-1.14/pkg/kubelet/apis/cri/runtime/v1alpha2/api.proto>
|
114
|
+
|
115
|
+
- Protocol Buffer
|
116
|
+
- RuntimeService
|
117
|
+
- ImageService
|
118
|
+
- and many messages
|
119
|
+
- middleware?
|
120
|
+
|
121
|
+
# CRI interface and haconiwa
|
122
|
+
- should start process to respond rpc
|
123
|
+
- currently, haconiwa is just a command not service(or daemon)
|
124
|
+
- should implement rpc response interface
|
125
|
+
|
126
|
+
# OCI specification and haconiwa
|
127
|
+
- image spec
|
128
|
+
- should import/export OCI image
|
129
|
+
- <https://blog.unasuke.com/2018/read-oci-image-spec-v101/>
|
130
|
+
- runtime spec
|
131
|
+
- <https://udzura.hatenablog.jp/entry/2016/08/02/155913>
|
132
|
+
|
133
|
+
# conclusion
|
134
|
+
- more resources, more users in OCI/CRI world
|
135
|
+
- but...
|
136
|
+
- compliant to CRI is hard
|
137
|
+
- compliant to OCI is harder than CRI
|
138
|
+
|
139
|
+
# conclusion
|
140
|
+
![](img/oci-tweet.png){:relative_width="95"}
|
141
|
+
|
142
|
+
<https://twitter.com/yu_suke1994/status/1068355444928741376>
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-unasuke-rejectkaigi2019
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- unasuke
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-04-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rabbit
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.0.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.0.2
|
27
|
+
description: ''
|
28
|
+
email:
|
29
|
+
- yusuke1994525@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".rabbit"
|
35
|
+
- README.md
|
36
|
+
- Rakefile
|
37
|
+
- config.yaml
|
38
|
+
- img/icon_raw.jpg
|
39
|
+
- img/oci-tweet.png
|
40
|
+
- pdf/rejectkaigi2019-slide.pdf
|
41
|
+
- slide.md
|
42
|
+
homepage: https://slide.rabbit-shocker.org/authors/unasuke/rejectkaigi2019/
|
43
|
+
licenses: []
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubygems_version: 3.0.3
|
61
|
+
signing_key:
|
62
|
+
specification_version: 4
|
63
|
+
summary: RejectKaigi 2019
|
64
|
+
test_files: []
|