Назад | Перейти на главную страницу

Контроллер Kubernetes Ingress и LoadBalancer на AWS

Я хочу создать одноузловой кластер 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 /