Kubernetes へのエージェントのインストール

Instana エージェントは、 Kubernetes クラスタ内のオンライン環境またはオフライン(エアギャップ)環境にインストールできます。 以下のリストを参照して、前提条件を確認し、利用可能なすべてのインストール方法について確認した上で、 Kubernetes にエージェントをインストールしてください。

前提条件

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

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

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

ホストエージェントは、 Kubernetes パッケージマネージャー( Helm )またはオペレーターを使用してインストールできます。 どちらのインストール方法も、オフライン(エアギャップ)環境およびオンライン環境の両方で利用可能です:

ホストが自前でホストしているエージェントリポジトリと通信できるオフライン(エアギャップ)環境の場合:

Helm チャートの利用可能なすべての設定オプションについては、 「設定リファレンス」 を参照してください。 これらのコンフィギュレーション・オプションは、オペレーターCRDにも同様に適用されます。

エアギャップ環境へのエージェントのインストール

エアギャップ環境にエージェントをインストールするには、2つの方法があります:

エアギャップ環境において、 Helm チャートを使用してインストールする

エアギャップ環境にエージェントをインストールするには、以下の手順を実行します:

注: 以下のインストール手順では、 CentOS ( Linux )ディストリビューションを使用していますが、これらの手順はサポートされている他のすべてのディストリビューションにも適用されます。
  1. 以下のコマンドを実行してDockerをインストールする:

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    sudo systemctl start docker
  2. 以下のコマンドを実行してHelmをインストールする:

    sudo su
    yum install -y epel-release
    yum install -y snapd
    systemctl enable --now snapd.socket
    ln -s /var/lib/snapd/snap /snap
    snap install helm --classic
    PATH="$PATH:/snap/bin/"
    helm version
  3. 以下の手順でMinikubeをインストールします:

    注: これらの手順は、対象環境を示すための例です。
    1. Kubernetesリポジトリを追加する:

      cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
      [kubernetes]
      name=Kubernetes
      baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
      enabled=1
      gpgcheck=1
      gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
      exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
      EOF
    2. kubectl コマンドラインツールをインストールします:

      sudo yum install -y kubectl
    3. Minikube RPMパッケージをダウンロードします:

      curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
    4. Minikube RPMパッケージをインストールします:

      sudo rpm -Uvh minikube-latest.x86_64.rpm
    5. Dockerて Kubernetesクラスターを立ち上げる:

      minikube start --force --driver=docker
    6. Minikubeで使用できるようにDocker環境を設定します:

      eval $(minikube docker-env)
    7. Kubernetesクラスターをチェックする:

      kubectl cluster-info
  4. エアギャップ環境に転送するために必要なDockerイメージをプルする:

    1. エージェントキーを使用して、 Instana ( Container Registry )にログインしてください:

      docker login https://containers.instana.io/v2 -u _ -p <agentKey>
    2. Instana ( Container Registry )からエージェントの最新版を取得してください:

      docker pull containers.instana.io/instana/release/agent/static:latest
    3. 最新の Instana エージェントオペレーターイメージを取得します:

      docker pull icr.io/instana/instana-agent-operator:latest
    4. Instana Kubernetes センサーの最新バージョンを取得します:

      docker pull icr.io/instana/k8sensor:latest
    5. Dockerレジストリからログアウトする:

      docker logout
    6. Dockerイメージを'.tarファイルに変換する:

      docker images
      docker tag <instanaAgentImageID> instana/agent
      docker save instana/agent > instana-agent.tar
      docker tag <operatorImagerId> instana/instana-agent-operator
      docker save instana/instana-agent-operator > instana-agent-operator.tar
      docker tag <k8SensorID> instana/k8sensor
      docker save instana/k8sensor > instana-k8sensor.tar
    7. ファイル(instana-agent.tar, instana-agent-operator.tar, および instana-k8sensor.tar)を、エージェントをインストールしたいエアギャップ環境のホストにコピーします。

    8. エアギャップされたホストから現在の画像を削除する:

      docker rmi -f <instanaAgentImageID> <operatorImagerId> <k8SensorID>
    9. ファイル(instana-agent.tarinstana-agent-operator.tarおよび instana-k8sensor.tar.tar )から画像を読み込む:

    docker load --input instana-agent.tar
    docker load --input instana-agent-operator.tar
    docker load --input instana-k8sensor.tar
  5. Dockerレジストリー・サーバーを実行し、イメージをプッシュする:

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    docker tag instana/agent:latest localhost:5000/instana-agent
    docker push localhost:5000/instana-agent
    docker tag instana/instana-agent-operator:latest localhost:5000/instana-agent-operator
    docker push localhost:5000/instana-agent-operator
    docker tag instana/k8sensor:latest localhost:5000/instana-k8sensor
    docker push localhost:5000/instana-k8sensor
    #Delete all images related to the agent:
    docker rmi -f <instanaAgentImageID> <k8SensorID> <operatorImagerId>
  6. 以下のリポジトリから Instana および Helm のチャートを取得します:

    helm pull instana-agent --repo https://agents.instana.io/helm --untar instana-agent
    注: 現在のディレクトリにある最新の Instana エージェント用 Helm チャートファイルを確認してください。
  7. Instana エージェントを Kubernetes クラスターにデプロイします。

    注:Instana エージェントの Helm チャート(バージョン 2.0.0 以前)には、この instana-agent/crds フォルダは存在しません。 したがって、この kubectl apply -f instana-agent/crds 手順は不要です。
    kubectl apply -f instana-agent/crds && helm upgrade --install --create-namespace \
       --namespace instana-agent \
       --set agent.key=<agentKey> \
       --set agent.endpointHost=ingress-red-saas.instana.io \
       --set agent.endpointPort=443 \
       --set cluster.name='mip-back-test' \
       --set zone.name='mip-gke-zone' \
       --set k8s_sensor.deployment.enabled=true \
       --set k8s_sensor.image.name=localhost:5000/instana-k8sensor \
       --set k8s_sensor.image.tag=latest \
       --set k8s_sensor.image.pullPolicy=IfNotPresent  \
       --set agent.image.name=localhost:5000/instana-agent \
       --set agent.image.tag=latest \
       --set agent.image.pullPolicy=IfNotPresent  \
       --set controllerManager.image.name=localhost:5000/instana-agent-operator \
       --set controllerManager.image.tag=latest \
       instana-agent instana-agent/

    <agentKey> を入力し、 <agent.endpointHost><agent.endpointPort><k8_senosr.image.name>、および < agent.image.name > を編集してください。また、ディレクトリ内の最新の Instana エージェント用 Helm チャートファイルに置き換えて instana-agent-1.2.61.tgz ください。

  8. 以下のコマンドでポッドをチェックする:

    kubectl get all -n instana-agent

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

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

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

  1. 以下の画像を引っ張ってくる。

    docker pull containers.instana.io/instana/release/agent/static:latest
    docker pull icr.io/instana/k8sensor:latest
    docker pull icr.io/instana/instana-agent-operator:latest
  2. 取得した画像をローカルの画像レジストリに再タグ付けする。

    docker tag <public-image> <local-registry-image>
  3. 再タグ付けされた画像をローカル画像レジストリにプッシュする。

    docker push <local-registry-image>
  4. 対象のKubernetesネームスペースにイメージのプルシークレットDockersecret)を作成する:

    kubectl create secret -n instana-agent docker-registry local-registry-image-pull-secret \
         --docker-server=<your_local_image_registry> \
         --docker-username= # Replace with ARTIFACTORY_USERNAME \
         --docker-password= # Replace with ARTIFACTORY_PASSWORD
  5. GitHub: から YAML を取得してください

    curl -L -o instana-agent-operator.yaml https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml
  6. 画像参照をプライベートレジストリに置き換える。 例えば、'icr.io/instana/instana-agent-operator:2.1.8はプライベート・レジストリーのオペレーター・イメージである。

  7. オペレータを配置するために設定を適用します。

    kubectl apply -f instana-agent-operator.yaml
  8. OpenShift CLI がocインストールされていない場合は、 「 OpenShift CLI のはじめに 」からダウンロードし、前のセクションで作成したイメージのプルシークレットにアクセスできるよう、サービスアカウントをパッチ適用してください:

    oc patch serviceaccount instana-agent-operator -p '{"imagePullSecrets": [{"name": "local-registry-image-pull-secret"}]}' -n instana-agent
  9. agent.yamlファイルを作成し、エージェントのカスタムリソースを特定のイメージバージョンに更新します:

    apiVersion: instana.io/v1
    kind: InstanaAgent
    metadata:
      name: instana-agent
      namespace: instana-agent
    spec:
      zone:
        name: # (optional) name of the zone of the host
      cluster:
        name: # cluster name.
      agent:
        image:
          name: # private registry static agent image.
          tag: # agent tag
          pullSecrets:
            - name: local-registry-image-pull-secret
        key: # fetch the download key from the Instana UI > Agents > Install Agent > Kubernetes Operator
        endpointHost: <your-ingress-endpoint>
        endpointPort: "443"
        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: # private registry k8 sensor image.
          tag: # k8 sensor tag
  10. カスタムリソースをデプロイする:

    $ kubectl apply -f agent.yaml
  11. すべてのポッドが正しく始動していることを確認する。

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

オンライン環境へのエージェントのインストール

Kubernetes クラスタに Instana エージェントをインストールするには、以下の方法を使用することをお勧めします:

エージェントを再インストールする場合は、エージェントのクラスタレベルのオブジェクトをすべて削除するなど、エージェントがきれいにアンインストールされていることを確認してください。 詳細については、 Kubernetes の「 Instana エージェントのアンインストール 」をご覧ください。

「Operator」および「 Helm 」のチャートは、かなり頻繁に新バージョンがリリースされています。 修正、改善、新機能に関する最新情報を常に把握しておくため、Operatorまたは Helm チャートの最新版が実行されていることを確認してください。

「Operator」または「 Helm 」チャートの最新バージョンを確認するには、以下のトピックを参照してください:

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

エージェントをインストールするには、 Instana が提供する Kubernetes オペレーターを使用できます。 以下の手順に従います。

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

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

  3. 以下のようにオペレーターをデプロイします。 このコマンドは、最新の Operator をインストールします。

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

    このコマンドを実行すると、オペレーターは名前空間内で稼働状態 instana-agentになり、カスタムリソース instana-agent が作成されるのを待機します。

    DockerHub および Red Hat レジストリにおける latestInstana エージェントのOperatorイメージのタグはサポートされていません。

    Instana Agent Operator の新しいバージョンを入手するには、前述の通り、 Operator の「 GitHub Releases」ページから最新の Operator YAML に更新してください。

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

    クラスタ名(<your_cluster_name>)は、このデーモンセットが監視するクラスタのカスタマイズ名です。

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

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

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

  6. カスタムリソース「 YAML 」ファイルを編集します:

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

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

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

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

      • 既存の秘密を使う

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

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

        証明書と秘密鍵は base64-encoded でなければなりません。 このバリアントを使用するには、カスタムリソースの YAML ファイルに以下のパラメータを追加してください:

        • agent.tls.certificate
        • agent.tls.key
        注: が設定されている agent.tls.secretName 場合、 agent.tls.certificate およびは無視 agent.tls.key されます。
    • 静的ホストエージェントをデプロイする場合は、カスタムリソースの YAML ファイルに静的エージェントイメージを設定してください。 静的ホスト・エージェント・イメージをリストアップするには、'agent.image.nameを'containers.instana.io/instana/release/agent/static設定する。 以下の例を参照してください。

      spec:
         agent:
           image:
             name: containers.instana.io/instana/release/agent/static
    • オプション:以下の値を置き換えることができる:

      • 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'

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

    • (オプション):`controller-manager` ポッドに許容誤差を追加するには、`controller-manager.conf` ファイル instana-agent.customresource.yaml を手動で編集することもできます。 利用可能な設定オプションの詳細については、 Canonical設定ファイルを参照してください。
  7. カスタムリソース YAML ファイルを適用します:

    kubectl apply -f instana-agent.customresource.yaml

    ここには、カスタムリソースの YAMLinstana-agent.customresource.yaml ファイルの名前を指定します。

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

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

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

Helm チャートを使用してインストールする

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

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

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

Helmチャートを使用してエージェントをインストールするには、以下の手順を実行します:

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

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

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

    クラスタ名(<your_cluster_name>)は、このデーモンセットが監視するクラスタのカスタマイズ名です。

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

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

    helm install instana-agent
    --repo https://agents.instana.io/helm \
    --namespace instana-agent \
    --create-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

    あるいは、 values.yaml をローカルに保存し、必須項目を手動で設定してください。 その後、以下のコマンドを実行します。

    helm install instana-agent
    --repo https://agents.instana.io/helm \
    --namespace instana-agent \
    --create-namespace \
    -f values.yaml
    instana-agent
  4. エージェント配置コードを編集する:

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

    • 静的ホストエージェントを配備したい場合は、フラグ'--set agent.image.name=containers.instana.io/instana/release/agent/staticを設定する。

    • エージェントのエンドポイントで 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 されます。
    • Kubernetes 環境で、 Helm リポジトリへのアクセスと Instana バックエンドへの接続に異なるプロキシが必要な場合は、インストール時にそれぞれ別のプロキシ設定を行うことができます。 設定オプションの詳細については、 「リポジトリと Instana バックエンド用の個別のプロキシ」 を参照してください。

  5. エージェント展開コードをコピーして実行する。

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

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