[英]How to enable Cassandra Password Authentication in Kubernetes deployment file
我已經為此苦了很久了。 到目前為止,我的努力如下所示。 我認為env變量CASSANDRA_AUTHENTICATOR
應該啟用密碼驗證。 但是,使用此配置重新部署后,我仍然可以在沒有密碼的情況下登錄。 關於如何在Kubernetes部署文件中啟用密碼身份驗證的任何想法?
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。
因此,我對您提到的工件做了一些更改:
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
再換成env
CASSANDRA_AUTHENTICATOR
與CASSANDRA_PASSWORD
。
部署上述工件后,我可以如下所示進行身份驗證
試圖執行到Pod
fedora@dhcp35-42:~/tmp/cassandra$ oc exec -it cassandra-2750650372-g8l9s bash root@cassandra-2750650372-g8l9s:/#
進入Pod后,嘗試通過服務器進行身份驗證
root@cassandra-2750650372-g8l9s:/# 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. cassandra@cqlsh>
可以在https://hub.docker.com/r/bitnami/cassandra/中找到該圖像文檔
如果您不習慣使用第三方映像,並且想使用上游社區管理的映像,則可以尋找以下解決方案,該解決方案更加DIY,但也更加靈活。
要設置密碼,您嘗試使用env
CASSANDRA_AUTHENTICATOR
但是尚未將其合並為圖像cassandra
建議。 您可以在此處查看打開的PR。
現在,上游建議在/etc/cassandra/cassandra.yaml
掛載cassandra.yaml
文件,以便人們可以設置所需的任何設置。
因此,請按照以下步驟進行操作:
我對文件進行了以下更改:
$ diff cassandra.yaml mycassandra.yaml
103c103
< authenticator: AllowAllAuthenticator
---
> authenticator: PasswordAuthenticator
我們必須創建Kubernetes Configmap ,然后將其安裝在容器內,我們無法像docker那樣進行主機安裝。
$ cp mycassandra.yaml cassandra.yaml
$ k create configmap cassandraconfig --from-file ./cassandra.yaml
configmap的名稱是cassandraconfig
。
現在編輯deployment
以使用此配置並將其安裝在正確的位置
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
創建此部署后。
現在在Pod中執行
$ k exec -it cassandra-1663662957-6tcj6 bash root@cassandra-1663662957-6tcj6:/#
嘗試使用客戶端
root@cassandra-1663662957-6tcj6:/# cqlsh 127.0.0.1 9042 Connection error: ('Unable to connect to any servers', {'127.0.0.1': AuthenticationFailed('Remote end requires authentication.',)})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.