-
Helm最快安装——官网提供的脚本——默认获取最新版本
cd /usr/local/src/
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm search hub wordpress
source <(helm completion bash)
helm completion bash > /etc/bash_completion.d/helm
由于国外很多镜像网站国内无法访问,例如gcr.io ,建议使用阿里源,
AppHub 是一个托管在国内公有云上、全公益性的 Helm Hub “中国站”,它的后端由阿里云容器平台团队的三位工程师利用 20% 时间开发完成。
而这个站点的一个重要职责,就是把所有 Helm 官方 Hub 托管的应用自动同步到国内;同时,自动将 Charts 文件中的 gcr.io 等所有有网络访问问题的 URL 替换成为稳定的国内镜像 URL。
目前helm3已经不依赖于tiller,Release 名称可在不同 ns 间重用
安装helm
Helm3 不需要安装tiller,下载到 Helm 二进制文件直接解压到 $PATH 下就可以使用了。
[root@master ~]# version=v3.6.0
[root@master ~]# curl -LO https://repo.huaweicloud.com/helm/v3.14.4/helm-v3.14.4-linux-amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 13.5M 100 13.5M 0 0 2636k 0 0:00:05 0:00:05 --:--:-- 2836k
[root@master ~]# tar -zxvf helm-v3.14.4-linux-amd64.tar.gz
linux-amd64/
linux-amd64/helm
linux-amd64/LICENSE
linux-amd64/README.md
[root@master ~]# mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64
-
kong安装(k8s)
kong新版采用无db模式,将所有的配置,通过k8s资源的形式,存储到etcd里面
-
创建命名空间
kubectl create namespace kong
-
部署
wget https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/v2.9.3/deploy/single/all-in-one-dbless.yaml
-
先修改kong-proxy的service类型为nodeport,当然也可以采用LoadBalancer,修改all-in-one-dbless.yaml,找到kong-proxy的service那一段
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
service.beta.kubernetes.io/aws-load-balancer-type: nlb
name: kong-proxy
namespace: kong
spec:
ports:
- name: proxy
port: 80
protocol: TCP
targetPort: 8000
- name: proxy-ssl
port: 443
protocol: TCP
targetPort: 8443
selector:
app: proxy-kong
# type: LoadBalancer
type: NodePort
-
然后添加9080端口,下载下来的文件默认只支持http和https协议的服务访问,我们要添加grpc访问的端口
- 找到proxy-kong的deploy,做如下修改
containers:
- env:
- name: KONG_PROXY_LISTEN
value: 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:9080 http2 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport
backlog=16384
- name: KONG_PORT_MAPS
value: 80:8000, 9080:9080, 443:8443
主要是添加了0.0.0.0:9080 http2 reuseport backlog=16384,这一段和9080:9080, 这一段
-
再找到port,做如下修改
name: proxy
ports:
- containerPort: 8000
name: proxy
protocol: TCP
- containerPort: 8443
name: proxy-ssl
protocol: TCP
- containerPort: 8100
name: metrics
protocol: TCP
- containerPort: 9080
name: grpc
protocol: TCP
主要是添加了最后三行
-
再找到kong-proxy的service,做如下修改
spec:
ports:
- name: proxy
port: 80
protocol: TCP
targetPort: 8000
- name: proxy-ssl
port: 443
protocol: TCP
targetPort: 8443
- name: grpc
port: 9080
protocol: TCP
targetPort: 9080
也是添加最后四行,这样修改了之后就支持grpc的调用(如果开发那边是用kong做grpc的调用网关,有的不用网关,用注册中心consul、etcd)
-
然后创建
kubectl apply -f all-in-one-dbless.yaml
-
查看
-
kong安装(docker)
-
简介
官网: docs.konghq.com/gateway/3.2…
Kong Gateway是一个轻量级、快速、灵活的云原生API网关。 API网关是一个反向代理,它允许您管理、配置和路由到API的请求。 Kong Gateway运行在任何RESTful API之前,并且可以通过模块和插件进行扩展。它旨在运行在分散的架构上,包括混合云和多云部署。
-
运行方式
Kong Gateway 是一个运行在 Nginx 中的 Lua 应用程序。Kong Gateway 与OpenResty一起分发,OpenResty 是一组扩展lua-nginx-module 的模块。
这为模块化架构奠定了基础,插件可以在运行时启用和执行。Kong Gateway 的核心是实现数据库抽象、路由和插件管理。插件可以存在于单独的代码库中,并可以注入到请求生命周期的任何地方,只需几行代码。
Kong 提供了许多插件供您在网关部署中使用。您还可以创建自己的自定义插件。有关详细信息,请参阅 插件开发指南、PDK 参考以及使用其他语言( JavaScript、Go和Python )创建插件的指南。
-
Konga
Konga不是官方应用程序,并且和Kong没有隶属关系。 官网: github.com/pantsel/kon…
Konga是一款基于Kong Admin API的GUI图形化管理界面。
-
docker-compose部署kong和konga
-
准备yaml
[root@k8s-harbor01 docker-compose]# cat docker-compose.yaml
version: '3'
services:
kong-database:
image: postgres:9.6
restart: always #每次总是启动
networks:
- kong-net
environment:
POSTGRES_USER: kong
POSTGRES_DB: kong
POSTGRES_PASSWORD: kong
ports:
- "5432:5432"
#######################
# 执行数据库迁移
######################
kong-migration:
image: kong:2.5.1-centos
command: "kong migrations bootstrap"
networks:
- kong-net
restart: on-failure
environment:
- KONG_DATABASE=postgres
- KONG_PG_DATABASE=kong
- KONG_PG_PASSWORD=kong
- KONG_PG_HOST=kong-database
links:
- kong-database #连接的是kong-database服务的
depends_on:
- kong-database #依赖于kong-database服务
#####################
# kong gateway
#####################
kong:
image: kong:2.5.1-centos
restart: always
networks:
- kong-net
environment:
KONG_DATABASE: postgres
KONG_PG_HOST: kong-database
KONG_PG_PASSWORD: kong
KONG_PROXY_LISTEN: 0.0.0.0:8000
KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443
KONG_ADMIN_LISTEN: 0.0.0.0:8001
depends_on:
- kong-migration
links:
- kong-database
healthcheck:
test: ["CMD", "curl", "-f", "http://kong:8001"]
interval: 5s
timeout: 2s
retries: 15
ports:
- "8001:8001"
- "8000:8000"
- "8443:8443"
#######################
#以下两个是konga GUI
#######################
konga-prepare:
image: pantsel/konga:0.14.9
command: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga" #注意是用户名:密码@数据库服务名称:端口
networks:
- kong-net
restart: on-failure
links:
- kong-database
depends_on:
- kong #依赖kong服务
- kong-database #依赖kong-database服务
konga:
image: pantsel/konga:0.14.9
restart: always
networks:
- kong-net
environment:
DB_ADAPTER: postgres
DB_HOST: kong-database
DB_USER: kong
DB_DATABASE: konga
DB_PASSWORD: kong #必须加上密码,不然会失败
depends_on:
- kong
- kong-database
ports:
- "1337:1337"
networks:
kong-net:
driver: bridge
-
部署
docker-compose up -d
docker-compose ps -a
-
访问并创建基本用户