Kubernetesでmabl Linkを実行
mabl LinkはKubernetesクラスターで容易に実行できます。こうすることで、テストインフラストラクチャーが簡素化されます。Dockerを用いてmabl Link (イメージ) を使用すると、ランタイムの互換性、設定、プロビジョニングを気にする必要がなくなります。
Kubectl
コマンドライン経由のLink Agent Pod
次のように、kubectlを使用してKubernetesクラスターでLink Agentを実行します。
シェル
$ kubectl run mabl-link-agent\
--namespace=<YOUR-NAMESPACE>\
--image=mablhq/link-agent\
-- --api-key <MABL-LINK-API-KEY> --name <LINK-AGENT-NAME>
注: 単体の -- は誤表記ではありません。
kubectlに必要な表記です。
YAML specファイルによるLink Agent Pod
Kubernetesの設定は、通常、YAML形式で保存されます。たとえば、PodまたはDeploymentのspecでmablhq/link-agentイメージを使用することができます。YAMLファイルで定義された基本的なPodのspecは次のとおりです。
- を自分のKubernetesの名前空間に置き換える
- を自分のmabl APIキーに置き換える
- を自分のLink Agent名 (任意) に置き換える
apiVersion: v1
kind: Pod
metadata:
name: mabl-link-agent
namespace: <YOUR-NAMESPACE>
spec:
containers:
- name: mabl-link-agent
image: mablhq/link-agent
args:
- --api-key
- <MABL-LINK-API-KEY>
- --name
- <LINK-AGENT-NAME>
次のkubectlコマンドを実行して、KubernetesクラスターでLink Agentを起動します。
$ kubectl create -f mabl-link-agent.yaml
# Optionally follow the logs
$ kubectl logs -f mabl-link-agent -n <YOUR-NAMESPACE>
Link Agentの使用が済んだら、次のコマンドを使用してLink Agentを停止します。
$ kubectl delete pod mabl-link-agent -n <YOUR-NAMESPACE>
[SHUTDOWN] ボタンとKubernetesのLink Agent
mabl Webアプリケーションの [Settings] > [NETWORKING] > [mabl Link Agents] 画面で [SHUTDOWN] ボタンをクリックしても、全体的な影響はありません。KubernetesのDeploymentは常に一定数のレプリカを維持しようとします。そのため、[SHUTDOWN] をクリックしたLink Agentが終了しても、数秒以内に代わりのLink AgentがDeploymentによって起動されるため、Link Agentのトンネルが終了することはありません。同様に、PodベースのLink Agentは、再起動ポリシーに基づいて再起動を行います。
KubernetesベースのLink Agentを停止し、KubernetesのPodまたはDeploymentを削除するには、kubectl delete pod mabl-link-agent -n コマンドを使用します。
YAML specファイルによるLink Agent Deployment
Kubernetes Deploymentを使用してmabl Link Agentを実行することもできます。Deploymentでは、replicasを1より大きな値に設定して、高可用性 (HA) のセットアップを使用できます (下のspecを参照)。テスト対象のブラウザーからの個々の接続は、利用可能ないずれかのLink Agentインスタンスにランダムにルーティングされます。いずれかのLink Agentが終了した場合、失われるのは開いているブラウザー接続のみで、その後の接続は残りのアクティブなLink Agentインスタンスにルーティングされます。
高可用性Link Agentプールの制限事項
Link Agentが実行中でmablに接続されている場合、このLink Agentは正常とみなされます。ただし、このLink Agentで目的の宛先にトラフィックをルーティングできないことがあります (Link Agentが実行されているホストが正しくない場合など)。このようなルーティングの問題があると、Link Agentは高可用性 (HA) プールから外されます。問題が発生したLink Agent (プロセスが終了、停止、クラッシュした場合など) のみがHAプールから除外されます。
- を自分のKubernetesの名前空間に置き換える
- を自分のmabl APIキーに置き換える
- を自分のLink Agent名 (任意) に置き換える
apiVersion: apps/v1
kind: Deployment
metadata:
name: mabl-link-agent-deployment
namespace: <YOUR-NAMESPACE>
labels:
app: mabl-link-agent
spec:
# Use values > 1 for HA (e.g. 2-3)
replicas: 1
selector:
matchLabels:
app: mabl-link-agent
template:
metadata:
labels:
app: mabl-link-agent
spec:
containers:
- name: mabl-link-container
image: mablhq/link-agent
args:
- "--api-key"
- "<MABL-LINK-API-KEY>"
- "--name"
- "<LINK-AGENT-NAME>"
Link Agent Deploymentは、Pod作成コマンドと同様のコマンドを使用して作成できます。Deploymentの作成時に問題が発生する場合は、単一のPodを作成し (上記のセクションを参照)、設定値が正しいことを確認してください。
$ kubectl create -f mabl-link-agent-deployment.yaml
Link Agentの使用が済んだら、次のコマンドを使用してLink Agent Deploymentを停止します。
$ kubectl delete deployment mabl-link-agent-deployment -n <YOUR-NAMESPACE>
Link AgentのKubernetes Readiness Probe
通常、Link Agentはすばやく起動されますが、新しいLinkトンネル用のインフラストラクチャーを新規に起動する場合は時間がかかることがあります。Readiness Probeを使用すると、Link Agent Podによってトンネルが正常に確立されたときにKubernetesに通知することができます。
Link Agentのspecファイルのcontainersセクション (上記を参照) を更新して、次のように、readinessProbeセクションを追加します。
containers:
- name: mabl-link-container
image: mablhq/link-agent
args:
- "--api-key"
- "<MABL-LINK-API-KEY>"
- "--name"
- "<LINK-AGENT-NAME>"
# Mark pod Ready when successful Link Agent connection established
readinessProbe:
exec:
command:
- grep
- "-ci"
- "connections are active"
- /opt/mabl/link-agent/logs/agent.log
initialDelaySeconds: 10
periodSeconds: 10
Updated 10 months ago