环境介绍

节点 master01 work01 work02
主机/ip calico-master01/192.168.195.135 calico-master01/192.168.195.135 calico-master01/192.168.195.135
版本 1.25.2
# 操作系统版本
root@calico-master01:~/bitnami-ingress# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

INSTALLATION

依赖项:需要安装helm,下文介绍的安装就是使用helm安装的。helm安装请参考链接:https://helm.sh/docs/intro/install/

安装ingress-controller

# 添加bitnami的helm仓库,并更新

helm repo add bitnami https://charts.bitnami.com/bitnami

helm update

# 把ingress-controller chart拉取到本地

helm pull bitnami/nginx-ingress-controller

# 拉取下来的是一个压缩包

root@calico-master01:~/helm# ls
nginx-ingress-controller-9.3.18.tgz # 解压缩
root@calico-master01:~/helm/helm# tar -xf nginx-ingress-controller-9.3.18.tgz
root@calico-master01:~/helm/helm# ls
nginx-ingress-controller nginx-ingress-controller-9.3.18.

# 备份默认values.yaml文件,并修改

cp nginx-ingress-controller/values.yaml nginx-ingress-controller/values-prod.yaml

vim nginx-ingress-controller/values-prod.yaml

# 修改以下几个地方
## 第一处是修改ingress-controller服务Deployment的NodeSelector;此处为了把资源部署到打了此标签的节点
404 nodeSelector:
405 kubernetes.io/os: linux
406 edgenode: 'true'

## 第二处是修改默认后端defaultBackend的NodeSelector;此处为了把资源部署到打了此标签的节点
725 nodeSelector:
726 kubernetes.io/os: linux
727 edgenode: 'true'

## 第三处修改ingress-controller服务service的类型,默认是LoadBalance
763 service:
764 ## @param service.type Kubernetes Service type for Controller
765 ##
766 # type: LoadBalancer
767 type: NodePort

# 执行helm install 安装

## 创建命名空间部署ingress-controller
  kubectl create ns bitnami-ingress-nginx
## 节点打标签
  kubectl label nodes calico-work02 edgnode=true

root@calico-master01:~/helm/helm# helm install myingress ./nginx-ingress-controller -f ./nginx-ingress-controller/values-prod.yaml --namespace bitnami-ingress-nginx
NAME: myingress
LAST DEPLOYED: Fri Oct 21 05:36:26 2022
NAMESPACE: bitnami-ingress-nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx-ingress-controller
CHART VERSION: 9.3.18
APP VERSION: 1.4.0 ** Please be patient while the chart is being deployed ** The nginx-ingress controller has been installed.

创建测试资源

# 创建测试资源的命名空间
kubectl create ns test-ns

# 创建httpd测试服务
kubectl apply -f httpd.yaml

root@calico-master01:~/ingress# cat httpd.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: web01
namespace: test-ns
spec:
replicas: 3
selector:
matchLabels:
app: httpd01
template:
metadata:
labels:
app: httpd01
spec:
containers:
- name: httpd
image: httpd:latest
---
apiVersion: v1
kind: Service
metadata:
name: httpd-svc
namespace: test-ns
spec:
selector:
app: httpd01
ports:
- protocol: TCP
port: 80
targetPort: 80

# 创建tomcat测试服务
kubectl apply -f tomcat.yaml

root@calico-master01:~/ingress# cat tomcat.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: web02
namespace: test-ns
spec:
replicas: 3
selector:
matchLabels:
app: tomcat01
template:
metadata:
labels:
app: tomcat01
spec:
containers:
- name: tomcat
image: tomcat:8.5.45
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-svc
namespace: test-ns
spec:
selector:
app: tomcat01
ports:
- protocol: TCP
port: 8080
targetPort: 8080

创建Ingress资源

kubectl apply -f bitnami-ingress.yaml 

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bitnami-ingress
namespace: test-ns
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: www.example.com
http:
paths:
- backend:
service:
name: httpd-svc
port:
number: 80
path: /
pathType: Prefix
- backend:
service:
name: tomcat-svc
port:
number: 8080
path: /tomcat
pathType: Prefix

访问httpd,tomcat应用验证Ingress规则

# 配置本地host域名解析
vim /etc/hosts
...
192.168.195.138 www.example.com
...

# curl命令调用httpd服务
root@calico-master01:~/bitnami-ingress# curl -I www.example.com:30688
HTTP/1.1 200 OK
Date: Fri, 21 Oct 2022 06:19:51 GMT
Content-Type: text/html
Content-Length: 45
Connection: keep-alive
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes

# curl命令调用tomcat服务

root@calico-master01:~/bitnami-ingress# curl -I www.example.com:30688/tomcat
HTTP/1.1 200
Date: Sat, 22 Oct 2022 08:29:08 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive

本地window浏览器访问

需先配置C:\Windows\System32\drivers\etc文件

添加域名与主机的对应关系,这里我这个ip是work02的主机IP

访问http服务

访问tomcat

问题解决:

第一次curl命令执行的时候报错了503

查看ingress-controller的日志

显示ingress的规则没有匹配上,"Error obtaining Endpoints for Service "bitnami-ingress-nginx/httpd-svc": no object matching key "bitnami-ingress-nginx/httpd-svc" in local store",应该是我第一次编辑的ingress的yaml文件,metadata指定的namespace是bitnami-ingress-nginx,而此命名空间底下并没有httpd-svc,所以问题解决就是kubectl delete -f  bitnami-ingress.yaml 删掉bitnami-ingress-nginx命名空间下的ingress,修改bitnami-ingress.yaml,把namespace的值改成httpd-svc一样的test-ns,再kubectl apply -f  bitnami-ingress.yaml

再看看ingress-controller的日志

 

nginx Ingress Controller Packaged by Bitnami的更多相关文章

  1. kubernetes nginx ingress controller部署

    Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...

  2. Kubernetes 服务入口管理与 Nginx Ingress Controller

    Kubernetes 具有强大的副本,动态扩容等特性,每一次 Pod 的变化 IP 地址都会发生变化,所以 Kubernetes 引进了 Service 的概念.Kubernetes 中使用 Serv ...

  3. 11. Ingress及Ingress Controller(主nginx ingress controller)

    11. Ingress,Ingress Controller拥有七层代理调度能力 什么是Ingress: Ingress是授权入站连接到达集群服务的规则集合 Ingress是一个Kubernetes资 ...

  4. 见异思迁:K8s 部署 Nginx Ingress Controller 之 kubernetes/ingress-nginx

    前天才发现,区区一个 nginx ingress controller 竟然2个不同的实现.一个叫 kubernetes/ingress-nginx ,是由 kubernetes 社区维护的,对应的容 ...

  5. Kubernetes 部署 Nginx Ingress Controller 之 nginxinc/kubernetes-ingress

    更新:这里用的是 nginxinc/kubernetes-ingress ,还有个 kubernetes/ingress-nginx ,它们的区别见 Differences Between nginx ...

  6. 使用 NGINX 和 NGINX Plus 的 Ingress Controller 进行 Kubernetes 的负载均衡

    运行和管理跨机器集群的大规模的容器微服务应用是一个极具挑战的任务.Kubernetes 提供了一个强大的容器编排解决方案,从而帮助我们迎接这个挑战.它包含了一些重要特性,比如容错,自动伸缩,滚动升级, ...

  7. kubernetes nginx ingress 使用记录

    前言 ingress是一种可以暴露k8s集群内部service的方式,用户编辑配置文件定义一个ingress资源即可实现外部网络访问内网service. ingress controller是来管理所 ...

  8. Helm 安装Nginx Ingress

    为了便于将集群中的服务暴露到集群外部,需要使用Ingress.接下来使用Helm将Nginx Ingress部署到Kubernetes上. Nginx Ingress Controller被部署在Ku ...

  9. 实操教程丨如何在K8S集群中部署Traefik Ingress Controller

    注:本文使用的Traefik为1.x的版本 在生产环境中,我们常常需要控制来自互联网的外部进入集群中,而这恰巧是Ingress的职责. Ingress的主要目的是将HTTP和HTTPS从集群外部暴露给 ...

  10. Nginx Ingress on TKE 部署最佳实践

    概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...

随机推荐

  1. HTTP请求的几种方式

    1.HTTP请求简介[1] HTTP(Hypertest Transfer Protocol)是用于传输像HTML这样的超文本文件的应用层协议.它被设计用于WEB浏览器端和WEB服务端的交互,但也有其 ...

  2. 2023-06-17:说一说redis中渐进式rehash?

    2023-06-17:说一说redis中渐进式rehash? 答案2023-06-17: 在Redis中,如果哈希表的数组一直保持不变,就会增加哈希冲突的可能性,从而降低检索效率.为了解决这个问题,R ...

  3. 行行AI人才直播第7期:奇计AI创始人左晟《AI时代的商业挑战和机遇》

    行行AI人才是博客园和顺顺智慧共同运营的AI行业人才全生命周期服务平台,是园子商业化努力的一个重要方向. 行行AI人才直播希望以直播的方式让大家更多了解AI行业的现状与未来可能的发展方向. 随着人工智 ...

  4. 【HDC.Cloud 2023】新鲜速递:从多元生态、开源到人才培养,让开发者成为决定性力量

    摘要:华为云开发者联盟邀您一起回顾大会精彩时刻. 本文分享自华为云社区<[HDC.Cloud 2023]新鲜速递:从多元生态.开源到人才培养,让开发者成为决定性力量>,作者: 华为云社区精 ...

  5. JS中使用Promise.all控制所有的异步请求都完成后,在执行后续逻辑

    使用场景为,在js中连续的几个异步耗时操作,后面的耗时操作需要使用第一个操作的返回结果.例如调用ajax异步接口,需要先创建完主表,然后拿到主表id在去循环创建明细表,等全部创建完成后,弹出提示来,或 ...

  6. .NET周刊【7月第3期 2023-07-16】

    国内文章 揭秘 .NET 中的 TimerQueue(上) https://www.cnblogs.com/eventhorizon/p/17557821.html TimerQueue 是.NET中 ...

  7. Blazor 跨平台的、共享一套UI的天气预报 Demo

    1. 前言 很久之前就读过 dotnet9 大佬的一篇文章,MAUI与Blazor共享一套UI,媲美Flutter,实现Windows.macOS.Android.iOS.Web通用UI,没读过的可以 ...

  8. 封装一个可以左右滑动的Blazor组件

    为什么要封装组件 最近写MAUI Blazor的时候,总是苦于对移动端没有什么好的支持,没有一个能左右滑动的tab切换组件. 既然没有,那就自己封装一个. 简单了解轮播图.tab切换的库之后,决定使用 ...

  9. 如何编写难以维护的React代码?耦合组件

    如何编写难以维护的React代码?耦合组件 在许多项目中,我们经常会遇到一些难以维护的React代码.其中一种常见的情况是:子组件直接操作父组件方法,从而导致父子组件深度耦合.这样的实现让子组件过于依 ...

  10. 【技术实战】Vue技术实战【五】

    需求实战一 效果展示 代码展示 <template> <div class="home-component"> <div class="pr ...