
Kong安装部署
一、容器部署
1.安装docker服务
[root@tike ~]# cd /etc/yum.repos.d/ && wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@tike yum.repos.d]# yum install docker-ce -y [root@tike ~]# cat /etc/docker/daemon.json { "graph": "/apsarapangu/dockerstorage", "registry-mirrors": ["https://oz89b7jo.mirror.aliyuncs.com"], "live-restore": true } [root@tike yum.repos.d]# systemctl status docker.service [root@tike yum.repos.d]# systemctl start docker.service [root@tike yum.repos.d]# systemctl enable docker.service
2.创建KONG网络
[root@tike ~]# sudo docker network create kong-net [root@tike ~]# sudo docker network list
3.创建数据库
[root@tike ~]# docker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ -e "POSTGRES_PASSWORD=kong" \ postgres:9.6# 验证 [root@tike ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES efc1d27bfc10 postgres:9.6 "docker-entrypoint.s…" 4 seconds ago Up 2 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp kong-database
4.初始化Kong数据库
[root@tike ~]# docker run --rm \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ kong:latest kong migrations bootstrap# 验证 # psql -U kong kong-# \list kong-# \c kong kong-# \d
5.创建Kong
[root@tike ~]# docker run -d --name kong \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest
6.部署KongA
1.初始化数据库
[root@tike ~]# docker run --rm --network=kong-net pantsel/konga -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga_db2.创建KongA
[root@tike ~]# docker run -p 1337:1337 \ --network=kong-net \ -e "DB_ADAPTER=postgres" \ -e "DB_HOST=kong-database" \ -e "DB_USER=kong" \ -e "DB_PASSWORD=kong" \ -e "DB_DATABASE=konga_db" \ -e "KONGA_HOOK_TIMEOUT=120000" \ -e "NODE_ENV=production" \ --name konga \ pantsel/konga
7.Web页面进行访问
ip:1337
二、物理部署
8.kong脚本安装
脚本安装kong-2.3.3
#! /bin/bash ##### 安装postgres #注意kong对postgres有版本要求:9.5+ #https://www.postgresql.org/download/linux/redhat/ # Install the repository RPM: curl -o pg.rpm https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum install -y pg.rpm yum install -y postgresql96 yum install -y postgresql96-server #修改 PGSQL 的目录和监听host,默认端口5432 #如果启动不想在命令行以 -h *启动,则在vim /var/lib/pgsql/9.6/data/postgresql.conf,修改#listen_address = "*" mkdir -p /data/postgres/data/ chown postgres.postgres /data/postgres/data/ sed -i 's@ExecStart=.*@ExecStart=/usr/pgsql-9.6/bin/postmaster -D /data/postgres/data/ -h *@g' /usr/lib/systemd/system/postgresql-9.6.service sed -i 's@Environment=PGDATA=.*@Environment=PGDATA=/data/postgres/data/@g' /usr/lib/systemd/system/postgresql-9.6.service /usr/pgsql-9.6/bin/postgresql96-setup initdb #trust:凡是连接到服务器的,都是可信任的。只需要提供 PostgreSQL 用户名,可以没有对应的操作系统同名用户。 #password 和 md5:对于远程访问,需要提供 PostgreSQL 用户名和密码。对于本地连接,提供 PostgreSQL 用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password 和 md5 的区别,就是远程访问时传输的密码是否用 md5 加密。 #ident:对于远程访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统用户名作为数据库用户名进行登录对于本地连接,实际上使用了 peer。 #peer:对于本地访问,通过客户端操作系统内核来获取当前系统登录的用户名,并作为 PostgreSQL 用户名进行登录。 cat > /data/postgres/data/pg_hba.conf << EOF #TYPE DATABASE USER ADDRESS METHOD local all all peer host all all 127.0.0.1/32 md5 host all all 172.0.0.0/8 md5 host all all 192.0.0.0/8 md5 host all all 127.0.0.1/32 ident host all all 172.0.0.0/8 ident host all all ::1/128 ident EOF cat /data/postgres/data/pg_hba.conf systemctl daemon-reload systemctl enable postgresql-9.6 systemctl start postgresql-9.6 ps -ef | grep postgres #创建kong数据库 #su postgres #postgres.postgres是PostgreSQL的系统管理员 psql #设置用户 `postgres` 的密码,仅首次需要 #\password postgres # 注意开头的 \ 必须有! create user kong with password 'kong'; create database kong owner kong; grant all privileges on database kong to kong; \q; #psql -U kong -d kong -h 127.0.0.1 -p 5432 本地访问method为trust,才能无密码访问 #####安装kong curl -L -o kong.rpm https://www.4wei.cn/files/kong-2.3.3.el7.amd64.rpm yum install -y kong.rpm --nogpgcheck # 修改配置文件 # admin http:8001, admin https:8444 # proxy http:8000, proxy https:8443 cat > /etc/kong/kong.conf <<EOF admin_listen = 0.0.0.0:8001 reuseport backlog=16384, 0.0.0.0:8444 http2 ssl reuseport backlog=16384 database = postgres pg_host = 172.30.26.2 pg_port = 5432 pg_timeout = 5000 pg_user = kong pg_password = kong pg_database = kong EOF # 迁移数据库,只需要在一台机器上执行就行 # KONG_PASSWORD=kongadmin@tikr /usr/local/bin/kong migrations bootstrap -c /etc/kong/kong.conf kong start -c /etc/kong/kong.conf #test proxy curl http://localhost:8000 #test admin curl -i -X GET --url http://localhost:8001/services
9.KongA脚本安装
#! /bin/bash ##### 安装konga #### konga基于nodejs开发,源码安装需要提前安装nodejs,建议docker安装;另外konga不支持PostgreSQL高版本,建议使用9.x版本的。 useradd tikr echo tikr@rmrb | passwd tikr --stdin echo "tikr ALL=(ALL) NOPASSWD: ALL">/etc/sudoers.d/tikr cat /etc/passwd | grep tikr #docker install konga docker run -p 8080:8080 -d \ -e "PORT=8080" \ -e "TOKEN_SECRET=tikr@rmrb" \ -e "DB_ADAPTER=postgres" \ -e "DB_HOST=172.30.26.2" \ -e "DB_PORT=5432" \ -e "DB_USER=kong" \ -e "DB_PASSWORD=kong" \ -e "DB_DATABASE=kong" \ -e "DB_PG_SCHEMA=" \ -e "NODE_ENV=development" \ --name konga \ hub-mirror.c.163.com/pantsel/konga