快速开始
环境一:在 K8s 中使用
阶段一:安装
场景一:在标准 K8s 集群中使用
Helm 安装命令
helm repo add higress.io https://higress.io/helm-charts
helm install higress -n higress-system higress.io/higress --create-namespace --render-subchart-notes --set higress-console.domain=console.higress.io
注意:安装完成后会输出一段文本,其中包含获取控制台登录信息的命令。请执行该命令并记录用户名和密码。
例如安装在 higress-system 命名空间下时,执行下面命令获取用户名密码:
export ADMIN_USERNAME=$(kubectl get secret --namespace higress-system higress-console -o jsonpath="{.data.adminUsername}" | base64 -d)
export ADMIN_PASSWORD=$(kubectl get secret --namespace higress-system higress-console -o jsonpath="{.data.adminPassword}" | base64 -d)
echo -e "Username: ${ADMIN_USERNAME}\nPassword: ${ADMIN_PASSWORD}"
获取 Higress Gateway 的 LoadBalancer IP,并记录下来。后续可以通过该 IP 的 80 和 443 端口访问 Higress Gateway。
kubectl get svc -n higress-system higress-gateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
场景二:在本地 K8s环境中使用
以下步骤适用于所有在本地启动 K8s 集群进行验证的场景。如果您本地已经配置好了一个测试集群,可以直接跳转到第三步安装 Higress。
第一步:安装 kubectl & kind
MacOS:
# for Intel Macs
[ $(uname -m) = x86_64 ] && curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-darwin-amd64
# for Apple Silicon Macs (M1/M2), but higress image does not support ARM yet.
# [ $(uname -m) = arm64 ] && curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
# [ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-darwin-arm64
chmod +x ./kubectl ./kind
sudo mv ./kubectl ./kind /usr/local/bin
Windows 中使用 PowerShell:
下载 kubectl v1.27.1 和 kind v0.18.0。
如果你本地安装了 curl
工具,可直接执行以下命令:
curl.exe -LO "https://dl.k8s.io/release/v1.27.1/bin/windows/amd64/kubectl.exe"
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.exe
和 kind.exe
移动到 PATH
环境变量所包含的路径下。
Linux:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-linux-amd64
chmod +x ./kubectl ./kind
sudo mv ./kubectl ./kind /usr/local/bin
第二步:创建并启用 kind
首先创建一个集群配置文件: cluster.conf
# cluster.conf
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
Mac & Linux 系统执行:
kind create cluster --name higress --config=cluster.conf
kubectl config use-context kind-higress
Windows 系统执行:
kind.exe create cluster --name higress --config=cluster.conf
kubectl.exe config use-context kind-higress
备注
上述配置是为了将本地(127.0.0.1)的80和443端口用于Higress访问,如果希望在本地使用 LoadBalancer IP 进行访问,可以参考Kind文档https://kind.sigs.k8s.io/docs/user/loadbalancer/
提供的能力予以支持。
第三步:安装 Higress
本地安装开关: --set global.kind=true
;
为避免歧义,后面会调整属性名称为:--set global.local=true
helm repo add higress.io https://higress.io/helm-charts
helm install higress -n higress-system higress.io/higress --create-namespace --render-subchart-notes --set global.local=true --set higress-console.o11y.enabled=false --set higress-console.domain=console.higress.io --set higress-console.admin.password.value=<你的密码>
若要启用 Higress 内置的套件,可参阅安装部署文档。
安装完成后,通过本地的 80 和 443 端口即可访问本地集群内的 Higress Gateway。
注:如果您使用的是本地现存的 K8s 集群,那么可能需要先执行下方命令将 K8s 集群内的端口映射出来,然后再尝试访问本地端口。
kubectl port-forward service/higress-gateway -n higress-system 80:80 443:443
阶段二:配置
假设在 default 命名空间下已经部署了一个名为 foo 的服务,而我们希望创建一个对应 http://foo.bar.com/foo 的路由指向该服务。
如果需要的话,各位可以使用下方 YAML 来创建对应的测试服务。
kind: Pod
apiVersion: v1
metadata:
name: foo-app
labels:
app: foo
spec:
containers:
- name: foo-app
image: higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/http-echo:0.2.4-alpine
args:
- "-text=foo"
---
kind: Service
apiVersion: v1
metadata:
name: foo-service
spec:
selector:
app: foo
ports:
# Default port used by the image
- port: 5678
方法一:使用 Higress Console 进行配置
编辑本机的 hosts 文件,将console.higress.io
域名指向该 Higress Gateway 的 IP(在标准 K8s 集群中即前面获取的 LoadBalancer IP。在本地集群中可直接使用 127.0.0.1)。
GatewayIP console.higress.io
在浏览器中输入http://console.higress.io
,使用前面获取或设置的用户名密码登录 Higress 控制台(本地集群用户名固定为 admin)。
点击左侧“域名管理”导航栏,然后点击页面右侧的“创建域名”按钮。按照下图所示内容填写表单并点击“确定”按钮。
点击左侧“路由管理”导航栏,然后点击页面右侧的“创建路由”按钮。按照下图片所示内容填写表单并点击“确定”按钮。
方法二:使用 Ingress CRD 进行配置
使用下方 YAML 来创建我们需要的路由配置。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo
spec:
ingressClassName: higress
rules:
- host: foo.bar.com
http:
paths:
- pathType: Prefix
path: "/foo"
backend:
service:
name: foo-service
port:
number: 5678
阶段三:请求验证
执行以下命令,验证测试路由可以正常工作:
# should output "foo"
curl http://GatewayIP/foo -H 'host: foo.bar.com'
环境二:脱离 K8s 在 Docker Compose 中使用
阶段一:安装
安装命令一:使用独立部署的 Nacos
curl -fsSL https://higress.io/standalone/get-higress.sh | bash -s -- -c nacos://192.168.0.1:8848 --nacos-username=nacos --nacos-password=nacos -p <你的密码>
请将 192.168.0.1
替换为 Nacos 服务器的 IP(如果 Nacos 部署在本机,请不要使用如 localhost
或 127.0.0.1
的 Loopback 地址),并按需调整 --nacos-username
和 --nacos-password
的取值。如果 Nacos 服务未开启认证功能,则可以移除这两个参数。
安装命令二:使用 Higress 内置 Nacos
curl -fsSL https://higress.io/standalone/get-higress.sh | bash -s -- --use-builtin-nacos -p <你的密码>
注:Windows 系统下可以使用 Cygwin、Git Bash 等类 Unix Shell 中执行上述命令。
阶段二:配置
在浏览器中输入http://127.0.0.1:8080
,使用用户名 admin
和安装时设置的密码登录 Higress 控制台。
点击左侧“服务来源”导航栏,然后点击页面右侧的“创建服务来源”按钮。按照下图所示内容填写表单并点击“确定”按钮。
点击左侧“域名管理”导航栏,然后点击页面右侧的“创建域名”按钮。按照下图所示内容填写表单并点击“确定”按钮。
点击左侧“路由管理”导航栏,然后点击页面右侧的“创建路由”按钮。按照下图片所示内容填写表单并点击“确定”按钮。
阶段三:请求验证
执行以下命令,验证测试路由可以正常工作:
# should output a JSON object containing request data
curl http://localhost/get?foo=bar -H 'host: foo.bar.com'