Red Hat OpenShift へのエージェントのインストール

要件に応じて、さまざまな方法を用いて、 Red Hat OpenShift クラスタに Instana エージェントをインストールできます。 以下のリストを参照して、前提条件を確認し、利用可能なすべてのインストール方法について確認した上で、 Red Hat OpenShift にエージェントをインストールしてください:

前提条件

エージェントをインストールする前に、 前提条件が満たされていることを確認してください。

注:Instana エージェントオペレーターが必要とするRBAC権限およびインストールされる権限を確認するには、 「必要なRBAC」 を参照してください。

エージェントのインストール方法を選択する

以下の方法を使用して、 Red Hat OpenShift クラスタに Instana エージェントをインストールできます

IBM Z または LinuxONE プラットフォーム上の Red Hat OpenShift にエージェントをインストールするには、 Helm チャート(オンライン) をご利用ください。

オペレーターを使用してインストールする

オペレーターを使用して Red Hat OpenShift に Instana エージェントをインストールするには、以下の手順を実行してください:

  1. オペレータのインストールを続行する前に、前提条件の手順を完了してください。

  2. 以下のいずれかの方法でオペレーターを取り付ける:

注: オペレーターを使用してエージェントをインストールする前に、まず Instana エージェント用のプロジェクトを設定し、その権限を構成する必要があります。 詳細については、 「プロジェクトおよびサービス アカウントの設定」 を参照してください。

OLM を使用してオペレーターをインストールする

OLM を使用して Red Hat OpenShift に Instana エージェントをインストールするには、以下の手順を実行してください:

  1. OperatorHub.io または 「 Red Hat OpenShift 」のコンテナ化アプリケーションカタログから、 Instana エージェントオペレーターをインストールしてください。

  2. まだターゲットネームスペースがない場合は、 Instana エージェントをインストールする必要がある場所にネームスペースを作成してください。 例えば、名前空間「instana-agent」を作成して演算子を実行することができる。 エージェントは、オペレーターと同じ名前空間で実行する必要はありません。

  3. オペレータを手動でインストールするセクションのステップ2からステップ6に従い、エージェントのカスタムリソースを作成し、カスタムリソースを適用します。 オペレーターはカスタムリソースから設定を取得し、 Instana エージェントをデプロイします。

オペレーターを手動でインストールする

Red Hat OpenShift にオペレーターを手動でインストールするには、以下の手順を実行します:

  1. Instana UIのホームページで、 「エージェントとコレクター」 をクリックします。 「 Instana 」の「エージェント」タブで、 「エージェントのインストール」 を選択します。

  2. エージェント・デプロイメント・カタログ・ページで、OpenShift- Operator タイルをクリックします。

  3. 以下のコマンドを使用して、最新のオペレーター・バージョンをデプロイする:

    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml

    このコマンドを実行すると、オペレータは作成したネームスペースで稼働し、'instana-agentカスタム・リソースが作成されるのを待ちます。

  4. クラスタ名と(オプションで)クラスタを所属させたいエージェントゾーンを入力します。

    クラスタ名(<your_cluster_name>)は、このDaemonSetが監視するクラスタのカスタマイズ名です。

    エージェントゾーン(<your_zone_name>)は、インフラストラクチャマップに表示されるゾーンのグループ分けをカスタマイズするために使用されます。

  5. 「 Instana 」のUIで提供されている「 YAML 」テンプレートをコピーして、カスタムリソースの YAML ファイルを作成します。

    「 YAML 」テンプレートには、 エージェントキーエージェントのホストエンドポイント、クラスター名、およびエージェントゾーンが事前に入力されています。

  6. カスタムリソースの YAML ファイルを編集します。 YAML ファイルの例については、 instana_v1_extended_instanaagent.yaml を参照してください。

    1. Instana Agent カスタム・リソースは、Instana の Helm チャット とまったく同じ構成をサポートしています。 すべての設定パラメータの詳細な一覧と使用例については、 Instana の「 Helm 」チャートをご覧ください。

      以下のトピックも参照してください:

    2. セルフホスト環境にエージェントをインストールしたい場合、エージェントキーに Instana のパブリックアーティファクトリからダウンロードする権限がない場合は、ダウンロードキーを次のように追加してください downloadKey: <your_download_key>。 例:

    agent:
      key: wPYpH7EGK0ucLaO0Nu7BYw
      downloadKey: m007YDoWNload6kE42yukg
      endpointHost: ...
    1. エージェントのエンドポイントに TLS 暗号化を追加する場合は、既存のシークレットを使用するか、証明書と秘密鍵を使用してください:

      既存のシークレットを使用する

      TLS 暗号化には、kubernetes.io/tlsタイプの既存のシークレットを使用できます。 ただし、カスタム・リソース yaml ファイルでagent.tls.secretNameを指定する必要があります。

      証明書と秘密鍵を使用する

      既存の秘密の代わりに、証明書と秘密鍵を使うことができる。 証明書と秘密鍵は base64-encoded でなければなりません。

      このバリアントを使用するには、以下の 2 つのパラメーターをカスタム・リソース yaml ファイルに追加します。

      • agent.tls.certificate
      • agent.tls.key
      注: が設定されている agent.tls.secretName 場合、 agent.tls.certificate およびは無視 agent.tls.key されます。
    2. オプション:以下の値を置き換えることができる:

      • agent.env: エージェントのプロキシ設定など、エージェントの環境変数を指定するためにこのフィールドを使用します。 可能な環境値について詳しくは、エージェント構成を参照してください。 以下の例を参照してください。

        spec:
            agent:
              env:
               INSTANA_AGENT_TAGS: staging
      • agent.configuration_yaml: このフィールドを使用して、エージェント設定ファイルconfiguration.yamlを指定します。 以下の例を参照してください。

        spec:
            agent:
              configuration_yaml: |
                # Example of configuration yaml template
                # Host
                com.instana.plugin.host:
                  tags:
                    - 'dev'
                    - 'app1'

        詳細については、 「エージェント設定ファイルを使用したホストエージェントの設定」 を参照してください。

    3. 静的エージェントをデプロイする場合は、カスタムリソースの YAML ファイルに静的エージェントのイメージを設定してください。 静的エージェント・イメージをリストアップするには、'agent.image.nameを'containers.instana.io/instana/release/agent/static設定する。 以下の例を参照してください。

      spec:
       agent:
         image:
           name: containers.instana.io/instana/release/agent/static
  7. カスタムリソース YAML ファイルを適用します:

    kubectl apply -f instana-agent.customresource.yaml

    ここで instana-agent.customresource.yaml 、はカスタムリソースの YAML ファイルの名前です。

    オペレーターは、カスタムリソースの YAML ファイルから設定を取得し、 Instana エージェントをデプロイします。

これでエージェントがインストールされた。 インストール後にできることについては、「次にすること」のセクションをご覧ください。

エージェントを更新するには、オペレータ・インストールの更新を参照してください。

エアギャップ環境におけるオペレーターを使用したインストール

containers.instana.io完全にエアギャップ化された環境では、クラスタノードは や から icr.io イメージを直接取得することはできません。 インターネットに接続可能なジャンプホスト(バスティオン)を使用して、必要なすべてのイメージを、クラスタからアクセス可能なプライベートレジストリにコピーします。 次に、ミラーリングされたイメージからオペレーターをデプロイします。

このセクションの手順では、 IBM Cloud Container Registry (ICR) 内のプライベートネームスペースをターゲットレジストリとして使用します。 ジャンプホストおよびターゲットクラスタからアクセス可能なOCI準拠のレジストリであれば、どれでも同様に機能します。例えば、JFrog( Artifactory )、 Red Hat、Quay、Harbor、あるいは自前でホストするディストリビューションレジストリなどが挙げられます。 ICR 以外のレジストリを使用する場合は、ICR 固有の手順をスキップし、 URL および認証情報については、該当する箇所 icr.io すべてを各自のレジストリおよび認証情報に置き換えてください。

全体の流れは以下の通りです:
[internet] ──pull──▶ jump host ──push──▶ <private-registry>/instana-airgap-mirror ◀──pull── OCP cluster
                      (skopeo)

この scripts/mirror-instana-images.sh スクリプトは、1回の実行で3つのコンポーネントすべてのミラーリングを処理します:

表 1. 構成要素とソース画像
コンポーネント ソース・イメージ
オペレーター icr.io/instana/instana-agent-operator:latest
エージェント(静的) containers.instana.io/instana/release/agent/static:latest
Kubernetes センサー icr.io/instana/k8sensor:latest
注: このスクリプトは、静的エージェントイメージをコピーします。 動的なエージェント画像は、エージェントの自動更新を希望する場合にのみ使用してください。

エアギャップ方式によるオペレーター設置の前提条件

作業を進める前に、 ジャンプホストに以下のツールをインストールしてください:

表 2. ジャンプホストに必要なツール
ツール 目的 インストール・ガイド
skopeo Docker デーモンを使用せずに、レジストリ間でコンテナイメージをコピーする dnf install skopeo および brew install skopeo
jq によって返された画像メタデータを解析する JSON skopeo inspect dnf install jq および brew install jq
oc OpenShift CLI OpenShift に同梱されています
ibmcloud CLI + Container Registry プラグイン ICR ネームスペースを作成し、そのネームスペースを使用して認証を行う ibmcloud plugin install container-registry
注: CLIは ibmcloud 、ICRをターゲットレジストリとして使用する場合にのみ必要です。 Artifactory、Quay、Harborなど、他のレジストリを使用している場合は、この手順をスキップしてください。
必要なツールが揃っていることを確認してください:
skopeo --version
jq --version
oc version --client

インストール

エアギャップ環境において、オペレーターを使用してエージェントをインストールするには、以下の手順を実行してください:

  1. プライベートレジストリを準備し、skopeoをそのレジストリに対して認証してください。
    注: ICRをご利用の場合は、以下の手順を実行してください。 別のレジストリ( Artifactory、Quay、Harbor、またはDistribution)を使用している場合は、同等のターゲットリポジトリを作成し、そのレジストリの認証情報を使用してskopeoを認証してから、手順2に進んでください。
    1. IBM Cloud にログインし、ミラーリングされたイメージ専用のネームスペースを作成します:
      ibmcloud login --sso
      ibmcloud cr region-set global
      ibmcloud cr namespace-add instana-airgap-mirror
    2. 非対話型のレジストリアクセス用に、専用のIAM「 API 」キーを作成します:
      ibmcloud iam api-key-create instana-mirror-key -d "skopeo mirror key"
    3. キーをターミナルに出力せずにエクスポートし、ログインが正常に行えることを確認します:
      read -rs ICR_API_KEY
      skopeo login --username iamapikey --password "$ICR_API_KEY" icr.io
      skopeo login注: 以前 ibmcloud cr login の操作で、skopeo が上書きできないフィールドに ~/.docker/config.json データ identitytoken が書き込まれている場合は、そのファイルを開き、該当するエントリを icr.io 削除して保存してから、再度試してください。
  2. Instana エージェントのダウンロードキーを取得してください。

    containers.instana.io静的なエージェント画像は引き続き利用可能ですが、これを利用するにはエージェントのダウンロードキーが必要です。 Instana のUIから「 設定」→「エージェント」→「エージェントのインストール 」で入手するか、 Instana のアカウント担当チームにお問い合わせください。 出力せずに保存するには:

    read -rs INSTANA_AGENT_DOWNLOAD_KEY
  3. ジャンプホストからミラーリングスクリプトを実行し、画像をプライベートレジストリにミラーリングします。 このスクリプトは、各画像の現在の :latest バージョンを特定し、元の :latest タグとバージョン付きタグの両方を保存先にコピーし、特定されたすべての座標を記載したプロパティファイルを書き込みます。
    ./scripts/mirror-instana-images.sh \
      --registry      icr.io \
      --namespace     instana-airgap-mirror \
      --dest-creds    "iamapikey:$ICR_API_KEY" \
      --dest-tls-verify true \
      --agent-download-key "$INSTANA_AGENT_DOWNLOAD_KEY"

    このスクリプトは、ミラーリング中に特定された画像の正確な座標が記載されたファイルを mirror-instana-images.properties 生成します。 例:

    operator_version=2.2.14
    operator_destination=icr.io/instana-airgap-mirror/instana-agent-operator
    agent_version=1.320.3
    agent_destination=icr.io/instana-airgap-mirror/agent
    k8sensor_version=1.4.16
    k8sensor_destination=icr.io/instana-airgap-mirror/k8sensor
    注: このファイルは、デプロイメントマニフェストと同じ場所に保存してください。 ここに含まれる画像座標は、後の手順でカスタムリソース InstanaAgent を設定する際に使用されます。
  4. 3つのリポジトリすべてがレジストリに存在し、期待通りのタグが付与されていることを確認してください。 ICR については、次のコマンドを実行してください:
    ibmcloud cr images --restrict instana-airgap-mirror
  5. ターゲットネームスペースを作成し、サービスアカウントに必要なセキュリティコンテキスト制約(SCC)を付与します。 エージェントポッドは特権モード(ホストネットワークおよびホストPID)で実行され、リモートエージェントのサービスアカウントは、そのinitコンテナ用に が必要です anyuid
    INSTANA_AGENT_NAMESPACE=instana-agent
    
    oc new-project ${INSTANA_AGENT_NAMESPACE}
    oc adm policy add-scc-to-user privileged -z instana-agent -n "${INSTANA_AGENT_NAMESPACE}"
    oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n "${INSTANA_AGENT_NAMESPACE}"
  6. Kubernetes のプルシークレットをレジストリの認証情報を使用して作成し、デプロイする前にオペレーターサービスアカウントを事前に作成して、そのシークレットをリンクさせておいてください。 サービスアカウントを事前に作成しておきます。 そうしない場合、オペレーターマニフェストが次のステップでそれを作成するため、初回起動時にエラー ImagePullBackOff が発生します。
    oc create secret docker-registry icr-pull-secret \
      --docker-server=icr.io \
      --docker-username=iamapikey \
      --docker-password="$ICR_API_KEY" \
      -n instana-agent
    
    oc create serviceaccount instana-agent-operator -n instana-agent
    oc secrets link instana-agent-operator icr-pull-secret --for=pull -n instana-agent
  7. 最新のリリースマニフェストをダウンロードし、アップストリームのオペレーターイメージへの参照をミラーされたものに変更してください:
    curl -fsSL \
      https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml \
      -o instana-agent-operator.yaml
    
    sed 's|image: icr.io/instana/instana-agent-operator:|image: icr.io/instana-airgap-mirror/instana-agent-operator:|g' \
      instana-agent-operator.yaml > instana-agent-operator-mirrored.yaml
    注: ここでは、演算子の画像行のみが置き換えられます。 エージェントおよび k8sensor のイメージを参照するカスタムリソースは InstanaAgent 、後の手順で別途設定します。
  8. 修正済みのマニフェストを適用し、展開が完了するまで待ちます:
    oc apply -f instana-agent-operator-mirrored.yaml
    oc rollout status deployment/instana-agent-controller-manager \
      -n instana-agent --timeout=120s
  9. エージェントのサービスアカウントを事前に作成し、それぞれのアカウントにプルシークレットを紐付けます。 このオペレーターは、カスタムリソースを InstanaAgent 初めて適用した際に と instana-agent-k8sensor を作成 instana-agent しますが、 OpenShift は、サービスアカウント default からこれらのオペレーター管理アカウントの下で実行されているポッドへプルシークレットを伝播しません。 事前に作成しておけば、最初のPodスケジューリング時にエラーが発生 ErrImagePull するのを防ぐことができます。
    oc create serviceaccount instana-agent -n instana-agent
    oc create serviceaccount instana-agent-k8sensor -n instana-agent
    
    oc secrets link instana-agent icr-pull-secret --for=pull -n instana-agent
    oc secrets link instana-agent-k8sensor icr-pull-secret --for=pull -n instana-agent
    ErrImagePull注: カスタムリソースをすでに適用しており、Podが存在する場合、サービスアカウントは存在しますが、シークレットはまだリンクされていません。 上記の2つの oc secrets link コマンドを実行した後、障害が発生しているポッドを削除して、再スケジューリングされるようにしてください。
  10. カスタムリソースマニフェスト InstanaAgent を作成します。 プレースホルダーの値を実際の設定に置き換えてください:
    • 交換する <INSTANA_AGENT_KEY> そして <INSTANA_AGENT_DOWNLOAD_KEY>Instana UI エージェントとコレクター → エージェントのインストール → OpenShift Operator のキーを使用します。
    • mirror-instana-images.properties画像タグを、のバージョンに置き換えてください。
    • お使いの環境に合わせて、プロキシのフィールドを更新してください。
    • プロキシ認証が必要ない場合は、と proxyPassword を空の文字列に設定 proxyUser してください。
    apiVersion: instana.io/v1
    kind: InstanaAgent
    metadata:
      name: instana-agent
      namespace: instana-agent
    spec:
      zone:
        name: <your_zone_name>
      cluster:
        name: <your_cluster_name>
      agent:
        key: <INSTANA_AGENT_KEY>
        downloadKey: <INSTANA_AGENT_DOWNLOAD_KEY>
        endpointHost: <your-ingress-endpoint>
        endpointPort: "443"
        proxyHost: <proxy-host>
        proxyPort: "3128"
        proxyProtocol: http
        proxyUser: ""
        proxyPassword: ""
        image:
          name: icr.io/instana-airgap-mirror/agent
          tag: "<agent_version>"       # value of agent_version in mirror-instana-images.properties
        env: {}
        configuration_yaml: |
          # You can leave this empty, or use this to configure your Instana agent.
          # See https://docs.instana.io/setup_and_manage/host_agent/on/kubernetes/
      k8s_sensor:
        image:
          name: icr.io/instana-airgap-mirror/k8sensor
          tag: "<k8sensor_version>"    # value of k8sensor_version in mirror-instana-images.properties
    注: 前の手順でサービスアカウントにパッチ icr-pull-secret を適用して画像取得の認証情報を指定したため、カスタムリソースではどのフィールドも必須ではありません pullSecrets
  11. カスタムリソースを適用します:
    oc apply -f instana-agent-cr.yaml
  12. その instana-agent ネームスペース内のポッドを一覧表示して、デプロイメントを確認します:
    oc get pods -n instana-agent

    デプロイが完了すると、1つの instana-agent-controller-manager ポッド、ノードごとに1つの instana-agentDaemonSet ポッド、そして3 instana-agent-k8sensor つのポッドが表示され、いずれもステータ Running スが[status]となります。 設定されたプロキシを介してバックエンドへの接続が確立されると、クラスタは Instana のUI上で、設定されたゾーンおよびクラスタ名の下に表示されます。

エージェントがインストールされました。 今後の手順に関する詳細については、 「次の手順」 のセクションをご覧ください。

「 Helm 」チャートを使用したインストール

Helmチャートを使ってエージェントをインストールすることができます。 「 Helm 」チャートは、 DaemonSet を使用して、クラスタ内でスケジューリング可能なすべてのノードに「 Instana 」エージェントを追加します。

「 Helm 」チャートを使用して Instana エージェントをインストールするには、まず Helm バージョン3をインストールするか、バージョン3にアップグレードする必要があります。

Instana エージェントの Helm チャートは、 Red Hat OpenShift 4.x に対応しています。

「 Helm 」チャートを使用して、 Red Hat OpenShift に Instana エージェントをインストールするには、以下の手順を実行してください:

  1. Instana UIのホームページで、 「エージェントとコレクター」 をクリックします。 [ Instana ] の [エージェント] タブで、 [エージェントのインストール] を選択します。

  2. エージェントデプロイメントカタログページで、タイルOpenShift-Helmchart をクリックします。

  3. クラスタ名と(オプションで)クラスタを所属させたいエージェントゾーンを入力します。

    クラスタ名(<your_cluster_name>)は、このDaemonSetが監視するクラスタのカスタマイズ名です。

    エージェントゾーン(<your_zone_name>)は、インフラストラクチャマップに表示されるゾーンのグループ分けをカスタマイズするために使用されます。

    エージェント配備コードは、指定した値で更新されます。 他のすべての必要なパラメータは、エージェントデプロイメントコードにあらかじめ入力されています:

    INSTANA_AGENT_NAMESPACE=instana-agent
    oc login -u system:admin
    oc new-project ${INSTANA_AGENT_NAMESPACE}
    oc adm policy add-scc-to-user privileged -z instana-agent -n "${INSTANA_AGENT_NAMESPACE}"
    oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n "${INSTANA_AGENT_NAMESPACE}"
    helm install instana-agent \
    --repo https://agents.instana.io/helm \
    --namespace ${INSTANA_AGENT_NAMESPACE} \
    --set agent.key='<your_agent_key>' \
    --set agent.endpointHost='<your_host_agent_endpoint>' \
    --set agent.endpointPort=443 \
    --set cluster.name='<your_cluster_name>' \
    --set zone.name='<your_zone_name>' \
    instana-agent
  4. IBM Z または LinuxONE, に Instana エージェントをインストールする際は、インストールプロセス中に個別のゾーンを設定してください。 この分離が重要なのは、 Instana エージェントと、それが監視するアプリケーションのワークロードの両方が同じクラスター内にあるためです。

    Instana と監視対象のアプリケーションが別々にデプロイされる他の環境とは異なり、 IBM Z または LinuxONE の構成では、同じクラスターを共有します。 そのため、区域を隔離することが不可欠となります。 ゾーンを分離するには、 Instana がインストールされているノードに適切なラベルが付けられ、taintが設定されていることを確認してください。

    使用されるラベルが node-role.kubernetes.io/monitor=true. の場合、 Instana ノードに正しいラベルが付けられていることを確認するには、次のコマンドを実行してください:

    kubectl get nodes -l node-role.kubernetes.io/monitor=true

    Instana ノードが、 node.instana.io/monitor=trueサンプルテイントによって期待どおりにテイントされていることを確認するには、次のコマンドを実行してください:

    kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.taints[*]}{.key}{"="}{.value}{"\t"}{end}{"\n"}{end}' | grep 'node\.instana\.io/monitor'

    Instana ノードにラベルとテイントが設定されていることを確認したら、以下の手順に従ってください:

    1. ワークロードノードへのラベル付け アプリケーション・ワークロードを実行しているノードには、インフラストラクチャ・ノードと区別できるよう、適切なラベルが付けられていることを確認してください。

      NODE=<your node name>
      CLUSTER=<your cluster name>
      oc label node worker${NODE}.${CLUSTER_NAME} workload="true"
    2. 2つのゾーンを設定する

      • Instana ノードを モード INFRASTRUCTURE に設定します。
      • アプリケーションのワークロードノードを モード APM に設定します。
      • YAMLagent_values.yaml ファイルを作成し、そのファイル内にゾーンと、それぞれのアフィニティおよび許容度を指定します。
      zones:
        - name: workloads
          mode: APM
          affinity:
             nodeAffinity:
             requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                  - matchExpressions:
                      - key: workload
                        operator: Exists
        - name: instana-nodes
          mode: INFRASTRUCTURE
          tolerations:
            - key: node.instana.io/monitor
              operator: Equal
              effect: NoSchedule
              value: "true"
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                  - matchExpressions:
                      - key: node-role.kubernetes.io/monitor
                        operator: In
                        values:
                          - "true"

      このサンプル YAML ファイルでは、 Instana ノードにはラベルが付けられ、キー: でテイントが設定 node-role.kubernetes.io/monitor=truenode.instana.io/monitor=true されているものと仮定しています。 これらの値は、ご自身のノードのラベリングおよびテインティングの規則に合わせて更新してください。

      以下の例に示すように、エージェントのデプロイコードの最後に、独自のYAMLファイルを追加してください

      INSTANA_AGENT_NAMESPACE=instana-agent
      oc login -u system:admin
      oc new-project ${INSTANA_AGENT_NAMESPACE}
      oc adm policy add-scc-to-user privileged -z instana-agent -n "${INSTANA_AGENT_NAMESPACE}"
      oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n "${INSTANA_AGENT_NAMESPACE}"
      helm install instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace ${INSTANA_AGENT_NAMESPACE} \
      --set agent.key='<your_agent_key>' \
      --set agent.endpointHost='<your_host_agent_endpoint>' \
      --set agent.endpointPort=443 \
      --set cluster.name='<your_cluster_name>' \
      --set zone.name='<your_zone_name>' \
      instana-agent -f agent_values.yaml
  5. エージェントのデプロイメントコードを編集します。

    • インストールを設定するには、`--` --set フラグを使用してコマンドラインで値を指定するか、`--` -f フラグを使用して設定値を記述した ` YAML ` ファイルを指定することができます。 すべての設定パラメータの詳細な一覧と使用例については、 Instana の「 Helm 」チャートをご覧ください。 また、以下のトピックも参照してください:

    • オプション:静的エージェントを配置するには、フラグ '--set agent.image.name=containers.instana.io/instana/release/agent/static を設定する。

    • デフォルトで作成されるKubernetesサービスは、以下の項目をクラスタに公開する:

    • オプション:エージェントのエンドポイントに TLS 暗号化を追加する場合は、既存のシークレットを使用するか、証明書と秘密鍵を使用してください:

      • 既存のタイプ kubernetes.io/tls

        TLS 暗号化には、kubernetes.io/tlsタイプの既存のシークレットを使用できます。 ただし、インストール時に'secretNameと'--set 'agent.tls.secretName=<YOUR_SECRET_NAME>'を指定する必要があります。 そして、提供された秘密のファイルがエージェントに含まれます。

      • 証明書と秘密鍵を使用する

        証明書と秘密鍵は base64-encoded でなければなりません。 このバリアントを使用するには、 helm install コマンドを以下の追加パラメータを指定して実行してください:

        --set 'agent.tls.certificate=<YOUR_CERTIFICATE_BASE64_ENCODED>'
        --set 'agent.tls.key=<YOUR_PRIVATE_KEY_BASE64_ENCODED>'
        注:agent.tls.secretName が設定されている場合、 agent.tls.certificate および agent.tls.key は無視されます。
  6. エージェント展開コードをコピーして実行する。

これでエージェントがインストールされた。 インストール後にできることについては、「次にすること」のセクションをご覧ください。

エージェントを更新するには、オペレータ・インストールの更新を参照してください。

エアギャップ環境での Helm チャートを使用したインストール

Red Hat OpenShift エアギャップ環境で利用可能な内部コンテナレジストリを提供し、クラスター内でワークロードを実行するためのイメージを保存できます。

エージェントをインストールする前に、必ず以下のソフトウェアをインストールしてください:

  • OpenShift CLI (oc)
  • jq
  • Skopeo
注: 以下の手順は、 Red Hat Enterprise Linux ( 9.4 )で検証済みであり、ほとんどの Linux ディストリビューションに適用可能です。

エアギャップ環境において、 Helm チャートを使用して Instana エージェントをインストールするには、以下の手順を実行してください:

  1. 次のコマンドを実行して、 Red Hat OpenShift クラスタに管理者としてログインします:

    oc login --server=https://api.myopenshiftcluster.com:6443 -u kubeadmin -p $OPENSHIFT_PASSWORD
  2. 内部コンテナレジストリを、ジャンプホストからアクセスできるように公開します:

    oc patch configs.imageregistry.operator.openshift.io/cluster --type merge -p '{"spec":{"defaultRoute":true}}'
  3. レジストリに外部からアクセスする際に使用されるホスト名を取得します:

    HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
  4. Red Hat OpenShift クラスターに「instana」というプロジェクトを作成し(まだ作成されていない場合)、指定されたネームスペースへのイメージのプッシュを有効にします:

    oc get project instana || oc new-project instana
  5. レジストリのホスト情報を表示します:

    echo "${HOST}" # default-route-openshift-image-registry.apps.myopenshiftcluster.com
  6. 信頼できるIngressオペレーターの証明書を取得し、システムの認証局(CA)ディレクトリに追加します:

    oc extract secret/$(oc get ingresscontroller -n openshift-ingress-operator default -o json | jq '.spec.defaultCertificate.name // "router-certs-default"' -r) -n openshift-ingress --confirm

    この手順を省略すると、イメージをターゲットレジストリにプッシュしようとした際に、証明書に関する警告(例: tls: failed to verify certificate: x509: certificate signed by unknown authority)が表示される可能性があります。

  7. 次のコマンドを使用して、CAをシステムの信頼済み認証局ストアにインポートします:

    sudo mv tls.crt /etc/pki/ca-trust/source/anchors/
    sudo update-ca-trust
  8. Skopeo を使用して、送信元レジストリと送信先レジストリの両方にログインします:

    skopeo login -u kubeadmin -p $(oc whoami -t) $HOST
    skopeo login -u _ -p $AGENT_DOWNLOAD_KEY containers.instana.io
  9. 各コンポーネントの最新版を確認してください:

    LATEST_OPERATOR_VERSION=$(skopeo inspect docker://icr.io/instana/instana-agent-operator:latest | jq -r ".Labels.version")
    LATEST_AGENT_VERSION=$(skopeo inspect docker://containers.instana.io/instana/release/agent/static:latest | jq -r ".Labels.version")
    LATEST_K8S_SENSOR_VERSION=$(skopeo inspect docker://icr.io/instana/k8sensor:latest | jq -r '.Labels["org.opencontainers.image.revision"]')
  10. 必要なコンポーネントをローカルレジストリにコピーします:

    skopeo copy docker://icr.io/instana/instana-agent-operator:latest "docker://${HOST}/instana/instana-agent-operator:${LATEST_OPERATOR_VERSION}"
    skopeo copy docker://containers.instana.io/instana/release/agent/static:latest "docker://${HOST}/instana/instana-agent-static:${LATEST_AGENT_VERSION}"
    skopeo copy docker://icr.io/instana/k8sensor:latest "docker://${HOST}/instana/k8sensor:${LATEST_K8S_SENSOR_VERSION}"

エージェントの Helm チャートのデプロイ

Helm のグラフを取得するには、以下の手順に従ってください:

  1. エージェントのデプロイ用に新しいネームスペースを作成します:

    INSTANA_AGENT_NAMESPACE=instana-agent
    oc new-project ${INSTANA_AGENT_NAMESPACE}
  2. ジャンプホスト上の Helm チャートを取得する:

    helm pull instana-agent --repo https://agents.instana.io/helm --untar

    新規インストールではなくアップグレードを行う場合は、展開した Helm チャートディレクトリ内にあるフォルダ crds から、CRD(カスタムリソース定義)を手動で適用してください:

    oc apply -f instana-agent/crds/
  3. 新しいファイル custom-values.yaml を作成し、デフォルトの画像参照を、エアギャップ環境専用のものに上書きします:

    注: 注: Helm チャートをOCPクラスターにデプロイする際は、内部レジストリのURLを使用できます。 image-registry.openshift-image-registry.svc:5000/instana/instana-agent-operator:${LATEST_OPERATOR_VERSION} image-registry.openshift-image-registry.svc:5000/instana/instana-agent-static:${LATEST_AGENT_VERSION} image-registry.openshift-image-registry.svc:5000/instana/k8sensor:${LATEST_K8S_SENSOR_VERSION}

    以下のサンプル custom-values.yaml ファイルをご覧ください:

    cluster:
      name: demo-cluster
    
    zone:
      name: airgapped-demo
    
    agent:
      endpointHost: ingress-red-saas.instana.io
      endpointPort: 443
      key: xxx
      image:
        name: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-static
        tag: 1.290.20
    
      configuration_yaml: |
        # Manual a-priori configuration. Configuration will be only used when the sensor
        # is actually installed by the agent.
        # Host
        #com.instana.plugin.host:
        #  tags:
        #    - 'dev'
        #    - 'app1'
    
    k8s_sensor:
      image:
        name: image-registry.openshift-image-registry.svc:5000/instana/k8sensor
        tag: b4eac7d
    
    controllerManager:
      image:
        name: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-operator
        tag: v2.1.20
  4. エージェント DaemonSet およびリモートエージェントのデプロイを実行するために、「instana-agent」ユーザーまたはグループに必要な権限を付与してください:

    oc adm policy add-scc-to-user privileged -z instana-agent -n ${INSTANA_AGENT_NAMESPACE}
    oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n ${INSTANA_AGENT_NAMESPACE}
  5. 「instana-agent」ネームスペース内のすべてのサービスアカウントが「instana」ネームスペースのイメージにアクセスできるように、プルポリシーを調整します:

    oc policy add-role-to-group system:image-puller system:serviceaccounts:instana-agent -n instana
  6. 以下のコマンドを使用して、「./instana-agent」ディレクトリにある Helm チャートを、新しく作成した「instana-agent」ネームスペースにデプロイします

    helm install instana-agent \
       --namespace ${INSTANA_AGENT_NAMESPACE} \
       -f custom-values.yaml \
       ./instana-agent

デプロイメントの検証

クラスタにデプロイされたプライベートイメージを検証するには、以下の手順を実行してください:

  1. 次のコマンドを実行して、この instana-agent ネームスペース内のすべてのPodを一覧表示します:

    oc get pods -n instana-agent

    以下の回答例をご覧ください:

    NAME                                                READY   STATUS    RESTARTS   AGE
    instana-agent-6275r                                 1/1     Running   0          2m52s
    instana-agent-controller-manager-5c9bd89b7c-697mf   1/1     Running   0          3m
    instana-agent-k8sensor-5466f8cb4d-9j7p2             1/1     Running   0          2m52s
    instana-agent-k8sensor-5466f8cb4d-fdwsj             1/1     Running   0          2m52s
    instana-agent-k8sensor-5466f8cb4d-jstc4             1/1     Running   0          2m52s
    instana-agent-sjmtc                                 1/1     Running   0          2m52s
    instana-agent-z5plx                                 1/1     Running   0          2m52s

    各ワーカーノードにつき、3つの k8sensor ポッド、1つの instana-agent-controller-manager ポッド、および1 instana-agent つのポッドが実行されていることを確認してください。

  2. 次のコマンドを実行して、画像を検証してください:

    oc get ds,deployment -o yaml | grep "image:"

    以下の回答例をご覧ください:

    image: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-static:1.290.20
           image: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-operator:v2.1.20
           image: image-registry.openshift-image-registry.svc:5000/instana/k8sensor:b4eac7d

これでエージェントがインストールされた。 インストール後の手順については、 「次の手順」 のセクションをご覧ください。

エージェントのエンドポイントに関する詳細については、 「ホストエージェントの設定」 を参照してください。