kubernetes Ingress annotations

영진·2023년 2월 6일
0

AWS

목록 보기
17/17

문서 정보

https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/ingress/annotations/

로드벨런서


로드벨런서 이름 설정

alb.ingress.kubernetes.io/load-balancer-name: alb-name

ALB가 청취하는 포트를 지정

alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}, {"HTTP": 8080}, {"HTTPS": 8443}]'

SSLRedirect를 활성화하고 리디렉션할 SSL 포트를 지정

alb.ingress.kubernetes.io/ssl-redirect: '443'
  • SSLRedirect를 활성화하면 모든 HTTP 수신기가 HTTPS로 리디렉션된다.

로드벨런서 IP type 지정

alb.ingress.kubernetes.io/ip-address-type: ipv4

리스너 규칙 설정 ex)리디렉션

alb.ingress.kubernetes.io/actions.${action-name}

예시
-> /path1이라는 경로에 접속하면 상태코드 200이 응답한다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/actions.rule-path1: >
      {"type":"fixed-response","fixedResponseConfig":{"contentType":"text/plain","statusCode":"200","messageBody":"Host is www.example.com OR anno.example.com"}}
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /path1
            pathType: Prefix
            backend:
              service:
                name: rule-path1
                port:
                  name: use-annotation

예시
-> 가중치 기반 로드벨런싱

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    namespace: default
    name: ingress
    annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/target-type: ip
        alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
        alb.ingress.kubernetes.io/actions.weighted-routing: |
        {
            "type":"forward",
            "forwardConfig":{
            "targetGroups":[
                {
                "serviceName":"service-1",
                "servicePort":"80",
                "weight":50
                },
                {
                "serviceName":"service-2",
                "servicePort":"80",
                "weight":50
                }
            ],
            "TargetGroupStickinessConfig": {
                "Enabled": true,
                "DurationSeconds": 120
            }
            }
        }
    spec:
    ingressClassName: alb
    rules:
        http:
            paths:
            - path: /
                pathType: Prefix
                backend:
                service:
                    name: weighted-routing
                    port:
                    name: use-annotation

로드벨런서 스키마 설정

alb.ingress.kubernetes.io/scheme: internal

로드벨런서 인증유형 지정

alb.ingress.kubernetes.io/auth-type: cognito

로드벨런서 cognito idp 구성 지정

alb.ingress.kubernetes.io/auth-idp-cognito: '{"userPoolARN":"arn:aws:cognito-idp:us-west-2:xxx:userpool/xxx","userPoolClientID":"my-clientID","userPoolDomain":"my-domain"}'

로드벨런서 oidc idp 구성을 지정

apiVersion: v1
kind: Secret
metadata:
  namespace: testcase
  name: my-k8s-secret
data:
  clientID: base64 of your plain text clientId
  clientSecret: base64 of your plain text clientSecret

로드벨런서 사용자가 인증되지 않은 경우 동작을 지정

alb.ingress.kubernetes.io/auth-on-unauthenticated-request: authenticate

options:

authenticate: 구성된 IDP로 인증을 시도한다.
deny: HTTP 401 Unauthorized 오류를 반환한다.
allow: 요청이 대상으로 전달되도록 허용한다.


로드벨런서 쿠키 이름 지정

alb.ingress.kubernetes.io/auth-session-cookie: custom-cookie

로드벨런서 인증 세션의 최대 기간을 초 단위로 지정

alb.ingress.kubernetes.io/auth-session-timeout: '86400'

대상그룹


인스턴스 대상 타입 지정

instance 방식 or IP 방식

인스턴스 방식

alb.ingress.kubernetes.io/target-type: instance

로드벨런서 대상 그룹 등록에 포함할 노드 지정

alb.ingress.kubernetes.io/target-node-labels: label1=value1, label2=value2

트래픽을 포드로 라우팅할 때 사용되는 프로토콜을 지정

alb.ingress.kubernetes.io/backend-protocol: HTTPS

로드벨런서 대상 그룹 상태 확인

alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS

로드벨런서 상태 검사 포트

alb.ingress.kubernetes.io/healthcheck-port: '80'

로드벨런서 상태 검사 프로토콜

alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS

로드벨런서 상태 확인 경로 지정

alb.ingress.kubernetes.io/healthcheck-path: /ping

로드벨런서 대상의 상태 확인 사이의 간격(초)을 지정

alb.ingress.kubernetes.io/healthcheck-interval-seconds: '10'

로드벨런서 상태 확인 실패 제한 시간 지정

alb.ingress.kubernetes.io/healthcheck-timeout-seconds: '8'

로드벨런서 상태확인 성공 횟수 지정

alb.ingress.kubernetes.io/healthy-threshold-count: '2'

로드벨런서 상태확인 실패 횟수 지정

alb.ingress.kubernetes.io/unhealthy-threshold-count: '2'
profile
I'm good at cloud computing.

0개의 댓글