aleでデプロイされたサービスのプレビューURLとカスタムドメインにはTLS証明書が自動的に適用されます。


ClusterIssuer生成と発行

1

証明書生成スクリプトで使用される値を環境変数として設定してください。

export CLOUDFLARE_DOMAIN=<Cloudflareドメイン>
export CLOUDFLARE_EMAIL=<Cloudflareアカウントのメールアドレス>
export CLOUDFLARE_API_TOKEN=<Cloudflare APIトークン>
export ACME_EMAIL=<証明書発行用メールアドレス>

Cloudflare APIトークンはDNS編集権限が付与されている必要があります。

2

次のコマンドでクラスター証明書生成ツールをインストールします。

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: cloudflare-api-token-secret
  namespace: cert-manager
type: Opaque
stringData:
  api-token: $CLOUDFLARE_API_TOKEN
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: ale-issuer
  namespace: cert-manager
spec:
  acme:
    email: $ACME_EMAIL
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: ale-issuer
    solvers:
      - http01:
          ingress:
            class: nginx
      - dns01:
          cloudflare:
            email: $CLOUDFLARE_EMAIL
            apiTokenSecretRef:
              name: cloudflare-api-token-secret
              key: api-token
        selector:
          dnsZones:
            - $CLOUDFLARE_DOMAIN
EOF
3

次のコマンドを実行して証明書を発行します。

cat <<EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: ale-app-tls
  namespace: cert-manager
spec:
  dnsNames:
    - "*.$CLOUDFLARE_DOMAIN"
  issuerRef:
    kind: ClusterIssuer
    name: ale-issuer
  secretName: ale-app-tls
EOF

イングレスのセットアップ

1

次のコマンドでクラスター証明書生成ツールとIngressをインストールします。

cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ale
  namespace: ale
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0
    cert-manager.io/cluster-issuer: ale-issuer
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - app.$CLOUDFLARE_DOMAIN
      secretName: ale-controller-tls
  rules:
    - host: app.$CLOUDFLARE_DOMAIN
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: ale-controller
                port:
                  number: 9001
EOF
2

以下のコマンドで証明書の生成と反映を確認し、正常ならSTATEがvalidと表示されます。

kubectl get order -n ale \
  | awk '/ale-/{print $1}' \
  | xargs kubectl get order -n ale
NAME                              STATE   AGE
ale-controller-tls-1-1997619857   valid   103s
3

以下のURLにアクセスできれば、証明書が正しく反映されています。アクセスできない場合は、Cert ManagerのPodやCluster Issuerの状態を確認してください。

https://app.[Cloudflare_ドメイン]
4

管理者アカウントを作成し、インストールを完了してください。

プレビュードメインフィールドには接続したルートドメインを入力します。

クラスターネットワーク設定

運用システム>クラスター>設定タブのネットワークセクションに以下の値を入力してください。

  • プレビュードメイン: ルートドメイン
  • HTTPS使用
    • チェック: インターネット環境
    • チェック解除:イントラネット/閉域網環境
  • 証明書シークレット名: ale-app-tls
  • 証明書シークレットネームスペース: cert-manager
  • 証明書発行者: ale-issuer
  • Ingressクラス: nginx
  • Ingress IP: 空欄(自動認識)
  • ロードバランサータイプ
    • ロードバランサー
    • ノードポート
  • Ingress/Egress帯域幅: Mbps単位で入力

ダッシュボードの左上にあるスペース名をクリックすると、運用システムにアクセスできます。

運用システムメニューは、運用システムへのアクセス権限を持つアカウントにのみ表示されます。