[GKE]SSL証明書を作成しIngressに追加する


背景

SSL証明書を作成して追記する際に留意事項があったので簡単にまとめておきます。

手順

基本的には公式ドキュメントの手順に沿っているのでそちらのリンクも参照してください。

大まかな手順は以下のようになります。

①GCPのCloudShellを開く

まずはGCPの画面上部で変更を反映したいプロジェクトを選択します。
そのプロジェクトを選択した状態でGCPのCloudShellを開いてください。

こちらのアイコンを選択するとページ下部にコンソール画面が表示されます。

②コンソール上でyamlファイルを作成し規定の内容を記載

コンソール画面が表示されたらtouchコマンドでyamlファイルを作成してください。
作成したyamlのファイルの中にこちらの内容を記載します。

example-certificate.yaml
apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
  name: example-certificate
spec:
  domains:
    - example.com

apiVersionとkindを書き換える必要はありません。ここではmetadataのnameとspecのdomainだけを書き換えます。
nameの部分はyamlのファイル名、domainsはSSL証明書を発行したいdomainを記載します。

③applyコマンドで証明書を作成

yamlファイルに必要な情報を記載したらapplyコマンドでGKEに反映させましょう。
この時同じyamlファイルが存在する場合はerrorが起こるので確認してからコマンドを打ちましょう

kubectl apply -f example-certificate.yaml

④GCPで証明書の名前を確認しコピー

GCPのナビゲーションメニューからネットワークサービスに移動し、プロジェクトの証明書が確認できるページまで移動してください。
ページ上部の検索を使うのが一番早いですが、念の為具体的な移動方法も記載しておきます

ネットワークサービス → 負荷分散 → ページ下部の詳細設定メニュー → 証明書タブ

先ほどご紹介した③の手順まで成功していれば、一覧画面にこのような証明書が追加されてるはずです。
この左側が証明書の名前です。これをIngressに追加するためにコピーします。

⑤Ingressのyamlファイルに追記

④の手順が終了したらGKEのServicesとIngressを選択します。
Ingressを選択したらyamlファイルを開きましょう。開いたyamlファイルの中にingress.kubernetes.io/ssl-certという項目があるので、この部分に先ほどの④でコピーした証明書の名前を貼りつけます。

正常に動作しているかどうかは証明書一覧のページで確認します。
証明書のステータスがプロビジョニングの状態から有効になっていたらSSL証明書の追加完了です。