Shinyproxy: [Solicitud de función] Posibilidad de agregar anotaciones a los pods en Kubernetes

Creado en 22 may. 2019  ·  5Comentarios  ·  Fuente: openanalytics/shinyproxy

Hola chicos,

Me preguntaba si se podría agregar la posibilidad de agregar anotaciones a los pods lanzados por shinyproxy en Kubernetes. Esto nos permitiría adjuntar un rol de AWS IAM a un contenedor y utilizar los recursos de AWS en aplicaciones brillantes.

¡Muchas gracias de antemano! Y gracias por todo el gran trabajo.

Salud,

emelia

enhancement

Comentario más útil

En caso de que alguien más tenga el mismo problema, encontré una solución alternativa para agregar anotaciones y tolerancias a los pods lanzados por un proxy brillante.
En mi configuración, el proxy brillante lanza pods en un espacio de nombres dedicado. Lancé otro contenedor junto con shinyproxy que constantemente anota y parchea cualquier pod en ese espacio de nombres.

(en la sección spec de implementación):

- 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 comentarios

También me gustaría agregar anotaciones a los pods lanzados por un proxy brillante exactamente por la misma razón. Traté de modificar el código para este fin, pero mis conocimientos de Java no son lo suficientemente buenos.

Si alguien todavía está manteniendo el proyecto, ¡esta sería una característica realmente útil!

En caso de que alguien más tenga el mismo problema, encontré una solución alternativa para agregar anotaciones y tolerancias a los pods lanzados por un proxy brillante.
En mi configuración, el proxy brillante lanza pods en un espacio de nombres dedicado. Lancé otro contenedor junto con shinyproxy que constantemente anota y parchea cualquier pod en ese espacio de nombres.

(en la sección spec de implementación):

- 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

¡buena idea! ¡Perfecto!

Hola a todos

¡Gracias por tu PR!
Para no tener que implementar todas las funciones de Kubernetes en ContainerProxy, decidimos agregar una forma genérica de agregar una configuración específica de Kubernetes a una aplicación de ContainerProxy. Esta característica se llama kubernetes-pod-patches y permite parchear la especificación del Pod antes de que ContainerProxy lo cree.
Puede encontrar más información sobre esta función aquí (tiene que desplazarse un poco hacia abajo).
Esto debería cubrir su caso de uso. Siéntase libre de abrir un problema si experimenta algún problema con esta función.
El cambio está incluido en el solo ShinyProxy 2.4.0

Nuevamente gracias por tu aporte.

Gracias @LEDfan , esta solución es realmente genial, ¡solo mírala ahora!

Después de algunas pruebas y errores, logré que funcionara para agregar anotaciones de roles de IAM de la siguiente manera:

  - 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>" }
¿Fue útil esta página
0 / 5 - 0 calificaciones