コンテンツにスキップ

OpenDistro#

OpenDistroクラスタをインストールするには、Lagoonがそれと安全に通信できるようにTLSとシークレットを設定する必要があります。いくつかのJSONファイルを作成する必要があります - これらを、インストールプロセス全体を通じて作成してきた値のファイルと同じディレクトリに置いてください。

OpenDistro Helmをインストールします。詳細はhttps://opendistro.github.io/for-elasticsearch-docs/docs/install/helm/を参照してください。

キーと証明書の作成#

  1. 証明書の生成

注意:

CFSSLはCloudFlareのPKI/TLSスイスアーミーナイフです。これはコマンドラインツールであり、TLS証明書の署名、検証、バンドル化を行うHTTP APIサーバです。ビルドにはGo 1.12+が必要です。

1. CFSSLをインストールします: https://github.com/cloudflare/cfssl 2. CAを生成します。次のファイルが必要です:

ca-csr.json
{
  "CN": "ca.elasticsearch.svc.cluster.local",
  "hosts": [
    "ca.elasticsearch.svc.cluster.local"
  ],
  "key": {
    "algo": "ecdsa",
    "size": 256
  },
  "ca": {
  "expiry": "87600h"
  }
}
  1. 次の2つのコマンドを実行します :

    証明書の生成
    cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
    rm ca.csr
    

    ca-key.pemca.pemが生成されます。これがあなたのCAキーと自己署名証明書です。

  2. 次に、ノードのピーリング証明書を生成します。次の2つのファイルが必要です:

    ca-config.json
    {
      "signing": {
        "default": {
          "expiry": "87600h"
        },
        "profiles": {
          "peer": {
              "expiry": "87600h",
              "usages": [
                "signing",
                  "key encipherment",
                  "server auth",
                  "client auth"
              ]
            },
          "client": {
              "expiry": "87600h",
              "usages": [
                "signing",
                "key encipherment",
                "client auth"
              ]
          }
        }
      }
    }
    
    node.json
    {
      "hosts": [
        "node.elasticsearch.svc.cluster.local"
      ],
      "CN": "node.elasticsearch.svc.cluster.local",
      "key": {
        "algo": "ecdsa",
        "size": 256
      }
    }
    
  3. 次の2つのコマンドを実行します:

    証明書キーの生成
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer node.json | cfssljson -bare node
    rm node.csr
    

    node.pemnode-key.pemが得られます。これがESクラスターのノードで使用されるピア証明書になります。

  4. 次に、以下のコマンドでキーをJavaがサポートする形式に変換します:

    キー形式の変換
    openssl pkey -in node-key.pem -out node-key.pkcs8
    
  5. 次に、管理者証明書を生成します。次のファイルが必要です:

    admin.json
    {
      "CN": "admin.elasticsearch.svc.cluster.local",
      "key": {
        "algo": "ecdsa",
        "size": 256
      }
    }
    
  6. 次の2つのコマンドを実行します:

    管理者証明書キーの生成
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client admin.json | cfssljson -bare admin
    rm admin.csr
    

    admin.pemadmin-key.pemが得られます。これがopendistro-securityプラグインで管理コマンドを実行するために使用される証明書になります。

  7. 次に、以下のコマンドでキーをJavaがサポートする形式に変換します:

    キー形式の変換
    openssl pkey -in admin-key.pem -out admin-key.pkcs8
    

OpenDistroのインストール#

キーと証明書を手に入れたので、インストールを続けることができます。

  1. ハッシュ化されたパスワードを生成します。

    1. elasticsearch-secrets-values.yamlには2つのハッシュ化されたパスワードが必要です。以下のコマンドでそれらを作成します(2回実行し、ランダムなパスワードを入力し、プレーンテキストとハッシュ化されたパスワードの両方を保存します)。
    ハッシュ化されたパスワードを生成
    docker run --rm -it docker.io/amazon/opendistro-for-elasticsearch:1.12.0 sh -c "chmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh; /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh"
    
  2. secretsを作成します:

    1. elasticsearch-secrets-values.yamlを作成する必要があります。このgistを参考にしてください:https://gist.github.com/Schnitzel/43f483dfe0b23ca0dddd939b12bb4b0b
  3. 以下のコマンドでsecretsをインストールします:

    secretsのインストール
    helm repo add incubator https://charts.helm.sh/incubator`
    helm upgrade --namespace elasticsearch --create-namespace --install elasticsearch-secrets incubator/raw --values elasticsearch-secrets-values.yaml `
    
  4. あなたは必要とするでしょう elasticsearch-values.yamlを作成します。例としてこのgistを参照してください:(すべての<\>に値を埋めてください)https://gist.github.com/Schnitzel/1e386654b6abf75bf4d66a544db4aa6a

  5. Elasticsearchをインストール:

    Elasticsearchをインストール
    helm upgrade --namespace elasticsearch --create-namespace --install elasticsearch opendistro-es-X.Y.Z.tgz --values elasticsearch-values.yaml
    
  6. Elasticsearch内のセキュリティを次のように設定:

    セキュリティを設定
    kubectl exec -n elasticsearch -it elasticsearch-opendistro-es-master-0 -- bash
    chmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh
    /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -nhnv -cacert /usr/share/elasticsearch/config/admin-root-ca.pem -cert /usr/share/elasticsearch/config/admin-crt.pem -key /usr/share/elasticsearch/config/admin-key.pem -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/
    
  7. lagoon-core-values.yamlを次のように更新:

    lagoon-core-values.yaml
    elasticsearchURL: http://elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local:9200
    kibanaURL: https://<<Kibana Public URL>>
    logsDBAdminPassword: "<<PlainText Elasticsearch Admin Password>>"
    
  8. ロールアウトLagoon Core:

    Rollout Lagoon Core
    helm upgrade --install --create-namespace --namespace lagoon-core -f values.yaml lagoon-core lagoon/lagoon-core
    
  9. すべてのLagoonグループをOpendistro Elasticsearchと同期させる

    Sync groups
    kubectl -n lagoon-core exec -it deploy/lagoon-core-api -- sh
    yarn run sync:opendistro-security