ale
でデプロイされたサービスのプレビューURLとカスタムドメインにはTLS証明書が自動的に適用されます。
ClusterIssuer生成と発行
証明書生成スクリプトで使用される値を環境変数として設定してください。
export AWS_REGION=<AWSリージョン>
export AWS_DOMAIN=<Route53ドメイン>
export AWS_HOSTED_ZONE_ID=<Route53ホスティングゾーンID>
export ACME_EMAIL=<証明書発行用メールアドレス>
Hosted Zones > Hosted Zone Details
でHosted Zone ID値を確認できます。
次のコマンドでクラスター証明書生成ツールをインストールします。
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: aws-secret-access-key
namespace: cert-manager
type: Opaque
stringData:
aws-secret-access-key: $AWS_SECRET_ACCESS_KEY
---
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:
route53:
region: $AWS_REGION
hostedZoneID: $AWS_HOSTED_ZONE_ID
accessKeyID: $AWS_ACCESS_KEY_ID
secretAccessKeySecretRef:
name: aws-secret-access-key
key: aws-secret-access-key
selector:
dnsZones:
- $AWS_DOMAIN
EOF
次のコマンドを実行して証明書を発行します。
cat <<EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: ale-app-tls
namespace: cert-manager
spec:
dnsNames:
- "*.$AWS_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.$AWS_DOMAIN
secretName: ale-controller-tls
rules:
- host: app.$AWS_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.[Route53_ドメイン]
管理者アカウントを作成し、インストールを完了してください。
プレビュードメインフィールドには接続したルートドメインを入力します。
クラスターネットワーク設定
運用システム>クラスター>設定タブ
のネットワークセクションに以下の値を入力してください。
- プレビュードメイン: Route53のルートドメイン
- HTTPS使用
- チェック: インターネット環境
- チェック解除:イントラネット/閉域網環境
- 証明書シークレット名: ale-app-tls
- 証明書シークレットネームスペース: cert-manager
- 証明書発行者: ale-issuer
- Ingressクラス: nginx
- Ingress IP: 空欄(自動認識)
- ロードバランサータイプ
- Ingress/Egress帯域幅: Mbps単位で入力
ダッシュボードの左上にあるスペース名をクリックすると、運用システムにアクセスできます。
運用システムメニューは、運用システムへのアクセス権限を持つアカウントにのみ表示されます。