Создаем учетную запись:
New-ADServiceAccount $serviceaccount `
-DNSHostName $hostname `
-PrincipalsAllowedToRetrieveManagedPassword $principals
Здесь:
$serviceaccount
- имя учетной записи (gMSA)$hostname
- $serviceaccount
.domain.com (имя учетной записи + имя домена)$principals
- Список компьютеров, имеющих права на получение пароля от очетной записиТеперь ее необходимо установить на всех Windows узлах в кластере. Подключаемся к каждому узлу и выполняем:
Add-WindowsFeature RSAT-AD-PowerShell
Install-ADServiceAccount -Identity $serviceaccount
Test-ADServiceAccount -Identity $serviceaccount
Получаем данные нашей учетной записи:
Install-Module CredentialSpec
New-CredentialSpec -AccountName $serviceaccount
В результате у нас получится json
вида:
{
"CmsPlugins": [
"ActiveDirectory"
],
"DomainJoinConfig": {
"Sid": "S-1-5-21-173000223-3773341904-835667822",
"MachineAccountName": "vitaliy-org",
"Guid": "4013ea6c-1050-4ed3-9ce0-10912b11769d",
"DnsTreeName": "vitaliy.org",
"DnsName": "vitaliy.org",
"NetBiosName": "VITALIY"
},
"ActiveDirectoryConfig": {
"GroupManagedServiceAccounts": [
{
"Name": "vitaliy-org",
"Scope": "vitaliy.org"
},
{
"Name": "vitaliy-org",
"Scope": "VITALIY"
}
]
}
}
Теперь нам надо получить gmsa.yaml
такого вида:
apiVersion: windows.k8s.io/v1alpha1
kind: GMSACredentialSpec
metadata:
name: gmsa-vitaliy-org
credspec:
ActiveDirectoryConfig:
GroupManagedServiceAccounts:
- Name: vitaliy-org
Scope: VITALIY
- Name: vitaliy-org
Scope: vitaliy.org
CmsPlugins:
- ActiveDirectory
DomainJoinConfig:
DnsName: vitaliy.org
DnsTreeName: vitaliy.org
Guid: 4013ea6c-1050-4ed3-9ce0-10912b11769d
MachineAccountName: vitaliy-org
NetBiosName: VITALIY
Sid: S-1-5-21-173000223-3773341904-835667822
Отправляем его в kubernetes:
kubectl apply -f gmsa.yaml
Теперь нам надо создать кластерную роль для получения доступа к ресурсу gmsa-vitaliy-org
:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: gmsa-vitaliy-org-role
rules:
- apiGroups: ["windows.k8s.io"]
resources: ["gmsacredentialspecs"]
verbs: ["use"]
resourceNames: ["gmsa-vitaliy-org"]
И последнее - к спецификации Pod'а добавляем:
apiVersion: apps/v1
kind: Pod
spec:
securityContext:
windowsOptions:
gmsaCredentialSpecName: gmsa-vitaliy-org
Всё!
Оглавление