192 lines
11 KiB
YAML
192 lines
11 KiB
YAML
apiVersion: v1
|
||
kind: ConfigMap
|
||
metadata:
|
||
name: cluster1-init-scripts
|
||
namespace: cluster1
|
||
data:
|
||
db1-init.sql: |
|
||
-- from Практика 3/init-scripts/db1-init.sql
|
||
-- Инициализация БД 1
|
||
-- Создание пользователей
|
||
|
||
-- Пользователь 1: видит только свою БД (database1)
|
||
CREATE USER user1_local WITH PASSWORD 'user1pass';
|
||
GRANT CONNECT ON DATABASE database1 TO user1_local;
|
||
GRANT USAGE ON SCHEMA public TO user1_local;
|
||
GRANT CREATE ON SCHEMA public TO user1_local;
|
||
|
||
-- Пользователь 1: может видеть БД в соседнем контейнере (database2)
|
||
-- Этот пользователь будет создан также в db2, что позволит ему подключаться к обеим БД
|
||
CREATE USER user1_cross WITH PASSWORD 'user1pass';
|
||
GRANT CONNECT ON DATABASE database1 TO user1_cross;
|
||
GRANT USAGE ON SCHEMA public TO user1_cross;
|
||
GRANT CREATE ON SCHEMA public TO user1_cross;
|
||
|
||
-- Создание таблиц
|
||
CREATE TABLE IF NOT EXISTS products (
|
||
id SERIAL PRIMARY KEY,
|
||
name VARCHAR(100) NOT NULL,
|
||
price DECIMAL(10, 2) NOT NULL,
|
||
quantity INTEGER NOT NULL,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS orders (
|
||
id SERIAL PRIMARY KEY,
|
||
customer_name VARCHAR(100) NOT NULL,
|
||
total_amount DECIMAL(10, 2) NOT NULL,
|
||
status VARCHAR(50) NOT NULL,
|
||
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
-- Выдача прав на таблицы для user1_local
|
||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user1_local;
|
||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO user1_local;
|
||
|
||
-- Выдача прав на таблицы для user1_cross
|
||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user1_cross;
|
||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO user1_cross;
|
||
|
||
-- Настройка прав по умолчанию для будущих таблиц
|
||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO user1_local;
|
||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO user1_cross;
|
||
ALTER DEFAULT PRIVИЛЕGES IN SCHEMA public GRANT ALL ON SEQUENCES TO user1_local;
|
||
ALTER DEFAULT PRIVИЛЕGES IN SCHEMA public GRANT ALL ON SEQUENCES TO user1_cross;
|
||
|
||
db1-data.sql: |
|
||
-- from Практика 3/init-scripts/db1-data.sql
|
||
-- Заполнение таблиц случайными данными для БД 1
|
||
|
||
-- Вставка случайных данных в таблицу products
|
||
INSERT INTO products (name, price, quantity) VALUES
|
||
('Ноутбук Dell XPS', 89999.99, 15),
|
||
('Мышь Logitech MX', 3499.50, 42),
|
||
('Клавиатура Mechanical', 5999.00, 28),
|
||
('Монитор LG 27"', 24999.99, 12),
|
||
('Наушники Sony WH-1000XM4', 19999.00, 35),
|
||
('Веб-камера Logitech C920', 4999.00, 18),
|
||
('Микрофон Blue Yeti', 8999.99, 8),
|
||
('Коврик для мыши', 599.00, 100),
|
||
('USB-C кабель', 1299.00, 55),
|
||
('Внешний SSD 1TB', 8999.99, 22),
|
||
('Планшет Samsung Galaxy', 29999.00, 14),
|
||
('Смартфон iPhone 15', 79999.99, 9),
|
||
('Умные часы Apple Watch', 24999.00, 20),
|
||
('Портативная колонка JBL', 4999.00, 30),
|
||
('Беспроводные наушники AirPods', 14999.00, 25);
|
||
|
||
-- Вставка случайных данных в таблицу orders
|
||
INSERT INTO orders (customer_name, total_amount, status) VALUES
|
||
('Иван Петров', 125999.99, 'completed'),
|
||
('Мария Сидорова', 3499.50, 'pending'),
|
||
('Алексей Иванов', 5999.00, 'completed'),
|
||
('Елена Козлова', 24999.99, 'processing'),
|
||
('Дмитрий Смирнов', 19999.00, 'completed'),
|
||
('Ольга Волкова', 4999.00, 'pending'),
|
||
('Сергей Лебедев', 8999.99, 'completed'),
|
||
('Анна Новикова', 599.00, 'completed'),
|
||
('Павел Морозов', 1299.00, 'processing'),
|
||
('Татьяна Федорова', 8999.99, 'completed'),
|
||
('Николай Соколов', 29999.00, 'pending'),
|
||
('Юлия Попова', 79999.99, 'completed'),
|
||
('Андрей Васильев', 24999.00, 'processing'),
|
||
('Наталья Павлова', 4999.00, 'completed'),
|
||
('Владимир Семенов', 14999.00, 'pending'),
|
||
('Ирина Григорьева', 89999.99, 'completed'),
|
||
('Роман Орлов', 3499.50, 'processing'),
|
||
('Екатерина Зайцева', 5999.00, 'completed'),
|
||
('Максим Егоров', 24999.99, 'pending'),
|
||
('Светлана Михайлова', 19999.00, 'completed');
|
||
|
||
db2-init.sql: |
|
||
-- from Практика 3/init-scripts/db2-init.sql
|
||
-- Инициализация БД 2
|
||
-- Создание пользователей
|
||
|
||
-- Пользователь 2: видит только свою БД (database2)
|
||
CREATE USER user2_local WITH PASSWORD 'user2pass';
|
||
GRANT CONNECT ON DATABASE database2 TO user2_local;
|
||
GRANT USAGE ON SCHEMA public TO user2_local;
|
||
GRANT CREATE ON SCHEMA public TO user2_local;
|
||
|
||
-- Пользователь 1: может видеть БД в соседнем контейнере (database1)
|
||
-- Этот пользователь создан также в db1, что позволяет ему подключаться к обеим БД
|
||
CREATE USER user1_cross WITH PASSWORD 'user1pass';
|
||
GRANT CONNECT ON DATABASE database2 TO user1_cross;
|
||
GRANT USAGE ON SCHEMA public TO user1_cross;
|
||
GRANT CREATE ON SCHEMA public TO user1_cross;
|
||
|
||
-- Создание таблиц
|
||
CREATE TABLE IF NOT EXISTS employees (
|
||
id SERIAL PRIMARY KEY,
|
||
first_name VARCHAR(50) NOT NULL,
|
||
last_name VARCHAR(50) NOT NULL,
|
||
position VARCHAR(100) NOT NULL,
|
||
salary DECIMAL(10, 2) NOT NULL,
|
||
hire_date DATE NOT NULL,
|
||
department VARCHAR(50) NOT NULL
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS departments (
|
||
id SERIAL PRIMARY KEY,
|
||
name VARCHAR(100) NOT NULL UNIQUE,
|
||
budget DECIMAL(12, 2) NOT NULL,
|
||
manager_id INTEGER,
|
||
location VARCHAR(100) NOT NULL,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
-- Выдача прав на таблицы для user2_local
|
||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user2_local;
|
||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO user2_local;
|
||
|
||
-- Выдача прав на таблицы для user1_cross
|
||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user1_cross;
|
||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO user1_cross;
|
||
|
||
-- Настройка прав по умолчанию для будущих таблиц
|
||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO user2_local;
|
||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO user1_cross;
|
||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO user2_local;
|
||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO user1_cross;
|
||
|
||
db2-data.sql: |
|
||
-- from Практика 3/init-scripts/db2-data.sql
|
||
-- Заполнение таблиц случайными данными для БД 2
|
||
|
||
-- Вставка случайных данных в таблицу departments
|
||
INSERT INTO departments (name, budget, location) VALUES
|
||
('Отдел разработки', 5000000.00, 'Москва, офис 1'),
|
||
('Отдел продаж', 3000000.00, 'Санкт-Петербург, офис 2'),
|
||
('Отдел маркетинга', 2000000.00, 'Москва, офис 1'),
|
||
('Отдел HR', 1500000.00, 'Новосибирск, офис 3'),
|
||
('Отдел финансов', 4000000.00, 'Москва, офис 1'),
|
||
('Отдел поддержки', 1800000.00, 'Екатеринбург, офис 4'),
|
||
('Отдел тестирования', 2500000.00, 'Москва, офис 1'),
|
||
('Отдел аналитики', 2200000.00, 'Казань, офис 5');
|
||
|
||
-- Вставка случайных данных в таблицу employees
|
||
INSERT INTO employees (first_name, last_name, position, salary, hire_date, department) VALUES
|
||
('Александр', 'Иванов', 'Senior Developer', 150000.00, '2020-03-15', 'Отдел разработки'),
|
||
('Елена', 'Петрова', 'Product Manager', 120000.00, '2019-06-20', 'Отдел разработки'),
|
||
('Дмитрий', 'Сидоров', 'Sales Manager', 80000.00, '2021-01-10', 'Отдел продаж'),
|
||
('Мария', 'Козлова', 'Marketing Specialist', 70000.00, '2021-08-05', 'Отдел маркетинга'),
|
||
('Сергей', 'Смирнов', 'HR Manager', 90000.00, '2020-11-12', 'Отдел HR'),
|
||
('Ольга', 'Волкова', 'Financial Analyst', 110000.00, '2019-09-18', 'Отдел финансов'),
|
||
('Андрей', 'Лебедев', 'Support Engineer', 65000.00, '2022-02-22', 'Отдел поддержки'),
|
||
('Татьяна', 'Новикова', 'QA Engineer', 75000.00, '2021-04-30', 'Отдел тестирования'),
|
||
('Павел', 'Морозов', 'Data Analyst', 85000.00, '2020-07-14', 'Отдел аналитики'),
|
||
('Юлия', 'Федорова', 'Junior Developer', 60000.00, '2022-05-08', 'Отдел разработки'),
|
||
('Николай', 'Соколов', 'Senior Sales Manager', 95000.00, '2018-12-03', 'Отдел продаж'),
|
||
('Анна', 'Попова', 'Marketing Manager', 100000.00, '2020-10-25', 'Отдел маркетинга'),
|
||
('Владимир', 'Васильев', 'Lead Developer', 180000.00, '2017-05-11', 'Отдел разработки'),
|
||
('Наталья', 'Павлова', 'Recruiter', 55000.00, '2021-11-19', 'Отдел HR'),
|
||
('Роман', 'Семенов', 'CFO', 200000.00, '2016-08-07', 'Отдел финансов'),
|
||
('Екатерина', 'Григорьева', 'Senior Support Engineer', 80000.00, '2019-03-28', 'Отдел поддержки'),
|
||
('Максим', 'Орлов', 'Test Lead', 130000.00, '2018-09-15', 'Отдел тестирования'),
|
||
('Светлана', 'Зайцева', 'Senior Data Analyst', 120000.00, '2019-12-01', 'Отдел аналитики'),
|
||
('Игорь', 'Егоров', 'DevOps Engineer', 140000.00, '2020-04-16', 'Отдел разработки'),
|
||
('Людмила', 'Михайлова', 'Sales Director', 160000.00, '2017-11-23', 'Отдел продаж');
|
||
|
||
|