9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GKEでなるべく安くKubernetesクラスタを作成してPrometheus + Grafanaを使ってみる Part3 -SSL編-

Posted at

タイトルの通りGKE (Google Kubernetes Engine)でKubernetesクラスタを作成して、その上でPrometheusとGrafanaを動かしてみます。

前回クラスタとそこにIngressを追加したので、今回はIngressでSSLを使えるようにします。

はじめに

cert-managerを使ってLet's Encryptから証明書を取得・設定していきます。

cert-managerで証明書を取得するためにはDNS認証かHTTP認証のいずれかを行う必要があります。
DNS認証はRoute53ではうまく動かなかったので、HTTP認証で行います。

cert-managerのインストール

helmを使ってインストールします。
下記コマンドを実行してください。

git clone https://github.com/jetstack/cert-manager
cd cert-manager
helm install \
    --name cert-manager \
    --namespace=kube-system \
    contrib/charts/cert-manager \
    --set ingressShim.extraArgs='{--default-issuer-name=letsencrypt-prod,--default-issuer-kind=ClusterIssuer}'

設定

下記yamlをClusterIssuer.ymlとして保存してください。
※メールアドレスは自分のものを設定してください。

apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
  namespace: default
spec:
  acme:
    # The ACME server URL
    server: https://acme-v01.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: (メールアドレス)
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: letsencrypt-prod
    # Enable the HTTP-01 challenge provider
    http01: {}

下記yamlをcertificate.ymlとして保存してください。

各ドメインは自分のものを設定してください。
commonNameは証明書の通称として使われるものなので、(ドメイン1)を指定するといいと思います。
dnsNamesで指定したドメインはSAN (Subject Alternative Name)として登録されます。

apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: (ハイフンつながりのドメインex: kter-jp)-tls
  namespace: default
spec:
  secretName: (ハイフンつながりのドメイン)-tls
  issuerRef:
    name: letsencrypt-prod
    kind: ClusterIssuer
  commonName: (ドメインex: kter.jp)
  dnsNames:
  - (ドメイン1)
  - (ドメイン2)
  - (ドメイン3)
  acme:
    config:
    - http01:
        ingressClass: nginx
      domains:
      - (ドメイン1)
    - http01:
        ingressClass: nginx
      domains:
      - (ドメイン2)
    - http01:
        ingressClass: nginx
      domains:
      - (ドメイン3)

設定を反映します。
下記コマンドを実行してください。

kubectl apply -f ClusterIssuer.yml
kubectl apply -f certificate.yml

進捗は下記コマンドで確認出来ます。


kubectl describe certificate

確認

各ドメインにhttpsでアクセスして、証明書が正しく設定されるか確認します。

9
7
0

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
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?