ingress-gceとingress-nginxをGKEにデプロイする手順
はじめに
GKE(Google Kubernetes Engine)でIngressを使う場合、ingress-gce(GLBC、GKE ingress)またはingress-nginxが主に用いられる。
Googleのチュートリアルを参考に、実際に2種類のIngressをデプロイした。
実施環境
- Windows 11 WSL2 Ubuntu 20.04 LTS
kubectl
コマンドが実行可能である環境
参考:Ubuntu(WSL2)にK8sのローカル開発環境を構築
~$ kubectl version --short Client Version: v1.26.0 Kustomize Version: v4.5.7 Server Version: v1.24.7-gke.900
手順
準備(共通の手順)
Google Cloudの設定
- 課金を有効にする
参考:https://cloud.google.com/billing/docs/how-to/modify-project - API の概要ページに移動し、Artifact Registry APIを有効にする
Cluster作成~Service・Deploymentのデプロイ
- 下記のコマンドを実行し、
gcloud
コマンドのインストール$ sudo apt-get install apt-transport-https ca-certificates gnupg
$ echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
$ sudo apt-get update && sudo apt-get install google-cloud-cli gcloud
コマンドがインストールされたか確認$ gcloud --version
Google Cloud SDK 413.0.0
alpha 2023.01.06
(略)- 下記のコマンドを実行し、Googloアカウントに紐づけ
$ gcloud init
You must log in to continue. Would you like to log in (Y/n)?
と聞かれるので、Yを入力すると、ブラウザが開いてGoogleアカウントを選択できる- その後、projectとリージョン・ゾーンを設定して初期化かkん量
- 下記コマンドで、GKEクラスターを作成
gcloud container clusters create ingress-test
ingress-test
の部分は、クラスター名のため他の名前でもOK- クラスター作成完了後、kubectlのcurent-contextに作成したクラスターが自動で設定される
web-deployment.yaml
を作成apiVersion: v1 kind: Service metadata: name: web namespace: default spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: run: web type: NodePort
web-service.yaml
を作成apiVersion: apps/v1 kind: Deployment metadata: name: web namespace: default spec: selector: matchLabels: run: web template: metadata: labels: run: web spec: containers: - image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 imagePullPolicy: IfNotPresent name: web ports: - containerPort: 8080 protocol: TCP
- 下記コマンドを実行し、DeploymentとServiceをデプロイ
$ kubectl apply -f web-deployment.yaml
$ kubectl apply -f web-service.yaml
ingress-gceのデプロイ
basic-ingress.yaml
を作成apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: basic-ingress spec: defaultBackend: service: name: web port: number: 8080
- 下記コマンドを実行し、Ingressをデプロイ
$ kubectl apply -f basic-ingress.yaml
ingress-nginxのデプロイ
- Helmをインストールしていない場合、下記コマンドでインストール
- 下記のコマンドで、Helmリポジトリを更新
$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
$ helm repo update - NGINX controllerをデプロイ
$ helm install nginx-ingress ingress-nginx/ingress-nginx
nginx-ingress.yaml
を作成apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress annotations: kubernetes.io/ingress.class: nginx spec: defaultBackend: service: name: web port: number: 8080
- 下記コマンドを実行し、Ingressをデプロイ
$ kubectl apply -f basic-ingress.yaml
ディスカッション
コメント一覧
まだ、コメントがありません