Class: Clusters::Kubernetes::FetchKubernetesTokenService
- Inherits:
-
Object
- Object
- Clusters::Kubernetes::FetchKubernetesTokenService
- Defined in:
- app/services/clusters/kubernetes/fetch_kubernetes_token_service.rb
Constant Summary collapse
- DEFAULT_TOKEN_RETRY_DELAY =
5.seconds
- TOKEN_RETRY_LIMIT =
5
Instance Attribute Summary collapse
-
#kubeclient ⇒ Object
readonly
Returns the value of attribute kubeclient.
-
#namespace ⇒ Object
readonly
Returns the value of attribute namespace.
-
#service_account_token_name ⇒ Object
readonly
Returns the value of attribute service_account_token_name.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(kubeclient, service_account_token_name, namespace, token_retry_delay: DEFAULT_TOKEN_RETRY_DELAY) ⇒ FetchKubernetesTokenService
constructor
A new instance of FetchKubernetesTokenService.
Constructor Details
#initialize(kubeclient, service_account_token_name, namespace, token_retry_delay: DEFAULT_TOKEN_RETRY_DELAY) ⇒ FetchKubernetesTokenService
Returns a new instance of FetchKubernetesTokenService.
11 12 13 14 15 16 |
# File 'app/services/clusters/kubernetes/fetch_kubernetes_token_service.rb', line 11 def initialize(kubeclient, service_account_token_name, namespace, token_retry_delay: DEFAULT_TOKEN_RETRY_DELAY) @kubeclient = kubeclient @service_account_token_name = service_account_token_name @namespace = namespace @token_retry_delay = token_retry_delay end |
Instance Attribute Details
#kubeclient ⇒ Object (readonly)
Returns the value of attribute kubeclient.
9 10 11 |
# File 'app/services/clusters/kubernetes/fetch_kubernetes_token_service.rb', line 9 def kubeclient @kubeclient end |
#namespace ⇒ Object (readonly)
Returns the value of attribute namespace.
9 10 11 |
# File 'app/services/clusters/kubernetes/fetch_kubernetes_token_service.rb', line 9 def namespace @namespace end |
#service_account_token_name ⇒ Object (readonly)
Returns the value of attribute service_account_token_name.
9 10 11 |
# File 'app/services/clusters/kubernetes/fetch_kubernetes_token_service.rb', line 9 def service_account_token_name @service_account_token_name end |
Instance Method Details
#execute ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'app/services/clusters/kubernetes/fetch_kubernetes_token_service.rb', line 18 def execute # Kubernetes will create the Secret and set the token asynchronously # so it is necessary to retry # https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/#token-controller TOKEN_RETRY_LIMIT.times do token_base64 = get_secret&.dig('data', 'token') return Base64.decode64(token_base64) if token_base64 sleep @token_retry_delay end nil end |