概述
在 Minikube 上安装 Ingress APISIX 以及使用
先决条件
安装Minikube。
安装helm 。
确保你的目标命名空间存在,本文档的 kubectl 操作将在命名空间中执行ingress-apisix。
安装 APISIX 和 apisix-ingress-controller
作为 apisix-ingress-controller 的数据平面,Apache APISIX可以同时使用 Helm chart 进行部署。
可参考:https://apisix.apache.org/docs/ingress-controller/deployments/minikube
helm repo add apisix https://charts.apiseven.com
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
kubectl create ns ingress-apisix
*** 用helm安装Apisix ingress-apisix
helm install apisix apisix/apisix
--set gateway.type=NodePort
--set ingress-controller.enabled=true
--namespace ingress-apisix
kubectl get service --namespace ingress-apisix
已创建五个服务资源。
apisix-gateway,处理真实流量;
apisix-admin,它充当控制平面来处理所有配置更改。
apisix-ingress-controller,它公开了 apisix-ingress-controller 的指标。
apisix-etcd以及apisix-etcd-headless用于 etcd 服务和内部通信。
helm安装apisix:https://apisix.apache.org/docs/helm-chart/apisix/
https://apisix.apache.org/docs/ingress-controller/practices/proxy-the-httpbin-service
apisix-ingress:https://github.com/api7/apisix-mesh-agent
创建namespace
*** 开启minikube并且创建命名空间ingress-apisix
kubectl create namespace ingress-apisix
*** 查看是否创建成功ingress-apisix命名空间
kubectl get namespace
*** minikube宿主机执行kubectl查看对应创建的pods
kubectl get pods -n ingress-apisix
测试部署k8s集群内的web服务
创建文件deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpbin
spec:
replicas: 2
selector:
matchLabels:
app: httpbin
template:
metadata:
labels:
app: httpbin
spec:
terminationGracePeriodSeconds: 0
containers:
- livenessProbe:
image: "jocatalin/kubernetes-bootcamp:v1"
#image: "kennethreitz/httpbin"
#image: "k8s.gcr.io/echoserver:1.4"
imagePullPolicy: IfNotPresent
name: httpbin
ports:
- containerPort: 80
name: httpbin
protocol: "TCP"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: testbin
spec:
replicas: 2
selector:
matchLabels:
app: testbin
template:
metadata:
labels:
app: testbin
spec:
terminationGracePeriodSeconds: 0
containers:
- livenessProbe:
image: "jocatalin/kubernetes-bootcamp:v1"
imagePullPolicy: IfNotPresent
name: testbin
ports:
- containerPort: 80
name: testbin
protocol: "TCP"
保存本文件后执行创建deployment(注意⚠️deployment的命名空间要和apisix保持一致,本次apisix的命名空间是ingress-apisix)
kubectl apply -f deployment.yaml -n ingress-apisix
*** 查看是否创建成功deployment服务
kubectl get deployment -n ingress-apisix
*** 展示出对应testbin表示创建成功
注意:
kubectl create属于Imperative command(祈使式命令),它明确告诉kubectl要创建某个资源或对象;
kubectl apply是Declarative command(声明式命令),apply并不告诉kubectl具体做什么,而是由kubectl根据后面-f中的yaml文件与k8s中对应的object对比,自动探测要进行哪些操作,比如如果object不存在,则create;如果已经存在,则对比差异,update and replace
创建service.yaml文件
apiVersion: v1
kind: Service
metadata:
name: httpbin
spec:
selector:
app: httpbin
ports:
- name: httpbin
port: 80
targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: testbin
spec:
selector:
app: testbin
ports:
- name: testbin
port: 80
targetPort: 8080
创建保存文件后执行生成service(注意⚠️service的命名空间也要和apisix保持一致)
kubectl apply -f service.yaml -n ingress-apisix
***查看是否创建成功service服务
kubectl get service -n ingress-apisix
*** 查看是否创建testbin, httpbin服务成功
例如:
root@sunrj:~# kubectl get deployment -n ingress-apisix
NAME READY UP-TO-DATE AVAILABLE AGE
httpbin 2/2 2 2 25h
testbin 2/2 2 2 25h
*** 创建成功后测试一下service直接映射外网看看是否可以访问对应的deployment
minikube service httpbin-service-test --url -n ingress-apisix
minikube会映射本机一个127.0.0.1:****的随机端口,浏览器直接访问查看是否能够访问
浏览器展示“Hello Kubernetes bootcamp! *****”表示映射成功
创建ingress.yaml文件(apisix可以直接创建ApisixRoute替代ingress的功能)
最后
以上就是迷你自行车为你收集整理的在 Minikube 上安装 Ingress APISIX在 Minikube 上安装 Ingress APISIX 以及使用的全部内容,希望文章能够帮你解决在 Minikube 上安装 Ingress APISIX在 Minikube 上安装 Ingress APISIX 以及使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复