rabbit-slide-unasuke-rejectkaigi2019 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
{: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
|
+
{: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
|
+
{: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: []
|