Kong to Kong Data Migration & Kong Consumer Credential Migration
To setup a new kong and migrate data from old kong to new kong.
- Setup new kong .
- Take Snapshot from konga from old kong
- import the konga snapshot to new kong for routes, service, consumer, plugins, upstreams and targets etc.,
Issue :
Since Consumer Password is encrypted by sha1 algorithm by customer id as salt, the konga snapshot will not be migrated properly the credentials of the consumer.
So in order to properly migrate the consumer, kindly follow the steps:
- Even though consumer password will be different between two kongs, the consumer id and username will be same in both.
- We need to login to cassandra db console using cqlsh on old kongโs cassandra and get the encoded password and consumer id of all username from the basic_auth_credentails table in kong database.
- Now we need to get the id of all rows of the respective username in new kong cassandra db, as the update query only works with primary key which is id column, not consumer_id or any other columns
- Once we get the password of all username from basic_auth_credentails table along with username and consumer_id and id of new kong cassandra db of the all username, we form a query to update new password with id on where condition which is respective to the corresponding consumer_id and username.
- Once we formed all the queries, then we need to execute all the queries.
Queries :
To get the details from old Kong db.
select consumer_id, username, password from basicauth_credentials
To get the id of all corresponding usernames on the new Kong db.
select id from basicauth_credentials where consumer_id=โconsumer_idsโ and username=โusernamesโ
To update the correct credentials in the new Kong Cassandra DB.
update basicauth_credentials set password=โfetched-password-respective of consumerโ where id=โidโ
Rest apiโs for creating and updating consumers
for create consumer :
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
curl -i -X POST โ url http://{kong_ip}:{kong_port}/consumers โ data โusername={consumer-name}โ โ data โcustom_id={some_id}โ
for update consumer:
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
curl -i -X POST โ url http://{kong_ip}:{kong_port}/consumers/{consumer_name or consumer_id} โ data โusername={new consumer_name}โ โ data โcustom_id={custom_id}โ
for delete consumer :
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
curl -i -X DELETE โ url http://{kong_ip}:{kong_port}/consumers/{consumer-name}
for create basic-auth for consumer:
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
curl -i -X POST โ url http://{kong_ip}:{kong_port}/consumers/{consumer_name or consumer_id}/basic-auth/ โ data โusername={username}โ โ data โpassword={password}โ
for update basic-auth for consumer:
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
curl http://{kong_ip}:{kong_port}/consumers/{consumer-name}/basic-auth/ = get the plugin id
curl -i -X PUT โ url http://{kong_ip}:{kong_port}/consumers/{consumer-name}/basic-auth/{plugin_id} โ data โusername={new username}โ โ data โpassword={new password}โ
for delete basic-auth for consumer:
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
curl http://{kong_ip}:{kong_port}/consumers/{consumer-name}/basic-auth/ = get the plugin id
curl -i -X DELETE โ url http://{kong_ip}:{kong_port}/consumers/{consumer-name}/basic-auth/{plugin_id}
CREATE RATE LIMITING
โ โ โ โ โ โ โ โ โ โ โ โ
curl -X POST http://{kong_ip}:{kong_port}/consumers/${consumer_name}/plugins/ \
โ data โname=rate-limitingโ \
โ data โconfig.second={requst count limit per second}โ \
โ data โconfig.minute={requst count limit per minute}โ \
โ data โconfig.hour={requst count limit per hour}โ \
โ data โconfig.day={requst count limit per day}โ \
โ data โconfig.month={requst count limit per month}โ \
โ data โconfig.year={requst count limit per year}โ \
โ data โconfig.policy=clusterโ \
โ data โconfig.hide_client_headers=falseโ
GET RATE LIMITING DETAILS (plugin id)
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
CURL http://{kong_ip}:{kong_port}/consumers/{consumer_name}/plugins = here we need to iterate the dictionary object to get ratelimit plugin and fetch plugin id
DELETE RATE LIMITING for consumer
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ -
curl -X DELETE http://{kong_ip}:{kong_port}/consumers/{consumer_name}/plugins/{plugin_id}
UPDATE RATE LIMITING for consumer
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
curl -X PATCH http://{kong_ip}:{kong_port}/consumers/{consumer_name}/plugins/{plugin_id} \
โ data โname=rate-limitingโ \
โ data โconfig.second=5โ \
โ data โconfig.minute=10โ \
โ data โconfig.hour=10โ \
โ data โconfig.day=100โ \
โ data โconfig.month=1000โ \
โ data โconfig.year=10000โ \
โ data โconfig.policy=clusterโ \
โ data โconfig.hide_client_headers=falseโ