Админизм

заметки об администрировании и python. Траблшутинг в «примерах» и HOWTO.

👋 О себе | 📚 Литература и ресурсы | 🗂 Все посты | 📮 E-mail

Error syncing load balancer: failed to ensure load balancer: error authorizing security group

При создании нового лоадбалансера для EKS получил ошибку «Error syncing load balancer: failed to ensure load balancer: error authorizing security group», как оказалось проблема в том, что мы уперлись в лимит правил для основной Security Group, кластера. Лимит равен 60 записям для Inbound or outbound правил. Решением будет подать заявку на расшиение лимита.

Link:
https://aws.amazon.com/ru/premiumsupport/knowledge-center/increase-security-group-rule-limit/

AWS Load Balancer Controller: использование websocket c tls

Пример аннотаций для использоания websocket c tls


...
   service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: Project=
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: 
    service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: ELBSecurityPolicy-TLS-1-2-2017-01
    service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "8000"
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "tcp"
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '3600'
...

где в aws-load-balancer-ssl-ports мы указываем порт который «оборачиваем» в TLS

Centrifugo: подключение к Redis Sentinel

Centrifugo: подключение к Redis Sentinel

Описанное ниже применимо только для Centrifugo, который был установлен с помощью официального Helm Chart

Т.к Sentinel занимается наблюдением за master/slave кластера и при указании порта Sentinel ничего не произойдет. Для подключения к кластеру с Sentinel, необходимо сперва узнать, какая из нод является мастером, только на эту ноду будет возможна запись данных.

Если у нас имеется кластер Redis (конечно же с Sentinel) установленный с помощью (Helm https://4admin.space/tags/helm/) Chart от bitnami
Сперва нам понадобится запустить redis-client и подключиться к Sentinel

Запустим его на одном из pod’ов и подключимся именно к порту Sentinel


kubectl exec -ti -n mynamespace redis-node-0 -- bash
redis-cli -h redis -p 26379

Далее необходимо выполнить команду `info` для получения имени master’a
Пример:


...
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=master,status=ok,address=redis-node-2.redis-headless.mynamespace.svc.cluster.local:6379,slaves=2,sentinels=3

Собственно нас интересует `master0:name=master`

Далее в values Helm Chart’a укажем следующие ENV-переменные


...
  env:
    CENTRIFUGO_REDIS_MASTER_NAME: "master"
    CENTRIFUGO_REDIS_SENTINELS: "redis:26379"
...

Где в CENTRIFUGO_REDIS_MASTER_NAME мы указываем «метку» мастера, а CENTRIFUGO_REDIS_SENTINELS указываем подключение к Sentinel

Kubernetes: назначить pod на ноду с помощью nodeSelector

При запуске пода через cli (kubectl run) бывает необходимость назначить под на определенную ноду с использовании nodeSelector, для этого можно воспользоваться такой командой


kubectl run -n gatling gatling --image=ubuntu:18.04 --overrides='{"spec": { "nodeSelector": {"purpose": "loadtesting"}}}'

Kubernetes: ExternalDNS 403 error при использовании AWS Route53

Kubernetes: ExternalDNS 403 error при использовании ((https://4admin.space/tags/aws/  AWS Route53))

При использовании ExternalDNS для управления записями в AWS Route53 начали появляться ошибки вида


external-dns-6f858fdd6c-7xdhs external-dns time="2021-08-04T06:52:56Z" level=error msg="records retrieval failed: failed to list hosted zones: AccessDenied: User: arn:aws:sts::0000000:assumed-role/demo-external-dns2000000/000000 is not authorized to perform: route53:ListHostedZones\n\tstatus code: 403, request id: 000-f2b2-666-777-999"
external-dns-6f858fdd6c-h4fxb external-dns time="2021-08-04T06:52:58Z" level=error msg="records retrieval failed: failed to list hosted zones: AccessDenied: User: arn:aws:sts::000000000:assumed-role/demo-external-dns000000000/000000000 is not authorized to perform: route53:ListHostedZones\n\tstatus code: 403, request id: 00000-d1a4-777-873e-000000"

Им предшествовало указание arn для ресурсов в policy для ExternalDNS

Поэтому необходимо указывать только как сказано в документации https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md#iam-policy


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "route53:ChangeResourceRecordSets"
      ],
      "Resource": [
        "arn:aws:route53:::hostedzone/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "route53:ListHostedZones",
        "route53:ListResourceRecordSets"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

Ранее Ctrl + ↓