Я нашел обходной путь, который должен вызывать gcloud напрямую:
- name: Get JWT
command: gcloud auth application-default print-access-token
register: api_key
Очевидно, мне нужно было:
- Установить GCloud
- Переопределить envvar с помощьюот auth.json до GOOGLE_APPLICATION_CREDENTIALS.
Задача вызывает gcloud напрямую для получения токена, поэтому нет необходимости генерировать токен. Я постараюсь добавить, чтобы добавить эту функцию в качестве модуля в ansible для лучшей совместимости с kubernetes.
После получения можно вызвать модуль k8s следующим образом:
- name: Create ClusterRoleBinding
k8s:
state: present
host: "https://{{ cluster.endpoint }}"
ca_cert: "{{ ca_crt.path }}"
api_version: rbac.authorization.k8s.io/v1
api_key: "{{ api_key.stdout }}"
definition:
kind: ClusterRoleBinding
metadata:
name: kube-system_default_cluster-admin
subjects:
- kind: ServiceAccount
name: default # Name is case sensitive
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io