Shinyproxy: [Demande de fonctionnalité] Possibilité d'ajouter des annotations aux pods sur Kubernetes

Créé le 22 mai 2019  ·  5Commentaires  ·  Source: openanalytics/shinyproxy

Salut les gars,

Je me demandais si la possibilité d'ajouter des annotations aux pods lancés par shinyproxy sur Kubernetes pouvait être ajoutée ? Cela nous permettrait d' attacher un rôle AWS IAM à un conteneur et d'utiliser les ressources AWS dans des applications brillantes.

Merci d'avance! Et merci pour tout le bon travail.

Acclamations,

Emélie

enhancement

Commentaire le plus utile

Au cas où quelqu'un d'autre aurait le même problème, j'ai trouvé une solution de contournement pour ajouter des annotations et des tolérances aux pods lancés par un proxy brillant.
Dans ma configuration, le proxy brillant lance les pods dans un espace de noms dédié. J'ai lancé un autre conteneur aux côtés de shinyproxy qui annote et corrige constamment tous les pods de cet espace de noms.

(dans la section spec du déploiement) :

- 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

Tous les 5 commentaires

J'aimerais également ajouter des annotations aux pods lancés par un proxy brillant pour exactement la même raison. J'ai essayé de modifier le code à cette fin, mais mes compétences en Java ne sont pas assez bonnes.

Si quelqu'un maintient encore le projet, ce serait une fonctionnalité vraiment utile !

Au cas où quelqu'un d'autre aurait le même problème, j'ai trouvé une solution de contournement pour ajouter des annotations et des tolérances aux pods lancés par un proxy brillant.
Dans ma configuration, le proxy brillant lance les pods dans un espace de noms dédié. J'ai lancé un autre conteneur aux côtés de shinyproxy qui annote et corrige constamment tous les pods de cet espace de noms.

(dans la section spec du déploiement) :

- 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

bonne idée! Parfait!

salut tout le monde

Merci pour votre RP !
Afin de ne pas avoir à implémenter toutes les fonctionnalités de Kubernetes dans ContainerProxy, nous avons décidé d'ajouter un moyen générique d'ajouter une configuration spécifique à Kubernetes à une application ContainerProxy. Cette fonctionnalité s'appelle kubernetes-pod-patches et permet de patcher la spécification du Pod avant qu'il ne soit créé par ContainerProxy.
Plus d'informations sur cette fonctionnalité peuvent être trouvées ici (vous devez faire défiler un peu).
Cela devrait couvrir votre cas d'utilisation. N'hésitez pas à ouvrir un problème si vous rencontrez un problème avec cette fonctionnalité.
Le changement est inclus dans le ShinyProxy 2.4.0 juste

Encore merci pour votre contribution.

Merci @LEDfan , cette solution est vraiment géniale - voyez-la maintenant !

Après quelques essais et erreurs, j'ai réussi à le faire fonctionner pour ajouter des annotations de rôle IAM de la manière suivante :

  - 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>" }
Cette page vous a été utile?
0 / 5 - 0 notes