Linux x86_64 に「 ZooKeeper 」データストアを作成する

ZooKeeper オペレーターをインストールし、データ・ストアをセットアップします。

注:Instana を初めてインストールする際は、Zookeeperの代わりにClickhouse-keeperを使用してください。

準備

外部リポジトリーからイメージをプルするために、オンラインおよびオフラインのホストが準備されていることを確認します。 また、正しい Helm リポジトリーが追加されていることも確認してください。

詳細については、 「データストアのインストール準備」 を参照してください。

ZooKeeper デプロイ用のオペレーターのバージョンとイメージタグ

ピン留めされた Helm チャートまたはオペレーターのバージョンには、以下のイメージが必要です。

表 1.ZooKeeper オペレーターのバージョンとイメージタグ
プラットフォーム オペレーターのバージョン Helm チャートのバージョン タグ付きのイメージ
Linux® x86_64 0.2.15 1.0.0 artifact-public.instana.io/self-hosted-images/3rd-party/operator/zookeeper: 0.2.15_v0.21.0 artifact-public.instana.io/self-hosted-images/3rd-party/datastore/zookeeper: 3.9.3_v0.21.0 artifact-public.instana.io/self-hosted-images/k8s/ kubectl : v1.35.2_v0.11.0

ZooKeeper のオンラインインストール

ZooKeeper データ・ストアをインストールするには、以下のステップを実行します。

  1. instana-zookeeper 名前空間を作成します。

    kubectl create namespace instana-zookeeper
     
  2. instana-zookeeper 名前空間のイメージ・プル・シークレットを作成します。 独自のダウンロード・キーを使用して <download_key> 値を更新します。

    kubectl create secret docker-registry instana-registry --namespace instana-zookeeper \
      --docker-username=_ \
      --docker-password=<download_key> \
      --docker-server=artifact-public.instana.io
     
  3. ZooKeeper オペレーターをインストールします。

    helm install zookeeper-operator -n instana-zookeeper instana/zookeeper-operator --create-namespace --version=1.0.0 --set image.repository=artifact-public.instana.io/self-hosted-images/3rd-party/operator/zookeeper --set image.tag=0.2.15_v0.21.0 --set global.imagePullSecrets={"instana-registry"}
     
  4. ZooKeeper インスタンスをインストールするには、 instana-clickhouse 名前空間が必要です。 instana-clickhouse 名前空間がクラスター内に存在するかどうかを確認します。 存在しない場合は、今すぐ作成することができる。

    1. instana-clickhouse 名前空間が存在するかどうかを確認します。
      kubectl get namespace | grep clickhouse
       
    2. instana-clickhouse 名前空間が存在しない場合は、ここで作成します。
      kubectl create namespace instana-clickhouse
       
  5. instana-clickhouse 名前空間のイメージ・プル・シークレットを作成します。 シークレットを作成する前に、エージェント・キーを使用して < download_key> 値を更新します。

    kubectl create secret docker-registry instana-registry \
      --namespace=instana-clickhouse \
      --docker-username=_ \
      --docker-password=<download_key> \
      --docker-server=artifact-public.instana.io
     
  6. YAML ファイルを作成します。例えば zookeeper.yaml、次のような ZooKeeper の設定を記述します:

    apiVersion: "zookeeper.pravega.io/v1beta1"
    kind: "ZookeeperCluster"
    metadata:
      name: "instana-zookeeper"
    spec:
      # For parameters and default values, see https://github.com/pravega/zookeeper-operator/tree/master/charts/zookeeper#configuration
      replicas: 3
      image:
        repository: artifact-public.instana.io/self-hosted-images/3rd-party/datastore/zookeeper
        tag: 3.9.3_v0.15.0
      pod:
        imagePullSecrets: [name: "instana-registry"]
        # Add the following Affinity snippet to schedule each pod on a different node. 
        # affinity:
        #   podAntiAffinity:
        #     requiredDuringSchedulingIgnoredDuringExecution:
        #       - labelSelector:
        #           matchExpressions:
        #             - key: kind
        #               operator: In
        #               values:
        #                 - "ZookeeperMember"
        #         topologyKey: kubernetes.io/hostname
        serviceAccountName: "zookeeper"
        # Add the following securityContext snippet for Kubernetes offerings other than OCP.
        # securityContext:
        #   runAsUser: 1000
        #   fsGroup: 1000
      config:
        tickTime: 2000
        initLimit: 10
        syncLimit: 5
        maxClientCnxns: 0
        autoPurgeSnapRetainCount: 20
        autoPurgePurgeInterval: 1
      persistence:
        reclaimPolicy: Delete
        spec:
          resources:
            requests:
              storage: "10Gi"
     
  7. ZooKeeper のデプロイおよび検証 (オンラインおよびオフライン)のステップを実行します。

ZooKeeper のオフラインインストール

インストールの準備時に外部レジストリーから ZooKeeper イメージをまだプルしていない場合は、ここでプルできます。 要塞ホストで以下のコマンドを実行します。 次に、それらの画像を、エアギャップ環境にある Instana のホストにコピーします。

docker pull artifact-public.instana.io/self-hosted-images/3rd-party/operator/zookeeper:0.2.15_v0.21.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/zookeeper:3.9.3_v0.21.0
docker pull artifact-public.instana.io/self-hosted-images/k8s/kubectl:v1.35.2_v0.11.0
         

Instana ホストで、以下の手順を実行してください。

  1. イメージを内部イメージ・レジストリーに再タグ付けします。

    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/operator/zookeeper:0.2.15_v0.21.0 <internal-image-registry>/operator/zookeeper:0.2.15_v0.21.0
    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/zookeeper:3.9.3_v0.21.0 <internal-image-registry>/zookeeper:3.9.3_v0.21.0
    docker tag artifact-public.instana.io/self-hosted-images/k8s/kubectl:v1.35.2_v0.11.0 <internal-image-registry>/self-hosted-images/k8s/kubectl:v1.35.2_v0.11.0
                   
  2. イメージを要塞ホスト上の内部イメージ・レジストリーにプッシュします。

    docker push <internal-image-registry>/operator/zookeeper:0.2.15_v0.21.0
    docker push <internal-image-registry>/zookeeper:3.9.3_v0.21.0
    docker push <internal-image-registry>/self-hosted-images/k8s/kubectl:v1.35.2_v0.11.0
                   
  3. instana-zookeeper 名前空間を作成します。

    kubectl create namespace instana-zookeeper
     
  4. オプション:内部イメージ・レジストリの認証が必要な場合は、イメージ・プル・シークレットを作成します。

    kubectl create secret docker-registry <secret_name> --namespace instana-zookeeper \
    --docker-username=<registry_username> \
    --docker-password=<registry_password> \
    --docker-server=<internal-image-registry>:<internal-image-registry-port> \
    --docker-email=<registry_email>
     
  5. ZooKeeper オペレーターをインストールします。 前のステップでイメージ・プル・シークレットを作成した場合は、次のコマンドに--set imagePullSecrets[0].name="<internal-image-registry-pull-secret>"を追加する。

    helm install zookeeper-operator -n instana-zookeeper zookeeper-operator-1.0.0.tgz --version=1.0.0 --set image.repository=<internal-image-registry>/operator/zookeeper --set image.tag=0.2.15_v0.21.0 --set hooks.image.repository=<internal-image-registry>/self-hosted-images/k8s/kubectl --set hooks.image.tag=v1.35.2_v0.11.0
                   
  6. ZooKeeper インスタンスをインストールするには、 instana-clickhouse 名前空間が必要です。 instana-clickhouse 名前空間がクラスター内に存在するかどうかを確認します。 存在しない場合は、今すぐ作成することができる。

    1. instana-clickhouse 名前空間が存在するかどうかを確認します。
      kubectl get namespace | grep clickhouse
       
    2. instana-clickhouse 名前空間が存在しない場合は、ここで作成します。
      kubectl create namespace instana-clickhouse
       
  7. YAML ファイルを作成します。例えば zookeeper.yaml、次のような ZooKeeper の設定を記述します:

    apiVersion: "zookeeper.pravega.io/v1beta1"
    kind: "ZookeeperCluster"
    metadata:
      name: "instana-zookeeper"
    spec:
      # For parameters and default values, see https://github.com/pravega/zookeeper-operator/tree/master/charts/zookeeper#configuration
      replicas: 3
      image:
        repository: <internal-image-registry>/zookeeper
        tag: 3.9.3_v0.16.0
      pod:
        imagePullSecrets: [name: "<internal-registry-secret>"]
        # Add the following Affinity snippet to schedule each pod on a different node. 
        # affinity:
        #   podAntiAffinity:
        #     requiredDuringSchedulingIgnoredDuringExecution:
        #       - labelSelector:
        #           matchExpressions:
        #             - key: kind
        #               operator: In
        #               values:
        #                 - "ZookeeperMember"
        #         topologyKey: kubernetes.io/hostname
        serviceAccountName: "zookeeper"
        # Add the following securityContext snippet for Kubernetes offerings other than OCP.
        # securityContext:
        #   runAsUser: 1000
        #   fsGroup: 1000
      config:
        tickTime: 2000
        initLimit: 10
        syncLimit: 5
        maxClientCnxns: 0
        autoPurgeSnapRetainCount: 20
        autoPurgePurgeInterval: 1
      persistence:
        reclaimPolicy: Delete
        spec:
          resources:
            requests:
              storage: "10Gi"
     
  8. ZooKeeper のデプロイおよび検証 (オンラインおよびオフライン)のステップを実行します。

ZooKeeper の展開と検証(オンラインおよびオフライン)

以下のステップを実行して、 ZooKeeper インスタンスをデプロイし、データ・ストアを作成します。

  1. ZooKeeperをデプロイします。

    kubectl apply -f zookeeper.yaml -n instana-clickhouse
     

    ClickHouse には、専用の ZooKeeper クラスターが必要であるため、 ZooKeeper は instana-clickhouse 名前空間にインストールされます。

  2. ZooKeeper オペレーター・ポッドが実行されているかどうかを確認します。

    kubectl get pods -n instana-zookeeper
     

    サンプル出力:

    NAME                                          READY   STATUS    RESTARTS   AGE
    instana-zookeeper-operator-7fccd8fd77-9lww5   1/1     Running   0          74s
     

    ZooKeeper が機能しているかどうかを確認します。

    kubectl get all -n instana-clickhouse
     

    次の出力例を参照してください。

    NAME                      READY   STATUS    RESTARTS   AGE
    pod/instana-zookeeper-0   1/1     Running   0          119s
    pod/instana-zookeeper-1   1/1     Running   0          82s
    pod/instana-zookeeper-2   1/1     Running   0          47s
    
    NAME                                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                        AGE
    service/instana-zookeeper-admin-server   ClusterIP   192.168.1.126   <none>        8080/TCP                                       2m
    service/instana-zookeeper-client         ClusterIP   192.168.1.13    <none>        2181/TCP                                       2m
    service/instana-zookeeper-headless       ClusterIP   None            <none>        2181/TCP,2888/TCP,3888/TCP,7000/TCP,8080/TCP   2m
    
    NAME                                 READY   AGE
    statefulset.apps/instana-zookeeper   3/3     2m3s