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 エージェントをデプロイします。

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

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

「 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["com.instana.commit.id"]')
  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

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

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