Giter VIP home page Giter VIP logo

anycable-helm's Introduction

Gem Version Build Coverage Status Documentation

AnyCable

AnyCable allows you to use any WebSocket server (written in any language) as a replacement for your Ruby server (such as Faye, Action Cable, etc).

AnyCable uses the same protocol as ActionCable, so you can use its JavaScript client without any monkey-patching.

AnyCable Pro has been launched ๐Ÿš€

Sponsored by Evil Martians

Requirements

Usage

Check out our ๐Ÿ“‘ Documentation.

Links

Talks

Building

Generating gRPC files from .proto

  • Install required GRPC gems:
gem install grpc
gem install grpc-tools
  • Re-generate GRPC files (if necessary):
make

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/anycable/anycable.

Please, provide reproduction script (using this template) when submitting bugs if possible.

License

The gem is available as open source under the terms of the MIT License.

Security Contact

To report a security vulnerability, please contact us at [email protected]. We will coordinate the fix and disclosure.

anycable-helm's People

Contributors

anatoliid avatar ardecvz avatar brc avatar bregor avatar deponian avatar dragonsmith avatar envek avatar joneschi avatar marcel-dias avatar maxd-wttj avatar nepalez avatar palkan avatar sdhull avatar sponomarev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

anycable-helm's Issues

Version 0.5.5 not released

$ helm repo add anycable https://helm.anycable.io/
$ helm repo update
$ helm search repo anycable/anycable-go                                                                                                                                                                                 
NAME                    CHART VERSION   APP VERSION     DESCRIPTION                                   
anycable/anycable-go    0.5.4           1.1.2           A Helm chart for anycable-go websocket server.

How to specify multiple headers?

Hi! I am trying to set multiple headers. Which format should I use? With --set env.anycableHeaders=cookie,authorization,origin I get Error: failed parsing --set data: key "authorization" has no value (cannot end with ,).

Thanks in advance!

env.anycableDisconnectRate wrong type for value

When I set the parameter --set env.anycableDisconnectRate=1000 (or any other number), I receive an error:

Error: UPGRADE FAILED: template: anycable-go/templates/env-secret.yml:13:57: executing "anycable-go/templates/env-secret.yml" at <b64enc>: wrong type for value; expected string; got float64

what am I doing wrong?

changing values should update the deployments/ingress

It seems that there are no checksums implemented for the anycable secrets, which includes the configuration, so we are seeing issues, when we update f.e. the RPC_HOST -> the deployments dont get updates, we have to do it manually.

Could you add a hash for the configuration settings f.e. as annotation to the deployments & ingress, so these resources get updated automatically?

Taints and tolerations

Hi! is it possible somehow to configure tolerations so that I can run AnyCable on spot instances for dev clusters? We run almost everything else on spot instances and scale to zero when unused in dev clusters. Thanks!

Tag 1.2.4 - anycable-go:1.2.4: not found

Hi Team,

Getting image tag not found, Can you pls check and update the default tag. Checked in the docker repo as well, and it seems 1.2.4 tag is removed.

Warning Failed 52m (x4 over 53m) kubelet Failed to pull image "anycable/anycable-go:1.2.4": rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/anycable/anycable-go:1.2.4": failed to resolve reference "docker.io/anycable/anycable-go:1.2.4": docker.io/anycable/anycable-go:1.2.4: not found

Cannot connect to websocket through load balancer

Hey, I can't get any connection at all to the websocket through a digitalocean loadbalancer which is being issued certs by cert-manager, no statuses or errors, just won't connect at all. I've verified the pod is running and can contact the anycable websocket from other pods internally.

I tried using the ingress with acme but cert-manager errored with a depreciation message mentioned in #10

extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress

I tried pointing the anycable.yaml config to use an existing working certificate but was met with errors when trying to contact it internally, not sure if this is directly related to the problem?

root@app-86b55bc956-jtttx:/tmp# websocat wss://10.244.0.102:2096/live
websocat: WebSocket SSL error: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify ?>failed:ssl/statem/statem_clnt.c:1915: (IP address mismatch)
websocat: error running

Ultimately I'm not sure whether this is being caused by misconfiguring TLS or ingresses but the fact I cannot get any connection at all is quite strange considering my rails API is working just fine on 443 and 80 in these configs. Any other configurations I should try or am I facing some kinda bug? Thanks!

load-balancer-svc.yml:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/do-loadbalancer-enable-proxy-protocol: 'true'
    service.beta.kubernetes.io/do-loadbalancer-hostname: "api.example.com"
    service.beta.kubernetes.io/do-loadbalancer-name: "api.example.com"
    service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
    service.beta.kubernetes.io/do-loadbalancer-tls-passthrough: "false"
    service.beta.kubernetes.io/do-loadbalancer-sticky-sessions-cookie-ttl: "60"
  labels:
    helm.sh/chart: ingress-nginx-2.11.1
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/version: 0.34.1
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: controller
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
    - name: anycable
      port: 2096
      targetPort: 2096
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller

ingress.yml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
    nginx.ingress.kubernetes.io/secure-backends: "false"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/websocket-services: "anycable-go-anycable-go"
    nginx.org/websocket-services: "anycable-go-anycable-go"
spec:
  tls:
    - hosts:
        - api.example.to
      secretName: example-kubernetes-tls
  rules:
    - host: "api.example.com"
      http:
        paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: app
                port:
                  number: 3000
          - path: "/v1"
            pathType: Prefix
            backend:
              service:
                name: app
                port:
                  number: 3000
          - path: "/live"
            pathType: Prefix
            backend:
              service:
                name: anycable-go-anycable-go
                port:
                  number: 2096

anycable-go.yml

nodeSelector: {}
replicas: 1
image:
  repository: anycable/anycable-go
  tag: 1.0.2
  pullPolicy: IfNotPresent

revisionHistoryLimit: 10

rollingUpdate:
  maxSurge: 1
  maxUnavailable: 0
  
resources:
  limits:
    cpu: 100m
    memory: 400Mi
  requests:
    cpu: 100m
    memory: 400Mi

serviceMonitor:
  enabled: false
  labels: {}

tls:
  secretName: "example-kubernetes-tls"

env:
  anycableHost: "0.0.0.0"
  anycablePort: "2096"
  anycablePath: "/live"
  anycableRedisUrl: redis://redis:6379/0
  anycableRedisChannel: "__anycable__"
  anycableRedisSentinels: ""
  anycableRedisSentinelDiscoveryInterval: "30"
  anycableRedisKeepaliveInterval: ""
  anycableRpcHost: rpc:50051
  anycableHeaders: "cookie"
  anycableDisconnectRate: "100"
  anycableLogLevel: "debug"
  anycableLogFormat: "text"
  anycableDebug: "true"
  anycableMetricsLog: ""
  anycableMetricsLogInterval: "15"
  anycableMetricsLogFormatter: ""
  anycableMetricsHttp: "/metrics"
  anycableMetricsHost: ""
  anycableMetricsPort: "2097"
  anycableHealthPath: "/health"
  anycableMaxMessageSize: ""

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.