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


ClusterIssuer生成と発行

1

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

export AWS_REGION=<AWSリージョン>
export AWS_DOMAIN=<Route53ドメイン>
export AWS_HOSTED_ZONE_ID=<Route53ホスティングゾーンID>
export ACME_EMAIL=<証明書発行用メールアドレス>
2

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

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
3

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

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

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

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.$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
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.[Route53_ドメイン]
4

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

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

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

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

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

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

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