0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おうちKubernetes上のアプリケーションをcert-managerでhttps化する

Posted at

やりたいこと

前回の記事の続き
https://qiita.com/Rocky-6/items/33a41128423033d4ab1b

おうちKubernetesクラスター内のアプリケーションをcert-managerでhttps化したい。

ポリシーの設定

前回の記事でIngressリソースを作成すると、Route53に自動でレコードが登録されるようになりました。
今回はcert-managerがレコードを追加できるようにポリシーを設定します。
https://cert-manager.io/docs/configuration/acme/dns01/route53/

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "route53:GetChange",
      "Resource": "arn:aws:route53:::change/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "route53:ChangeResourceRecordSets",
        "route53:ListResourceRecordSets"
      ],
      "Resource": "arn:aws:route53:::hostedzone/*"
    },
    {
      "Effect": "Allow",
      "Action": "route53:ListHostedZonesByName",
      "Resource": "*"
    }
  ]
}

前回の記事で作ったユーザーにポリシーをアタッチします。(省略)

cert-managerのデプロイ

チュートリアル通りインストールします。

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml

Cluster Issuerの作成

このマニフェストでcert-managerは指定されたドメインに対してLet's Encryptから証明書を自動的に発行および更新できるようになります。

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
  # name: letsencrypt-prod - 本番
spec:
  acme:
    email: example@email.com
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    # server: https://acme-v02.api.letsencrypt.org/directory - 本番
    privateKeySecretRef:
      name: letsencrypt-staging
      # name: letsencrypt-prod - 本番
    solvers:
      - selector:
          dnsZones:
            - example.com - 適宜変更
        dns01:
          route53:
            region: ap-northeast-1
            accessKeyIDSecretRef:
              name: aws-credentials
              key: aws-access-key-id
            secretAccessKeySecretRef:
              name: aws-credentials
              key: aws-secret-access-key

Ingressの作成

前回作ったIngressにcert-managerの設定について追加します。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: apple
  namespace: sandbox
  labels:
    name: apple
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod - 追加

spec:
  ingressClassName: nginx
  tls: --------------------------|
    - hosts:                     |
        - "*.example.com"        | 追加
        - apple.example.com      |
      secretName: apple ---------|
  rules:
    - host: apple.example.com
      http:
        paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: apple
                port:
                  number: 5678

できました
スクリーンショット 2024-01-08 234654.png

詰まったところ

今度書く

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?