一、Ingress安装使用
### --- Ingress安装使用

~~~     # 首先安装helm管理工具:
~~~     https://helm.sh/docs/intro/install/
~~~     # 使用helm安装ingress:
~~~     https://kubernetes.github.io/ingress-nginx/deploy/#using-helm
ingress 的rule 怎么配置 ingress 安装_其他
ingress 的rule 怎么配置 ingress 安装_nginx_02
二、安装helm并添加ingress的helm仓库
### --- 安装helm的客户端工具到k8s集群中:https://helm.sh/docs/intro/install/ 
~~~     下载helm二进制程序包:

[root@k8s-master01 ~]# wget https://get.helm.sh/helm-v3.5.4-linux-amd64.tar.gz
[root@k8s-master01 ~]# tar -zxvf helm-v3.5.4-linux-amd64.tar.gz 
[root@k8s-master01 ~]# mv linux-amd64/helm /usr/local/bin/helm
[root@k8s-master01 ~]# helm version
version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"clean", GoVersion:"go1.15.11"}
### --- 添加ingress的helm仓库(课程讲解的版本已经上传至百度网盘)

[root@k8s-master01 ~]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
### --- 查看已经有的helm的仓库

[root@k8s-master01 ~]# helm repo list           
NAME            URL                                       
ingress-nginx   https://kubernetes.github.io/ingress-nginx
### --- 下载ingress的版本包
### --- 下载ingress的helm包至本地
~~~     查看当前helm下Ingress的版本,建议使用040.2以上的版本;因为0.35在k8s1.9是不太好用的。

[root@k8s-master01 ~]# helm search repo ingress-nginx               
NAME                        CHART VERSION   APP VERSION DESCRIPTION                                       
ingress-nginx/ingress-nginx 3.29.0          0.45.0      Ingress controller for Kubernetes using NGINX a...
### --- 第一个ingress-nginx是仓库的名称,第二个ingress-nginx是helm的包名 

[root@k8s-master01 ~]# helm pull ingress-nginx/ingress-nginx
### --- 更改对应的配置

[root@k8s-master01 ~]# tar -zxvf ingress-nginx-3.6.0.tgz 

三、修改ingress版本包配置参数
### --- 需要修改的位置

[root@k8s-master01 ~]# cd ingress-nginx
### --- helm的配置文件

[root@k8s-master01 ingress-nginx]# vim values.yaml  
controller:
  image:
    repository: registry.cn-beijing.aliyuncs.com/dotbalo/controller # 定义为阿里云的镜像仓库
    tag: "v0.40.2"
    #digest: sha256:46ba23c3fbaafd9e5bd01ea85b2f921d9f2217be082580edc22e6c704a83f02f        //哈希值给去掉
#******省略部分内容**********    
  hostNetwork: true                                 # 部署ingress的方式推荐使用hostNetwork去部署,hostNetwork是直接使用宿主机的端口号,这样它的性能可能会好一点。
#******省略部分内容**********
  dnsPolicy: ClusterFirstWithHostNet                # 若是使用hostNetwork的话dns策略是需要更改为ClusterFirstWithHostNet。不然k8s的pod是解析不了k8s内部的service,所以一定要设置成这个
#******省略部分内容**********  
  kind: DaemonSet                                   # 使用DaemonSet去部署,使用deployment也是可以的,但是使用DaemonSet更受控制,我们可以固定到某个节点上面。这样就可以直接在宿主机上暴露一个端口号,这样k8s外部的集群就可以直接代理到Ingress上面。若是使用Deployment的话,可能需要deploymentservice可能暴露一个notepad,这样性能可能不是很好,推荐使用DaemonSet去部署,DaemonSet在去部署ingress的pod,暴露它的80和443端口,然后在外部的service代理到这个ingress所在的节点上的IP地址和端口号就可以。
  nodeSelector:
    kubernetes.io/os: linux
    ingress: "true"                                 # 我们不是所有节点上都不熟ingress,只有ingress为true这个标签的部署,没有就不用去部署了。
#******省略部分内容**********
  resources:                                        # 这个位置是没有更改的,若是在生产环境下建议限制一下,若是专有节点的话,可以不用去限制。它可以占用整个宿主机的资源。这个资源给的大一点,应为它是k8s的入口,占用的资源还是比较多的。
  #  limits:
  #    cpu: 100m
  #    memory: 90Mi
    requests:
      cpu: 100m
      memory: 90Mi  
#******省略部分内容**********      
    type: ClusterIP                                 # 这边不使用LoadBalancer;LoadBalancer是在云环境中会使用到,若是在我们的机房,就不适用LoadBalancer,因为我们是通过Clusetnetwork去部署的,我们直接通过宿主机IP+端口号就可以访问到资源,所以不使用LoadBalancer;若是云环境的话就需要配置。     
#******省略部分内容**********    
  admissionWebhooks:                                # 是准入控制;若是你的版本过低的话,比如你的版本是0.35的,这个enabled是不能设置为true的,设置为true的话,部署ingress会报错,报错你的证书版本不正确,但是在0.40之后是不会报错的。
    annotations: {}
    enabled: true
    failurePolicy: Fail
    # timeoutSeconds: 10
    port: 8443
    certificate: "/usr/local/certificates/cert"
    key: "/usr/local/certificates/key"
    namespaceSelector: {}
    objectSelector: {}   
#******省略部分内容**********
    patch:
      enabled: true
      image:
        repository: registry.cn-beijing.aliyuncs.com/dotbalo/kube-webhook-certgen
        tag: v1.3.0
        pullPolicy: IfNotPresent
### --- 注释详解

~~~     Controller和admissionWebhook的镜像地址,
~~~     需要将公网镜像同步至公司内网镜像仓库(和课程不一致的版本,
~~~     需要自行同步gcr镜像的,可以百度查一下使用阿里云同步gcr的镜像,也可以参考这个连接
~~~     ,
~~~     或者参考这个连接: 
~~~     )
~~~     hostNetwork设置为true
~~~     dnsPolicy设置为 ClusterFirstWithHostNet
~~~     NodeSelector添加ingress: "true"部署至指定节点
~~~     类型更改为kind: DaemonSet
五、部署ingress
### --- 创建namespace
~~~     部署ingress:给需要部署ingress的节点上打标签;建议Ingress部署在我们创建的namespace上

[root@k8s-master01 ingress-nginx]# kubectl create ns ingress-nginx
namespace/ingress-nginx created
[root@k8s-master01 ingress-nginx]# kubectl get ns
ingress-nginx          Active   11s
### --- 为需要部署的宿主机打标签

[root@k8s-master01 ingress-nginx]# kubectl label node k8s-master03 ingress=true     //我们在k8s-master03上去部署Ingress,给master03打个label,因为在生产环境下并不是每个节点上都需要部署Ingress的,需要指定节点,哎Ingress的配置文件中匹配这个标签就可以了
node/k8s-master03 labeled   
### --- 安装ingress-nginx
~~~     提示信息可以使用这个例子去创建一个Ingress

[root@k8s-master01 ingress-nginx]# helm install ingress-nginx -n ingress-nginx .
apiVersion: networking.k8s.io/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    name: example
    namespace: foo
  spec:
    rules:
      - host: www.example.com
        http:
          paths:
            - backend:
                serviceName: exampleService
                servicePort: 80
              path: /
    # This section is only required if TLS is to be enabled for the Ingress
    tls:
        - hosts:
            - www.example.com
          secretName: example-tls
### --- 查看创建的ingress
~~~     这个pod正在创建过程中,创建完成

[root@k8s-master01 ingress-nginx]# kubectl get po -n ingress-nginx          
NAME                             READY   STATUS    RESTARTS   AGE
ingress-nginx-controller-cxtgg   0/1     Running   0          2m9s

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor