Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Docs] Provide an option to deploy to GCP via Opta without requiring a registered domain #2729

Closed
2 tasks done
tszumowski opened this issue Jul 29, 2022 · 5 comments
Closed
2 tasks done
Labels
documentation Improvements or additions to documentation infrastructure terraform migration

Comments

@tszumowski
Copy link

Description

Background

Ref: This slack thread. Some users may wish to have a simple deployment-to-GCP option, but do not currently have a registered domain they wish to bind to Flyte. @jeevb provided a sample Envoy configuration that allows one to port-forward a single port from Kubernetes and have access to the UI without exposing to a domain. The suggestion is to add this Envoy option to the GCP deployment docs.

Files

The following was provided by @jeevb (with some simplifications in the config):

envoy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flyte-proxy
  labels:
    app: flyte-proxy
spec:
  selector:
    matchLabels:
      app: flyte-proxy
  template:
    metadata:
      labels:
        app: flyte-proxy
    spec:
      containers:
        - name: proxy
          image: envoyproxy/envoy:v1.21.1
          args:
            - envoy
            - -c /etc/envoy/config.yaml
          ports:
            - name: http
              containerPort: 8000
          volumeMounts:
            - name: config-volume
              mountPath: /etc/envoy
      volumes:
        - name: config-volume
          configMap:
            name: flyte-proxy-config

config.yaml

admin:
  access_log_path: /dev/null
  address:
    socket_address:
      address: 127.0.0.1
      port_value: 9901
static_resources:
  listeners:
  - address:
      socket_address:
        address: 0.0.0.0
        port_value: 8000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          codec_type: AUTO
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains:
              - "*"
              routes:
              - match:
                  path: "/"
                redirect:
                  path_redirect: "/console/"
              - match:
                  prefix: "/console"
                route:
                  cluster: flyteconsole
              - match:
                  prefix: "/__webpack_hmr"
                route:
                  cluster: flyteconsole
              - match:
                  prefix: "/api"
                route:
                  cluster: flyteadmin
              - match:
                  prefix: "/healthcheck"
                route:
                  cluster: flyteadmin
              - match:
                  prefix: "/v1"
                route:
                  cluster: flyteadmin
              - match:
                  prefix: "/login"
                route:
                  cluster: flyteadmin
              - match:
                  prefix: "/me"
                route:
                  cluster: flyteadmin
              - match:
                  prefix: "/flyteidl.service.AdminService"
                route:
                  cluster: flyteadmin_grpc
              - match:
                  prefix: "/openapi"
                route:
                  cluster: flyteadmin_redoc
          http_filters:
          - name: envoy.filters.http.router
  clusters:
  - name: flyteconsole
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: flyteconsole
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: flyteconsole
                port_value: 80
  - name: flyteadmin
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: flyteadmin
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: flyteadmin
                port_value: 80
  - name: flyteadmin_grpc
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    http2_protocol_options: {}
    load_assignment:
      cluster_name: flyteadmin_grpc
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: flyteadmin
                port_value: 81
  - name: flyteadmin_redoc
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: flyteadmin_redoc
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: flyteadmin
                port_value: 87

Directions

  1. Create configmap in flyte namespace: kubectl -n flyte create configmap flyte-proxy-config --from-file config.yaml
  2. Apply the spec: kubect -n flyte apply -f envoy.yaml
  3. Port Forward: kubectl -n flyte port-forward deployment/flyte-proxy 30080:8000
  4. Update ~/.flyte/config.yaml to point to `localhost:8000"

Are you sure this issue hasn't been raised already?

  • Yes

Have you read the Code of Conduct?

  • Yes
@tszumowski tszumowski added documentation Improvements or additions to documentation untriaged This issues has not yet been looked at by the Maintainers labels Jul 29, 2022
@wild-endeavor
Copy link
Contributor

I think this is an issue for AWS as well. You should be able to just remove the -dns section in the opta file, but i haven't tested this and it should be documented anyways.

@shaowei-su
Copy link

              - match:
                  prefix: "/flyteidl.service.DataProxyService"
                route:
                  cluster: flyteadmin_grpc

The data proxy service is missing in the example configmap.

@github-actions
Copy link

github-actions bot commented Sep 3, 2023

Hello 👋, This issue has been inactive for over 9 months. To help maintain a clean and focused backlog, we'll be marking this issue as stale and will close the issue if we detect no activity in the next 7 days. Thank you for your contribution and understanding! 🙏

@github-actions github-actions bot added the stale label Sep 3, 2023
@github-actions
Copy link

Hello 👋, This issue has been inactive for over 9 months and hasn't received any updates since it was marked as stale. We'll be closing this issue for now, but if you believe this issue is still relevant, please feel free to reopen it. Thank you for your contribution and understanding! 🙏

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Sep 11, 2023
@eapolinario eapolinario reopened this Nov 2, 2023
@eapolinario eapolinario removed the untriaged This issues has not yet been looked at by the Maintainers label Dec 22, 2023
@github-actions github-actions bot removed the stale label Dec 23, 2023
@davidmirror-ops
Copy link
Contributor

The current reference implementation for GCP is maintained here
Opta support in OSS is deprecated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation infrastructure terraform migration
Projects
None yet
Development

No branches or pull requests

5 participants