API token для Argo Workflows#

Создание токена#

Последовательность выполнения#

  1. Создайте следующий скрипт create_argowf_token.sh, который создает API token для пользователя:

    #!/bin/bash
    
    if [ -z "$1" ]; then
        echo "ERROR: Please specify service account name."
        exit 1
    fi
    SA_NAME="$1"
    if [ -z "$2" ]; then
        echo "INFO: Privileges set to getdocs-prod namespace"
        NAMESPACE='getdocs-prod'
    else
      NAMESPACE="$2"
      echo "INFO: Privileges set to $NAMESPACE namespace"
    fi
    kubectl -n argo-wf create sa "$SA_NAME"
    kubectl -n $NAMESPACE create rolebinding "$SA_NAME" --role=argo-workflows-rx --serviceaccount=argo-wf:"$SA_NAME"
    kubectl -n argo-wf apply -f - <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: $SA_NAME.service-account-token
      annotations:
        kubernetes.io/service-account.name: $SA_NAME
    type: kubernetes.io/service-account-token
    EOF
    
    ARGO_TOKEN="Bearer $(kubectl -n argo-wf get secret "$SA_NAME.service-account-token" -o=jsonpath='{.data.token}' | base64 --decode)"
    echo
    echo "Token for '$SA_NAME': $ARGO_TOKEN"
    
  2. Выполните данный скрипт с указанием имени пользователя <ACCOUNT_NAME>, для которого создается token:

    create_argowf_token.sh <ACCOUNT_NAME> <NAMESPACE>
    

    Параметр <NAMESPACE> является опциональным. Если он не передан, token будет создан для стандартного пространства имен getdocs-prod.

Удаление токена#

Последовательность выполнения#

  1. Создайте следующий скрипт delete_argowf_token.sh, который удаляет пользовательский API token:

    #!/bin/bash
    
    if [ -z "$1" ]; then
        echo "ERROR: Please specify service account name."
        exit 1
    fi
    SA_NAME="$1"
    if [ -z "$2" ]; then
        echo "INFO: Privileges set to getdocs-prod namespace"
        NAMESPACE='getdocs-prod'
    else
      NAMESPACE="$2"
    fi
    
    kubectl -n argo-wf delete sa "$SA_NAME"
    kubectl -n $NAMESPACE delete rolebinding "$SA_NAME"
    kubectl -n argo-wf delete secret $SA_NAME.service-account-token
    
    echo
    echo "Deleted token for '$SA_NAME'"
    
  2. Выполните данный скрипт с указанием имени пользователя <ACCOUNT_NAME>, чей token необходимо удалить:

    delete_argowf_token.sh <SERVICE_ACCOUNT_NAME> <NAMESPACE>
    

    Параметр <NAMESPACE> является опциональным. Если он не передан, token будет удален для стандартного пространства имен getdocs-prod.