云容器引擎 CCE-自定义部署Nginx Ingress Controller:测试验证

时间:2024-04-03 08:02:33

测试验证

创建一个工作负载,配置新部署的Nginx Ingress Controller为其提供网络访问。

  1. 创建nginx工作负载。

    1. 登录CCE控制台,进入集群,在左侧导航栏中选择“工作负载”,单击右上角“YAML创建”。
    2. 填写以下内容,并单击“确定”。
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx
        strategy:
          type: RollingUpdate
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - image: nginx    #若使用“开源镜像中心”的镜像,可直接填写镜像名称;若使用“我的镜像”中的镜像,请在SWR中获取具体镜像地址。
              imagePullPolicy: Always
              name: nginx
            imagePullSecrets:
            - name: default-secret
      ---
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          app: nginx
        name: nginx
      spec:
        ports:
        - name: service0
          port: 80                 # 访问Service的端口
          protocol: TCP           # 访问Service的协议,支持TCP和UDP
          targetPort: 80           # Service访问目标容器的端口,本例中nginx镜像默认使用80端口
        selector:                  # 标签选择器,Service通过标签选择Pod,将访问Service的流量转发给Pod
          app: nginx
        type: ClusterIP            # Service的类型,ClusterIP表示在集群内访问

  2. 创建Ingress,通过新部署的Nginx Ingress Controller提供网络访问。

    1. 在左侧导航栏中选择“服务”,切换至“路由”页签,单击右上角“YAML创建”。

      对接非插件部署的Nginx Ingress Controller时,只支持使用YAML的方式创建Ingress。

    2. 填写以下内容,并单击“确定”。
      v1.23及以上版本集群:
      apiVersion: networking.k8s.io/v1 
      kind: Ingress 
      metadata: 
        name: ingress-test
        namespace: default 
      spec: 
        ingressClassName: ccedemo  # 填写新创建的nginx ingress controller的ingressClass
        rules: 
        - host: foo.bar.com
          http: 
            paths: 
            - path: / 
              pathType: ImplementationSpecific   #匹配取决于 IngressClass 
              backend: 
                service: 
                  name: nginx    #替换为您的目标服务名称
                  port: 
                    number: 80   #替换为您的目标服务端口
              property: 
                ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH  

      v1.23以下版本集群:

      apiVersion: networking.k8s.io/v1beta1
      kind: Ingress 
      metadata: 
        name: tomcat-t1 
        namespace: test 
        annotations: 
          kubernetes.io/ingress.class: ccedemo  # 填写新创建的nginx ingress controller的ingressClass
      spec: 
        rules: 
          - host: foo.bar.com
            http: 
              paths: 
                - path: / 
                  pathType: ImplementationSpecific 
                  backend: 
                    serviceName: nginx  #替换为您的目标服务名称
                    servicePort: 80     #替换为您的目标服务端口
                  property: 
                    ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH

  3. 登录集群节点,分别通过集群Nginx Ingress插件中的Controller和新部署的Nginx Ingress Controller服务来访问该应用。

    • 通过新建的Nginx Ingress Controller服务来访问该应用(预期返回Nginx页面),其中192.168.114.60为新建的Nginx Ingress Controller服务对应的ELB地址。
      curl -H "Host: foo.bar.com" http://192.168.114.60

    • 通过Nginx Ingress插件中的Controller服务(预期返回404),其中192.168.9.226为Nginx Ingress插件对应的ELB地址。
      curl -H "Host: foo.bar.com" http://192.168.9.226

support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0342.html