ale
でデプロイされたサービスのプレビューURLとカスタムドメインにはTLS証明書が自動的に適用されます。
ClusterIssuer生成と発行
証明書生成スクリプトで使用される値を環境変数として設定してください。
export CLOUDFLARE_DOMAIN=<Cloudflareドメイン>
export CLOUDFLARE_EMAIL=<Cloudflareアカウントのメールアドレス>
export CLOUDFLARE_API_TOKEN=<Cloudflare APIトークン>
export ACME_EMAIL=<証明書発行用メールアドレス>
Cloudflare APIトークンはDNS編集権限が付与されている必要があります。
次のコマンドでクラスター証明書生成ツールをインストールします。
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
次のコマンドを実行して証明書を発行します。
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
イングレスのセットアップ
次のコマンドでクラスター証明書生成ツールと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
以下のコマンドで証明書の生成と反映を確認し、正常なら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
以下のURLにアクセスできれば、証明書が正しく反映されています。アクセスできない場合は、Cert ManagerのPodやCluster Issuerの状態を確認してください。
https://app.[Cloudflare_ドメイン]
管理者アカウントを作成し、インストールを完了してください。
プレビュードメインフィールドには接続したルートドメインを入力します。
クラスターネットワーク設定
運用システム>クラスター>設定タブ
のネットワークセクションに以下の値を入力してください。
- プレビュードメイン: ルートドメイン
- HTTPS使用
- チェック: インターネット環境
- チェック解除:イントラネット/閉域網環境
- 証明書シークレット名: ale-app-tls
- 証明書シークレットネームスペース: cert-manager
- 証明書発行者: ale-issuer
- Ingressクラス: nginx
- Ingress IP: 空欄(自動認識)
- ロードバランサータイプ
- Ingress/Egress帯域幅: Mbps単位で入力
ダッシュボードの左上にあるスペース名をクリックすると、運用システムにアクセスできます。
運用システムメニューは、運用システムへのアクセス権限を持つアカウントにのみ表示されます。