๐ ๊ฐ์
์ด ๊ธ์์๋ Helm๊ณผ ArgoCD๋ก PostgreSQL์ ๋ฐฐํฌํ ํ, SQL์ ์ง์ ์คํํ์ฌ ํน์ ์ฌ์ฉ์(Role) ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
Helm์ values.yaml์ ์ฌ์ฉํ์ง ์๊ณ , postgres ๊ณ์ ์ผ๋ก ์ง์ psql์ ์คํํ์ฌ ์ฌ์ฉ์ ๋ฐ ๊ถํ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
๐ 1. PostgreSQL ์ ์ ๋ฐ ๊ธฐ๋ณธ ์ค์ ํ์ธ
1๏ธโฃ PostgreSQL Pod์ ์ ์
๋จผ์ PostgreSQL Pod ๋ด๋ถ์์ psql์ ์คํํฉ๋๋ค.
kubectl exec -it $(kubectl get pod -n database -l app.kubernetes.io/name=postgresql -o jsonpath="{.items[0].metadata.name}") -n database -- psql -U postgres
โ ์ ์์ ์ผ๋ก ์ ์๋๋ฉด ํ๋กฌํํธ๊ฐ ๋ํ๋ฉ๋๋ค.
psql (14.2)
Type "help" for help.
postgres=#
2๏ธโฃ PostgreSQL์ ๊ธฐ๋ณธ ์ค์ ํ์ธ
๐ ํ์ฌ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก ํ์ธ
\l
โ ์ถ๋ ฅ ์์
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+-----------+----------+---------+-------+-------------------
postgres | postgres | UTF8 | C | C.UTF-8 |
๐ ํ์ฌ ์กด์ฌํ๋ ์ฌ์ฉ์(Role) ๋ชฉ๋ก ํ์ธ
\du
โ ์ถ๋ ฅ ์์
Role name | Attributes | Member of
-----------+------------+-----------
postgres | Superuser | {}
ํ์ฌ postgres ๊ณ์ ๋ง ์กด์ฌํ๋ ์ํ์ ๋๋ค.
๐ 2. ์ฌ์ฉ์(Role) ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๊ฐ
์ด์ adminuser ์ฌ์ฉ์์ ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ์์ฑํฉ๋๋ค.
-- ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
CREATE DATABASE ragdb;
-- ์๋ก์ด ์ฌ์ฉ์ ์์ฑ ๋ฐ ๋น๋ฐ๋ฒํธ ์ค์
CREATE ROLE adminuser WITH LOGIN PASSWORD 'admin1234';
-- adminuser๊ฐ ragdb์ ์์ ์๊ฐ ๋๋๋ก ์ค์
ALTER DATABASE ragdb OWNER TO adminuser;
-- adminuser์๊ฒ ๋ชจ๋ ๊ถํ ๋ถ์ฌ
GRANT ALL PRIVILEGES ON DATABASE ragdb TO adminuser;
ALTER ROLE adminuser CREATEDB;
ALTER ROLE adminuser SUPERUSER;
โ ์ค๋ช
• CREATE DATABASE ragdb; → ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
• CREATE ROLE adminuser WITH LOGIN PASSWORD 'admin1234'; → adminuser ์ฌ์ฉ์ ์์ฑ
• ALTER DATABASE ragdb OWNER TO adminuser; → adminuser๋ฅผ ragdb์ ์์ ์๋ก ์ค์
• GRANT ALL PRIVILEGES ON DATABASE ragdb TO adminuser; → adminuser์๊ฒ ragdb์ ๋ชจ๋ ๊ถํ ๋ถ์ฌ
• ALTER ROLE adminuser CREATEDB; → adminuser๊ฐ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ ์ ์๋๋ก ์ค์
• ALTER ROLE adminuser SUPERUSER; → adminuser์๊ฒ SUPERUSER ๊ถํ ๋ถ์ฌ
โ ์ ์ฉ๋ ์ค์ ํ์ธ
\du
โ ์ถ๋ ฅ ์์
Role name | Attributes | Member of
-----------+------------+-----------
adminuser | Superuser, Create DB | {}
postgres | Superuser | {}
\l
โ ์ถ๋ ฅ ์์
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+-----------+----------+---------+-------+-------------------
postgres | postgres | UTF8 | C | C.UTF-8 |
ragdb | adminuser | UTF8 | C | C.UTF-8 | =Tc/adminuser + postgres=CTc/adminuser
๐ 3. adminuser ๊ณ์ ์ผ๋ก ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์
์ด์ adminuser ๊ณ์ ์ผ๋ก ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ์ฌ ํ์ธํฉ๋๋ค.
1๏ธโฃ adminuser ๊ณ์ ์ผ๋ก PostgreSQL ์ ์
kubectl exec -it $(kubectl get pod -n database -l app.kubernetes.io/name=postgresql -o jsonpath="{.items[0].metadata.name}") -n database -- psql -U adminuser -d ragdb
โ ์ ์์ ์ผ๋ก ์ ์๋๋ฉด ํ๋กฌํํธ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
ragdb=>
2๏ธโฃ ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ ํ์ธ
\dt
โ ์์ง ํ ์ด๋ธ์ด ์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
No relations found.
3๏ธโฃ ํ ์คํธ์ฉ ํ ์ด๋ธ ์์ฑ
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE
);
โ ํ ์ด๋ธ์ด ์์ฑ๋์๋์ง ํ์ธ
\dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | users | table | adminuser
๐ ํ ์คํธ ๋ฐ์ดํฐ ์ฝ์
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
๐ ๋ฐ์ดํฐ ์กฐํ
SELECT * FROM users;
โ ์ถ๋ ฅ ์์
id | name | email
----+--------+-------------------
1 | Alice | alice@example.com
(1 row)
๐ ์ฐ๊ฒฐ ์ข ๋ฃ
\q
๐ 4. DBeaver์์ adminuser ๊ณ์ ์ผ๋ก ragdb ์ฐ๊ฒฐ
์ด์ DBeaver์์ ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค์ adminuser ๊ณ์ ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค.
โ DBeaver ์ค์ ๋ณ๊ฒฝ
1๏ธโฃ DBeaver์์ ๊ธฐ์กด PostgreSQL ์ฐ๊ฒฐ์ ๋ณต์ฌํ๊ฑฐ๋ ์๋ก์ด ์ฐ๊ฒฐ ์์ฑ
2๏ธโฃ ์๋ ์ ๋ณด ์ ๋ ฅ
• Host: localhost
• Port: 5432
• Database: ragdb
• Username: adminuser
• Password: admin1234
3๏ธโฃ “Test Connection” ๋ฒํผ ํด๋ฆญํ์ฌ ์ฐ๊ฒฐ ํ ์คํธ
4๏ธโฃ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ฉด “Finish” ๋ฒํผ ํด๋ฆญํ์ฌ ์ ์ฅ
โ ์ด์ DBeaver์์ ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ํ๊ณ , ํ ์ด๋ธ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
๐ 5. ์ต์ข ์ ๋ฆฌ
โ postgres ๊ณ์ ์ผ๋ก ์ง์ ๋ก๊ทธ์ธํ์ฌ ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ adminuser ์ฌ์ฉ์ ์์ฑ
โ SQL์ ์คํํ์ฌ adminuser์๊ฒ ragdb์ ๋ํ ๋ชจ๋ ๊ถํ ๋ถ์ฌ
โ adminuser ๊ณ์ ์ผ๋ก ์ง์ ๋ก๊ทธ์ธํ์ฌ ํ ์ด๋ธ์ ์์ฑํ๊ณ ๋ฐ์ดํฐ ์ฝ์
โ DBeaver์์ adminuser ๊ณ์ ์ผ๋ก ragdb ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ๋ฐ ํ์ธ