์ด ์ฃผ์ ์์๋ Cassandra ๋ ธ๋์ ํด๋ผ์ด์ธํธ ๋ฐ Cassandra ๋ ธ๋ ๊ฐ ํต์ ์ ์ํ ์ธ์ฆ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๋ฐํ์ ์์ญ์์ Cassandra์ฉ ์ธ์ฆ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ
Cassandra๋ ํด๋ผ์ด์ธํธ ๋จธ์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ ๊ฐ ๋ฐ ํด๋ฌ์คํฐ ๋ด ๋ ธ๋ ๊ฐ์ ๋ณด์ ํต์ ์ ์ ๊ณตํฉ๋๋ค. ์ํธํ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ ์ค์ธ ๋ฐ์ดํฐ๊ฐ ์์๋์ง ์๊ณ ์์ ํ๊ฒ ์ ์ก๋ฉ๋๋ค. Apigee Hybrid์์๋ TLS๊ฐ Cassandra ๋ ธ๋ ๊ฐ ๋ฐ ํด๋ผ์ด์ธํธ์ Cassandra ๋ ธ๋ ๊ฐ ํต์ ์ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ ๋ฉ๋๋ค.
์ด ์ฃผ์ ์ ์ค๋ช ๋ ๋๋ก ์ฌ์ ์ ํ์ผ์ ์ง์ ๋ฐฐ์น๋๊ฑฐ๋ Kubernetes ๋ณด์ ๋น๋ฐ์ ์ถ๊ฐ๋ ์ฌ์ฉ์ ์ด๋ฆ/๋น๋ฐ๋ฒํธ ์กฐํฉ์ ์ฌ์ฉํ์ฌ ์ธ์ฆ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
Cassandra ์ฌ์ฉ์ ์ธ์ฆ์ ๋ํ ์ ๋ณด
ํ์ด๋ธ๋ฆฌ๋ ํ๋ซํผ์ Cassandra๋ฅผ ๋ฐํ์ ์์ญ ๋ฐ์ดํฐ์ ๋ฐฑ์๋ Datastore๋ก ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Cassandra์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํต์ ์๋ ์ธ์ฆ์ด ํ์ํฉ๋๋ค. Cassandra์ ํต์ ํ๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ ์ฌ์ฉ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค. ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ํ์ํ ๋จ๊ณ๋ ์ฌ์ ์ ํ์ผ์์ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ์ ์ฐธ์กฐํ์ธ์.
๊ธฐ๋ณธ ์ฌ์ฉ์๋ฅผ ํฌํจํ ์ด๋ฌํ ์ฌ์ฉ์๋ ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.
- DML ์ฌ์ฉ์: ํด๋ผ์ด์ธํธ๊ฐ Cassandra(KMS, KVM, ์บ์ ๋ฐ ํ ๋น๋)์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- DDL ์ฌ์ฉ์: ํค์คํ์ด์ค ์์ฑ, ์ ๋ฐ์ดํธ, ์ญ์ ์ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ ์์ ์ ์ํด MART์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ด๋ฆฌ ์ฌ์ฉ์: Cassandra ํด๋ฌ์คํฐ์์ ์ํ๋๋ ๋ชจ๋ ๊ด๋ฆฌ ํ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ Cassandra ์ฌ์ฉ์: ์ธ์ฆ์ด ์ฌ์ฉ ์ค์ ๋๊ณ ์ฌ์ฉ์ ์ด๋ฆ์ด
cassandra
์ธ ๊ฒฝ์ฐ Cassandra์์ ๊ธฐ๋ณธ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค. - JMX ์ฌ์ฉ์: Cassandra JMX ์ธํฐํ์ด์ค๋ก ์ธ์ฆํ๊ณ ํต์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- Jolokia ์ฌ์ฉ์: Cassandra JMX API๋ก ์ธ์ฆํ๊ณ ํต์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ธฐ๋ณธ Cassandra ์ฌ์ฉ์ ์ ๋ณด
Apigee Hybrid ํด๋ฌ์คํฐ๊ฐ ์์ฑ๋๊ณ Cassandra ์ธ์ฆ์ด ์ฌ์ฉ ์ค์ ๋๋ฉด ์ด๊ธฐ ์ฌ์ฉ์ ๊ณ์ ์ ์ฌ์ฉ์ ์ด๋ฆ cassandra
๋ก ์๋ณ๋๋ ๊ธฐ๋ณธ Cassandra ์ฌ์ฉ์์
๋๋ค. ๊ธฐ๋ณธ cassandra
์ฌ์ฉ์๋ ์ํผ์ ์ ์ญํ ์ ํ๋ฉฐ ์ฌ์ฉ์ ์ญํ ์ถ๊ฐ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์์ ๊ณผ ๊ฐ์ ์์
์ ๋ด๋นํฉ๋๋ค.
Apigee Hybrid apigee-cassandra-user-setup
์์
์์๋ ๊ธฐ๋ณธ cassandra
์ฌ์ฉ์๋ฅผ ํ์ฉํ์ฌ ์ ์ญํ ์ ์ค์ ํ๊ณ ์ด ๊ธฐ๋ณธ ์ฌ์ฉ์์ ์ฐ๊ฒฐ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. apigee-cassandra-user-setup
์์
์ Apigee Hybrid ์ธ์คํด์ค์ ์ด๊ธฐ ์ค์น, ํ์ ์ธ์คํด์ค ์
๊ทธ๋ ์ด๋, ๋ฆฌ์ ํ์ฅ ์ค ์ ์ธ์คํด์ค ํ๋ก๋น์ ๋ ์ค์ ์คํ๋ฉ๋๋ค.
Apigee Hybrid apigee-cassandra-user-setup
์์
์ด ์คํ๋๋ฉด ์ ์ค์น ๋๋ ์
๊ทธ๋ ์ด๋์ ์ผ๋ถ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค ๊ตฌ์ฑ์ ์
๋ฐ์ดํธํ๊ณ ์์ ํ๋ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. ๊ธฐ๋ณธ cassandra
์ฌ์ฉ์๋ apigee-cassandra-user-setup
์์
์ด ์ Cassandra ํฌ๋๋ฅผ ์ค์ ํ ๋ ์กด์ฌ๊ฐ ๋ณด์ฅ๋๋ ์ ์ผํ ์ฌ์ฉ์์
๋๋ค. ์ํผ์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์๋ ค์ง ์ฌ์ฉ์๊ฐ ์์ผ๋ฉด Apigee Hybrid ์
๊ทธ๋ ์ด๋ ๋ฐ ๋ฆฌ์ ํ์ฅ์ด ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ cassandra
์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ ๋ณด์ ๊ฐํ ์กฐ์น์ ๋ฐ๋ผ ์ต์ด ์ฌ์ฉ ํ ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ cassandra
์ฌ์ฉ์๊ฐ ๊ณ์ ์ฌ์ฉ ์ค์ ๋์ด ์์ด๋ ๊ธฐ๋ณธ cassandra
์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ cassandra
์ฌ์ฉ์๋ ์ ์ค์น ๋ฐ ๋ฆฌ์ ํ์ฅ ์ค apigee-cassandra-user-setup
์์
์ ์ ์ธํ ๋ค๋ฅธ ๊ตฌ์ฑ์์์์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
์ฌ์ ์ ํ์ผ์ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
๋ณด์ ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ผ Cassandra์ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์ต๋๋ค. overrides.yaml
ํ์ผ์์ ์ํํ ์ ์์ต๋๋ค. ๋ค์ ๊ตฌ์ฑ์ ์ถ๊ฐํ๊ณ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ํ๋ ๋๋ก ๋ณ๊ฒฝํ๊ณ ๋ณ๊ฒฝ์ฌํญ์ ํด๋ฌ์คํฐ์ ์ ์ฉํฉ๋๋ค. cassandra
๋ฅผ ์ฐธ์กฐํ์ธ์. values.yaml
ํ์ผ์์ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
cassandra: auth: default: ## the password for the new default user (static username: cassandra) password: "NEW_PASSWORD" admin: ## the password for the admin user (static username: admin_user) password: "NEW_PASSWORD" ddl: ## the password for the DDL User (static username: ddl_user) password: "NEW_PASSWORD" dml: ## the password for the DML User (static username: dml_user) password: "NEW_PASSWORD" jmx: username: "jmxuser" ## the username for the JMX User password: "NEW_PASSWORD" ## the password for the JMX User jolokia: username: "jolokiauser" ## the username to access jolokia interface password: "NEW_PASSWORD" ## the password for jolokia user
๋ค์์ ์ ์ํ์ธ์.
- ์ธ์ฆ ๊ธฐ๊ด(CA) ์ํ์ด ์ง์๋์ง ์์ต๋๋ค.
- ์ํธ๋ก ์์ฑ๋ ์๋ฒ ์ธ์ฆ์๋ ์ง์๋์ง ์์ต๋๋ค.
Kubernetes ๋ณด์ ๋น๋ฐ์์ ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ ์ค์
์ด ์น์ ์์๋ ์ธ์ฆ์ Kubernetes ๋ณด์ ๋น๋ฐ์ ์ฌ์ฉํ๋๋ก Cassandra๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๋ณด์ ๋น๋ฐ ๋ง๋ค๊ธฐ
๋ค์ ํ
ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ Kubernetes ๋ณด์ ๋น๋ฐ์ ๊ตฌ์ฑํฉ๋๋ค. ํ
ํ๋ฆฟ์ YAML ํ์ผ์ ์ ์ฅํ๊ณ ํ์ ์์ฑ(์: my-secret.yaml
)์ ์์ ํฉ๋๋ค.
์ด ์ต์
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ ๋น๋ฐ๋ฒํธ์ ํจ๊ป ์ฌ์ฉ์ ์ด๋ฆ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
apiVersion: v1 kind: Secret metadata: name: SECRET_NAME namespace: APIGEE_NAMESPACE type: Opaque data: default.password: DEFAULT_PASSWORD #base64-encoded string admin.user: ADMIN_USERNAME #base64-encoded string admin.password: ADMIN_PASSWORD #base64-encoded string dml.user: DML_USERNAME #base64-encoded string dml.password: DML_PASSWORD #base64-encoded string ddl.user: DDL_USERNAME #base64-encoded string ddl.password: DDL_PASSWORD #base64-encoded string jmx.user: JMX_USERNAME #base64-encoded string jmx.password: JMX_PASSWORD #base64-encoded string jolokia.user: JOLOKIA_USERNAME #base64-encoded string jolokia.password: JOLOKIA_PASSWORD #base64-encoded string
์ฌ๊ธฐ์ SECRET_NAME์ ๋ณด์ ๋น๋ฐ์ ๋ํด ์ ํํ ์ด๋ฆ์ด๊ณ APIGEE_NAMESPACE๋ Apigee ํฌ๋๊ฐ ๋ฐฐํฌ๋ ๋ค์์คํ์ด์ค(๊ธฐ๋ณธ๊ฐ์ apigee
)์ด๋ฉฐ _USERNAME ๋ฐ _PASSWORD๋ ๊ฐ ์ฌ์ฉ์์ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ์
๋๋ค. ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ Base64๋ก ์ธ์ฝ๋ฉ๋์ด์ผ ํฉ๋๋ค.
ํด๋ฌ์คํฐ์ ๋ณด์ ๋น๋ฐ์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
kubectl apply -f SECRET_FILE
์ฌ์ ์ ํ์ผ์ ๋ณด์ ๋น๋ฐ์ ์ถ๊ฐํฉ๋๋ค.
cassandra: auth: secret: SECRET_NAME
์ ๋ฐ์ดํธ๋ Cassandra ์ฌ์ ์๋ฅผ ํด๋ฌ์คํฐ์ ์ ์ฉํฉ๋๋ค.
helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
Cassandra ๋ก๊ทธ ํ์ธ
Cassandra๊ฐ ์์๋๋ ์ฆ์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค. ๋ค์ ๋ก๊ทธ์์๋ Cassandra ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ด ์ํธํ๋์์์ ๋ณด์ฌ์ค๋๋ค.
kubectl logs apigee-cassandra-2 -n APIGEE_NAMESPACE -f
INFO 00:44:36 Starting listening for CQL clients on /10.0.2.12:9042 (encrypted)... INFO 00:44:36 Binding thrift service to /10.0.2.12:9160 INFO 00:44:36 enabling encrypted thrift connections between client and server INFO 00:44:36 Listening for thrift clients...