Fastly Anywhere
- English
- 日本語
この情報はベータ版リリースの一部です。詳細については、製品と機能のライフサイクルの説明をご覧ください。
Fastly Anywhere を使用することで、Fastly のソフトウェアをパブリッククラウド環境にデプロイできます。お客様が提供および管理する Kubernetes クラスターに Fastly Anywhere をインストールすることで、独自の配信拠点 (POP) をデプロイして Fastly プラットフォームを拡張することができます。
前提条件と制限事項
このプロダクトには有料の Fastly ユーザーアカウントが必要です。また、パブリッククラウド環境にインストールされるように設計されています。Kubernetes のインストールを管理する責任は、お客様にあります。
Fastly Anywhere は現在、Compute サービスのみをサポートしています。
ディストリビューション
Fastly Anywhere を実行するには、サポートされている Kubernetes (k8s) ディストリビューションが必要です。以下のディストリビューションをサポートしています。
クラウドプロバイダー | サポートされているバージョン |
---|---|
Alicloud Container Service for Kubernetes (ACK) |
|
Google Kubernetes Engine (GKE) |
|
リソース
クラスターワーカーノードの推奨最小リソースは、4 vCPU および 8 GB の RAM です。
Kubernetes 環境
Kubernetes 環境は、以下の要件を満たしている必要があります。
専用クラスター
隣接環境のノイズ問題を軽減するため、Fastly Anywhere を実行する際にはスタンドアロンのクラスターと専用の名前空間が必要です。
ストレージクラス
デフォルトのストレージクラスまたはオーバーライドストレージクラス名を指定する必要があります。最小ボリュームサイズは、クラウドプロバイダーとストレージクラスによって異なるため、ボリュームサイズも Helm 値として定義する必要があります。
Egress (データ送信)
ネットワーク egress (データ送信) がブートストラップ、操作、可観測性に対してオープンであることが必要です。Anywhere インストールで実行されているエージェントは、アプリケーションのメトリクスとログを Fastly に返送して内部と外部で可視化するのを支援し、コントロールプレーンから Fastly 設定を取得するのにも役立ちます
Cert Manager
Fastly では、Cert Manager v1.14 がインストールされ、クラスター内で利用可能になっていることが必要です。Fastly Anywhere 製品は、複数の Fastly サービス間の安全な通信に使用される mTLS 認証情報を管理するために、Cert Manager を使用します。
TLS Ingress
Anywhere インストールは、内部の Service 経由で公開されます。これにより、Ingress またはその他のパブリックまたはプライベートのロード・バランシング・ソリューションを使用して、トラフィックをクラスターに配信することができます。配信はお客様の責任となります。
Fastly TLS 製品はサポートされていません。TLS は、Anywhere インストールに先立ち、Ingress で終了する必要があります。
# nginx-ingress-example.yamlapiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: cafe-ingress annotations: nginx.ingress.kubernetes.io/upstream-vhost: cafe.example.com # This must match the domain configured for the service in Fastly.spec: tls: - hosts: - cafe.example.com secretName: cafe-secret rules: - host: cafe.example.com # This must match the DNS name that clients reach the Ingress over. http: paths: - path: / # You can change this to whatever works for your use case. pathType: Exact backend: service: name: h2o # The service name will technically be prefixed with the Helm chart name to minimize collisions, but it will include "h2o" in the name. port: number: 80 # Make sure this is port 80.
Helm
Fastly では、インストールと継続的な運用に、Helm バージョン 3.x が必要です。
Helm グラフをインストールするには、クラスターで有効な Fastly Anywhere Registry 認証情報が、Kubernetes のシークレットにインストールされている必要があります。
Helm グラフでは、そのサービスをクラスターにロードするアカウントの有効な Fastly API トークンが必要です。さらに、Fastly は、Fastly API にクラスターを識別するためのブートストラップトークンを提供します。
インストール
Fastly Anywhere をインストールするには、以下の手順を実行してください。
Fastly API 自動化トークンを作成します。
Fastly が提供する Fastly Anywhere ブートストラップトークンとレジストリ認証情報を使用します。
Docker レジストリと Helm レジストリで使用されるユーザー名とパスワードは、同一にする必要があります。
Kubernetes 名前空間を作成します。
kubectl create namespace fastly-anywhereKubernetes クラスターに Docker レジストリシークレットを追加します。
# access to container imageskubectl create secret docker-registry regcred \--namespace fastly-anywhere \--docker-server=us-docker.pkg.dev \--docker-username=_json_key_base64 \--docker-email="${EMAIL}" \--docker-password="${CREDENTIAL_B64}"Helm レジストリの認証情報を追加します。
# access to Helm charthelm registry login https://us-docker.pkg.dev \--username _json_key_base64 \--password "${CREDENTIAL_B64}"ストレージ、自動化、ブートストラップトークン値を使用して Anywhere Helm チャートを設定します。
クラウド環境に基づいて、以下のストレージクラス名を使用します。
クラウドプロバイダー 推奨ストレージクラス Alibaba Cloud alicloud-disk-topology-alltype
Google Cloud premium-rwo
# your-values.yamledgeStack:cpuFootprint: 4memoryFootprint: 8Gireplicas: 3cached:volumeClaim:requests:storage: 32GistorageClassName: <STORAGE CLASS>xqd:volumeClaim:requests:storage: 32GistorageClassName: <STORAGE CLASS>bootstrap:token: <BOOTSTRAP TOKEN>fastly_key: <AUTOMATION TOKEN>最新のチャートバージョンをインストールします。
# installs the fastly-anywhere chart into the namespacehelm install fastly-anywhere oci://us-docker.pkg.dev/fastly-anywhere-dev-41d5/anywhere-production/charts/fastly-anywhere \--version 0.1.0 \--namespace fastly-anywhere \--values your-values.yamlインストールが初期化され、正しく実行されていることを確認します。
# status of the StatefulSet can be validated herekubectl get statefulset \--namespace fastly-anywhere \-l app.kubernetes.io/name=fastly-anywhere# status of the pods in the StatefulSet can be validated herekubectl get pods \--namespace fastly-anywhere- Ingress では、
h2o
というサービスを指定する必要があります。 - クライアントから HTTP ホストヘッダーを保持しなければなりません。
- ターゲットポートは
80
です。
- Ingress では、
選択したデリバリーメカニズムによってサービスホスティングが動作することを検証します。
アップグレード
Fastly Anywhere をアップグレードするには、以下の手順を実行してください。
Helm アップグレードを通じてインストールされているリリースをアップグレードします。
# upgrades a deployed release to a specified version via Helmhelm upgrade fastly-anywhere \--namespace fastly-anywhere \--version $LATEST_VERSIONFastly Anywhere StatefulSet を再起動します。
# restarts Fastly Anywhere pods in sequencekubectl rollout restart statefulset/fastly-anywhere \--namespace fastly-anywhere
データフロー
以下のアーキテクチャ図は、Fastly Anywhere ソリューションのコンポーネント間を流れるデータを示しています。これらのコンポーネントは Helm ツール、Kubernetes API サーバー、Kubernetes ノード、Fastly API、ログストアで構成されます。
- 必要な値はクラスターにより提供され、Helm 経由でお客様の Kubernetes API に送信されます。
- シークレットローダーは、ブートストラップトークンと Fastly 自動化トークンを、その他のプロセスにより使用される資格情報とやり取りします。
- Anywhere エージェントは、クラスター設定の作成に必要な情報について、お客様の Kubernetes API に問い合わせます。
- ローダーコンテナは、Fastly API からお客様のサービス設定を取得します。
- お客様から提供される Ingress からの HTTP トラフィックは、プラットフォームコンテナにルーティングされます。
- プラットフォームコンテナは、Fastly API に可観測性メトリクスを送信します。
- サービス管理データは、内部デバッグとアラートのために、Fastly API に送信されます。
- リアルタイムログは、お客様定義のログストレージエンドポイントにストリーミングされます。