LoginSignup
9

More than 5 years have passed since last update.

kubernetes(GKE)のingressでサブドメインのhttps対応メモ (kube-lego)

Posted at

やりたいことは、test.comapi.test.comのようなドメインで同じSSL証明書を使用することです
kube-legoやkubernetesのページ読んでも複数ドメインの対応は書いてあったけど、http前提で書いててつらくなっていました
結局ingress.yamlの書き方で解決できたのでメモ
環境はGKEを使用しています

サブドメイン対応のingress.yaml

とりあえず書き方だけ見たい時用にyaml
tls: hosts:下に2つサブドメインも含め書けばいいだけです

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tetetest-loadbalancer
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "tetetest-loadbalancer-ip" # GCPで作成した静的IPアドレスの名前
    kubernetes.io/tls-acme: "true" # HTTPS対応する
    kubernetes.io/ingress.class: "gce" # GCPを使うのでgce
spec:
  tls:
  - hosts: # ここの下に2つドメインを記述する
    - test.com # 普通のドメイン
    - api.test.com # サブドメイン
    secretName: test-loadbalancer-tls # k8sに作成されるsecrets名
  rules:
  - host: test.com # フロントエンド用のドメイン
    http:
      paths:
      - path: /*
        backend:
          serviceName: test-angular # フロントエンド用サービス名
          servicePort: 80 # フロントエンド公開ポート NodePort
  - host: api.test.com # API用のサブドメイン
    http:
      paths:
      - path: /*
        backend:
          serviceName: test-api # API用サービス名
          servicePort: 9000 # API公開ポート NodePort

参考

ingressを使ってのwebページ公開の手順

kubernetes/ingress

deployment等でpodを作成 -> そのpodをNodePortでservice公開(例えば8080番) -> ingressでGoogleCloudLoadBalancingの作成(service名とポート指定してフォワーディング先を決定)

kube-legoでHTTPS対応

kube-legoを使ってHTTPS対応のwebページ公開の手順
kube-lego example

kube-legoディレクトリの下にnamespace, configmap, deploymentを作成してLet'sEncryptから証明書を取得できるようにします
そして最初に書いたようなingress.yamlを作成してLBを設定します

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9