Shinyproxy: [Solicitação de recurso] Possibilidade de adicionar anotações a pods no Kubernetes

Criado em 22 mai. 2019  ·  5Comentários  ·  Fonte: openanalytics/shinyproxy

Ei pessoal,

Eu queria saber se a possibilidade de adicionar anotações aos pods lançados pelo shinyproxy no Kubernetes poderia ser adicionada? Isso nos permitiria anexar uma função do AWS IAM a um contêiner e usar recursos da AWS em aplicativos brilhantes.

Muito obrigado antecipadamente! E obrigado por todo o excelente trabalho.

Saúde,

Emelie

enhancement

Comentários muito úteis

Caso alguém esteja tendo o mesmo problema, encontrei uma solução alternativa para adicionar anotações e tolerâncias a pods iniciados por proxy brilhante.
Na minha configuração, o proxy brilhante lança pods em um namespace dedicado. Eu lancei outro container junto com shinyproxy que constantemente anota e corrige qualquer pod nesse namespace.

(na seção spec de implantação):

- name: shiny-role-spammer
  image: zlabjp/kubernetes-resource
  command:
  - "/bin/bash"
  - "-c"
  - |
    while [ 1 ]; do
      # Add annotation for kube2iam
      kubectl -n external annotate pods --all iam.amazonaws.com/role="arn:aws:iam::123456654321:role/shiny-external";
      # Add tolerations
      kubectl -n external get pods -o jsonpath='{.items[*].metadata.name}' | grep sp- | \
        xargs kubectl -n external patch -p \
        '{"spec":{"tolerations":[{"key":"purpose", "operator": "Equal", "value": "external", "effect": "NoSchedule"}]}}' \
        pod
      sleep 2;
    done

Todos 5 comentários

Eu também gostaria de adicionar anotações aos pods lançados pelo proxy brilhante exatamente pelo mesmo motivo. Tentei alterar o código para esse fim, mas minhas habilidades em Java não são boas o suficiente.

Se alguém ainda está mantendo o projeto, este seria um recurso muito útil!

Caso alguém esteja tendo o mesmo problema, encontrei uma solução alternativa para adicionar anotações e tolerâncias a pods iniciados por proxy brilhante.
Na minha configuração, o proxy brilhante lança pods em um namespace dedicado. Eu lancei outro container junto com shinyproxy que constantemente anota e corrige qualquer pod nesse namespace.

(na seção spec de implantação):

- name: shiny-role-spammer
  image: zlabjp/kubernetes-resource
  command:
  - "/bin/bash"
  - "-c"
  - |
    while [ 1 ]; do
      # Add annotation for kube2iam
      kubectl -n external annotate pods --all iam.amazonaws.com/role="arn:aws:iam::123456654321:role/shiny-external";
      # Add tolerations
      kubectl -n external get pods -o jsonpath='{.items[*].metadata.name}' | grep sp- | \
        xargs kubectl -n external patch -p \
        '{"spec":{"tolerations":[{"key":"purpose", "operator": "Equal", "value": "external", "effect": "NoSchedule"}]}}' \
        pod
      sleep 2;
    done

boa ideia! Perfeito!

Olá a todos

Obrigado pelo seu PR!
Para não precisar implementar todos os recursos do Kubernetes no ContainerProxy, decidimos adicionar uma maneira genérica de adicionar uma configuração específica do Kubernetes a um aplicativo ContainerProxy. Esse recurso é chamado de kubernetes-pod-patches e permite corrigir a especificação do Pod antes de ser criado pelo ContainerProxy.
Mais informações sobre esse recurso podem ser encontradas aqui (você precisa rolar um pouco para baixo).
Isso deve cobrir seu caso de uso. Sinta-se à vontade para abrir um problema se tiver algum problema com esse recurso.
A mudança está incluída apenas no ShinyProxy 2.4.0

Mais uma vez obrigado pela sua contribuição.

Obrigado @LEDfan esta solução é realmente ótima - veja agora!

Após algumas tentativas e erros, consegui fazê-lo funcionar para adicionar anotações de função do IAM da seguinte maneira:

  - id: 01_hello
    displayName: Hello Application
    description: Application which demonstrates the basics of a Shiny app
    containerCmd: ["R", "-e", "shinyproxy::run_01_hello()"]
    containerImage: openanalytics/shinyproxy-demo
    kubernetes-pod-patches: |
     - op: add
       path: /metadata/annotations
       value: { "iam.amazonaws.com/role": "<YOUR-IAM-ROLE>" }
Esta página foi útil?
0 / 5 - 0 avaliações