将Google Cloud Storage Bucket与GCE LoadBalancer一起使用...不在主机和路径中

时间:2018-04-16 19:59:41

标签: nginx kubernetes google-cloud-storage google-kubernetes-engine kubernetes-ingress

我正在尝试将流量路由到GCE上的静态存储桶。现在我正在使用ingress,但在这里找到了Google的文档:

https://cloud.google.com/compute/docs/load-balancing/http/adding-a-backend-bucket-to-content-based-load-balancing

我一路走来,但是在主机和路径菜单中进行网址映射时无法选择“后端存储桶”...即使它列在后端存储区下。可以选择“后端服务”选项,但禁用后端存储桶菜单。有没有人知道更好的教程,或者更好的方法将流量路由到存储桶以获取静态内容?

我可以在入口yaml中指定它吗?

3 个答案:

答案 0 :(得分:1)

看来kubernetes可用 1.19

但是,请注意,GKE尚不提供1.19(截至本文发稿时),但是无论我认为这对登陆这里的人都是有用的信息。当1.19可用时,我会尝试一下并更新此答案。

有关此功能在配置中的外观的预览,pull request包含示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-resource-backend
spec:
  defaultBackend:
    resource:
      apiGroup: k8s.example.com
      kind: StorageBucket
      name: static-assets
  rules:
    - http:
        paths:
          - path: /icons
            pathType: ImplementationSpecific
            backend:
              resource:
                apiGroup: k8s.example.com
                kind: StorageBucket
                name: icon-assets

答案 1 :(得分:0)

目前GCE Ingress yaml规范不支持指定“后端存储桶”。

如果您修改Ingress控制器创建的负载均衡器以将一些流量路由到后端存储桶(通过编辑其URL映射),则Ingress控制器会定期覆盖您的更改。

您唯一的选择可能是为您的“后端存储桶”创建单独的负载均衡器。

答案 2 :(得分:0)

如果您启用 ConfigConnector,您可以使用它从 GKE 内的资源(例如您的 Ingress)引用在 GKE 之外创建的资源。您可以使用 External reference 来执行此操作。

或者,如果您想从 GKE 中创建/管理存储分区,您可以使用 StorageBucket 自定义资源定义来实现。

这可能是这样的(更新:我使用 GKE 1.20 尝试了这个,但它不起作用):

@Component({
  selector: 'my-component',
  template: `
    <span>{{myVale|toDate|date:'hh:mm:ss'}}</span>
  `
})
export class MyComponent implements OnInit {
  myValue = 0

  constructor(private myService: MyService){ }

  ngOnInit() {
    this.myService.getValue().subscribe(v => {
      this.myValue = v
    })
  }
}