2017-06-20 13 views
0

私はかなり長い間これを苦労してきました。これまでの私の努力を以下に示します。私の意見では、env変数CASSANDRA_AUTHENTICATORは、パスワード認証を有効にするはずです。ただし、この設定で再デプロイした後でもパスワードなしでログオンできます。 Kubernetesデプロイメントファイルでパスワード認証を有効にする方法に関するアイデアはありますか?KubernetesデプロイメントファイルでCassandraパスワード認証を有効にする方法

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: cassandra 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: cassandra 
    spec: 
     containers: 
      - name: cassandra 
      image: cassandra 
      env: 
       - name: CASSANDRA_CLUSTER_NAME 
       value: Cassandra 
       - name: CASSANDRA_AUTHENTICATOR 
       value: PasswordAuthenticator 
      ports: 
       - containerPort: 7000 
       name: intra-node 
       - containerPort: 7001 
       name: tls-intra-node 
       - containerPort: 7199 
       name: jmx 
       - containerPort: 9042 
       name: cql 

      volumeMounts: 
       - mountPath: /var/lib/cassandra/data 
       name: data 
     volumes: 
     - name: data 
      emptyDir: {} 

環境はGoogle Cloud Platformです。

答えて

1

だから私はあなたが言及している案件にいくつかの変更作られた:私は変更があっ

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: cassandra 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: cassandra 
    spec: 
     containers: 
      - name: cassandra 
      image: bitnami/cassandra:latest 
      env: 
       - name: CASSANDRA_CLUSTER_NAME 
       value: Cassandra 
       - name: CASSANDRA_PASSWORD 
       value: pass123 
      ports: 
       - containerPort: 7000 
       name: intra-node 
       - containerPort: 7001 
       name: tls-intra-node 
       - containerPort: 7199 
       name: jmx 
       - containerPort: 9042 
       name: cql 

      volumeMounts: 
       - mountPath: /var/lib/cassandra/data 
       name: data 
     volumes: 
     - name: data 
      emptyDir: {} 

を:

image名前がbitnami/cassandra:latestに変更し、その後CASSANDRA_PASSWORDenvCASSANDRA_AUTHENTICATORを置き換えられています。

あなたは上記のアーティファクトをデプロイした後

ポッドサーバー

で認証しようとしてポッド内部一度

[email protected]:~/tmp/cassandra$ oc exec -it cassandra-2750650372-g8l9s bash 
[email protected]:/# 
  • へのexecしようと

    • 以下のように、私は認証できます

      [email protected]:/# cqlsh 127.0.0.1 9042 -p pass123 -u cassandra 
      Connected to Cassandra at 127.0.0.1:9042. 
      [cqlsh 5.0.1 | Cassandra 3.11.0 | CQL spec 3.4.4 | Native protocol v4] 
      Use HELP for help. 
      [email protected]> 
      

    https://hub.docker.com/r/bitnami/cassandra/

    アップストリームコミュニティが管理している画像を使用するのが快適でない場合は、次の解決策を探してください。これはDIYになりますが、より柔軟です。


    セットアップするには、あなたがenvCASSANDRA_AUTHENTICATORを使用しようとしていたが、これは画像cassandraのため、まだ提案をマージされていないパスワード。開いているPR hereを見ることができます。

    今すぐ上流はファイルcassandra.yamlのマウントを/etc/cassandra/cassandra.yamlにすることを提案します。これにより、人々は自分が望む設定を誰でも設定できるようになります。

    だから、それを行うには次の手順を実行します。

    $ diff cassandra.yaml mycassandra.yaml 
    103c103 
    < authenticator: AllowAllAuthenticator 
    --- 
    > authenticator: PasswordAuthenticator 
    
    • は、そのファイルにconfigmapを作成します。

      私が行った次の変更をダウンロード

    Kubernetes Configmapを作成して、コンテナ内にマウントする必要があります.Dockerに似たホストマウントはできません。

    $ cp mycassandra.yaml cassandra.yaml 
        $ k create configmap cassandraconfig --from-file ./cassandra.yaml 
    

    configmapの名前はcassandraconfigです。

    • は今

      apiVersion: extensions/v1beta1 
      kind: Deployment 
      metadata: 
          name: cassandra 
      spec: 
          replicas: 1 
          template: 
          metadata: 
           labels: 
           app: cassandra 
          spec: 
           containers: 
            - name: cassandra 
            image: cassandra 
            env: 
             - name: CASSANDRA_CLUSTER_NAME 
             value: Cassandra 
            ports: 
             - containerPort: 7000 
             name: intra-node 
             - containerPort: 7001 
             name: tls-intra-node 
             - containerPort: 7199 
             name: jmx 
             - containerPort: 9042 
             name: cql 
      
            volumeMounts: 
             - mountPath: /var/lib/cassandra/data 
             name: data 
             - mountPath: /etc/cassandra/ 
             name: cassandraconfig 
           volumes: 
           - name: data 
            emptyDir: {} 
           - name: cassandraconfig 
            configMap: 
            name: cassandraconfig 
      

    あなたはこの展開を作成すると、適切な場所にこの設定を使用し、それをマウントするdeploymentを編集します。

    • は今、あなたが読むことができるコンテナ内でマウントすることによって、クライアントにconfigMapを作成し、それを使用する方法の詳細については

      [email protected]:/# cqlsh 127.0.0.1 9042 
      Connection error: ('Unable to connect to any servers', {'127.0.0.1': AuthenticationFailed('Remote end requires authentication.',)}) 
      

    を使用してみてくださいポッドに

    $ k exec -it cassandra-1663662957-6tcj6 bash 
    [email protected]:/# 
    
  • をexecしthis doc、私はこの答えに私を助けた。

  • +0

    丁寧な対応をありがとうございます。私がbitnamiイメージを使って経験したことから、パスワード認証はデフォルトで有効になっています。私はあなたの提案を試してみましょう。 – okello

    関連する問題