<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Study on Alicey's blog</title><link>https://blog.alicey.dev/tags/study/</link><description>Recent content in Study on Alicey's blog</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sat, 12 Mar 2022 08:31:28 +0900</lastBuildDate><atom:link href="https://blog.alicey.dev/tags/study/index.xml" rel="self" type="application/rss+xml"/><item><title>【Kubernetes 勉強日記】CustomControllerでNginxのDeploymentを作る。</title><link>https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym.html</link><pubDate>Fri, 11 Mar 2022 21:05:00 +0900</pubDate><guid>https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym.html</guid><description>&lt;p>Kubernetes歴数ヶ月、CustomController歴2週間弱のよわよわアリシィです。&lt;div>今回はタイトルの通り、CustomControllerでNginxのDeploymentを作成する環境を作ったのですが、なかなかうまく行かなかったので、日記がてらハマった部分を残しておきます。&lt;/div>&lt;div>技術的な解説は、他の詳しい文献を当たってください。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>完成品は&lt;a href="https://github.com/Alicey0719/kubecon-prac/tree/20dcf20d1a86d7db698a21656ee9541864d54440" target="_blank">こちら&lt;/a>です。&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/bcbfa95cfbb3bc9a_hu13861902147283763482.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/bcbfa95cfbb3bc9a_hu13861902147283763482.webp"
 alt=""
 width="787"
 height="433"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>学習にあたり、以下文献を参考にしました。&lt;/div>&lt;div>&lt;ul>&lt;li>&lt;a href="https://amzn.to/3tRGg5t" rel="nofollow" target="_blank">&lt;b>実践入門 Kubernetesカスタムコントローラーへの道&lt;/b>&lt;/a>&lt;/li>&lt;li>&lt;a href="https://book.kubebuilder.io/introduction.html" rel="nofollow" target="_blank">&lt;b>The Kubebuilder Book&lt;/b>&lt;/a>&lt;/li>&lt;li>&lt;a href="https://zoetrope.github.io/kubebuilder-training/" rel="nofollow" target="_blank">つくって学ぶKubebuilder&lt;/a>&lt;/li>&lt;li>&lt;a href="https://hackmd.io/@h4wKR5OGRjquop_DpwjBcQ/Sk9oK03du" rel="nofollow" target="_blank">【wantedly】custom controllerを使ってk8sを学ぶハンズオン&lt;/a>&lt;/li>&lt;/ul>&lt;div>&lt;br>&lt;/div>&lt;/div>&lt;h2>ハマりポイント1&lt;/h2>&lt;div>ハマったポイント１は、GoのBuildが通らないといった現象です。&lt;/div>&lt;div>こちらは、エラーコードを読んでも内容をつかめず、どうしたら良いかわからなかったのですが、原因は開発環境(VM)のストレージ不足でした。&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/1b2514085c5741a2_hu15058831152146419120.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/1b2514085c5741a2_hu15058831152146419120.webp"
 alt=""
 width="721"
 height="186"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>CustomController開発関係ないじゃん&amp;hellip;という部分で躓きました 苦笑&lt;/div>&lt;div>このあとは、手元のMacBookで作業しました。&lt;/div>&lt;div>余談ですが、CustomController開発において、手軽に潰せる&lt;a href="https://kind.sigs.k8s.io/" rel="nofollow" target="_blank">Kind&lt;/a>が便利だと改めて実感しました。CNIの検証等には使いづらいですが..&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;h2>ハマりポイント2&lt;/h2>&lt;div>同じくBuildが通らない現象ですが、&lt;/div>&lt;div>サンプルコードを真似ているにも関わらず、&lt;b>SetupWithManager&lt;/b>の&lt;b>&lt;a href="https://github.com/Alicey0719/kubecon-prac/blob/20dcf20d1a86d7db698a21656ee9541864d54440/controllers/nginx_controller.go#L196-L197" target="_blank">mgr.GetFieldIndexer().IndexField&lt;/a>&lt;/b>で引数に渡している値が違うと怒られるパターンになります。&lt;/div>&lt;div>こちらはどうやら、KuberbuilderのVersion起因のようで、私はKuberbuilder3を使っていたのですが、サンプルコードはKuberbuilder2系のものだったようです。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;ul>&lt;li>&lt;b>&lt;a href="https://book.kubebuilder.io/migration/migration_guide_v2tov3.html#migrate-the-controllers" rel="nofollow" target="_blank">Migration from v2 to v3&lt;/a>&lt;/b>&lt;/li>&lt;/ul>&lt;div>を参考にV3相当の呼び出し方に&lt;a href="https://github.com/Alicey0719/kubecon-prac/commit/4c8073b6148ef8a7d8c723225a8b3c8dfc4cfd9e?diff=unified" target="_blank">変更&lt;/a>したところ、問題なく動作しました。&lt;/div>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>以上、KubernetesCustomController学習Part1的な日記でした。&lt;/div>&lt;/div>&lt;div>次は、このControllerにServiceやConfigMapを内包していければと思います。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>ばいち。&lt;/div>&lt;/p></description></item></channel></rss>