Я хочу создать одноузловой кластер K8S на AWS и запустить простое демонстрационное приложение, доступное для внешнего мира через порт 80. Как мне это сделать?
Концептуально я понимаю, что мне нужен модуль, который определяется развертыванием и предоставляется балансировщиком нагрузки AWS. Я не понимаю, как у k8s есть права на создание ELB от моего имени?
Изображение контейнера официанта Вот.
Вот где я. Все инструкции взяты из Вот:
1) Создайте кластер с помощью Ansible (роли geerlingguy.docker и geerlingguy.kubernetes). Эта роль использует kubeadm
.
2) Выполните обязательную команду:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
3) Запустите команды уровня 4 (я произвольно выбрал L4):
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/aws/service-l4.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/aws/patch-configmap-l4.yaml
4) Проверьте установку:
$ kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch
NAMESPACE NAME READY STATUS RESTARTS
ingress-nginx nginx-ingress-controller-... 1/1 Running 0
5) Создайте сервис:
kubectl apply -f service.yaml
---
apiVersion: v1
kind: Service
metadata:
name: firstappservice
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: firstapp
6) Создайте развертывание:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: firstapp
labels:
app: firstapp
spec:
replicas: 1
selector:
matchLabels:
app: firstapp
template:
metadata:
labels:
app: firstapp
spec:
containers:
- name: waiter
image: adamgardnerdt/waiter:v1
ports:
- containerPort: 80
Я уверен, что мне не хватает чего-то простого, но фундаментального. Конечно, я полный нуб Kubernetes.
Один из способов добиться этого - развернуть aws-alb-вход-контроллер.
Контроллер входящего трафика AWS ALB удовлетворяет входящие ресурсы Kubernetes, предоставляя балансировщики нагрузки приложений.
k8s получает разрешения на создание ресурсов ELB от вашего имени через IAM, как и все в AWS.
Доступ к AWS API
Для выполнения операций контроллер должен иметь необходимые возможности роли IAM для доступа и предоставления ресурсов ALB. Есть много способов добиться этого, например загрузить AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY в качестве переменных среды или использовать kube2iam.
Образец IAM-политики с минимальными разрешениями на запуск контроллера можно найти в alb-iam-policy.json.
aws-alb-ingress-controller / руководство / контроллер / config /