<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>GCP on YAGI BLOG</title>
    <link>https://www.yuyagishita.com/tags/gcp/</link>
    <description>Recent content in GCP on YAGI BLOG</description>
    <image>
      <title>YAGI BLOG</title>
      <url>https://www.yuyagishita.com/images/top.png</url>
      <link>https://www.yuyagishita.com/images/top.png</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en</language>
    <lastBuildDate>Mon, 05 Jan 2026 18:34:51 +0900</lastBuildDate>
    <atom:link href="https://www.yuyagishita.com/tags/gcp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Gateway APIについて学んだ</title>
      <link>https://www.yuyagishita.com/posts/20260105/</link>
      <pubDate>Mon, 05 Jan 2026 17:24:02 +0900</pubDate>
      <guid>https://www.yuyagishita.com/posts/20260105/</guid>
      <description>&lt;p&gt;あけましておめでとうございます。本年はアウトプットの数を増やすという目標のもと、さっそくブログの更新をする。
年末年始は友人・家族と会えたし、飲みすぎないようにしたおかげで溜まってた本の解消やBLEACH全巻読んだりと充実できた。&lt;/p&gt;
&lt;p&gt;去年、学んだk8sのGateway APIについて記事を書く。&lt;/p&gt;
&lt;h2 id=&#34;gateway-apiとは&#34;&gt;Gateway APIとは&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Gateway APIは動的なインフラストラクチャの展開と高度なトラフィックルーティングを提供するAPIの種類のファミリーです。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とのこと。これだけだとわかりにくいが、要は&lt;strong&gt;k8sへの通信を担うLBをコード化して自動管理しよう&lt;/strong&gt;っていう認識であっていると思う。詳しくは、以下リンクでk8sやGCPの公式ドキュメントをみると理解が深まると思う。特に、GCPのドキュメントは具体的にどのリソースと紐づくのがわかりやすいので、GCPを知っている人はこっちを読むのをおすすめする。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kubernetes.io/ja/docs/concepts/services-networking/gateway/&#34;&gt;https://kubernetes.io/ja/docs/concepts/services-networking/gateway/&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://docs.cloud.google.com/kubernetes-engine/docs/concepts/gateway-api?hl=ja&#34;&gt;https://docs.cloud.google.com/kubernetes-engine/docs/concepts/gateway-api?hl=ja&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;きっかけ&#34;&gt;きっかけ&lt;/h2&gt;
&lt;p&gt;学んだきっかけは、会社でGKE StandardからAutopilot移行をしたときに、&lt;strong&gt;Autopilotクラスタが利用可能なすべてのゾーンにNEGが作成されていない状態で、手動でLBを作成すると障害になるケースがある。&lt;/strong&gt; という事象を発見したから。移行時の話は以下リンクから見れるので興味ある方は見てほしい。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.yuyagishita.com/posts/20251218/&#34;&gt;所属している会社のアドベントカレンダーを書いた2025&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;さわってみた&#34;&gt;さわってみた&lt;/h2&gt;
&lt;p&gt;Gateway APIはk8sのマニフェストファイルを増やすことで実装できる。
kustomizeを利用する前提でディレクトリ構成を以下に記載する。GCPの場合は、LB作成時に必要なフロント、バック、ヘルスチェック、バックに登録するNEGをそれぞれ表現しているイメージを持ってもらうのがわかりやすそう。
また、GKEのPodでNginxを立てている想定でサンプルは実装している。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;k8s/
└── base/
    ├── configmap.yaml
    ├── deployment.yaml
    ├── gateway.yaml
    ├── healthcheck.yaml
    ├── httproute.yaml
    ├── kustomization.yaml
    └── service.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Gateway APIに関係している実装は、&lt;code&gt;gateway.yaml&lt;/code&gt;, &lt;code&gt;healthcheck.yaml&lt;/code&gt;, &lt;code&gt;httproute.yaml&lt;/code&gt;, &lt;code&gt;service.yaml&lt;/code&gt;なので、それぞれサンプル実装を記載して解説をする。&lt;/p&gt;
&lt;h3 id=&#34;gatewayyaml&#34;&gt;gateway.yaml&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;kind: Gateway&lt;/code&gt; では利用するLBの種類やトラフィックをリッスンする場所と方法などの設定ができる。
&lt;code&gt;addresses&lt;/code&gt;は予約したIPを指定して利用することもできる。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: nginx
  namespace: default
spec:
  gatewayClassName: gke-l7-rilb  # Regional Internal Load Balancer
  listeners:
  - name: http
    port: 80
    protocol: HTTP
    allowedRoutes:
      namespaces:
        from: All
  addresses:
    - type: NamedAddress
      value: nginx
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;healthcheckyaml&#34;&gt;healthcheck.yaml&lt;/h3&gt;
&lt;p&gt;これはLB作成時に必要なヘルスチェック。&lt;/p&gt;</description>
    </item>
    <item>
      <title>所属している会社のアドベントカレンダーを書いた2025</title>
      <link>https://www.yuyagishita.com/posts/20251218/</link>
      <pubDate>Thu, 18 Dec 2025 23:32:50 +0900</pubDate>
      <guid>https://www.yuyagishita.com/posts/20251218/</guid>
      <description>&lt;p&gt;久しぶりの投稿です。
ここ数年は広い領域の仕事をしていて、結構インプットができました。
アウトプットが少ないなと毎回思うので、ちょっとしたことでもいいのでブログ更新しようと思います。
継続って難しい。。&lt;/p&gt;
&lt;h2 id=&#34;アドベントカレンダー書いた&#34;&gt;アドベントカレンダー書いた&lt;/h2&gt;
&lt;p&gt;ということでQiitaのアドベントカレンダーを書いたのでURL載せておきます。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://qiita.com/yagiyuuuu/items/e31dc8bcb3c971183c98&#34;&gt;GKE StandardからAutopilotへの移行&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Google CloudのGKE関連やネットワークには知見を貯めれました。こういったところの学びやハマりポイントなど記事にできるとよさそうかなと思っています。&lt;/p&gt;
&lt;p&gt;あとは気分的に本ブログのドメインをサブドメで&lt;code&gt;blog.yuyagishita.com&lt;/code&gt;にしたいかなと思っています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Journalを支える技術</title>
      <link>https://www.yuyagishita.com/indiedev/journal-tech/</link>
      <pubDate>Tue, 20 Apr 2021 20:50:14 +0900</pubDate>
      <guid>https://www.yuyagishita.com/indiedev/journal-tech/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;journal-tech&#34; loading=&#34;lazy&#34; src=&#34;https://www.yuyagishita.com/img/journal-tech.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://journaling.page/&#34;&gt;Journal&lt;/a&gt;というジャーナリングをするアプリをリリースしました。
ジャーナリングとは自分が思っていることを書き出すことで自分について理解を深めたり、自分がやりたいことを見つけるのに役立ったりします。
日記をイメージしてもらうのがわかりやすいと思います。&lt;/p&gt;
&lt;p&gt;今回はJournalを支えている技術について紹介します。&lt;/p&gt;
&lt;h2 id=&#34;フロントエンド&#34;&gt;フロントエンド&lt;/h2&gt;
&lt;h3 id=&#34;nextjs&#34;&gt;Next.js&lt;/h3&gt;
&lt;p&gt;フロントエンドは&lt;a href=&#34;https://nextjs.org/&#34;&gt;Next.js&lt;/a&gt;（React）とTypeScriptを使っています。
なるべくシンプルに作りたかったので全ページをSPAで作っていますが、SSGできそうなところはSSGを使って静的ファイルにしたいと思ってます。&lt;/p&gt;
&lt;h3 id=&#34;tailwind-css&#34;&gt;Tailwind CSS&lt;/h3&gt;
&lt;p&gt;CSSには&lt;a href=&#34;https://tailwindcss.com/&#34;&gt;Tailwind CSS&lt;/a&gt;を使っています。Next.jsとの相性が良さそうだったのとシンプルで使いやすそうだと思って選びました。CSSの知識が乏しいのでネットの有識者を参考にした結果、Tailwind CSSにしました。&lt;/p&gt;
&lt;h3 id=&#34;vercel&#34;&gt;Vercel&lt;/h3&gt;
&lt;p&gt;フロントエンドの本番環境のデプロイ先には&lt;a href=&#34;https://vercel.com/&#34;&gt;Vercel&lt;/a&gt;を使っています。
VercelはNext.jsの運営元でデプロイがとても簡単で使いやすかったので選びました。
GitHubのリポジトリを指定すれば自動でデプロイをしてくれますし、設定も少なめで本当に簡単です。&lt;/p&gt;
&lt;h3 id=&#34;vectr&#34;&gt;Vectr&lt;/h3&gt;
&lt;p&gt;サイトのロゴやファビコンを作るのに&lt;a href=&#34;https://vectr.com/&#34;&gt;Vectr&lt;/a&gt;を使っています。Vectrはsvg形式のファイルを無料で作れるので利用しました。&lt;/p&gt;
&lt;h2 id=&#34;バックエンド&#34;&gt;バックエンド&lt;/h2&gt;
&lt;h3 id=&#34;echo&#34;&gt;Echo&lt;/h3&gt;
&lt;p&gt;バックエンドはGoのフレームワークである&lt;a href=&#34;https://echo.labstack.com/&#34;&gt;Echo&lt;/a&gt;を使っています。
GoでAPIを作るのにEchoはとてもお手軽とのことだったので選びました。
アーキテクチャにはクリーンアーキテクチャを選んでいます。クリーンアーキテクチャでコードを書いたことがありませんでしたが、テストコードが書きやすかったり、外部のライブラリなどの依存が減るので採用してよかったなと思っています。
また、コード量が増えたことはデメリットかなと思います。&lt;/p&gt;
&lt;h3 id=&#34;cloud-run&#34;&gt;Cloud Run&lt;/h3&gt;
&lt;p&gt;バックエンドの本番環境のデプロイ先は&lt;a href=&#34;https://cloud.google.com/run/&#34;&gt;Cloud Run&lt;/a&gt;を使っています。
ローカルの開発環境でDockerを利用していて同じようなDockerfileでCloud Runにデプロイができ、Cloud Runがいい感じにリクエストをさばいてくれます。&lt;/p&gt;
&lt;p&gt;ただ、アプリが起動するまでに10秒弱ぐらい時間がかかってしまいAPIのレスポンス待ちになってしまうのがデメリットかなと思います。Cloud RunはフルマネージドでAPIを叩かれていないときはコンテナが起動していないのでレスポンスに少し時間がかかってしまうのは仕方ないですね。&lt;/p&gt;
&lt;h3 id=&#34;cloud-sql&#34;&gt;Cloud SQL&lt;/h3&gt;
&lt;p&gt;データベースの本番環境は&lt;a href=&#34;https://cloud.google.com/sql/&#34;&gt;Cloud SQL&lt;/a&gt;(PostgreSQL)を使っています。
普段の仕事でも使っているRDBが自分としては使いやすいの選びました。&lt;/p&gt;
&lt;h2 id=&#34;その他に利用しているサービス&#34;&gt;その他に利用しているサービス&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/features/actions&#34;&gt;GitHub Actions&lt;/a&gt;&lt;br&gt;
CI/CDツール。バックエンドのデプロイに使っています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://firebase.google.com/docs/auth/&#34;&gt;Firebase Authentication&lt;/a&gt;&lt;br&gt;
ログイン認証のため。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://domains.google/intl/ja_jp/&#34;&gt;Google Domains&lt;/a&gt;&lt;br&gt;
ドメイン取得のため。なるべくGCPにサービスを寄せている。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
