Shinyproxy: [рдлрд╝реАрдЪрд░ рдЕрдиреБрд░реЛрдз] рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд░ рдкреЙрдбреНрд╕ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдордИ 2019  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: openanalytics/shinyproxy

рд╣реЗ рд▓реЛрдЧреЛрдВ,

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд░ рд╢рд╛рдЗрдиреАрдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреЙрдбреНрд╕ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ AWS IAM рднреВрдорд┐рдХрд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдФрд░ рдЪрдордХрджрд╛рд░ рдРрдкреНрд╕ рдореЗрдВ AWS рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдФрд░ рд╕рднреА рдорд╣рд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЪреАрдпрд░реНрд╕,

рдПрдорд┐рд▓реА

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрджрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреЙрдбреНрд╕ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдЯреЙрд▓рд░реЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛ред
рдореЗрд░реЗ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдкреЙрдбреНрд╕ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬреЛ рдЙрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреЙрдб рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдПрдиреЛрдЯреЗрдЯ рдФрд░ рдкреИрдЪ рдХрд░рддрд╛ рд╣реИред

( spec рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ):

- 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

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдареАрдХ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреЙрдбреНрд╕ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдЕрдВрдд рддрдХ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдЬрд╛рд╡рд╛ рдХреМрд╢рд▓ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред

рдЕрдЧрд░ рдХреЛрдИ рдЕрднреА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреА!

рдпрджрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреЙрдбреНрд╕ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдЯреЙрд▓рд░реЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛ред
рдореЗрд░реЗ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдкреЙрдбреНрд╕ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬреЛ рдЙрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреЙрдб рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдПрдиреЛрдЯреЗрдЯ рдФрд░ рдкреИрдЪ рдХрд░рддрд╛ рд╣реИред

( spec рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ):

- 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

рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░! рдЙрддреНрддрдо!

рдирдорд╕реНрддреЗ

рдЖрдкрдХреЗ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдХрдВрдЯреЗрдирд░рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХрдВрдЯреЗрдирд░рдкреНрд░реЙрдХреНрд╕реА рдРрдк рдореЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ kubernetes-pod-patches рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрдВрдЯреЗрдирд░рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреЙрдб рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ (рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред
рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓реЗрдВред
рдкрд░рд┐рд╡рд░реНрддрди рд╕рд┐рд░реНрдл ShinyProxy 2.4.0 . рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ

рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред

рдзрдиреНрдпрд╡рд╛рдж @LEDfan рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ - рдмрд╕ рдЗрд╕реЗ рдЕрднреА рджреЗрдЦреЗрдВ!

рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ IAM рднреВрдорд┐рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:

  - 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>" }
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dylancis picture dylancis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

benkates picture benkates  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fmmattioni picture fmmattioni  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jat255 picture jat255  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xtrasimplicity picture xtrasimplicity  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ