在 Kubernetes 集群中安装 NGINX 入口控制器

本主题描述了如何在 Kubernetes 集群中安装 NGINX 入口控制器并在 Kubernetes 集群外部公开 IBM Control Desk 工作负载。

关于本任务

过程

  1. 安装 NGINX 入口控制器。 更多详情请参阅 NGINX 文档
  2. 创建新的入口安装文件,将其命名为 icd-ingress.yaml。 它用于在集群外部公开 IBM® Control Desk 工作负载。 请参阅以下内容:
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: icd-ingress
      namespace: icd
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/affinity: "cookie"
        nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
        nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
        nginx.ingress.kubernetes.io/affinity-mode: persistent
        nginx.ingress.kubernetes.io/session-cookie-hash: sha1
        nginx.ingress.kubernetes.io/secure-backends: "true"
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
        ingress.kubernetes.io/backend-protocol: "HTTPS"
        kubernetes.io/tls-acme: "true"
    spec:
      tls:
      - hosts:
        - icd.ibm.com
        secretName: icd-secret
      rules:
      - host: icd.ibm.com
        http:
          paths:
          - path: /maximoapi
            backend:
              serviceName: icd-api
              servicePort: 9080
          - path: /cron
            backend:
              serviceName: icd-cron
              servicePort: 9080
          - path: /mea
            backend:
              serviceName: icd-mea
              servicePort: 9080
          - path: /
            backend:
              serviceName: icd-ui
              servicePort: 9080
    
    此处,icd.ibm.com 是主机名,http 协议用于公开不同的服务,例如,服务端口 9080 上的 icd-ui。 秘钥名称 icd-secret 包含 TLS 密钥。
  3. 使用以下命令 应用 icd-ingress 。 这将为 IBM Control Desk 工作负载启用集群中的入口:
    kubectl apply -f icd-ingress.yaml
  4. 同样,为 Service Portal 创建入口资源,将其命名为 sp-ingress.yaml。 访问 Service Portal 前端将需要此入口。 请参阅以下内容:
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: ssp-ingress
      namespace: icd
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/secure-backends: "true"
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
        ingress.kubernetes.io/backend-protocol: "HTTPS"
        kubernetes.io/tls-acme: "true"
    spec:
      tls:
      - hosts:
        - ssp.ibm.com
        secretName: icd-secret
      rules:
      - host: ssp.ibm.com
        http:
          paths:
          - path: /
            backend:
              serviceName: icd-ssp
              servicePort: 3000 
    
    此处,ssp.ibm.com 是主机名,http 协议用于公开不同的服务,例如,服务端口 3000 上的 icd-ssp。 秘钥名称 icd-secret 包含 TLS 密钥。
  5. 使用以下命令应用 ssp-ingress :
    kubectl apply -f sp-ingress.yaml

结果

启用以上步骤后,将在 Kubernetes 设置中启用入口。 可以使用入口访问 IBM Control DeskService Portal 用户界面。
注: 需要在机器的主机文件中添加具有工作程序节点 IP 地址的 icd.ibm.comssp.ibm.com 条目以解析主机名。