通过Kubectl命令行创建Ingress 若需要设置多个端口,可依次填写,如下展示 name: service1 port: 8081 protocol: TCP targetPort: 8081 selector: app: ingresstestdeployment type: NodePort 表 关键参数说明 参数 是否必填 参数类型 描述 port 是 Integer 集群虚拟IP的访问端口,取值范围为1 ~ 65535。 protocol 是 String 该端口的IP协议,支持“TCP”和“UDP”。 targetPort 是 String 对应界面上的容器端口,应用程序实际监听的端口,取值范围为1 ~ 65535。 type 是 String 采用Nodeport的访问类型连接负载均衡,NodePort表示“节点私有IP”。 vi ingresstestingress.yaml 1.15及以上集群版本中的apiVersion为: networking.k8s.io/v1beta1 1.13及以下集群版本中的apiVersion为: extensions/v1beta1 apiVersion: networking.k8s.io/v1beta1 kind: Ingressmetadata:annotations:kubernetes.io/elb.id: f7891f9a49f24ee2b1aef019cd84eb4f kubernetes.io/elb.ip: 192.168.0.39 kubernetes.io/elb.subnetid: 29a0567e96f1422791cc64f54d0b064d kubernetes.io/elb.port: "80" kubernetes.io/ingress.class: cce kubernetes.io/elb.tlscipherspolicy: tls12 name: ingresstestingress spec: tls: secretName: ingresstestsecret rules: http:paths: backend: serviceName: ingresstestsvc servicePort: 8888 property: ingress.beta.kubernetes.io/urlmatchmode: EQUALTO path: "/healthz" host: ingress.com 说明: 安全策略选择(kubernetes.io/elb.tlscipherspolicy)仅在1.17.11及以上版本的集群中支持。 表 关键参数说明 参数 是否必填 参数类型 描述 kubernetes.io/elb.id 是 String 为共享型负载均衡实例的ID,取值范围:1100字符。获取方法:在控制台的“服务列表”中,单击“网络 > 弹性负载均衡 ELB”,单击ELB的名称,在ELB详情页的“基本信息”页签下找到“ID”字段复制即可。 kubernetes.io/elb.ip 是 String 为共享型负载均衡实例的服务地址,公网ELB配置为公网IP,私网ELB配置为私网IP。 kubernetes.io/elb.subnetid String 为子网的ID,取值范围:1100字符。l Kubernetes v1.11.7r0及以下版本的集群自动创建时:必填,l Kubernetes v1.11.7r0以上版本的集群:可不填。 kubernetes.io/elb.eipid 是 String 为弹性公网的ID,取值范围:1100字符。获取方法:在控制台的“服务列表”中,单击“网络 > 弹性公网IP EIP”,单击EIP的名称,在EIP详情页的“基本信息”中找到“ID”字段复制即可。 kubernetes.io/elb.enterpriseID 否 String v1.15及以上版本的集群支持此字段,v1.15以下版本默认创建到default项目下。ELB企业项目ID,选择后可以直接创建在具体的ELB企业项目下。取值范围:1100字符。获取方法:登录控制台后,单击顶部菜单右侧的“企业 > 项目管理”,在打开的企业项目列表中单击要加入的企业项目名称,进入企业项目详情页,找到“ID”字段复制即可。 kubernetes.io/elb.tlscipherspolicy 否 String 默认值:“tls12”,为监听器使用的安全策略,仅在HTTPS协议下生效。取值范围:l tls10inheritl tls10l tls1l tls12l tls12strict各安全策略使用的加密套件列表详细参见表813。 kubernetes.io/elb.port 是 Integer 界面上的对外端口,为注册到负载均衡服务地址上的端口。取值范围:165535。 kubernetes.io/ingress.class 是 String 是否开启nginxingress插件。l cce:表示不开启nginxingress插件,将默认使用共享型负载均衡实例。l nginx:表示开启nginxingress插件。通过API接口创建Ingress时必须增加该参数。 tls 否 Array of strings HTTPS协议时,需添加此参数。 secretName 否 String HTTPS协议时添加,配置为创建的密钥证书名称。 serviceName 是 String 为ingresstestsvc.yaml的服务名称。 servicePort 是 Integer 为ingresstestsvc.yaml的Port。 ingress.beta.kubernetes.io/urlmatchmode 否 String 路由匹配策略。默认值:STARTSWITH(前缀匹配)。取值范围:l EQUALTO:精确匹配l STARTSWITH:前缀匹配l REGEX:正则匹配 path 是 String 为路由路径,用户自定义设置。 host 否 String 为域名配置,默认为空,域名全匹配。 表 tlscipherspolicy取值说明 安全策略 支持的TLS版本类型 使用的加密套件列表 tls10inherit TLSv1.2 TLSv1.1 TLSv1 ECDHERSAAES256GCMSHA384:ECDHERSAAES128GCMSHA256:ECDHEECDSAAES256GCMSHA384:ECDHEECDSAAES128GCMSHA256:AES128GCMSHA256:AES256GCMSHA384:ECDHEECDSAAES128SHA256:ECDHERSAAES128SHA256:AES128SHA256:AES256SHA256:ECDHEECDSAAES256SHA384:ECDHERSAAES256SHA384:ECDHEECDSAAES128SHA:ECDHERSAAES128SHA:DHERSAAES128SHA:ECDHERSAAES256SHA:ECDHEECDSAAES256SHA:AES128SHA:AES256SHA:DHEDSSAES128SHA:CAMELLIA128SHA:EDHRSADESCBC3SHA:DESCBC3SHA:ECDHERSARC4SHA:RC4SHA:DHERSAAES256SHA:DHEDSSAES256SHA:DHERSACAMELLIA256SHA:DHEDSSCAMELLIA256SHA:CAMELLIA256SHA:EDHDSSDESCBC3SHA:DHERSACAMELLIA128SHA:DHEDSSCAMELLIA128SHA tls10 TLS1v1.2 TLSv1.1 TLSv1 ECDHERSAAES256GCMSHA384:ECDHERSAAES128GCMSHA256:ECDHEECDSAAES256GCMSHA384:ECDHEECDSAAES128GCMSHA256:AES128GCMSHA256:AES256GCMSHA384:ECDHEECDSAAES128SHA256:ECDHERSAAES128SHA256:AES128SHA256:AES256SHA256:ECDHEECDSAAES256SHA384:ECDHERSAAES256SHA384:ECDHEECDSAAES128SHA:ECDHERSAAES128SHA:ECDHERSAAES256SHA:ECDHEECDSAAES256SHA:AES128SHA:AES256SHA tls11 TLSv1.2 TLSv1.1 tls12 TLSv1.2 tls12strict TLSv1.2 ECDHERSAAES256GCMSHA384:ECDHERSAAES128GCMSHA256:ECDHEECDSAAES256GCMSHA384:ECDHEECDSAAES128GCMSHA256:AES128GCMSHA256:AES256GCMSHA384:ECDHEECDSAAES128SHA256:ECDHERSAAES128SHA256:AES128SHA256:AES256SHA256:ECDHEECDSAAES256SHA384:ECDHERSAAES256SHA384 vi ingresstestsecret.yaml apiVersion: v1 data: tls.crt: LS0 tLS0tCg tls.key: LS0tL 0tLS0K kind: Secret metadata: annotations: description: test for ingressTLS secrets name: ingresstestsecret namespace: default type: IngressTLS 说明: 此处tls.crt和tls.key为示例,请获取真实密钥进行替换。tls.crt和tls.key的值为Base64加密后的内容。 步骤 3 创建工作负载。 kubectl create f ingresstestdeployment.yaml 回显如下,表明工作负载已创建。 deployment/ingresstestdeployment created kubectl get po 回显如下,表明工作负载创建成功。 NAME READY STATUS RESTARTS AGE ingresstest1627801589r64pk 1/1 Running 0 6s 步骤 4 创建密钥。 kubectl create f ingresstestsecret.yaml 回显如下,表明密钥已创建。 secret/ingresstestsecret created kubectl get secrets 回显如下,表明密钥创建成功。 NAME TYPE DATA AGE dashdashboard Opaque 0 7d dashdashboardtokenf2nbk kubernetes.io/serviceaccounttoken 3 7d defaultsecret kubernetes.io/dockerconfigjson 1 8d defaulttokenwfn4l kubernetes.io/serviceaccounttoken 3 8d paas.elb cfe/secureopaque 2 8d ingresstestsecret IngressTLS 2 13s 步骤 5 创建服务。 kubectl create f ingresstestsvc.yaml 回显如下,表示服务已创建。 service/ingresstestsvc created kubectl get svc 回显如下,表示服务创建成功。 NAME TYPE CLUSTERIP EXTERNALIP PORT(S) AGE ingresstest NodePort 10.247.189.207 8080:30532/TCP 5s kubernetes ClusterIP 10.247.0.1 443/TCP 3d kubectl create f ingresstestingress.yaml 回显如下,表示ingress服务已创建。 ingress/ingresstestingress created kubectl get ingress 回显如下,表示ingress服务创建成功,工作负载可访问。 NAME HOSTS ADDRESS PORTS AGE ingresstest 10.154.76.63 80 10s 步骤 6 在浏览器中输入访问地址 其中,10.154.76.63为统一负载均衡实例的IP地址。 图 访问healthz