<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by bells17 on Medium]]></title>
        <description><![CDATA[Stories by bells17 on Medium]]></description>
        <link>https://medium.com/@bells17?source=rss-713cf42ce34d------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Ch98Yn5Gg1jtkn31XfREmA.png</url>
            <title>Stories by bells17 on Medium</title>
            <link>https://medium.com/@bells17?source=rss-713cf42ce34d------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Wed, 15 Apr 2026 04:22:14 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@bells17/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[スリーシェイクに入社しました！]]></title>
            <link>https://bells17.medium.com/3-shake-279ea982b977?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/279ea982b977</guid>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Mon, 03 Jul 2023 14:10:50 GMT</pubDate>
            <atom:updated>2023-07-03T14:22:17.578Z</atom:updated>
            <content:encoded><![CDATA[<p>6月末で株式会社IDCフロンティアを退職して、今日から株式会社スリーシェイクに入社しました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*h_s05d4aYIDvs12FfkwQsQ.jpeg" /><figcaption>オフィス写真を取り忘れたので<a href="https://vachanavi.com/2022/10/03/vr3shake/">こちら</a>から引用</figcaption></figure><p><a href="https://3-shake.com">3-shake, inc.</a></p><h3>IDCフロンティアでやってきたこと</h3><p>IDCフロンティアではRancherを利用したContainer as a Serviceの開発や、IDCフロンティアが提供するIaaSであるIDCFクラウドが提供するロードバランサーやストレージなどをKubernetesクラスターと連携させるための各種Kubernetesのコンポーネントなどの開発を行なったりしました。</p><p>その他、Kubernetesやコンテナに関するトレーニングを実施したり、Container as a Serviceに興味を持ってもらったクライアントの方々と技術的な相談を受けさせて頂いたりといったように開発以外にも色々なことにチャレンジさせて頂きました。</p><p>また、個人的にも下記のようなことにも取り組み、様々な角度でKubernetesに関わることができました。</p><ul><li>Kubernetesやその関連リポジトリにコントリビュート</li><li>Kubernetesの各種実装解説をブログやセッションで行う</li><li>Kubernetesに関する情報を同人誌や商業誌を通して発信する</li><li>Kubernetes/Cloud Nativeに関するニュース情報の発信をYouTubeで行う</li><li>サイボウズ社necoチームでのTopoLVMなどのKubernetesアプリケーション開発(副業)</li></ul><p>IDCフロンティアには4年ほど在籍しましたが、入社する前は登壇して発表したりといったことにも慣れておらず、下記のような発表用のスライドを作るのも一苦労でしたが、ここ数年で色んなチャレンジを行えたので、人前で話したりと言ったこともそれなりに慣れてきました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2F84320e012350433087fdef6afa7fcb39&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fkubernetes-and-csi&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F84320e012350433087fdef6afa7fcb39%2Fslide_0.jpg%3F14164106&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/488fb0e87eca2f3d5076f00c159ad94a/href">https://medium.com/media/488fb0e87eca2f3d5076f00c159ad94a/href</a></iframe><h3>スリーシェイクでやること</h3><p>スリーシェイクはSRE支援ソリューションの提供、セキュリティやETLに関するSaaS、フリーランスエンジニア向けの人材紹介サービスなどを行なっています。</p><p>僕の場合は、SRE支援ソリューションの提供を行う事業の中で、Kubernetesに関するソリューションの提供を行ったり、事業に関するOSSへのコントリビューションや情報発信などを行っていく予定です。<br>そのため前職から引き続きKubernetesやコンテナといった事が主なお仕事になります。</p><p><a href="https://sreake.com/">SRE構築総合支援サービスSreake | 株式会社スリーシェイク</a></p><p>SRE支援に関する業務も同時に行っていくと思うのですが、Kubernetes以外のクラウドインフラ構築や運用といった部分について本業で取り組むのは久しぶりなので、ちょっとずつキャッチアップしていきたいなと思っています。</p><p>まだ初日なのでわからない事だらけですが、ひとまずブログに自分の情報を載せてもらうところまでは持っていったので、他のお仕事もがんばっていきます！</p><p><a href="https://blog.3-shake.com/members/bells17">bells17</a></p><p>基本はリモートワークですが、今日オフィスのある新宿御苑・四谷三丁目の付近を歩いていたらご飯の美味しそうなお店がたくさんあったので、ちょいちょい出社もしようかなと思っています。<br>近辺にいる方は良ければランチなどに誘ってください〜</p><h3>🤝 スリーシェイクに興味を持った方 🤝</h3><p>読んでいて「スリーシェイクにちょっと興味でてきたぞ..!」「どのポジションが良いか相談に乗って」という方がいれば、TwitterのDMなどで連絡ください！<br>（SRE支援に興味ある方も連絡お待ちしてます）</p><p>下記に新しく採用ページがオープンしてたので詳しい事が知りたい方はこちらも見てみてください。</p><p><a href="https://jobs-3-shake.com/">株式会社スリーシェイク採用情報</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=279ea982b977" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Software Design 2022年9月号にコードリーディングに関する記事を寄稿しました]]></title>
            <link>https://bells17.medium.com/oss-source-code-reading-29392edf80fe?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/29392edf80fe</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Thu, 18 Aug 2022 15:06:54 GMT</pubDate>
            <atom:updated>2022-08-18T15:07:09.733Z</atom:updated>
            <content:encoded><![CDATA[<p>タイトルの通りですが、8/18から発売の『Software Design 2022年9月号』にOSSを中心としたソースコードリーディングに関する記事を寄稿しました。</p><p><a href="https://gihyo.jp/magazine/SD/archive/2022/202209">Software Design 2022年9月号</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WXr_4un3XIUBoJ3e9ErKLQ.jpeg" /><figcaption>頂いた見本誌</figcaption></figure><p>寄稿した記事は</p><blockquote>第2特集<br>「知りたい」「使いたい」「発信したい」をかなえる<br>OSSソースコードリーディングのススメ</blockquote><p>という特集の中の中の一部で</p><ul><li>自分なりのコードリーディング方法や使ってるツールの紹介</li><li>Kubernetesを題材にした実際のコードリーディングの流れの具体例の紹介</li></ul><p>を自分が執筆した第2章・第3章の2つで行っています。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e5RgworwRkMkLvg8WxI6Cg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*idqHFMGKAk6fbJQNUucvgQ.jpeg" /></figure><p>第3章ではKubernetesのソースコードを題材にして自分なりのコードリーディングの流れや方法を紹介していて</p><ul><li>kubeletのアーキテクチャと実装に関する全体像の調査</li><li>Kubernetesの永続ボリュームに関する機能の1つであるGeneric Ephemeral Volumeの実装調査</li></ul><p>という2つを具体例として出しているので、Kubernetesのソースコードに興味のある方にも参考になれば良いなと思っています。</p><h4>記事を寄稿してみて</h4><p>今まで技術書典で技術同人誌を2つほど書いたことはあったのですが、Software Designのような商業誌で記事を書かせて頂いたのは初めてだったので、わからないことが多かったですが、学びも多くて面白い経験ができてよかったなと思います。</p><ul><li>商業誌での初稿や再稿などの執筆~編集者の方のレビューの流れを知れた</li><li>記事と一緒に作成した図を元に出版社の方でいい感じの図に直してくれるということを知った<br>(頂いた見本誌を見たらだいぶわかりやすくなってた)</li><li>記事を寄稿すると見本誌を献本いただけることがわかった</li><li>編集者の方にレビューしていただくと直す箇所がめちゃくちゃある<br>(ご迷惑おかけしました…)</li><li>多分初めてページ数(文字数)を意識して記事を書いた</li></ul><p>などを今回の執筆を通して学んだり体験できました。</p><p>自分の方で書ける記事だと今回のようなコードリーディング以外だと</p><ul><li>Kubernetes関連</li><li>コンテナ技術関連</li></ul><p>あたりがメインにはなると思いますが、機会があればまた執筆してみたいなと思っています。</p><p>今回執筆したSoftware Design 2022年9月号は自分を含め記事を寄稿したOSSソースコードリーディングの特集以外にもMySQLやRed Hat Enterprise Linux 9に関する特集などがあるようなので、興味がある方は是非買ってみてください！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=29392edf80fe" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kubelet APIをcurlで叩く]]></title>
            <link>https://bells17.medium.com/curl-to-kubelet-api-f73cb17888b7?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/f73cb17888b7</guid>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Thu, 10 Feb 2022 16:10:23 GMT</pubDate>
            <atom:updated>2022-02-10T16:10:58.155Z</atom:updated>
            <content:encoded><![CDATA[<p>kindで立ち上げたkubernetes clusterのkubelet apiをcurlで叩く方法は以下のような感じ</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4b1aa45341b14a7dbee4b363c1ada3f3/href">https://medium.com/media/4b1aa45341b14a7dbee4b363c1ada3f3/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f73cb17888b7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Accurateの内部実装]]></title>
            <link>https://bells17.medium.com/accurate-internal-70915fe716ca?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/70915fe716ca</guid>
            <category><![CDATA[accurate]]></category>
            <category><![CDATA[kubernetes-operator]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Wed, 15 Dec 2021 18:56:05 GMT</pubDate>
            <atom:updated>2021-12-15T18:56:46.374Z</atom:updated>
            <content:encoded><![CDATA[<p>これは<a href="https://qiita.com/advent-calendar/2021/kubernetes">Kubernetes Advent Calendar 2021</a> 16日目の記事です。</p><p>この記事ではKubernetesのソフトマルチテナンシー管理を容易にするツール「Accurate」の内部実装について解説します。</p><p><a href="https://github.com/cybozu-go/accurate">GitHub - cybozu-go/accurate: Kubernetes controller for multi-tenancy. It propagates resources between namespaces accurately and allows tenant users to create/delete sub-namespaces.</a></p><h3>Accurateとは？</h3><p>Accurateはサイボウズ社のnecoチームが開発しているツールで、主にKubernetesのNamespaceの階層化と、階層化されたNamespace間のリソース伝播機能を提供するKubernetes Operatorになります。</p><p>Accurateがどういったツールであるかについての詳細は、以前Kubernetes Meetup Tokyo #47で発表しているので、そちらをご覧ください。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2Fcd2133dd94704386b024ca65c01cd436&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Faccurate-introduction&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fcd2133dd94704386b024ca65c01cd436%2Fslide_0.jpg%3F19646671&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/d9fcd6d94e2222ed983f5a02c4c412d9/href">https://medium.com/media/d9fcd6d94e2222ed983f5a02c4c412d9/href</a></iframe><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Ffvxp8bUOgtI%3Fstart%3D2923%26feature%3Doembed%26start%3D2923&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dfvxp8bUOgtI&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Ffvxp8bUOgtI%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/c3cd9b83012deeae135e71f0ab646f9e/href">https://medium.com/media/c3cd9b83012deeae135e71f0ab646f9e/href</a></iframe><h3>Accurateの全体像</h3><p>Accurateのドキュメントは以下にあります。</p><p><a href="https://cybozu-go.github.io/accurate/">Accurate Documentation</a></p><p>アプリケーションはGoを使って実装されていて内容としては</p><ul><li>Kubernetesに登録するCRD(SubNamespace)</li><li>kubebuilderを利用したOperator(Custom Controller/Webhook)</li><li>Accurateを利用するためのkubectlプラグイン</li></ul><p>に区分することができます。</p><p>インストール方法としてはhelmが提供されていて、<br><a href="https://cybozu-go.github.io/accurate/helm.html">https://cybozu-go.github.io/accurate/helm.html</a></p><p>kubectlプラグインの方はkrewを使ってインストールすることができます。<br><a href="https://cybozu-go.github.io/accurate/install-plugin.html">https://cybozu-go.github.io/accurate/install-plugin.html</a></p><p>また、Opeator側でwebhookが利用されているので、基本的には事前にcert-managerがインストールされている必要があります。</p><p>アプリケーションに関してはOperatorとkubectlプラグインそれぞれがcmdディレクトリ以下にエントリーポイントがあり<a href="https://github.com/cybozu-go/accurate/tree/main/cmd">https://github.com/cybozu-go/accurate/tree/main/cmd</a></p><p>CRDについてはkubebuilderのデフォルト通りapiディレクトリ以下に定義があります。<br><a href="https://github.com/cybozu-go/accurate/tree/main/api">https://github.com/cybozu-go/accurate/tree/main/api</a></p><p>CRDの定義だけ知りたいときはドキュメントに記載があるのでそちらを読んだ方が楽です。<br><a href="https://cybozu-go.github.io/accurate/crd_subnamespace.html">https://cybozu-go.github.io/accurate/crd_subnamespace.html</a></p><p>CI/CDに関してはGithub Actionsを利用しており<br><a href="https://github.com/cybozu-go/accurate/tree/main/.github/workflows">https://github.com/cybozu-go/accurate/tree/main/.github/workflows</a><br>のワークフローを見れば詳細がわかりますが主に</p><ul><li>ユニットテスト</li><li>envtest</li><li>E2Eテスト(3つのKubernetesバージョンでのテスト)</li><li>自動生成されたコードなどの差分チェック</li><li>helm chartのlinter</li></ul><p>あたりがcommit毎にチェックされるようになっています。<br>(このあたりのテスト密度の高さによる品質担保が本当にすごい)</p><h3>Operator</h3><p>前述の通りOperator側は</p><ul><li>Custom Controller</li><li>Webhook</li></ul><p>があります。</p><p>Operatorは起動時に設定ファイルを引数で渡す必要があり、設定内容に応じて</p><ul><li>伝播を許可するNamespaceのラベル/アノテーションのキー</li><li>伝播を行うリソース種別</li><li>作成を許可するNamespaceの名前制約</li></ul><p>といったことが制御できます。<br>(設定ファイルの例は以下のような内容です)</p><pre>labelKeys:<br>- team</pre><pre>annotationKeys:<br>- metallb.universe.tf/address-pool</pre><pre>subNamespaceLabelKeys:<br>- app</pre><pre>subNamespaceAnnotationKeys:<br>- foo.bar/baz</pre><pre>watches:<br>- group: rbac.authorization.k8s.io<br>  version: v1<br>  kind: Role<br>- group: rbac.authorization.k8s.io<br>  version: v1<br>  kind: RoleBinding<br>- version: v1<br>  kind: Secret<br>- version: v1<br>  kind: ResourceQuota</pre><pre>namingPolicies: []</pre><p>Accurateは上記の設定内容に応じて</p><ul><li>Namespaceの階層化</li><li>Namespaceのテンプレート化</li><li>作成する子Namespace名のバリデーション</li><li>設定に応じたNamespaceへのラベル/アノテーションの伝播</li><li>設定された種類(e.g. Secret)のリソースを子/テンプレート利用Namespaceへ伝播</li></ul><p>を行います。</p><h3>Custom Controller</h3><p>Custom Controllerには</p><ul><li>SubNamespaceReconciler</li><li>NamespaceReconciler</li><li>PropagateController</li></ul><p>の3種類のコントローラーがあります。</p><h4>SubNamespaceReconciler</h4><p>SubNamespaceReconcilerは子Namespaceを作るためのCRD「SubNamespace」リソースのためのReconcilerで、SubNamespaceリソースに応じた子となるNamespaceの作成を担当します。</p><h4>NamespaceReconciler</h4><p>NamespaceReconcilerはNamespaceのためのReconcilerで</p><ul><li>子Namespace</li><li>Templateを利用したNamespace</li></ul><p>に対して伝播元となるNamespaceのラベル/アノテーションの伝播を行うためのNamespaceです。</p><p>また、Namespaceが子Namespaceでなくなったり、Templateの利用を止めた際に伝播されていたリソースを削除したりといった処理も行います。</p><h4>PropagateController</h4><p>PropagateControllerは</p><ul><li>子Namespace</li><li>Templateを利用したNamespace</li></ul><p>に対して、伝播元となるNamespaceで作成された各種リソースから、伝播する設定が行われているリソースの伝播を行います。</p><p>コードを読んでいて面白かったのが、伝播してリソースを作成する処理について以下のようになっており、unstructured.Unstructuredインターフェイスを利用することで各種Kubernetesリソースに対する伝播処理を1つのControllerで実装されている点でした。<br>unstructured.Unstructuredはこんなふうに使うんだなというのが勉強になりました。</p><pre>func (r *PropagateController) propagateCreate(ctx context.Context, obj *unstructured.Unstructured) error {<br> logger := log.FromContext(ctx)<br> children, err := r.getChildren(ctx, obj.GetNamespace())<br> if err != nil {<br>  return err<br> }</pre><pre>name := obj.GetName()<br> for _, child := range children.Items {<br>  cres := r.res.DeepCopy()<br>  err := r.Get(ctx, client.ObjectKey{Namespace: child.Name, Name: name}, cres)<br>  if err == nil {<br>   continue<br>  }<br>  if !apierrors.IsNotFound(err) {<br>   return fmt.Errorf(&quot;failed to look up %s/%s: %w&quot;, child.Name, name, err)<br>  }</pre><pre>if err := r.Create(ctx, cloneResource(obj, child.Name)); err != nil {<br>   return fmt.Errorf(&quot;failed to create %s/%s: %w&quot;, child.Name, name, err)<br>  }</pre><pre>logger.Info(&quot;created a child resource&quot;, &quot;subnamespace&quot;, child.Name)<br> }</pre><pre>return nil<br>}</pre><p><a href="https://github.com/cybozu-go/accurate/blob/v0.3.0/controllers/propagate.go#L235-L261">accurate/propagate.go at v0.3.0 · cybozu-go/accurate</a></p><h3>Webhook</h3><p>Webhookは</p><ul><li>SubNamespace</li><li>Namespace</li></ul><p>に対して設定されています。</p><h4>SubNamespace</h4><p>SubNamespaceに対するWebhookは</p><ul><li>mutatorによるfinalizerの自動設定</li><li>SubNamespaceリソースの設定値バリデーション</li><li>Nameing Policyに違反してないかのチェック</li></ul><p>などを行います。</p><h4>Namespace</h4><p>Namespaceに対するWebhookはAccurateに関するNamespaceの操作に問題ないかのバリデーションを行います。</p><p>Accurateは”accurate.cybozu.com/”から始まるラベルやアノテーションをNamespaceなどのリソースに埋め込むことにより、Accurateから見たNamespaceやその他伝播するリソースの属性や設定を管理しています。</p><p>バリデーション処理ではリソースの作成や変更内容時に上記の設定などに問題が無いかどうかのチェックを行っています。</p><h3>kubectlプラグイン</h3><p>Operator側に比べるとkubectlプラグインの実装はかなりシンプルなので、簡単にまとめます。</p><p>kubectlプラグインはgit-style プラグイン機構と言われるPATH の通ったディレクトリに配置された実行ファイルの名前がkubectl-で開始しているものを呼び出すというものです。</p><p>ですので、kubectlプラグイン自体の実装は通常のCLIツールの実装と同じです。</p><p>Accurateの場合はKubernetesの様々なコマンドラインツールで使われているのと同様にcobraが使われています。</p><p><a href="https://github.com/spf13/cobra">GitHub - spf13/cobra: A Commander for modern Go CLI interactions</a></p><p>コマンドのusageは以下のようになっています。</p><pre>$ kubectl accurate<br>accurate is a subcommand of kubectl to manage Accurate features.</pre><pre>Usage:<br>  accurate [command]</pre><pre>Available Commands:<br>  completion  generate the autocompletion script for the specified shell<br>  help        Help about any command<br>  list        List namespace trees hierarchically<br>  namespace   namespace subcommand<br>  sub         sub-namespace command<br>  template    template subcommand</pre><pre>...</pre><p>completionとhelpを除くとその他は</p><ul><li>list</li><li>namespace</li><li>sub</li><li>template</li></ul><p>というサブコマンドの構成となっています。</p><p>Namespaceの階層化を行ったり、Template機能を利用する際は</p><ul><li>kubectl accurate sub create</li><li>kubectl accurate template set</li></ul><p>といったコマンドを利用していくことになりますが、これらは内部では</p><ul><li>SubNamespaceの作成や削除</li><li>Namespaceへのラベルやアノテーションの設定</li></ul><p>といった操作を実行するという処理が行われています。</p><h3>まとめ</h3><p>ということで最後に全体のイメージを図にするとこんな感じです。<br>(サッと作ったので雑な感じです)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/975/1*ESyNYlTjS2AZA4ylZXJafw.png" /><figcaption>Accurate Architecture Overview</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=70915fe716ca" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ストレングスファインダーのコーチングを受けてみた]]></title>
            <link>https://bells17.medium.com/strengthsfinder-2140afddf46f?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/2140afddf46f</guid>
            <category><![CDATA[strengthsfinder]]></category>
            <category><![CDATA[coaching]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Wed, 11 Aug 2021 13:27:04 GMT</pubDate>
            <atom:updated>2021-08-11T13:27:44.756Z</atom:updated>
            <content:encoded><![CDATA[<p>今日は技術的な記事ではなくて、ストレングスファインダーという個々人の特性を34の資質に分解して、自身の強み・弱みを知るための分析とその結果を元にしたコーチングを受けてみたという話です。<br>(ここでは一応コーチングという書き方をしていますが、いわゆるティーチング・コーチングなどでいうところのコーチングとは別だとは思います)</p><p>ストレングスファインダーの分析は以下から購入して受験することができます。</p><p><a href="https://www.gallup.com/cliftonstrengths/ja/strengthsfinder.aspx">ストレングス・ファインダー 2.0</a></p><p>僕はここにあるクリフトンストレングス34というやつを購入してみました。<br>大体6000円くらいでした。</p><p><a href="https://store.gallup.com/p/ja-jp/10003/%E3%82%AF%E3%83%AA%E3%83%95%E3%83%88%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AC%E3%83%B3%E3%82%B0%E3%82%B934">クリフトンストレングス34 | ja-jp - Gallup</a></p><h3>きっかけ</h3><p>受けたきっかけはtopotalの方達が毎週水曜日夜に行なっている「SRE雑談」というTwitter Spaceでお話ししていて、ストレングスファインダーの話がきっかけでした。</p><h3>菱田健太@トポタル📌 on Twitter: &quot;ストレングスファインダーの話になってます https://t.co/ZTgmG42P86 / Twitter&quot;</h3><p>ストレングスファインダーの話になってます https://t.co/ZTgmG42P86</p><p>話しの中で「ストレングスファインダーの結果が〜」という話が何度か出てきて、僕が全然知らなくて「ストレングスファインダーってなんですか？」って質問をしたところ雑談に参加していた多くの方が受けた事あるよ！って教えてくれたり、ストレングスファインダーがどんなものか教えていただいて興味が出たのでTwitter Spaceで話しをしながら受験してみました。</p><h3>受診結果</h3><p>話しながら受けてみたところ、こんな感じの結果でした。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HSeU2gj8ncVvStSin6LlhA.png" /></figure><p>僕の場合は特に</p><ul><li>活発性</li><li>個別化</li><li>親密性</li><li>着想</li><li>未来志向</li></ul><p>というのが強みとなる資質になってくるようです。</p><p>こういった図の他に強みとなる資質がどういったものなのかなどの4種類ほどのpdfで生成されたレポートが受験直後からダウンロードして見れる感じになっていました。</p><p>例えば「活発性」の場合は</p><blockquote>「いつ始めようか?」これはあなたの人生で繰り返される質問です。あなたは動き出したくてうずうずしています。分析 が有用であるとか、ディベートや討論が貴重な洞察を生み出す場合があることもあなたは認めるかもしれませんが、 心の奥深くでは、行動だけが有意義であると知っています。行動だけが何かを起こすことができるのです。行動だけ が功績につながります。決断が下されると、あなたは行動を起こさずにはいられません。<br>…</blockquote><p>のように「活発性」の資質が強い人はどういう特徴や考え方をするのか？などが書かれている感じでした。</p><p>他の強みとなる資質についてもこういった説明が書いてあり、だいたい書いてあることと自分の認識は一致している感じでした。</p><p>自分の認識と一致しているのでレポートの精度高いなと思う一方で、(字面上以上の実際の質は置いておいて)だいたい自分の認識とレポートで書かれていることが一致していたので、自分としては「だいたい知ってる、自分で思っている特徴や癖と合ってる」という感じだったので、この結果を見てストレングスファインダーをこれ以上どう活用すればいいのかがよくわからん、という感じになりました。</p><h3>bells17 / べる on Twitter: &quot;とりあえず分析結果を見て感じたこと・自分の認識してたりやってることと一致してるので分析精度が高そう・分析結果と自己認識+取り組みががだいたい一致してたので自分の認識や内省の精度もそこそこ高いのかも知れない・一致してたのはわかったんだけど、新たな発見はまだ無い ← 今ココ / Twitter&quot;</h3><p>とりあえず分析結果を見て感じたこと・自分の認識してたりやってることと一致してるので分析精度が高そう・分析結果と自己認識+取り組みががだいたい一致してたので自分の認識や内省の精度もそこそこ高いのかも知れない・一致してたのはわかったんだけど、新たな発見はまだ無い ← 今ココ</p><h3>ストレングスファインダーについて調べてみる</h3><p>どう活用していいかわからんという感じになったので、もう少し自分でも調べてみたところ</p><p><a href="https://note.com/shin_strengths/n/n948c729babe4">ストレングスファインダーをもっと活かすには？｜しん / 強みコーチ｜note</a></p><p>の記事が概要としてはストレングスファインダーをどのように活用していけばよいかがわかりやすかったです。</p><p>一応『さあ、才能(じぶん)に目覚めよう 新版 ストレングスファインダー2.0』という本も読んだのですが、書籍の3/4ほどがストレングスファインダーの各資質についての説明となっており、ストレングスファインダーの受験結果で手に入るレポートと重複してる箇所が多かったのであまり参考にはならなかった感じがしました。</p><p><a href="https://www.amazon.co.jp/dp/4532321433">さあ、才能(じぶん)に目覚めよう 新版 ストレングス・ファインダー2.0</a></p><p>上記に貼ったしんさんという方は、どうやらタイムチケットというCtoCのスキル/タイムシェアサービスで1時間単位でストレングスファインダーのコーチングをしてくださるようだったので、ブログ記事を読んだだけだとなんとなくこうかな〜くらいの認識を補完して、自分の中でどんなふうにストレングスファインダーを利用していけばよいのかをイメージを具体化して落とし込むためにこのコーチングを受けてみることにしました。</p><p><a href="https://www.timeticket.jp/items/61923/">🏅公認ストレングスコーチがあなたならではの強み伸ばします✨ | タイムチケット</a></p><h3>コーチングを受けてみて</h3><p>コーチングについては以下のような内容でした</p><ul><li>事前にストレングスファインダーを受験(これは受験済)</li><li>受験結果のレポートを元にコーチの方から事前に頂いた質問に解答(主にストレングスファインダーの診断結果の特に強みとなる資質についての納得感や理由など)</li><li>これらの結果を元にした分析結果を事前に共有</li><li>当日はビデオチャットツールを使用して1時間ほど上記の事前情報を元にして、こちらが話したいテーマをベースにお話し</li></ul><p>ビデオチャットによるコーチングに加えて、事前に分析していただいてその結果を共有してもらえることを考えると5000円はかなり安いんじゃないかなという印象です。</p><h4>コーチングの中身について</h4><p>コーチングは1時間で達成したい目標を始めに設定して、その目標に沿ったテーマについてお話しするという感じでした。</p><p>僕の場合は</p><ul><li>受診結果と自己認識がだいたい一致してたけど、今後この結果をどう活用していけばよいのか？ということと</li><li>結果を元に具体的にかかえている課題に対してどのように取り組んだり付き合って行けばよいのか？</li></ul><p>ということを目標にしてお話ししました。<br>(2つ目の方はちょっとふわっとした目標ですが)</p><p>これらを目標として、お話ししながら、ストレングスファインダーをどのように活用していくのがいいのか？などについて教えてもらいました。</p><p>まず教えてもらったストレングスファインダーの基本となる考え方の僕なりの解釈としてはこのようなものでした。</p><ul><li>自分の資質として弱みとなる部分を改善したり、弱みとなる資質の特性を活かして何かをするよりは、自分の強みとなる資質の特性を活かしたり伸ばしたりする方が出る成果が後者の方が圧倒的に高くなる</li><li>だから自分の弱み・強みとなる資質の特性を把握して、強みとなる資質の特性を活かして様々な課題に取り組んだ方が良い結果が出る</li><li>そのために分析をして自分の弱み・強みとなる資質を把握する</li><li>把握した結果を、より自分の強みを活かして取り組む方法を考えたり工夫するためのヒントにする</li></ul><p>これに対して、上記のようなことを行なっていくためのステップとしてストレングスファインダーの分析結果を元に</p><ul><li>自分の強みを把握する</li><li>強みを伸ばす</li><li>強みを活かして物事に取り組む</li><li>強みがどのように物事の裏目に出るのかを把握する</li><li>自分の弱みを把握する、弱みを強みで補う</li><li>強みをどのように活かすのかをそれぞれの状況でコントローラできるようにする</li></ul><p>といったことステップとして行なっていくようです。<br>(ここの表現はコーチングの時に頂いた資料を元に自分なりの表現に置き換えてます)</p><p>個人の感覚としては、質は置いておいてこのステップの上記3つはすでに日常的に取り組んでいて、下3つはそれぞれ検証したり意識的にできるようにコントロールする訓練をしてる段階かなと理解をしていました。</p><p>ただ、個人的にはこの「自分の強みを把握する」という部分が一番大事かなと思っていて、この強み(というか特性だと理解してる)には</p><ul><li>どういう解釈ができるか</li><li>どういう見方ができるか</li></ul><p>の幅を広げることで、自分の取れる有用なアクションの幅を広げることができるかなという気がしてました。</p><p>今回のコーチングでは、結果としてここの解釈や見方を増やすことのきっかけになってとても良かったかなという気がしています。</p><p>例えば僕の上位資質の分析で</p><blockquote>着想 x 未来志向 x 戦略性 = ユニークな未来を見つめて、そこへの道筋を描く</blockquote><blockquote>活発性 x 目標志向 x 達成欲 = 目標に向かってエネルギッシュ突き進む</blockquote><p>などの分析をコーチングの中でしてくれました。</p><p>この「ユニークな未来を見つめて、そこへの道筋を描く」という部分をどう解釈するかによって、自分には実際にそういうところがありそうかという自己認識の度合いは変わりそうですが、単体の資質の特徴だけでなく、資質の組み合わせによってこういう方向性の強みや特徴があるのではないか？という分析をすることによって、xのケースではyのようなやり方も自分には合ってるのかもしれない、というような考える材料をいくつか手に入れた気がしました。</p><p>ちょっと文章でうまく説明できてる感じがしないですが、こういったことを実際にコーチとお話ししながら考えることで、僕個人としてはストレングスファインダーの分析結果やそれぞれの資質の特性、資質の掛け合わせによって自分により合ってるやり方を探したり、捉え方を模索するツールとして利用できそうだなという感じがあったので、このコーチングを受けてよかったなという感じです。</p><p>また、具体的な自分の課題を題材として分析結果をどのように使うのか？という話しをさせていただいたので、ストレングスファインダーをどのように活用していくのか？という観点の具体的な考え方の基礎がだいぶ出来た気がしていて、ストレングスファインダーの結果を使って取り組み方・考え方の幅を広げるための第一段階が出来た気がしています。</p><p>今後、ストレングスファインダーの分析結果をベースにして様々な物事に対して試行したり捉え方を変えて見ることで、ストレングスファインダーをベースにして考えたり試行錯誤する回数を増やし、考え方・捉え方・取り組み方の幅を広げていければ良いなと思っています。</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2140afddf46f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kube API Serverの内部実装を解説する技術同人誌を技術書典11で出しました!]]></title>
            <link>https://bells17.medium.com/wrote-the-kube-api-server-book-2155129db374?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/2155129db374</guid>
            <category><![CDATA[cloud-native]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Mon, 19 Jul 2021 09:16:43 GMT</pubDate>
            <atom:updated>2021-07-19T10:00:16.231Z</atom:updated>
            <content:encoded><![CDATA[<p>タイトルの通りなのですがKube API Serverの内部実装を解説する技術同人誌を技術書典11で出しました。</p><p>出した本はこれで、タイトルは『Kube API Server ~ Kubernetes API Serverの内部実装を見てみよう ~』という割とそのまんまなタイトルです。</p><p>技術書典とBoothのそれぞれで販売していて、リンクはこちらになります。</p><ul><li><a href="https://bells17.booth.pm/items/3129761">Kube API Server ~ Kubernetes API Serverの内部実装を見てみよう ~ - bells17 - BOOTH</a></li><li><a href="https://techbookfest.org/product/4626843321761792">Kube API Server ~Kubernetes API Serverの内部実装を見てみよう~：Kubernetes Internal</a></li></ul><p>表紙はこんな感じで、表紙のイラストはSKIMA経由で <a href="https://twitter.com/confidential_y/">https://twitter.com/confidential_y/</a> さんに書いていただきました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*I_UtSkQXErd-N0uznmpzVA.jpeg" /></figure><h3>書籍の内容について</h3><p>書籍の内容についてですが、タイトルのまんまKubernetesのAPI ServerであるKube API Serverの内部実装について</p><ul><li>どのようなアーキテクチャになっているのか？</li><li>どのような機能があり、それはどのように実装されているのか？</li><li>何をどのように拡張する方法が提供されているのか？</li></ul><p>といったことを調べてまとめたものになりますので</p><ul><li>Kubernetesに興味がある方</li><li>Kubernetesのコンポーネントに興味がある方</li><li>Kubernetesの内部実装に興味のある方</li></ul><p>は読んでいただけると良いなと思っています！</p><h3>July Tech Festaでのセッション</h3><p>実は書籍は昨日(2021/07/18)にリリースしたのですが、昨日はJuly Tech Festaというカンファレンスでもセッションを行いました。</p><p>セッション内容は出した書籍と同じくKube API Serverについての話しでした。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2F6239ffab18104fd5b2859dee68f9acc5&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fkube-api-server&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F6239ffab18104fd5b2859dee68f9acc5%2Fslide_0.jpg%3F18563738&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/c87d2b072e2d39bf533b619feb63c9fb/href">https://medium.com/media/c87d2b072e2d39bf533b619feb63c9fb/href</a></iframe><p>内容としては書籍で書いたKube API Serverについての内容の中で概要レベルの話しを中心にしてお話しした感じになりますので、スライドの方を見ていただいて興味ありそうであれば書籍の方も是非買っていただけると！</p><p>ちなみに何故か当日までセッション時間が40分だと勘違いしていて(実際は20分だった)、本来のスライドからだいぶ内容を削っているので、削る前の内容をどこかで発表できると良いなと思ってます。</p><h3>どうしてKube API Serverの本を書いたの？</h3><p>前回の技術書典10ではKubeletについての本を書きました。</p><ul><li><a href="https://bells17.booth.pm/items/3129761">Kube API Server ~ Kubernetes API Serverの内部実装を見てみよう ~ - bells17 - BOOTH</a></li><li><a href="https://techbookfest.org/product/5738785868349440">Kubeletから読み解くKubernetesのコンテナ管理の裏側：Kubernetes Internal</a></li></ul><p>そのため残りのKubernetesのコアコンポーネントは</p><ul><li>Kube API Server</li><li>Kube Controller Manager</li><li>Cloud Controller Manager</li><li>Kube Scheduler</li><li>kube-proxy</li></ul><p>となっていてました。</p><p>そのうち</p><ul><li>Cloud Controller Managerはコードレベルの解説こそしていないが、大体の内部実装についてはすでに話している</li><li>Kube Schedulerはチェシャ猫さんなどがすでに内部実装についてそれなりに解説された記事やスライドがある</li><li>kube-proxyも同様にRyuSaさんなどがすでに内部実装についてそれなりに解説された記事やスライドがある</li></ul><p>という状態で、情報が薄くて優先度が高かったのがKube API ServerとKube Controller Managerでした。</p><p>Kube Controller ManagerはKubernetesの様々なロジックを実行するKubernetes Controllerの塊のコンポーネントで、話が色んな機能に波及しそうだったため、先にKube API Serverの方をまとめようかなと思った感じです。</p><p>今回Kube API Serverの本を書くことで、僕自身</p><ul><li>公式ドキュメントなどにはまとまっていないKube API Serverのアーキテクチャが整理できた</li><li>調べた内容を図や文章にまとめることで、Kube API Serverのアーキテクチャがどのようになっているのか？を具体的なイメージに落とし込めた</li><li>アーキテクチャを表現する実際の実装には、アーキテクチャ図などには現れない、また違った複雑さがあることが把握できた</li><li>今度Kube API ServerについてのPull Requestを出そうかなと思った時に、あまり調査に時間をかけること無くどこをどう変えれば実装できるのかがわかる程度には実装を把握できた</li></ul><p>というメリットがあったように思います。</p><p>こんな感じで本を書く、セッションで発表するといったことをアウトプット目標にすることで、Kube API Serverの実装を把握するといったような個人の時間を使って取り組むには少し重めのタスクも、うまくスケジュールとモチベーションコントロールをして取り組むきっかけになるので、今後も似たようなテーマで本を書いたりしてこうと思っています。</p><p>多分だけど次はKube Controller Managerについて本を書くことでまとめて、その後自分の理解のために</p><ul><li>Kube Scheduler</li><li>kube-proxy</li></ul><p>などについても調べられたらなと思っています。</p><h3>どういうモチベーションで本を書いてる？</h3><p>僕の場合Kubernetesの実装調査系については</p><ul><li>Kubernetesに興味があって実装レベルで色々知りたい</li><li>Pull Request色々送れるようになりたい</li><li>仕事の関係でKubernetesの実装理解は実務にも役立つ</li></ul><p>というのがベースにあって、それを本に書いたりセッションとかで登壇してるのは</p><ul><li>パブリックに公開する気でやったほうがクオリティが高いアウトプットになる</li><li>xxのイベントで本を出す/セッションをするという期限を設けることで、ここまでに調べてアウトプット出さなきゃというスケジュール管理とモチベーションコントロールがしやすくなる</li><li>がんばって調べたり書いたりしたのでどうせだったら色んな人に見て欲しい</li></ul><p>あたりだと思ってます。</p><h3>本を書くにあたってやったこと</h3><h4>Kube API Serverの実装調査</h4><p>Kube API Serverの実装調査は↓のzennのスクラップに全部メモを取っていった感じです。</p><p><a href="https://zenn.dev/bells17/scraps/81b6ade4cbd40d#comment-1fd911674ab64f">Kube API Server</a></p><p>ここでメモを取ったものをベースにして、全体のアーキテクチャに関わるものや、個々の機能や実装を把握するための情報をGoogle Drawingで図を書いていって、スライドにまとめていった感じになります。</p><p>本当はメモレベルのものを別の何かにまとめ直して整理してからスライドにして行きたかったのだけど、今回はJuly Tech Festaでのセッションも時間がなかったこともありいきなり図を書いてスライドにまとめていったという流れでした。</p><p>それでスライドにまとめていったものを更に色々深堀りしていって書籍の原稿に落としていった感じです。</p><p>ただ今回本当に時間がなかったのもあって、書籍の方は文章全体を見直したり、他にも気になる項目を追加したりといったアップデートは前回と同じくやっていけたら良いなとは思ってます。</p><p>なので前回も募集させてもらったけども、本書も内容をレビューしていただける方がいると嬉しいなという感じなので、どなたか興味ある方入ればTwitterなどで連絡いただきたいです！</p><h4>執筆の準備</h4><p>執筆を行うにあたって表紙は先に用意しようと思ってSKIMA経由でイラストレーターさんに表紙のイラストを依頼していました。</p><p><a href="https://skima.jp/">スキマ - スキルのオーダーメイドマーケット - SKIMA</a></p><p>また、依頼を出す際には</p><p><a href="https://docs.google.com/presentation/d/e/2PACX-1vSNWzx9cW3ohynxKcRa5lgn8zXllMjq6VqkswQadCQEClHqRb-vxoJZbgZC4MPTls_ZkDrn6JfOen4L/pub">https://docs.google.com/presentation/d/e/2PACX-1vSNWzx9cW3ohynxKcRa5lgn8zXllMjq6VqkswQadCQEClHqRb-vxoJZbgZC4MPTls_ZkDrn6JfOen4L/pub</a></p><p>のような形をスライドを作成して依頼を出してました。</p><p>元々技術書典11は4月頃の開催と聞いていたので、前回の技術書典直後くらいにイラストを依頼していたのだけど、ちゃんと描いて頂いたイラストを使って本を出せてよかったです。</p><p>執筆環境は前回に引き続き</p><p><a href="https://github.com/TechBooster/ReVIEW-Template">GitHub - TechBooster/ReVIEW-Template: TechBoosterで利用しているRe:VIEWのテンプレート（B5/A5/電子書籍）を公開しています</a></p><p>を使わせて頂いて、gitpodを使ってブラウザ経由で執筆してました。</p><p><a href="https://www.gitpod.io/">Gitpod: Always ready-to-code.</a></p><p>前回使ってたときと違ってgitpodでpdfを表示できなくなっていたので、書いてビルドするたびにpdfをダウンロードして確認してたのがちょっと面倒でした。</p><p>TeXとかの記法については正直あまり理解できてないまま使ってるけど、前回書いた時に使ってた記法を元に最低限の書き方は理解してたので、表示崩れがあったこと以外はそこまでは困らなかったという記憶です。</p><p>本当はこれをGithub Codespaceとかに移植できると手元のVSCodeから執筆できて便利そうなんだけど、調べたりする時間があまりなかったのでスキップという感じです。</p><p>ここらへんは今度時間あったら調べたい。</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2155129db374" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[July Tech Festa 2021 winterで発表&運営スタッフをしました]]></title>
            <link>https://bells17.medium.com/july-tech-festa-2021-winter%E3%81%A7%E7%99%BA%E8%A1%A8-%E9%81%8B%E5%96%B6%E3%82%B9%E3%82%BF%E3%83%83%E3%83%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F-385e7e18aac4?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/385e7e18aac4</guid>
            <category><![CDATA[kubelet]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Tue, 26 Jan 2021 04:26:28 GMT</pubDate>
            <atom:updated>2021-01-26T04:27:33.545Z</atom:updated>
            <content:encoded><![CDATA[<p>July Tech Festa 2021 winterというカンファレンスで運営スタッフとして運営に参加をして、ついでにKubeletに関するセッションも行いました、という内容です</p><p>イベントページはこちら</p><p><a href="https://techfesta.connpass.com/event/193966/">July Tech Festa 2021 winter (2021/01/24 10:00〜)</a></p><h3>運営スタッフってどんなことやったの？</h3><p>僕の場合12月から運営スタッフとして参加したのですが</p><ul><li>毎週の定例MTGに参加</li><li>応募していただいたCFPをチェック</li><li>イベント開催のための各種準備作業</li><li>担当の登壇者の方への連絡</li><li>イベント当日は1つのトラックの司会(2人体制でセッションもあったので僕は登壇者の方への質問のみ担当)</li></ul><p>という感じのことをやってました</p><h3>やっていて良かったこと/大変だったこと</h3><h4>良かったこと</h4><p>運営スタッフとして参加してみて良かったこととしては</p><ul><li>規模が大きめのカンファレンスの運営がどんな感じになっているのか体験できた(1Day 5セッション×7トラック)</li><li>OBSなどの配信ツールをどんなふうに組み合わせたりしてるのか知ることができた(OBSのスタジオ機能初めて使った)</li><li>CFPを見たりするのがどんな感じでやってるのかを知ることができた</li><li>運営として1日中イベントに参加してたので、久々にオフラインイベントのライブ感に近いものを感じることができて楽しかった</li></ul><p>といったことになります</p><h4>大変だったこと</h4><p>逆に大変だったことはこんな感じです</p><ul><li>MTGが毎週あったので、そこは少し大変だった(特にイベント開催1ヶ月ちょっと前くらいから参加したので特に)</li><li>イベント当日の集合が朝早かったのでめっちゃ寝不足だった(前日深夜まで発表用の資料直してたのも原因)</li><li>司会(質問など)が割とぶっつけ本番に近かったので(一応一人練習はした)かなり緊張した &amp; いくつか凡ミスした(でも質問そのものはは結構いい感じできたかなという印象)</li><li>司会があるのでask the speakerに参加できない &amp; 担当セッション以外を同時視聴する余力はない</li></ul><p>最近だとこういうオンラインカンファレンスだとDiscordやZoomを使ってask the speakerに参加して登壇者の方と雑談してることも多かったのだけど、それができないのは少し残念だったかな</p><h3>発表はどんなことやったの？</h3><p>自分自身のセッションではKubeletの話をしました<br>(ちなみにカンファレンステーマの”推しテク総選挙”というコンセプトは完全スルーした内容になってますw)</p><p>スライドはこちらです</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2F56455a502f29461fb690b5548d00add9&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fkubelet-and-containers&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F56455a502f29461fb690b5548d00add9%2Fslide_0.jpg%3F17173250&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/98fd1134a299f45b85a16186ae34fe3b/href">https://medium.com/media/98fd1134a299f45b85a16186ae34fe3b/href</a></iframe><p>ちなみに発表練習してるときは60分話さなきゃいけないのに50分未満で終わってしまったりしてたんだけど、当日緊張していたせいかほぼピッタリ60分使い切ることができました</p><p>あと60分のセッションって発表練習するのがめっちゃ疲れるし時間かかる</p><p>ここ最近はKubelet関連の情報発信ばかりしていて、自分でやっている Kubernetes Internal #4ではKubeletが起動するまでのコードリーディングをテーマにお話してました</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FgWS38gSiDZ0&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DgWS38gSiDZ0&amp;image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FgWS38gSiDZ0%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/83c3eff5e17ebe98bc94471e61db01d1/href">https://medium.com/media/83c3eff5e17ebe98bc94471e61db01d1/href</a></iframe><p>また、クリスマスから年末年始にかけてやっていた技術書典10ではKubeletの技術同人誌を書きました</p><p><a href="https://techbookfest.org/product/5738785868349440">Kubeletから読み解くKubernetesのコンテナ管理の裏側：Kubernetes Internal</a></p><p>ちなみにイベントが終わったのでBoothでも出しました<br><a href="https://bells17.booth.pm/items/2649601">https://bells17.booth.pm/items/2649601</a></p><p>この本は技術書典10のイベント中も何度かアップデートしたのですが、最近もう少し追記したり修正したりする内容があったのであんまり期限を空けないようにしてアップデートしたい気持ち</p><p>内容的に</p><ul><li>JFT Winter 2021: スライドのみでKubeletの概要について解説</li><li>Kubernetes Internal #4: Kubeletのコードベースの解説</li><li>技術本: Kubeletの実装的な話し込みで文章と図のみで説明</li></ul><p>なので、Kubeletに興味ある方は↑の順番でみてもらうのがわかりやすいんじゃないかなぁ〜と思ってます</p><h3>Kubernetes関連について</h3><p>Kubernetes関連のアウトプットについてはようやく一番大変と思われるKubelet周りの実装把握と情報のアウトプットができたという感じ</p><p>これまでに</p><ul><li>Cloud Controller Manager</li><li>CSI</li></ul><p>については調べてアウトプットしてるので、Kubernetesの主だったコンポーネントについての調査はだいぶ進んできた気がしている</p><p>ので直近では</p><ul><li>Kubeletと関連するコンテナランタイムとCRI周り</li><li>コンテナランタイムが扱うLinuxコンテナ周り</li><li>KubernetesやCNIが設定しているネットワーク周りの設定</li><li>あとは未調査のKubernetes ComponentのAPI Serverあたり</li></ul><p>にあたりついて調べたりアウトプットしていきたいなという感じがしています</p><p>以下サムネ用画像</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*se99yAN-qXcCT1f2HHwe_Q.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=385e7e18aac4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2020年にKubernetse関連で取り組んだことまとめ]]></title>
            <link>https://bells17.medium.com/2020-kubernetse-4771e660a174?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/4771e660a174</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Wed, 23 Dec 2020 16:04:00 GMT</pubDate>
            <atom:updated>2020-12-24T08:05:52.806Z</atom:updated>
            <content:encoded><![CDATA[<p>この記事は <a href="https://qiita.com/advent-calendar/2020/kubernetes">Kubernetes Advent Calendar 2020</a> の 23 日目の記事です。</p><p>今年に入ってから(正確には去年の秋頃から)個人的にKubernetesに関する取り組みみたいのを結構増やしていたり、その関連でブログやセッションをしたりといった活動も増えたので、2020年にKubernetes関連で取り組んだことについてまとめようと思います。</p><h3>Kubernetesやその関連の実装に関する調査</h3><p>業務でKubernetesに関するコンポーネントを書いていることもあり、Kubernetesの様々な実装について把握したくなったので、今年はそこらへんの調査に結構時間を使ってました。</p><h4>Kubernetesのコードリーディング情報まとめ</h4><p>Kubernetesのコードリーディングの方法というか、読む上でここらへんを抑えておくとスムーズに読めると個人的に思うことをこの記事でまとめました。</p><p><a href="https://medium.com/@bells17/things-you-should-know-about-reading-kubernetes-codes-933b0ee6181d">Kubernetesのコードリーディングをする上で知っておくと良さそうなこと</a></p><p>ブログやセッションの中で今の所この記事が一番バズったみたいなので、 Kubernetesの内部実装にはみんな興味あるのかなと思いました。</p><p>ちなみにこの記事について需要ありそうだったこともあって、秋頃から始めた「Kubernetes Internal」という勉強会の第一回目で記事で書いてたことについての解説をさせていただきました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FBBw8p8sQy0Y&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DBBw8p8sQy0Y&amp;image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FBBw8p8sQy0Y%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/be3504a33b5a7f51ffac60d0c90f8022/href">https://medium.com/media/be3504a33b5a7f51ffac60d0c90f8022/href</a></iframe><h4>Container Storage Interface(CSI)</h4><p>Container Storage Interface(CSI)については去年から調べてたものではあるけれど10月の<a href="https://k8s-novice-jp.connpass.com/">Kubernetes Meetup Novice</a>で改めてCSIについてセッションをする機会をいただいたきました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2Ffa8b96e04e404590b172e0bf05ab8d6d&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fintroduction-to-csi&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Ffa8b96e04e404590b172e0bf05ab8d6d%2Fslide_0.jpg%3F16588388&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/11ae3cd37f2e8280ec583c936a3021bd/href">https://medium.com/media/11ae3cd37f2e8280ec583c936a3021bd/href</a></iframe><h4>Cloud Controller Manager(CCM)</h4><p>Cloud Controller Manager(CCM)については今年はじめ辺りから</p><ul><li><a href="https://medium.com/@bells17/implementing-kubernetes-servicecontroller-6ec6b37e63cd">KubernetesのServiceControllerの実装</a></li><li><a href="https://medium.com/@bells17/kubernetes-ccm-d4d3c71ba523">KubernetesのCloud Controller Managerについて</a></li></ul><p>あたりで部分的にまとめてたけど、9月のCloud Native Days 2020でまとまった内容を発表することができました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2F69b3d5e354c24768b711c0d4b77bc4ac&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fcloud-controller-manager-deep-dive&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F69b3d5e354c24768b711c0d4b77bc4ac%2Fslide_0.jpg%3F16224266&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/365d686375182d566d5985441e0498a4/href">https://medium.com/media/365d686375182d566d5985441e0498a4/href</a></iframe><p>個人的にはこれくらいまとまってれば十分かなという感じでまとめられた気がしてるので良かったかなという感じです。</p><p>概要としては上記で十分だとは思うのですが、コードベースでの解説も「Kubernetes Internal」の第２回目で行いました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FeET4AfQr3VM&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeET4AfQr3VM&amp;image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FeET4AfQr3VM%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/84384a1b29363507403f0bbb55d1e0c9/href">https://medium.com/media/84384a1b29363507403f0bbb55d1e0c9/href</a></iframe><h4>Prow</h4><p>Kubernetesそのものでは無いのですが、Kubernetesコミュニティが作成・使用しているProwというCIツールについても調べる機会があったので、調べた内容をセッションなどで発表を行いました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2Fbff5b5f3e89b467aa2c9e8f3db083042&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fprow-and-kubernetes&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fbff5b5f3e89b467aa2c9e8f3db083042%2Fslide_0.jpg%3F15907729&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/957cb763786bb3c11dd671ea23fc1c1b/href">https://medium.com/media/957cb763786bb3c11dd671ea23fc1c1b/href</a></iframe><p><a href="https://medium.com/@bells17/talked-about-prow-at-july-tech-festa-2020-f293c6365048">July Tech Festa 2020で Prowについてお話しました</a></p><p>ProwはKubernetesのCRDを使ってアプリケーションを構築しているので、KubernetesのOperator実装の1例として勉強になるのではないかという気がしています。</p><p>また、KubernetesやCloud Native関連プロダクトにコントリビュートする際にこのProwが利用されているケースが多いので、Prowの動作について知りたい人にも見て頂けたらと思っています。</p><h4>kubeadm</h4><p>kubeadmについても調べる機会があったので、調べた内容についてセッションで発表しました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2Fd9f258a385e74c1a92adb61defea6f8b&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fimplementation-of-kubeadm-init&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fd9f258a385e74c1a92adb61defea6f8b%2Fslide_0.jpg%3F16374422&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/59a22eb3070021985dd45969b600516d/href">https://medium.com/media/59a22eb3070021985dd45969b600516d/href</a></iframe><p>ちょうど発表した翌日にKubernetes Meetup Tokyoでherietさんがkubeadmについて発表されていて、実はこのセッションの少し前にkubeadmの本を出版されてたことを知ったのを覚えてます。</p><h3>その他の発表など</h3><h4>Kubernetesのログデータ加工</h4><p>KubernetesがコンテナのログデータにどうやってPodなどについてのメタデータを付与しているのかが気になったので調べました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2Ff37ded8a89434829a4ca9fab0f0750b0&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fkubernetes-log-metadata&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Ff37ded8a89434829a4ca9fab0f0750b0%2Fslide_0.jpg%3F16819315&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/c82df531ae2b1d6cc73e211b1b7a9013/href">https://medium.com/media/c82df531ae2b1d6cc73e211b1b7a9013/href</a></iframe><p>fluentdのプラグインの中で別スレッドのAPI Server監視を動かしていて、結構むちゃしてデータを取ってくるなぁという印象だった記憶があります。</p><h4>Kubernetes入門者向けのセッション</h4><p>Kubernetesをこれから始める方向けに、僕がKubernetesを触り始めたときの事例みたいなものを紹介させていただきました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2Fcca2ba1c8f65462bb4297a640e5219d5&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fthe-first-kubernetes&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fcca2ba1c8f65462bb4297a640e5219d5%2Fslide_0.jpg%3F15920128&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/6fd5ecb53343eb3c5ff11cfc0e65874f/href">https://medium.com/media/6fd5ecb53343eb3c5ff11cfc0e65874f/href</a></iframe><p>また、CNBFという運営に関わらせて頂いている勉強会でも入門者向けのセッションを行いました。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fspeakerdeck.com%2Fplayer%2Fc7b36c02aed34e8ab2ce6a94ec4b2365&amp;display_name=Speaker+Deck&amp;url=https%3A%2F%2Fspeakerdeck.com%2Fbells17%2Fdocker-kubernetes-first-step&amp;image=https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fc7b36c02aed34e8ab2ce6a94ec4b2365%2Fslide_0.jpg%3F15984271&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=speakerdeck" width="710" height="399" frameborder="0" scrolling="no"><a href="https://medium.com/media/393674a3f51ce76f2a933a42f43c5184/href">https://medium.com/media/393674a3f51ce76f2a933a42f43c5184/href</a></iframe><h3>その他の活動</h3><h4>Kubernetes公式ドキュメント翻訳</h4><p>Kubernetes公式ドキュメント翻訳や、そのレビューをしていたので日本語翻訳プロジェクトのレビュワーにしていただきました。<br>今年の後半は忙しかったこともあり、取り組みが減っていたので、来年は改めて頑張りたい感じです。</p><h4>勉強会の主催</h4><p>記事の始めの方にも少し出た「Kubernetes Internal」というKubernetesやCloud Native関連プロダクトをコードベース中心に共有する勉強会というのを10月から開始して、これまでに3回開催しました。<br>(月に1回勉強会をやってる感じです)</p><p>これはYouTubeに過去のセッションがありますので興味ある方がいれば見ていただければと思います。<br>今月実施した第3回目はチェシャ猫さんにScheduling Frameworkについてお話しいただきました。</p><p><a href="https://www.youtube.com/channel/UCpkd51NdxThtTSR3L6T83fw/videos">Kubernetes Internal</a></p><h4>情報発信</h4><p>また、勉強会とは別にKubernetseやCloud Nativeに関する情報で今週自分たちが気になったことについて雑談をする配信を、<a href="https://k8s-novice-jp.connpass.com/">Kubernetes Meetup Novice</a>の運営メンバーのryさん、chagoさんのお2人と始めました。</p><p>こちらは始めたのが1ヶ月ほど前のことですが、毎週金曜日10時ごろから1時間ほど行っているのでもう4回配信を行いました。</p><p>YouTubeチャンネルは「Kubernetse Internal」のチャンネルでそのまま配信しているので、こちらも興味ある方いれば上記のリンクより動画や配信を見ていただければ嬉しいです。</p><h4>技術同人誌</h4><p>最後に技術同人誌です。</p><p>ちょうど今週26日からオープンする「技術書典10」というイベントでKubernetesのコンポーネントの1つであるKubeletについての本を出す予定です。</p><p>技術同人誌を書くのが初めてだったのもあり</p><ul><li>表紙をイラストレーターさんに依頼したり</li><li>Re:Viewの使い方を覚えたり</li></ul><p>でわからないことが多く、かなり苦労しましたがなんとか仕上げることができたので、良ければ買っていただけるとありがたいです。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pc3mQFASLMdurD_dJrBEsQ.png" /><figcaption>こんな感じの本を出します！</figcaption></figure><p>正直調べるのにそんなに時間かからないだろうと思ってたのですが、他のどのKubernetesコンポーネントよりも実装が複雑かつ巨大で、数十以上のgoroutineとチャネルによって動作するイベント駆動型の実装になっていたためめちゃくちゃ調べるのに時間がかかりました。</p><p>そのためちゃんとまとめきれてるか不安はあるのですが、電子版のみを出すこともあり、出した後にアップデートして行ければ良いかなと思っています。</p><h3>まとめ</h3><p>今年のKubernetes活動をまとめたら思ったよりも長文になってしまいました。</p><p>思い返すとだいたい1月に1–2回以上はブログを書くなりセッションをするなどをしていた気がします。<br>これまでほとんどブログを書いたりセッションで発表をしてこなかったので、1年でだいぶ変わったなという気がしてます。<br>(自分で勉強会や配信も行うようになりましたし)</p><p>Kubernetesについてはコアの部分は結構把握できてきたなーという感じがあるので来年はKubernetes本体だけではなくコンテナランタイムやCNI、その他Cloud Nativeアプリケーションなどについても手を出して行ければ良いなと思います。</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4771e660a174" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kubernetes Internal #1を開催しました]]></title>
            <link>https://bells17.medium.com/kubernetes-internal-1-ea0f1adcfe33?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/ea0f1adcfe33</guid>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Mon, 19 Oct 2020 10:29:31 GMT</pubDate>
            <atom:updated>2020-10-19T10:31:39.655Z</atom:updated>
            <content:encoded><![CDATA[<p>10/13にKubernetes Internalという勉強会を開催しました。</p><p><a href="https://k8sinternal.connpass.com/event/189795/">Kubernetes Internal #1 (2020/10/13 19:00〜)</a></p><p>この記事では自分で勉強会を主催するにあたって</p><ul><li>どんな勉強会をやったのか？</li><li>勉強会を開催するにあたってどんなことやったのか？</li><li>実際にやってみてどうだったのか？</li></ul><p>といったことを書いています。</p><h3>どんな勉強会をやったの？</h3><p>主にKubernetesに関する設計や実装をコードレベルで共有する勉強会になります。</p><p>第一回目ではコードを直接読んでいく要素は少なめだったのですが、導入編として以前このブログで書いた「Kubernetesのコードリーディングをする上で知っておくと良さそうなこと」という記事</p><p><a href="https://medium.com/@bells17/things-you-should-know-about-reading-kubernetes-codes-933b0ee6181d">Kubernetesのコードリーディングをする上で知っておくと良さそうなこと</a></p><p>の内容を解説するという題材で、Kubernetesのコードリーディングをどうやって始めていけばいいか？というお話を僕の方からさせていただき、その後内容についての質疑応答やディスカッションを運営メンバーやzoomで参加してくださった参加者の方々と行いました。</p><p>YouTube Liveのアーカイブはこちらになります。</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FBBw8p8sQy0Y&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DBBw8p8sQy0Y&amp;image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FBBw8p8sQy0Y%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/9527398edde8f8bb62d7247bb203057c/href">https://medium.com/media/9527398edde8f8bb62d7247bb203057c/href</a></iframe><p>上記でKubernetesのコードリーディングに関する基本的な情報は共有できたかなと考えてますので、今後はよりコードを中心にKubernetesのコンポーネントなどの実装について共有する会をやっていけたらと考えていて、直近ではCloud Controller ManagerやScheduler周りについてお話をしていきたいと考えています。<br>(本当は第一回目でCloud Controller Managerについても一緒に話をする予定だったのですが、まったく時間内に収まらなさそうだったので別の会にさせていただきました)</p><h3>なんでこの勉強会をやろうと思ったの？</h3><p>僕の周りでKubernetesなどの内部について調べている人が少なかったので、Kubernetesの内部実装などについて共有しあえる人を増やしたかったのと、Kubernetesの仕組みについて興味を持ってくれる人が増えると良いなと思って勉強会を開催しました。</p><p>僕は普段業務でKubernetesのコンポーネントを書いたりしている都合上、Kubernetesの内部実装を調べたりすることがよくあるのですが、そういった情報を共有してディスカッションする機会が少ないので、興味がある人達で集まって色んなテーマについてディスカッションできたらいいなと思っていたのが根本的な動機です。</p><p>前々からこのような勉強会をやりたいなと思っていたのですが、Cloud Native Days Tokyo 2020の時(だった気がする)に<a href="https://twitter.com/fujiihda">@fujiihda</a>さんの</p><h3></h3><p>どなたか「Container Security Meetup (名前はただの思い付き)」を一緒に立ち上げたくない？？立ち上げない？？</p><p>というツイートを見つけて</p><h3></h3><p>そういえばKubernetesの内部実装について共有する勉強会とかやりたいな</p><p>という感じで始めたのがきっかけになります。</p><p>それでこのツイートとか、一緒に運営やってくれるのに興味ある人いませんか？みたいなツイートとかで興味持っていただいた方と一緒にやりはじめたという感じです。</p><p>最終的に現在はこのメンバーで勉強会を運営していっています。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Aip1x2m2WK-m7_N5w9wK1Q.png" /></figure><h3>勉強会をやるまでにやったこと</h3><p>勉強会をやるまでには大まかにこんなことをやりました</p><ul><li>勉強会の企画案を作る</li><li>Discordのサーバーを立てる</li><li>運営メンバーで顔合わせ会を行う</li><li>zoom/YouTube Liveでの勉強会開催~配信の環境を整える</li><li>リハーサルをする</li></ul><h4>勉強会の企画案を作る</h4><p>一番はじめに勉強会の企画をドキュメントにまとめるようにしました。</p><p>僕の勉強会のイメージが以前genbokuさんが開催された<a href="https://k8s-is-difficult.connpass.com/event/148188/">「Programming Kubernetesの輪読会」</a>のKubernetesなどの内部実装版というイメージだったので、その方向で内容をまとめました。</p><p>「Programming Kubernetesの輪読会」の輪読会では</p><p><a href="https://hackmd.io/FX3EL13STkqmrYHPuvSAhg">Programming Kubernetesの輪読会 二回目 第四章 Using Custom Resources - HackMD</a></p><p>のように</p><ul><li>章ごとに担当者が内容をまとめてきて発表を行い</li><li>その発表内容について質疑応答・ディスカッションを行う</li></ul><p>という内容でしたので、これをオンラインでやるようなイメージで案を作った感じです。</p><p>実際に作った企画案がだいたいこんな感じのやつです。<br>(実際の企画案をだいたいそのまま出してるのでリンクで見れないのも多いです)</p><p><a href="https://docs.google.com/document/d/1AsLD1iHItqvq47qm_o2LAJoHqgnqYLeUd9rKTEtNdtk/edit">https://docs.google.com/document/d/1AsLD1iHItqvq47qm_o2LAJoHqgnqYLeUd9rKTEtNdtk/edit</a></p><p>オンラインでやるにあたっての違いとしては</p><ul><li>質疑応答・ディスカッションに参加してくれている参加者にはzoomで参加してもらう</li><li>zoom参加者以外にも興味ある人に見てほしい/アーカイブとして見直したいのでYouTube Liveでの同時配信も行いたい</li></ul><p>といったあたりでした。</p><p>また作成した企画案の内容について運営メンバーに見ていただいて、 Google Docsのコメント機能を中心に内容についてディスカッションを行いました</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/281/1*FHThoez4q72Y5lRN-ORaRA.png" /><figcaption>たとえばこんな感じです</figcaption></figure><h4>Discordのサーバーを立てる</h4><ul><li>勉強会の主なコミュニティをDiscordのチャットで行う</li><li>内部実装に関するやり取りをできる場が欲しい</li></ul><p>と思っていたため勉強会をやるにあたってDiscordのサーバーを立てました。</p><p>なんでk8sのSlack Workspaceを使わずに新たにDiscordサーバーを立てたのかというと</p><ul><li>k8sのSlack Workspaceでチャンネルを作成するのはコミュニティに申請して許可を取る必要があるので難しそう(既存のjpチャンネルのどこかでやるのもやっていいのかわからなかった)</li><li>Cloud Native Days TokyoなどDiscordでサーバー立てる例を最近いくつか見ていて、特にボイスチャットでのAsk the speakerとかが結構良かった</li><li>どうせなら自由にチャンネルとかを作成できる場を作ろう</li><li>運営メンバー間でのやりとりの場としても使えるし</li></ul><p>といった理由で作成しました。</p><p>作成するにあたってちょっと前に技術書典のDiscordサーバーを見て良さそうだなーと思ったのでチャンネルとかの作りを参考にさせていただきました。</p><h4>運営メンバーで顔合わせ会を行う</h4><p>企画案の内容についてはここまででだいたいまとまっていたので</p><ul><li>お互い知らない人もいると思ったので、勉強会開催前に運営メンバーで一度顔合わせをしておきたい</li><li>勉強会について口頭で認識合わせをしておきたい</li><li>勉強会の詳細について詰めたい</li></ul><p>などを目的に顔合わせをする会を行いました。</p><p>実施にあたっては簡単にスライドを作り、以下のようなことについて話し合いを行いました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hxjVlGx6VZSmpiGwRWz9WQ.png" /></figure><p>実際に口頭で話し合ってみると、当たり前ではありますが個々人でイメージしている勉強会の像が異なっていたりしたし、運営メンバー同士でコミュニケーションする機会にもなったので、やってよかったなと思いました。</p><h4>zoom/YouTube Liveでの勉強会開催~配信の環境を整える</h4><ul><li>勉強会開催: zoom</li><li>ライブ配信: YouTube Live</li></ul><p>で行おうと思っていたのでこれらの準備を行いました。</p><p>やり方としては<a href="https://medium.com/u/6f6728e2d2a6">kameneko</a>さんの</p><p><a href="https://medium.com/penguin-lab/zoom%E3%81%AEpro%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%A7youtube-live%E3%81%AB%E9%85%8D%E4%BF%A1%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-832a943d0fed">ZoomのProアカウントでYouTube Liveに配信する方法</a></p><p>をだいたいそのまま参考にさせていただきました。</p><p>勉強会内容としてはセッション+ディスカッションという構成で、ディスカッションの時間が発表と同じくらい時間をとっているので、OBSで色々画面を作ってやるという感じよりはzoomのProアカウントでのYouTube Live配信そのままでも問題ないかなと思いシンプルにzoom+YouTube Liveという構成で行いました。<br>(kamenekoさんの記事でOBSの使い方に関する記事もあるので、OBSを使った配信などがやりたくなった場合には別途参考にしたいなと思ってます)</p><p>上記の記事で紹介されていること以外で工夫した点としては念の為</p><ul><li>zoomホスト+YouTube Live配信を行うマシンと</li><li>発表者として発表を行うマシン</li></ul><p>を分けたくらいでした。<br>(リハーサルでは同じマシンで全部やっても大丈夫だったのでzoom Proアカウントだけあれば誰でも簡単に勉強会の配信とかができるなと思いました)</p><h4>リハーサルをする</h4><p>最後に念の為リハーサルを行いました。</p><p>Discordでリハーサル見てコメントとかくれる人がいるかを運営メンバーのDiscordチャンネルで募集して、参加可能だった方数名に見てもらいました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8ZEBpyPYK58-CHTh8uih9Q.png" /></figure><p>第一回目は良くも悪くも</p><ul><li>zoomホスト+配信</li><li>司会</li><li>発表者</li></ul><p>のすべてを僕がやっていたので、参加していただいたメンバーには実際にどんな感じで勉強会をやろうと思ったのかを伝えることができ、それに対するフィードバックをもらってディスカッションすることができたので、これもやってみてかなりよかったなという感じです。</p><h3>実際に勉強会をやってみて</h3><p>はじめは</p><ul><li>運営メンバー: 9名</li><li>zoom参加者: 5名</li><li>YouTube Live参加者: 20–30名</li></ul><p>くらいなんじゃないかなという想定をしていたのですが</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*z5AkABiIJITHrzUfHW98SQ.png" /></figure><p>と200名以上の方に参加登録していただき、とてもありがたかったです。</p><p>勉強会後のアンケートでも</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RGY3PfCbbF_KMIDaZRqaBA.png" /></figure><p>のようにKubernetesのコードリーディングに興味を持っていただいた方が多かったので嬉しいです。</p><p>セッション後のディスカッションタイムについても</p><ul><li>始めは僕のセッション内容に対する質疑応答だけになるかなー？とか</li><li>そもそも参加者から質問全然でなくて運営メンバーがフォローしてくれるかなー</li></ul><p>とか思ってたのですが、僕がほとんど喋らなくてもセッションの内容についても、それ以外についてもzoomに参加してくれたKubernetesの有識者の皆さん同士で話がかなり盛り上がってくれて、想定していた40分を超えてディスカッションが続いてくれたのですごい良かったなと思いました。<br>(時間を10分ぐらい過ぎたあたりで途中でディスカッションを中断してしまったのですが、むしろあのままもうしばらく中断せずに続けても良かったかなと思ってます)</p><p>あとzoomやYouTube LiveのURLをメッセージしたりなどの準備についてはもうちょっと早くお送りできればよかったなと思うので次回以降で改善できたらと思ってます。</p><h3>さいごに</h3><p>こんな感じで勉強会をやりたいなと思ってからちょうど1ヶ月くらいで200名オーバーの勉強会が開催できたので良かったなと思ってます。</p><p>次回以降はよりDeepなネタになっていく予定なので、ディスカッションについてもDeepめな話ができればよいかなと考えています。</p><p>内容についてはCloud Controller ManagerやScheduler以外に↓のシートのような内容を検討していたりします。<br>(これから調べていきたい、みたいなのも入ってます)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_U6paedcfPx_HhkXXC1keg.png" /><figcaption>特に下の方のはこれから調べたい！みたいなやつが多め</figcaption></figure><p>ただあくまで上記はまだ検討している段階のものなので、発表するのに興味ある方がいれば<br><a href="https://forms.gle/6bgs37R3NUkmfBtZ6">https://forms.gle/6bgs37R3NUkmfBtZ6</a><br>のフォームか、もしくは<a href="https://twitter.com/bells17_">TwitterのDM</a>までご連絡いただけたらと思っています！</p><p>まだ始まったばかりの勉強会なので</p><ul><li>発表するコンテンツ(必ずしもコードレベルでの共有などでなくても)</li><li>発表時間</li></ul><p>など柔軟に検討できると思います。</p><ul><li>今はまだKubernetesの実装とかに詳しくないけどこの勉強会で発表するために調べてみるとか</li><li>Kubernetes本体じゃなくて、関係しそうなCloud Nativeなソフトウェアについて</li></ul><p>などのお話でも大歓迎です！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ea0f1adcfe33" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[kubeadmの共通処理の実装]]></title>
            <link>https://bells17.medium.com/kubeadm-common-implementation-a5e5b3890dde?source=rss-713cf42ce34d------2</link>
            <guid isPermaLink="false">https://medium.com/p/a5e5b3890dde</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[kubeadm]]></category>
            <dc:creator><![CDATA[bells17]]></dc:creator>
            <pubDate>Sat, 12 Sep 2020 19:22:01 GMT</pubDate>
            <atom:updated>2020-09-12T19:22:26.558Z</atom:updated>
            <content:encoded><![CDATA[<p>kubeadmの実装の処理の流れを先に理解しておくと、個々の処理の実装を読むときに楽なので、そこらへんについてまとめたメモ</p><p>kubeadmはkubernetes v1.19にあるkubeadmをベースに書く<br>(kubeadm的には v1.10?)<br><a href="https://github.com/kubernetes/kubernetes/tree/release-1.19/cmd/kubeadm/app">https://github.com/kubernetes/kubernetes/tree/release-1.19/cmd/kubeadm/app</a></p><h3>kubeadmの実行フロー</h3><ul><li>エントリーポイントは <a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/kubeadm.go#L24-L26">cmd/kubeadm/kubeadm.go</a>エントリーポイントは <a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/kubeadm.go#L24-L26">cmd/kubeadm/kubeadm.go</a></li><li>kubeadmutil.CheckErr()はCLIの単なるエラーハンドリング処理なのでスキップ</li><li>app.Run()でkubeadmを実行 <a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/kubeadm.go#L31-L51">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/kubeadm.go#L31-L51</a></li><li>app.Run()ではklogの初期化とpflagでコマンドライン引数などの設定を行い、最終的にcmd.NewKubeadmCommand().Execute()を実行 <a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/cmd.go#L33-L97">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/cmd.go#L33-L97</a></li><li>NewKubeadmCommand は他のKubernetesコンポーネントと同じく <a href="https://github.com/spf13/cobra">https://github.com/spf13/cobra</a> が使われている</li><li>kubeadmだとkubeadm initなど様々なサブコマンドが登録されていて、これらのサブコマンドが <a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/cmd.go#L84-L92">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/cmd.go#L84-L92</a> で登録されている</li><li>kubeadm initの場合はNewCmdInit(<a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/cmd.go#L86">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/cmd.go#L86</a>)で登録がされている</li><li>kubeadm initを実行した場合はRunE(<a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/init.go#L140-L154">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/init.go#L140-L154</a>)で登録した関数が実行される</li></ul><h3>kubeadmのrunner</h3><ul><li>kubeadmでは<a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/phases/workflow/runner.go#L45-L74">app/cmd/phases/workflowパッケージのRunner</a>が利用されているよう</li><li>これはkubeadmの各処理フェーズを分割して実行するのと(Preflight, Certsなど)、コマンドラインから特定のフェーズだけを指定して実行するために利用されているっぽい(e.g. kubeadm init phase preflight)</li><li>このrunnnerで実行される処理(preflightなど)はAppendPhaseメソッドでそれぞれ登録されている</li><li>kubeadm initでいうと <a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/init.go#L175-L188">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/init.go#L175-L188</a> で登録されている</li><li>これらの登録されたフェーズはRunメソッドでまとめて実行される(<a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/init.go#L149-L151">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/init.go#L149-L151</a>)</li><li>ここのフェーズのみを実行するphaseサブコマンドは <a href="https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/phases/workflow/runner.go#L293-L399">https://github.com/kubernetes/kubernetes/blob/release-1.19/cmd/kubeadm/app/cmd/phases/workflow/runner.go#L293-L399</a> で登録されている</li></ul><h3>まとめ</h3><p>ここまでがkubeadmの実行にあたっての共通の実装の部分で、各サブコマンド(e.g. init, join)が個々のフェーズでどんな処理を行っているのかについては個々のフェーズで登録されているメソッドを読めば良いということになる</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a5e5b3890dde" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>