GKE で NGINX Ingress Controller を使ってみる
NGINX Ingress Controller とは
多くのWebサーバーの設定ファイルは似ているので、必要な部分だけカスタムして簡単に構築しようというもの。
https://github.com/kubernetes/ingress-nginx
今回は GKE で NGINX Ingress Controller を使い、リダイレクトサーバーを準備してみる。
GKE + NGINX Ingress Controller のアーキテクチャはこちら。
手順
0.Static IP 作成、Cloud DNS の設定
Region Static IP を作成する。Global IP では動作しない
$ gcloud compute addresses create [IP名] --region=[リージョン名]
Cloud DNS に Aレコードを追加する
1.Helm で NGINX Ingress Controller を作成
$ helm install --name [名前] stable/nginx-ingress --namespace [ネームスペース名] \ --set rbac.create=true \ --set controller.service.loadBalancerIP=[作成したStatic IP]
2.SSL の証明書を作成
cert-manager で SSL の証明書の更新を管理しようと思う。
cert-manager のインストールについてはまた別でまとめたい。
とりあえず参考URLのみ
https://github.com/ahmetb/gke-letsencrypt
https://qiita.com/apstndb/items/3a39a1e6acacbbc30765
Certificate 作成
apiVersion: certmanager.k8s.io/v1alpha1 kind: Certificate metadata: name: xxxxx-tls namespace: xxxxx spec: secretName: xxxxx-tls issuerRef: name: letsencrypt-prod kind: ClusterIssuer commonName: [ドメイン名] dnsNames: - [ドメイン名] acme: config: - dns01: provider: prod-dns domains: - [ドメイン名]
3.NGINX Ingress Controller で使用する Ingress Resource を作成
apiVersion: extensions/v1beta1 kind: Ingress metadata: namespace: xxxxx name: redirect-ingress annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/permanent-redirect: "https://google.com" #一旦、グーグルへリダイレクトさせておく kubernetes.io/ingress.allow-http: "false" spec: rules: - host: [ドメイン名] http: paths: - backend: serviceName: temp-svc # 存在しないものであるが、backend を指定しないとリダイレクトされなかった servicePort: 8080 tls: - hosts: - [ドメイン名] secretName: xxxxx-tls