• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

云原生|kubernetes|helm3 自定义离线安装部署ingress-nginx

武飞扬头像
晚风_END
帮助1

前言:

helm作为kubernetes集群内的专用包管理器还是非常的方便的,只是helm在给我们提供便利的同时又给我们增加了不少的困难,例如,很多新的概念,比如,helm仓库,related版本等等,因此,使用helm也是增加了一部分的学习成本在里面。

本文计划使用helm3快速的离线安装ingress-nginx ,也就是不需要考虑仓库的事情了,本地化的工作也不需要考虑了(本地化指的是部署的时候使用的镜像通常都是国外某些网站的镜像,替换成国内的镜像),组件的问题也不需要考虑了,我都写好了,放到网盘内,需要的朋友直接下载,然后一条命令就可以部署好ingress-nginx了,非常的方便快捷。




相关资料下载地址:

链接:https://pan.百度.com/s/1SZiXx_XLwt5woKpvgYuLdg?pwd=sdaa 
提取码:sdaa 

 

相关资料说明:

helm的版本(任意的三版本都可以):

  1.  
    [root@k8s-master ~]# helm version
  2.  
    version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

此次部署使用了三个镜像:

registry.cn-hangzhou.aliyuncs.com/谷歌_containers/nginx-ingress-controller

registry.cnhangzhou.aliyuncs.com_谷歌_containers_defaultbackend_1.4  注意,这个镜像是起保险套的作用,如果ingress清单文件有问题,找不到相对应的资源的时候,这个镜像提供默认的错误页面,例如,ingress的资源清单文件里写错了,访问不到网站了,它就给一个错误页面,省的看到这个页面和管理这个页面的人尴尬!!!!:

学新通

 

jettech_kube-webhook-certgen_v1.5.1

部署方式为DaemonSet,因为是ds模式,因此建议master节点不设置污点。

网络模式为hostNetWork ,因此,请确保宿主机的80和443端口没有被占用。




部署命令

 helm install ingress  ingress-nginx-3.25.0.tgz -n ingress

此命令的输出为(不要害怕这么长的输出,里面有使用ingress的示例,应该好好看看的哦。):

  1.  
    [root@k8s-master ~]# helm install ingress ingress-nginx-3.25.0.tgz -n ingress
  2.  
    NAME: ingress
  3.  
    LAST DEPLOYED: Sun Oct 9 23:00:29 2022
  4.  
    NAMESPACE: ingress
  5.  
    STATUS: deployed
  6.  
    REVISION: 1
  7.  
    TEST SUITE: None
  8.  
    NOTES:
  9.  
    The ingress-nginx controller has been installed.
  10.  
    Get the application URL by running these commands:
  11.  
    export HTTP_NODE_PORT=32080
  12.  
    export HTTPS_NODE_PORT=32443
  13.  
    export NODE_IP=$(kubectl --namespace ingress get nodes -o jsonpath="{.items[0].status.addresses[1].address}")
  14.  
     
  15.  
    echo "Visit http://$NODE_IP:$HTTP_NODE_PORT to access your application via HTTP."
  16.  
    echo "Visit https://$NODE_IP:$HTTPS_NODE_PORT to access your application via HTTPS."
  17.  
     
  18.  
    An example Ingress that makes use of the controller:
  19.  
     
  20.  
    apiVersion: networking.k8s.io/v1beta1
  21.  
    kind: Ingress
  22.  
    metadata:
  23.  
    annotations:
  24.  
    kubernetes.io/ingress.class: nginx
  25.  
    name: example
  26.  
    namespace: foo
  27.  
    spec:
  28.  
    rules:
  29.  
    - host: www.example.com
  30.  
    http:
  31.  
    paths:
  32.  
    - backend:
  33.  
    serviceName: exampleService
  34.  
    servicePort: 80
  35.  
    path: /
  36.  
    # This section is only required if TLS is to be enabled for the Ingress
  37.  
    tls:
  38.  
    - hosts:
  39.  
    - www.example.com
  40.  
    secretName: example-tls
  41.  
     
  42.  
    If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:
  43.  
     
  44.  
    apiVersion: v1
  45.  
    kind: Secret
  46.  
    metadata:
  47.  
    name: example-tls
  48.  
    namespace: foo
  49.  
    data:
  50.  
    tls.crt: <base64 encoded cert>
  51.  
    tls.key: <base64 encoded key>
  52.  
    type: kubernetes.io/tls
学新通

 稍等pod启动片刻后,可以看到如下输出表示部署成功(这里的ingress的service固定端口了,是32080和32443,如有被占用,请释放这两个端口):

  1.  
    [root@k8s-master ~]# k get po,svc -n ingress
  2.  
    NAME READY STATUS RESTARTS AGE
  3.  
    pod/ingress-ingress-nginx-controller-87sh8 1/1 Running 0 2m33s
  4.  
    pod/ingress-ingress-nginx-controller-bfbzj 1/1 Running 0 2m33s
  5.  
    pod/ingress-ingress-nginx-controller-c8xbn 1/1 Running 0 2m33s
  6.  
    pod/ingress-ingress-nginx-defaultbackend-7db4678cf7-zzjnd 1/1 Running 0 2m33s
  7.  
     
  8.  
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  9.  
    service/ingress-ingress-nginx-controller NodePort 10.0.154.40 <none> 80:32080/TCP,443:32443/TCP 2m33s
  10.  
    service/ingress-ingress-nginx-controller-admission ClusterIP 10.0.124.47 <none> 443/TCP 2m33s
  11.  
    service/ingress-ingress-nginx-defaultbackend ClusterIP 10.0.190.225 <none> 80/TCP 2m33s

卸载命令(如果pod有问题,启动有毛病,需要回退的话):

  1.  
    helm uninstall ingress -n ingress
  2.  
     
  3.  
     
  4.  
    [root@k8s-master ~]# helm uninstall ingress -n ingress
  5.  
    release "ingress" uninstalled

 




测试ingress的功能:

部署两个测试用pod:

  1.  
    apiVersion: apps/v1
  2.  
    kind: Deployment
  3.  
    metadata:
  4.  
    name: nginx-deployment
  5.  
    namespace: dev
  6.  
    spec:
  7.  
    replicas: 1
  8.  
    selector:
  9.  
    matchLabels:
  10.  
    app: nginx-pod
  11.  
    template:
  12.  
    metadata:
  13.  
    labels:
  14.  
    app: nginx-pod
  15.  
    spec:
  16.  
    containers:
  17.  
    - name: nginx
  18.  
    image: nginx:1.17.1
  19.  
    ports:
  20.  
    - containerPort: 80
  21.  
    nodeName: k8s-node1
  22.  
    ---
  23.  
    apiVersion: apps/v1
  24.  
    kind: Deployment
  25.  
    metadata:
  26.  
    name: tomcat-deployment
  27.  
    namespace: dev
  28.  
    spec:
  29.  
    replicas: 1
  30.  
    selector:
  31.  
    matchLabels:
  32.  
    app: tomcat-pod
  33.  
    template:
  34.  
    metadata:
  35.  
    labels:
  36.  
    app: tomcat-pod
  37.  
    spec:
  38.  
    containers:
  39.  
    - name: tomcat
  40.  
    image: tomcat:8.5-jre10-slim
  41.  
    ports:
  42.  
    - containerPort: 8080
  43.  
    nodeName: k8s-node2
学新通

发布服务:

vim tomcat-nginx-svc.yaml 

  1.  
    ---
  2.  
    apiVersion: v1
  3.  
    kind: Service
  4.  
    metadata:
  5.  
    name: nginx-service
  6.  
    namespace: dev
  7.  
    spec:
  8.  
    ports:
  9.  
    - port: 80
  10.  
    name: nginx
  11.  
    clusterIP: None
  12.  
    selector:
  13.  
    app: nginx-pod
  14.  
    ---
  15.  
    apiVersion: v1
  16.  
    kind: Service
  17.  
    metadata:
  18.  
    name: tomcat-service
  19.  
    namespace: dev
  20.  
    spec:
  21.  
    selector:
  22.  
    app: tomcat-pod
  23.  
    type: ClusterIP
  24.  
    ports:
  25.  
    - protocol: TCP
  26.  
    port: 80
  27.  
    targetPort: 8080
  28.  
     
学新通

 建立ingress清单文件:

vim ingress-http.yaml

  1.  
    apiVersion: extensions/v1beta1
  2.  
    kind: Ingress
  3.  
    metadata:
  4.  
    name: ingress-http
  5.  
    namespace: dev
  6.  
    annotations:
  7.  
    nginx.ingress.kubernetes.io/rewrite-target: /
  8.  
    kubernetes.io/ingress.class: nginx
  9.  
    # nginx.ingress.kubernetes.io/backend-protocol: HTTPS
  10.  
    # nginx.ingress.kubernetes.io/ssl-redirect: 'true'
  11.  
    # nginx.ingress.kubernetes.io/use-regex: 'true'
  12.  
     
  13.  
    spec:
  14.  
    rules:
  15.  
    - host: nginx.test.com
  16.  
    http:
  17.  
    paths:
  18.  
    - path: /
  19.  
    backend:
  20.  
    serviceName: nginx-service
  21.  
    servicePort: 80
  22.  
    - host: tomcat.test.com
  23.  
    http:
  24.  
    paths:
  25.  
    - path: /
  26.  
    backend:
  27.  
    serviceName: tomcat-service
  28.  
    servicePort: 80
学新通

打开浏览器,(node节点ip和上面的两个域名要做hosts解析,过于简单就不解释如何hosts了)输入上面定义的域名 32080端口:

学新通

 

那么,OK了,helm3部署ingress-nginx就圆满完成了。 

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghbheb
系列文章
更多 icon
同类精品
更多 icon
继续加载