环境一:在 K8s 中使用

阶段一:安装

场景一:在标准 K8s 集群中使用

Helm 安装命令

  1. helm repo add higress.io https://higress.cn/helm-charts
  2. helm install higress -n higress-system higress.io/higress create-namespace render-subchart-notes

Higress 的所有 Docker 镜像都一直使用自己独享的仓库,不受 Docker Hub 境内访问受限的影响

获取 Higress Gateway 的 LoadBalancer IP,并记录下来。后续可以通过该 IP 的 80 和 443 端口访问 Higress Gateway。

  1. kubectl get svc -n higress-system higress-gateway -o jsonpath=’{.status.loadBalancer.ingress[0].ip}’

备注

如果 LoadBalancer IP 获取不到,说明您当前的 K8s 集群不支持 LoadBalancer 类型的 Service,可以考虑以下方案:

  1. 使用云厂商提供的 K8s 服务,例如阿里云 ACK
  2. 参考运维参数配置,开启higress-core.gateway.hostNetwork,让 Higress 监听本机端口,再通过其他软/硬负载均衡器转发给固定机器 IP
  3. (生产不建议)使用开源的负载均衡方案 MetalLB

场景二:在本地 K8s 环境中使用

以下步骤适用于所有在本地启动 K8s 集群进行验证的场景。如果您本地已经配置好了一个测试集群,可以直接跳转到第三步安装 Higress。

第一步:安装 kubectl & kind

MacOS:

  1. # for Intel Macs
  2. [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-darwin-amd64
  3. # for Apple Silicon Macs (M1/M2)
  4. [ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-darwin-arm64
  5. chmod +x ./kubectl ./kind
  6. sudo mv ./kubectl ./kind /usr/local/bin

Windows 中使用 PowerShell:

下载 kubectl v1.27.1kind v0.18.0

如果你本地安装了 curl 工具,可直接执行以下命令:

  1. curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.18.0/kind-windows-amd64

注:若要获知 kubectl 的最新稳定版本(例如用于脚本编写等场景),可查看 https://dl.k8s.io/release/stable.txt 的内容.

然后将下载下来的 kind-windows-amd64 或者 kind-windows-amd64.exe 重命名为 kind.exe,并将 kubectl.exekind.exe 移动到 PATH 环境变量所包含的路径下。

Linux:

  1. chmod +x ./kubectl ./kind
  2. sudo mv ./kubectl ./kind /usr/local/bin
第二步:创建并启用 kind

首先创建一个集群配置文件: cluster.conf

  1. # cluster.conf
  2. kind: Cluster
  3. apiVersion: kind.x-k8s.io/v1alpha4
  4. # networking:
  5. # WARNING: It is strongly recommended that you keep this the default
  6. # (127.0.0.1) for security reasons. However it is possible to change this.
  7. # apiServerAddress: “0.0.0.0”
  8. # By default the API server listens on a random open port.
  9. # You may choose a specific port but probably don’t need to in most cases.
  10. # Using a random port makes it easier to spin up multiple clusters.
  11. # apiServerPort: 6443
  12. nodes:
  13. - role: control-plane
  14. kubeadmConfigPatches:
  15. - |
  16. kind: InitConfiguration
  17. nodeRegistration:
  18. kubeletExtraArgs:
  19. node-labels: ingress-ready=true
  20. extraPortMappings:
  21. - containerPort: 80
  22. hostPort: 80
  23. protocol: TCP
  24. - containerPort: 443
  25. hostPort: 443
  26. protocol: TCP

Mac & Linux 系统执行:

  1. kind create cluster name higress config=cluster.conf
  2. kubectl config use-context kind-higress

Windows 系统执行:

  1. kind.exe create cluster name higress config=cluster.conf
  2. kubectl.exe config use-context kind-higress

备注

上述配置是为了将本地(127.0.0.1)的80和443端口用于Higress访问

第三步:安装 Higress

本地安装开关: --set global.local=true

  1. helm repo add higress.io https://higress.io/helm-charts
  2. helm install higress -n higress-system higress.io/higress create-namespace render-subchart-notes set global.local=true set global.o11y.enabled=false

若要启用 Higress 内置的套件,可参阅安装部署文档。

安装完成后,通过本地的 80 和 443 端口即可访问本地集群内的 Higress Gateway。

注:如果您使用的是本地现存的 K8s 集群,那么可能需要先执行下方命令将 K8s 集群内的端口映射出来,然后再尝试访问本地端口。

  1. kubectl port-forward service/higress-gateway -n higress-system 80:80 443:443

阶段二:配置

假设在 default 命名空间下已经部署了一个名为 foo 的服务,而我们希望创建一个对应 http://foo.bar.com/foo 的路由指向该服务。

如果需要的话,各位可以使用下方 YAML 来创建对应的测试服务。

  1. kind: Pod
  2. apiVersion: v1
  3. metadata:
  4. name: foo-app
  5. labels:
  6. app: foo
  7. spec:
  8. containers:
  9. - name: foo-app
  10. image: higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/http-echo:0.2.4-alpine
  11. args:
  12. - “-text=foo
  13. —-
  14. kind: Service
  15. apiVersion: v1
  16. metadata:
  17. name: foo-service
  18. spec:
  19. selector:
  20. app: foo
  21. ports:
  22. # Default port used by the image
  23. - port: 5678

方法一:使用 Higress Console 进行配置

使用 hgctl 打开控制台:

  1. hgctl dashboard console

首次访问时需要先初始化管理员账号。

image

初始化完成后,界面会自动跳转至登录页面。请使用前面设置的用户名密码登录 Higress 控制台。

image

点击左侧“域名管理”导航栏,然后点击页面右侧的“创建域名”按钮。按照下图所示内容填写表单并点击“确定”按钮。

image

点击左侧“路由管理”导航栏,然后点击页面右侧的“创建路由”按钮。按照下图片所示内容填写表单并点击“确定”按钮。

image

方法二:使用 Ingress CRD 进行配置

使用下方 YAML 来创建我们需要的路由配置。

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: foo
  5. spec:
  6. ingressClassName: higress
  7. rules:
  8. - host: foo.bar.com
  9. http:
  10. paths:
  11. - pathType: Prefix
  12. path: “/foo
  13. backend:
  14. service:
  15. name: foo-service
  16. port:
  17. number: 5678

阶段三:请求验证

执行以下命令,验证测试路由可以正常工作:

  1. # should output “foo”
  2. curl http://GatewayIP/foo -H ‘host: foo.bar.com’

环境二:脱离 K8s 使用

阶段一:安装

如果您是在云上部署,生产环境推荐使用企业版(无需 K8s),开发测试可以使用下面一键部署社区版:

Deploy on AlibabaCloud ComputeNest

本地开发可以使用极简方式部署,基于本地文件做配置存储:

  1. # 创建一个工作目录
  2. mkdir higress; cd higress
  3. # 启动 higress,配置文件会写到工作目录下
  4. docker run -d rm name higress-ai -v ${PWD}:/data \
  5. -p 8001:8001 -p 8080:8080 -p 8443:8443 \
  6. higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest

监听端口说明如下:

  • 8001 端口:Higress UI 控制台入口
  • 8080 端口:网关 HTTP 协议入口
  • 8443 端口:网关 HTTPS 协议入口

或者使用下面方式,对接 Nacos 做配置存储:

  1. curl -fsSL https://higress.io/standalone/get-higress.sh | bash -s — -a -c nacos://192.168.0.1:8848 —nacos-username=nacos —nacos-password=nacos

请将 192.168.0.1 替换为 Nacos 服务器的 IP(如果 Nacos 部署在本机,请不要使用如 localhost127.0.0.1 的 Loopback 地址),并按需调整 --nacos-username--nacos-password 的取值。如果 Nacos 服务未开启认证功能,则可以移除这两个参数。

阶段二:配置

进入 Higress 控制台。首次访问时需要先初始化管理员账号。 image

初始化完成后,界面会自动跳转至登录页面。请使用前面设置的用户名密码登录 Higress 控制台。

image

点击左侧“服务来源”导航栏,然后点击页面右侧的“创建服务来源”按钮。按照下图所示内容填写表单并点击“确定”按钮。

image

点击左侧“域名管理”导航栏,然后点击页面右侧的“创建域名”按钮。按照下图所示内容填写表单并点击“确定”按钮。

image

点击左侧“路由管理”导航栏,然后点击页面右侧的“创建路由”按钮。按照下图片所示内容填写表单并点击“确定”按钮。

image