通过Kubectl命令行创建Ingress 创建Ingress自动创建ELB 步骤 1 登录已配置好kubectl命令的弹性云主机。 步骤 2 创建ingresstestdeployment.yaml、ingresstestsvc.yaml、ingresstestingress.yaml以及ingresstestsecret.yaml文件。 ingresstestdeployment.yaml、ingresstestsvc.yaml、ingresstestingress.yaml、ingresstestsecret.yaml为自定义名称,您可以随意命名。 说明: 选择HTTPS协议时,才需要创建密钥证书ingresstestsecret.yaml。创建密钥的方法请参见11.3 创建密钥。 同一个ELB实例的同一个端口配置HTTPS时,选择的证书需要是一样的。 vi ingresstestdeployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ingresstestdeployment spec: replicas: 1 selector: matchLabels: app: ingresstestdeployment strategy: type: RollingUpdate template: metadata: labels: app: ingresstestdeployment spec: containers: 第三方公开镜像,可以参见描述获取地址,也可以使用自己的镜像 image: nginx imagePullPolicy: Always name: nginx imagePullSecrets: name: defaultsecret vi ingresstestsvc.yaml apiVersion: v1kind: Servicemetadata:labels:app: ingresstestsvc name: ingresstestsvc spec:ports: name: service0port: 8888 protocol: TCPtargetPort: 8888 若需要设置多个端口,可依次填写,如下展示 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.subnetid: 29a0567e96f1422791cc64f54d0b064d kubernetes.io/elb.enterpriseID: f6b9fffca9b74a50a25e364f587abe44 kubernetes.io/elb.autocreate: '{"type":"public","bandwidthname":"ccebandwidth1551163379627","bandwidthchargemode":"bandwidth","bandwidthsize":5,"bandwidthsharetype":"PER","eiptype":"5bgp","name":"james"}' kubernetes.io/elb.tlscipherspolicy: tls12 kubernetes.io/elb.port: "80" kubernetes.io/ingress.class: cce 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.autocreate 是 表816 object 自动创建Ingress关联的ELB示例:l 公网自动创建:值为 '{"type":"public","bandwidthname":"ccebandwidth1551163379627","bandwidthchargemode":"bandwidth","bandwidthsize":5,"bandwidthsharetype":"PER","eiptype":"5bgp","name":"james"}'l 私网自动创建:值为 '{"type":"inner", "name": "Alocationdtest"}' 表 elb.autocreate字段数据结构说明 参数 是否必填 参数类型 描述 name 否 String 自动创建的负载均衡的名称。取值范围:164个字符,小写字母,数字,下划线,小写字母开头,小写字母或者数字结尾。默认值:ccelb+ingress.UID type 否 String 负载均衡实例网络类型,公网或者私网。l public:公网型负载均衡l inner:私网型负载均衡默认值:inner bandwidthname 是 String 带宽的名称,默认值为:ccebandwidth。取值范围:164个字符,小写字母,数字,下划线,小写字母开头,小写字母或者数字结尾。 bandwidthchargemode 是 String 带宽付费模式。l bandwidth:按带宽计费l traffic:按流量计费 bandwidthsize 是 Integer 带宽大小,请根据Region带宽支持范围设置。 bandwidthsharetype 是 String 带宽类型,标识是否是共享带宽。取值范围:l WHOLE:共享带宽l PER:独享带宽 eiptype 是 String 弹性公网IP类型,请参考ELB支持的弹性公网IP类型。 availablezone 是 Array of strings 负载均衡所在可用区,必填项。 l4flavorname 否 String 四层负载均衡实例名称。 l7flavorname 是 String 七层负载均衡实例名称,必填项。 ElbVirSubnetIDs 否 Array of strings 负载均衡后端所在子网,不填默认集群子网。不同实例规格将占用不同数量子网IP,不建议使用其他资源(如集群,节点等)的子网网段。默认值:集群所在子网 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