Red Hat OpenShift へのエージェントのインストール
要件に応じて、さまざまな方法を用いて、 Red Hat OpenShift クラスタに Instana エージェントをインストールできます。 以下のリストを参照して、前提条件を確認し、利用可能なすべてのインストール方法について確認した上で、 Red Hat OpenShift にエージェントをインストールしてください:
前提条件
エージェントのインストール方法を選択する
以下の方法を使用して、 Red Hat OpenShift クラスタに Instana エージェントをインストールできます
IBM Z または LinuxONE プラットフォーム上の Red Hat OpenShift にエージェントをインストールするには、 Helm チャート(オンライン) をご利用ください。
オペレーターを使用してインストールする
オペレーターを使用して Red Hat OpenShift に Instana エージェントをインストールするには、以下の手順を実行してください:
オペレータのインストールを続行する前に、前提条件の手順を完了してください。
以下のいずれかの方法でオペレーターを取り付ける:
Operator Lifecycle Manager(OLM) を使用してオペレータをインストールします(Red Hat OpenShift で推奨)。
OLM を使用してオペレーターをインストールする
OLM を使用して Red Hat OpenShift に Instana エージェントをインストールするには、以下の手順を実行してください:
OperatorHub.io または 「 Red Hat OpenShift 」のコンテナ化アプリケーションカタログから、 Instana エージェントオペレーターをインストールしてください。
まだターゲットネームスペースがない場合は、 Instana エージェントをインストールする必要がある場所にネームスペースを作成してください。 例えば、名前空間「
instana-agent」を作成して演算子を実行することができる。 エージェントは、オペレーターと同じ名前空間で実行する必要はありません。オペレータを手動でインストールするセクションのステップ2からステップ6に従い、エージェントのカスタムリソースを作成し、カスタムリソースを適用します。 オペレーターはカスタムリソースから設定を取得し、 Instana エージェントをデプロイします。
オペレーターを手動でインストールする
Red Hat OpenShift にオペレーターを手動でインストールするには、以下の手順を実行します:
Instana UIのホームページで、 「エージェントとコレクター」 をクリックします。 「 Instana 」の「エージェント」タブで、 「エージェントのインストール」 を選択します。
エージェント・デプロイメント・カタログ・ページで、OpenShift- Operator タイルをクリックします。
以下のコマンドを使用して、最新のオペレーター・バージョンをデプロイする:
kubectl apply -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yamlこのコマンドを実行すると、オペレータは作成したネームスペースで稼働し、'
instana-agentカスタム・リソースが作成されるのを待ちます。クラスタ名と(オプションで)クラスタを所属させたいエージェントゾーンを入力します。
クラスタ名(<your_cluster_name>)は、このDaemonSetが監視するクラスタのカスタマイズ名です。
エージェントゾーン(<your_zone_name>)は、インフラストラクチャマップに表示されるゾーンのグループ分けをカスタマイズするために使用されます。
「 Instana 」のUIで提供されている「 YAML 」テンプレートをコピーして、カスタムリソースの YAML ファイルを作成します。
「 YAML 」テンプレートには、 エージェントキー、 エージェントのホストエンドポイント、クラスター名、およびエージェントゾーンが事前に入力されています。
カスタムリソースの YAML ファイルを編集します。 YAML ファイルの例については、 instana_v1_extended_instanaagent.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 でなければなりません。
このバリアントを使用するには、以下の 2 つのパラメーターをカスタム・リソース yaml ファイルに追加します。
agent.tls.certificateagent.tls.key
注: が設定されているagent.tls.secretName場合、agent.tls.certificateおよびは無視agent.tls.keyされます。オプション:以下の値を置き換えることができる:
agent.env: エージェントのプロキシ設定など、エージェントの環境変数を指定するためにこのフィールドを使用します。 可能な環境値について詳しくは、エージェント構成を参照してください。 以下の例を参照してください。spec: agent: env: INSTANA_AGENT_TAGS: stagingagent.configuration_yaml: このフィールドを使用して、エージェント設定ファイルconfiguration.yamlを指定します。 以下の例を参照してください。spec: agent: configuration_yaml: | # Example of configuration yaml template # Host com.instana.plugin.host: tags: - 'dev' - 'app1'詳細については、 「エージェント設定ファイルを使用したホストエージェントの設定」 を参照してください。
静的エージェントをデプロイする場合は、カスタムリソースの YAML ファイルに静的エージェントのイメージを設定してください。 静的エージェント・イメージをリストアップするには、'
agent.image.nameを'containers.instana.io/instana/release/agent/static設定する。 以下の例を参照してください。spec: agent: image: name: containers.instana.io/instana/release/agent/static
カスタムリソース 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 エージェントをインストールするには、以下の手順を実行してください:
Instana UIのホームページで、 「エージェントとコレクター」 をクリックします。 [ Instana ] の [エージェント] タブで、 [エージェントのインストール] を選択します。
エージェントデプロイメントカタログページで、タイルOpenShift-Helmchart をクリックします。
クラスタ名と(オプションで)クラスタを所属させたいエージェントゾーンを入力します。
クラスタ名(
<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-agentIBM 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=trueInstana ノードが、
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 ノードにラベルとテイントが設定されていることを確認したら、以下の手順に従ってください:
ワークロードノードへのラベル付け アプリケーション・ワークロードを実行しているノードには、インフラストラクチャ・ノードと区別できるよう、適切なラベルが付けられていることを確認してください。
NODE=<your node name> CLUSTER=<your cluster name> oc label node worker${NODE}.${CLUSTER_NAME} workload="true"2つのゾーンを設定する
- Instana ノードを モード
INFRASTRUCTUREに設定します。 - アプリケーションのワークロードノードを モード
APMに設定します。 - YAML
agent_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- Instana ノードを モード
エージェントのデプロイメントコードを編集します。
インストールを設定するには、`--`
--setフラグを使用してコマンドラインで値を指定するか、`--`-fフラグを使用して設定値を記述した ` YAML ` ファイルを指定することができます。 すべての設定パラメータの詳細な一覧と使用例については、 Instana の「 Helm 」チャートをご覧ください。 また、以下のトピックも参照してください:オプション:静的エージェントを配置するには、フラグ '
--set agent.image.name=containers.instana.io/instana/release/agent/staticを設定する。デフォルトで作成されるKubernetesサービスは、以下の項目をクラスタに公開する:
- OpenTelemetry gRPC 経由でのデータ取り込み
otlp用エンドポイント - Prometheus の導入
remote_writeAPI - Web SDK のトレース
- その他のエージェントAPI。
- OpenTelemetry gRPC 経由でのデータ取り込み
オプション:エージェントのエンドポイントに TLS 暗号化を追加する場合は、既存のシークレットを使用するか、証明書と秘密鍵を使用してください:
既存のタイプ
kubernetes.io/tlsTLS 暗号化には、
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 は無視されます。
エージェント展開コードをコピーして実行する。
これでエージェントがインストールされた。 インストール後にできることについては、「次にすること」のセクションをご覧ください。
エージェントを更新するには、オペレータ・インストールの更新を参照してください。
エアギャップ環境での Helm チャートを使用したインストール
Red Hat OpenShift エアギャップ環境で利用可能な内部コンテナレジストリを提供し、クラスター内でワークロードを実行するためのイメージを保存できます。
エージェントをインストールする前に、必ず以下のソフトウェアをインストールしてください:
- OpenShift CLI (oc)
- jq
- Skopeo
エアギャップ環境において、 Helm チャートを使用して Instana エージェントをインストールするには、以下の手順を実行してください:
次のコマンドを実行して、 Red Hat OpenShift クラスタに管理者としてログインします:
oc login --server=https://api.myopenshiftcluster.com:6443 -u kubeadmin -p $OPENSHIFT_PASSWORD内部コンテナレジストリを、ジャンプホストからアクセスできるように公開します:
oc patch configs.imageregistry.operator.openshift.io/cluster --type merge -p '{"spec":{"defaultRoute":true}}'レジストリに外部からアクセスする際に使用されるホスト名を取得します:
HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')Red Hat OpenShift クラスターに「instana」というプロジェクトを作成し(まだ作成されていない場合)、指定されたネームスペースへのイメージのプッシュを有効にします:
oc get project instana || oc new-project instanaレジストリのホスト情報を表示します:
echo "${HOST}" # default-route-openshift-image-registry.apps.myopenshiftcluster.com信頼できる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)が表示される可能性があります。次のコマンドを使用して、CAをシステムの信頼済み認証局ストアにインポートします:
sudo mv tls.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trustSkopeo を使用して、送信元レジストリと送信先レジストリの両方にログインします:
skopeo login -u kubeadmin -p $(oc whoami -t) $HOST skopeo login -u _ -p $AGENT_DOWNLOAD_KEY containers.instana.io各コンポーネントの最新版を確認してください:
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"]')必要なコンポーネントをローカルレジストリにコピーします:
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 のグラフを取得するには、以下の手順に従ってください:
エージェントのデプロイ用に新しいネームスペースを作成します:
INSTANA_AGENT_NAMESPACE=instana-agent oc new-project ${INSTANA_AGENT_NAMESPACE}ジャンプホスト上の Helm チャートを取得する:
helm pull instana-agent --repo https://agents.instana.io/helm --untar新規インストールではなくアップグレードを行う場合は、展開した Helm チャートディレクトリ内にあるフォルダ
crdsから、CRD(カスタムリソース定義)を手動で適用してください:oc apply -f instana-agent/crds/新しいファイル
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エージェント 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}「instana-agent」ネームスペース内のすべてのサービスアカウントが「instana」ネームスペースのイメージにアクセスできるように、プルポリシーを調整します:
oc policy add-role-to-group system:image-puller system:serviceaccounts:instana-agent -n instana以下のコマンドを使用して、「./instana-agent」ディレクトリにある Helm チャートを、新しく作成した「instana-agent」ネームスペースにデプロイします
helm install instana-agent \ --namespace ${INSTANA_AGENT_NAMESPACE} \ -f custom-values.yaml \ ./instana-agent
デプロイメントの検証
クラスタにデプロイされたプライベートイメージを検証するには、以下の手順を実行してください:
次のコマンドを実行して、この
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ポッド、および1instana-agentつのポッドが実行されていることを確認してください。次のコマンドを実行して、画像を検証してください:
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
これでエージェントがインストールされた。 インストール後の手順については、 「次の手順」 のセクションをご覧ください。
エージェントのエンドポイントに関する詳細については、 「ホストエージェントの設定」 を参照してください。