I sh для развертывания докерской службы с kubernetes на aws. Для этого я использую недавно выпущенную AWS EKS с функцией AWS Fargate. Образ службы docker хранится в закрытом пакете на github.
Для развертывания моей службы я использую файл манифеста kubernetes, содержащий секрет, развертывание и службу.
При локальном развертывании с помощью kubectl на minikube модули развертывания успешно извлекают образ из частного пакета github. Я успешно воспроизвел процесс доступа к частному реестру dockerhub.
Затем я настроил kubectl для подключения к моему кластеру eks. При применении файла манифеста я получаю статус ImagePullBackOff для модулей развертывания при извлечении пакетов формы github, когда он работает нормально при извлечении из dockerhub . Различия в файле манифеста заключаются в следующем:
Генерация секрета для пакетов github:
kubectl create secret docker-registry mySecret --dry-run=true --docker-server=https://docker.pkg.github.com --docker-username=myGithubUsername --docker-password=myGithubAccessToken -o yaml
Генерация секрета для dockerhub:
kubectl create secret docker-registry mySecret --dry-run=true --docker-server=https://index.docker.io/v1/ --docker-username=myDockerhubUsername --docker-password=myDockerhubPassword -o yaml
Спецификация развертывания c упоминается следующим образом:
spec:
containers:
# when pulling from github packages
- image: docker.pkg.github.com/myGithubUsername/myRepo/myPackage:tag
# when pulling from dockerhub
- image: myDockerhubUsername/repository:tag
...
imagePullSecrets:
- name: mySecret
Попытка сделать эту работу специально с пакетами github Я попробовал с AWS Secrets Manager.
Я создал секрет «mySecret» выглядит следующим образом:
{
"username" : "myGithubUsername",
"password" : "myGithubAccessToken"
}
Затем я создал политику для доступа к этому секрету:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": [
"arn:aws:secretsmanager:eu-west-1:myAWSAccountId:secret:mySecret"
]
}
]
}
Затем я прикрепил политику к обоим ролям IAM кластера моего кластера eks и роль выполнения Pod, указанная в его профиле fargate "fp-default". Я работаю только в пространстве имен kubernetes по умолчанию. Мой секрет и кластер находятся в регионе eu-west-1.
Тем не менее, при развертывании я получаю статус ImagePullBackOff.
У меня Трудно найти что-то, что решает эту проблему, используя AWS Fargate с AWS EKS, и ему очень хотелось бы кое-что понять:)
Edit : Вопрос был отредактирован для того, чтобы представить его в более ясное мнение, что проблема в основном связана с использованием пакетов github в качестве поставщика реестра.