Я пытаюсь установить ConfigMap на моем кластере, используя python SDK.Я планирую подготовить кластеры на AWS EKS автоматически, поэтому хочу иметь возможность устанавливать ConfigMaps с помощью кода.
Я изо всех сил пытаюсь понять, в каком формате должен быть объект данных. Я следовал документации AWS EKS и вручную применил auth configmap, и вывод kubectl
выглядит следующим образом:
data:
mapRoles: |
- rolearn: arn:aws:iam::XXXXXXXXXX:role/dev-eks-workers-NodeInstanceRole
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
Я пытаюсь настроить структуру следующим образом (с дополнительной ролью для моей локальной роли пользователя AWS):
body = client.V1ConfigMap()
body.api_version = 'v1'
body.kind = 'ConfigMap'
body.metadata = {
'name': 'aws-auth',
'namespace': 'kube-system'
}
body.data = {
'mapRoles': [
{
'rolearn': 'arn:aws:iam::XXXXXXXXXX:role/dev-eks-workers-NodeInstanceRole',
'username': 'system:node:{{EC2PrivateDNSName}}',
'groups': [
'system:bootstrappers',
'system:nodes'
]
},
{
'rolearn': 'arn:aws:iam::XXXXXXXXXX:role/Admin',
'username': 'admin',
'groups': [
'system:masters'
]
}
]
}
Этот код отклонен API.Я думаю, это потому, что документы здесь указывают, что данные должны быть dict(str, str)
Я пробовал многострочную строку, и, хотя она, кажется, устанавливает конфигурационную карту, ее форматированиеполностью перебор, и он на самом деле не работает с определенными ролями.
apiVersion: v1
data:
mapRoles: "\n- rolearn: arn:aws:iam::XXXXXXXXXXXX:role/dev-apollo-eks-workers-NodeInstanceRole\n
\ username: system:node:{EC2PrivateDNSName}\n groups:\n - system:bootstrappers\n
\ - system:nodes\n\n- rolearn: arn:aws:iam::XXXXXXXXXXXX:role/Admin\n username:
admin\n groups:\n - system:masters\n "
kind: ConfigMap
Может кто-нибудь дать мне пример того, как я должен делать это в python