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

Did this page help you?