스터디/Cilium

[Cilium] Gateway API

안녕유지 2025. 8. 24. 03:49
Cloudnet Cilium 6주차 스터디를 진행하며 정리한 글입니다.

 

 

Gateway API

쿠버네티스에서 Ingress는 오랫동안 외부 트래픽을 클러스터로 유입시키는 표준이었지만, 한계도 있었습니다.

  • HTTP 외 프로토콜 지원 부족 (TCP, UDP, gRPC 등)
  • 헤더 기반 라우팅이나 미러링 같은 고급 기능 제한
  • 역할 분리(Role Separation)가 어려움

이런 문제를 해결하기 위해 등장한 것이 바로 Gateway API 입니다.

 

 

Gateway API 주요 기능

  1. 개선된 리소스 모델
    GatewayClass, Gateway, HTTPRoute, TCPRoute 등 세분화된 CRD로 라우팅을 표현합니다.
  2. 프로토콜 독립적
    HTTP 외에도 TCP, UDP, TLS, gRPC를 지원합니다.
  3. 강화된 보안
    TLS Termination, Passthrough, 세밀한 Access Control 등을 지원합니다.
  4. 교차 네임스페이스 지원
    다른 네임스페이스 서비스로도 트래픽을 라우팅할 수 있습니다.
  5. 확장성
    Custom Policy, 확장 CRD 연동이 가능합니다.
  6. 역할 지향(Role-Oriented)
    • Infra Provider: 인프라 제공
    • Cluster Operator: 보안/정책 관리
    • App Developer: 라우팅 규칙 관리

 

 

Gateway API 구성 요소

  • GatewayClass: Gateway의 템플릿 (예: internet-facing, private)
  • Gateway: 실제 인스턴스 (LB or HostNetwork)
  • HTTPRoute: HTTP 규칙 정의
  • TCPRoute/GRPCRoute/TLSRoute: L4, gRPC, TLS 트래픽 라우팅
  • ReferenceGrant: 교차 네임스페이스 접근 허용

 

 

Cilium Gateway API

Cilium은 io.cilium/gateway-controller를 통해 Gateway API를 지원합니다.

  • 지원 리소스: GatewayClass, Gateway, HTTPRoute, GRPCRoute, TLSRoute(실험적), ReferenceGrant
  • 추가 CRD: CiliumGatewayClassConfig

사전 준비

  • NodePort or kube-proxy replacement 모드 활성화
  • L7 Proxy 활성화 (l7Proxy=true)
  • Gateway API CRD 설치

 

Gateway API 설치

 

Gateway API는 쿠버네티스 기본 리소스가 아니므로, CRD를 먼저 설치해야 합니다.

 

root@k8s-ctr:~#
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.0/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.0/config/crd/standard/gateway.networking.k8s.io_gateways.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.0/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.0/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.0/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml

root@k8s-ctr:~# kubectl get crd | grep gateway.networking.k8s.io
gatewayclasses.gateway.networking.k8s.io     2025-08-23T16:06:03Z
gateways.gateway.networking.k8s.io           2025-08-23T16:06:04Z
grpcroutes.gateway.networking.k8s.io         2025-08-23T16:06:06Z
httproutes.gateway.networking.k8s.io         2025-08-23T16:06:05Z
referencegrants.gateway.networking.k8s.io    2025-08-23T16:06:06Z
tlsroutes.gateway.networking.k8s.io          2025-08-23T16:06:06Z

 

Cilium에 내장된 Envoy Proxy가 Gateway API 컨트롤러 역할을 수행할 수 있도록 기능을 켭니다.

enable-gateway-api: true 설정을 통해 Gateway API 리소스를 인식하고, Envoy 설정으로 번역할 준비가 된 것을 알 수 있습니다.

 

 

# Cilium Gateway API 설정
root@k8s-ctr:~# helm upgrade cilium cilium/cilium --version 1.18.1 --namespace kube-system --reuse-values \
--set ingressController.enabled=false --set gatewayAPI.enabled=true
I0824 01:01:52.637143   14062 warnings.go:110] "Warning: v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice"
Release "cilium" has been upgraded. Happy Helming!
NAME: cilium
LAST DEPLOYED: Sun Aug 24 01:01:48 2025
NAMESPACE: kube-system
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
You have successfully installed Cilium with Hubble Relay and Hubble UI.

Your release version is 1.18.1.

For any further help, visit https://docs.cilium.io/en/v1.18/gettinghelp


root@k8s-ctr:~# kubectl -n kube-system rollout restart deployment/cilium-operator
deployment.apps/cilium-operator restarted

root@k8s-ctr:~# kubectl -n kube-system rollout restart ds/cilium
daemonset.apps/cilium restarted


root@k8s-ctr:~# cilium config view | grep gateway-api

enable-gateway-api                                true
enable-gateway-api-alpn                           false
enable-gateway-api-app-protocol                   false
enable-gateway-api-proxy-protocol                 false
enable-gateway-api-secrets-sync                   true
gateway-api-hostnetwork-enabled                   false
gateway-api-hostnetwork-nodelabelselector
gateway-api-secrets-namespace                     cilium-secrets
gateway-api-service-externaltrafficpolicy         Cluster
gateway-api-xff-num-trusted-hops                  0

root@k8s-ctr:~# kubectl get GatewayClass
NAME     CONTROLLER                     ACCEPTED   AGE
cilium   io.cilium/gateway-controller   True       53s

root@k8s-ctr:~# kubectl get gateway -A
No resources found

 

 

이제, Gateway 리소스를 생성해보겠습니다.

Cilium이 LoadBalancer 서비스(cilium-gateway-my-gateway)를 자동 생성합니다.

 

 

root@k8s-ctr:~# cat << EOF | kubectl apply -f -
> apiVersion: gateway.networking.k8s.io/v1
> kind: Gateway
> metadata:
>   name: my-gateway
> spec:
>   gatewayClassName: cilium
>   listeners:
>   - protocol: HTTP
>     port: 80
>     name: web-gw
>     allowedRoutes:
>       namespaces:
>         from: Same
> ---
> apiVersion: gateway.networking.k8s.io/v1
> kind: HTTPRoute
> metadata:
>   name: http-app-1
> spec:
>   parentRefs:
>   - name: my-gateway
>     namespace: default
>   rules:
>   - matches:
>     - path:
>         type: PathPrefix
>         value: /details
>     backendRefs:
>     - name: details
>       port: 9080
>   - matches:
>     - headers:
>       - type: Exact
>         name: magic
>         value: foo
>       queryParams:
>       - type: Exact
>         name: great
>         value: example
>       path:
>         type: PathPrefix
>         value: /
>       method: GET
>     backendRefs:
>     - name: productpage
>       port: 9080
> EOF
gateway.gateway.networking.k8s.io/my-gateway created
httproute.gateway.networking.k8s.io/http-app-1 created

root@k8s-ctr:~# kubectl get svc,ep cilium-gateway-my-gateway
Warning: v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice
NAME                                TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
service/cilium-gateway-my-gateway   LoadBalancer   10.96.134.15   192.168.10.211   80:31173/TCP   19s

NAME                                  ENDPOINTS              AGE
endpoints/cilium-gateway-my-gateway   192.192.192.192:9999   19s


root@k8s-ctr:~# kubectl get gateway
NAME         CLASS    ADDRESS          PROGRAMMED   AGE
my-gateway   cilium   192.168.10.211   True         13m

root@k8s-ctr:~# kubectl get httproutes -A
NAMESPACE   NAME         HOSTNAMES   AGE
default     http-app-1               22m

 

실체 호출해보겠습니다. HTTPRoute를 통해 세밀한 라우팅 가능한 것을 알 수 있습니다.

  • /details 경로 → details 서비스로 전달
  • 특정 Header(magic: foo)와 QueryParam(great=example) 매칭 시 → productpage 서비스로 전달
  • Ingress보다 훨씬 강력한 조건 기반 라우팅이 가능
root@k8s-ctr:~# GATEWAY=$(kubectl get gateway my-gateway -o jsonpath='{.status.addresses[0].value}')

root@k8s-ctr:~# echo $GATEWAY
192.168.10.211


# HTTP Path matching
root@k8s-ctr:~# curl --fail -s http://"$GATEWAY"/details/1 | jq
{
  "id": 1,
  "author": "William Shakespeare",
  "year": 1595,
  "type": "paperback",
  "pages": 200,
  "publisher": "PublisherA",
  "language": "English",
  "ISBN-10": "1234567890",
  "ISBN-13": "123-1234567890"
}

root@router:~# curl -s --fail -v http://"$GATEWAY"/details/1
*   Trying 192.168.10.211:80...
* Connected to 192.168.10.211 (192.168.10.211) port 80
> GET /details/1 HTTP/1.1
> Host: 192.168.10.211
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< content-type: application/json
< server: envoy
< date: Sat, 23 Aug 2025 16:36:13 GMT
< content-length: 178
< x-envoy-upstream-service-time: 44
<
* Connection #0 to host 192.168.10.211 left intact
{"id":1,"author":"William Shakespeare","year":1595,"type":"paperback","pages":200,"publisher":"PublisherA","language":"English","ISBN-10":


# HTTP Header Matching
root@k8s-ctr:~# curl -v -H 'magic: foo' http://"$GATEWAY"\?great\=example
*   Trying 192.168.10.211:80...
* Connected to 192.168.10.211 (192.168.10.211) port 80
> GET /?great=example HTTP/1.1
> Host: 192.168.10.211
> User-Agent: curl/8.5.0
> Accept: */*
> magic: foo
>
< HTTP/1.1 200 OK
< server: envoy
< date: Sat, 23 Aug 2025 16:36:58 GMT
< content-type: text/html; charset=utf-8
< content-length: 2080
< x-envoy-upstream-service-time: 120
<

root@router:~# curl -s -v -H 'magic: foo' http://"$GATEWAY"\?great\=example
*   Trying 192.168.10.211:80...
* Connected to 192.168.10.211 (192.168.10.211) port 80
> GET /?great=example HTTP/1.1
> Host: 192.168.10.211
> User-Agent: curl/8.5.0
> Accept: */*
> magic: foo
>
< HTTP/1.1 200 OK
< server: envoy
< date: Sat, 23 Aug 2025 16:37:18 GMT
< content-type: text/html; charset=utf-8
< content-length: 2080
< x-envoy-upstream-service-time: 116
<

 

HTTPS Gateway를 생성하는 예제를 실습해보겠습니다.

Gateway가 클라이언트의 HTTPS 요청을 받아 TLS 종료(Termination) 하고, Envoy가 인증서를 직접 로드(Secret: demo-cert)해서 SSL 핸드셰이크 수행합니다,

내부 백엔드 서비스와의 통신은 HTTP 로 이루어집니다.

 

Gateway는 단순히 SNI 기반 라우팅만 수행하고, 실제 TLS 핸드셰이크는 백엔드 Pod(Nginx)에서 수행합니다.

즉, Gateway는 암호화된 트래픽을 그대로 전달(Passthrough)하여 엔드투엔드 암호화를 보장합니다.

 

 

 

 

root@k8s-ctr:~# cat << EOF | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: tls-gateway
spec:
  gatewayClassName: cilium
  listeners:
  - name: https-1
    protocol: HTTPS
    port: 443
    hostname: "bookinfo.cilium.rocks"
    tls:
      certificateRefs:
      - kind: Secret
        name: demo-cert
  - name: https-2
    protocol: HTTPS
EOF   port: 80bpodPrefix"rking.k8s.io/v1
gateway.gateway.networking.k8s.io/tls-gateway created
httproute.gateway.networking.k8s.io/https-app-route-1 created
httproute.gateway.networking.k8s.io/https-app-route-2 created

root@k8s-ctr:~# kubectl get gateway tls-gateway
NAME          CLASS    ADDRESS          PROGRAMMED   AGE
tls-gateway   cilium   192.168.10.213   True         15s

root@k8s-ctr:~# kubectl get httproutes https-app-route-1 https-app-route-2
NAME                HOSTNAMES                   AGE
https-app-route-1   ["bookinfo.cilium.rocks"]   25s
https-app-route-2   ["webpod.cilium.rocks"]     25s

root@k8s-ctr:~# GATEWAY2=$(kubectl get gateway tls-gateway -o jsonpath='{.status.addresses[0].value}')
root@k8s-ctr:~# echo $GATEWAY2
192.168.10.213


root@k8s-ctr:~# curl -s --resolve bookinfo.cilium.rocks:443:${GATEWAY2} https://bookinfo.cilium.rocks/details/1 | jq
root@k8s-ctr:~# curl -s --resolve webpod.cilium.rocks:443:${GATEWAY2}   https://webpod.cilium.rocks/ -v
* Added webpod.cilium.rocks:443:192.168.10.213 to DNS cache
* Hostname webpod.cilium.rocks was found in DNS cache
*   Trying 192.168.10.213:443...
* Connected to webpod.cilium.rocks (192.168.10.213) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* Recv failure: Connection reset by peer
* OpenSSL SSL_connect: Connection reset by peer in connection to webpod.cilium.rocks:443
* Closing connection

 

TLS Route : Terminate vs. Passthrough

  • In Terminate:
    • Client → Gateway: HTTPS
    • Gateway → Pod: HTTP
  • In Passthrough:
    • Client → Gateway: HTTPS
    • Gateway → Pod: HTTPS

 

이 때 실습을 위해 로컬 개발 환경에서 HTTPS 테스트를 위한 자체 서명 CA와 Wildcard 인증서를 발급받겠습니다.

 

root@k8s-ctr:~# apt install mkcert -y

root@k8s-ctr:~# mkcert '*.cilium.rocks'
Created a new local CA 💥
Note: the local CA is not installed in the system trust store.
Run "mkcert -install" for certificates to be trusted automatically ⚠️

Created a new certificate valid for the following names 📜
 - "*.cilium.rocks"

Reminder: X.509 wildcards only go one level deep, so this won't match a.b.cilium.rocks ℹ️

The certificate is at "./_wildcard.cilium.rocks.pem" and the key at "./_wildcard.cilium.rocks-key.pem" ✅

It will expire on 24 November 2027 🗓


root@k8s-ctr:~# ls -l *.pem
-rw------- 1 root root 1704 Aug 24 03:27 _wildcard.cilium.rocks-key.pem
-rw-r--r-- 1 root root 1452 Aug 24 03:27 _wildcard.cilium.rocks.pem

root@k8s-ctr:~# openssl x509 -in _wildcard.cilium.rocks.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            db:c0:12:89:e0:eb:96:44:9f:58:b2:59:f2:1f:40:3a
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: O = mkcert development CA, OU = root@k8s-ctr, CN = mkcert root@k8s-ctr
        Validity
            Not Before: Aug 23 18:27:36 2025 GMT
            Not After : Nov 23 18:27:36 2027 GMT
            ...
            
            
root@k8s-ctr:~# openssl rsa -in _wildcard.cilium.rocks-key.pem -text -noout
Private-Key: (2048 bit, 2 primes)
modulus:
    00:aa:ed:9e:87:57:8c:48:1c:e1:e0:8a:31:b6:9e:
    ed:46:7d:94:ca:54:a8:ba:0a:4b:1e:6d:c1:39:9a:
    ...
    53:78:8f:8a:33:82:66:18:43:86:90:7a:a5:b1:b0:
    7c:df
publicExponent: 65537 (0x10001)
privateExponent:
    73:38:ae:ce:a9:33:85:41:02:fa:ab:ed:8b:1f:62:
    ef:4b:a4:4b:27:fa:7d:3e:87:18:c1:ff:a8:e6:e0:
    ...
    6b:89:36:ea:da:5e:16:c6:32:2e:72:14:23:13:42:
    f1
prime1:
    00:d6:1a:8d:c1:c3:c2:5a:24:7e:21:f3:d3:ca:d8:
    33:57:b0:17:15:57:26:f6:e8:ce:eb:9b:1e:3d:ff:
    ...
    93:99:95:42:e0:56:38:f1:ff:05:e3:9c:88:a2:1d:
    da:77:fb:51:aa:2d:96:f1:5b
prime2:
    00:cc:60:34:24:54:21:78:1b:22:2b:fb:71:87:4c:
    87:61:83:bf:2f:07:4f:f6:8e:69:91:7c:3a:44:65:
    ...
    74:ae:8a:c3:bb:f3:94:5d:bc:13:34:21:b4:b2:c8:
    cb:4e:99:66:7c:06:6a:55:cd
exponent1:
    2e:a0:19:be:d8:a2:ba:7e:b7:f9:2c:e0:32:8c:62:
    a1:f5:f7:10:ee:a9:cd:9b:65:74:69:93:6c:6c:e7:
    ...
    9c:9f:a4:b0:b6:16:30:9d:18:eb:38:6b:88:e2:77:
    71:29:89:df:45:8e:59:81
exponent2:
    04:d4:9d:46:e2:8a:2b:f9:90:34:33:ec:3a:03:70:
    0b:b8:fe:72:d1:1c:6d:ba:6d:fa:57:52:55:3d:83:
    ...
    1b:fd:01:a5:56:9b:82:1f:a8:e0:89:8f:68:ce:60:
    27:ca:6e:66:ae:0c:23:5d
coefficient:
    70:7b:be:a8:fd:95:7b:31:21:76:4c:8a:20:ee:c7:
    ...
    c5:4d:d6:64:60:a3:ae:ef
    
    
root@k8s-ctr:~# kubectl create secret tls demo-cert --key=_wildcard.cilium.rocks-key.pem --cert=_wildcard.cilium.rocks.pem
secret/demo-cert created



# 시스템(OS) 신뢰 저장소에 CA 정보 확인
root@k8s-ctr:~# cat /etc/ssl/certs/ca-certificates.crt
root@k8s-ctr:~# ls -al /etc/ssl/certs/ca-certificates.crt
root@k8s-ctr:~# mkcert -install
The local CA is now installed in the system trust store! ⚡️

root@k8s-ctr:~# mkcert -CAROOT
/root/.local/share/mkcert

root@k8s-ctr:~# ls "$(mkcert -CAROOT)"
rootCA-key.pem	rootCA.pem

 

 

이제 https 요청을 호출해보게습니다.

HTTP Path/헤더 기반 라우팅, HTTPS TLS Termination, TLS Passthrough 각각 성공적으로 동작하는 것을 curl 결과로 확인할 수 있었습니다. 

root@k8s-ctr:~#
cat <<'EOF' > nginx.conf
events {
}

http {
  log_format main '$remote_addr - $remote_user [$time_local]  $status '
  '"$request" $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log main;
  error_log  /var/log/nginx/error.log;

  server {
    listen 443 ssl;

    root /usr/share/nginx/html;
    index index.html;

    server_name nginx.cilium.rocks;
    ssl_certificate /etc/nginx-server-certs/tls.crt;
    ssl_certificate_key /etc/nginx-server-certs/tls.key;
  }
}
EOF


root@k8s-ctr:~# kubectl create configmap nginx-configmap --from-file=nginx.conf=./nginx.conf

root@k8s-ctr:~# cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  ports:
    - port: 443
      protocol: TCP
  selector:
    run: my-nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 1
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
        - name: my-nginx
          image: nginx
          ports:
            - containerPort: 443
          volumeMounts:
            - name: nginx-config
              mountPath: /etc/nginx
              readOnly: true
            - name: nginx-server-certs
              mountPath: /etc/nginx-server-certs
              readOnly: true
      volumes:
        - name: nginx-config
          configMap:
            name: nginx-configmap
        - name: nginx-server-certs
          secret:
            secretName: demo-cert
EOF


# Deploy the Gateway
root@k8s-ctr:~#
cat << EOF | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: cilium-tls-gateway
spec:
  gatewayClassName: cilium
  listeners:
    - name: https
      hostname: "nginx.cilium.rocks"
      port: 443
      protocol: TLS
      tls:
        mode: Passthrough
      allowedRoutes:
        namespaces:
          from: All
---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: TLSRoute
metadata:
  name: nginx
spec:
  parentRefs:
    - name: cilium-tls-gateway
  hostnames:
    - "nginx.cilium.rocks"
  rules:
    - backendRefs:
        - name: my-nginx
          port: 443
EOF


root@k8s-ctr:~# kubectl get gateway cilium-tls-gateway
NAME                 CLASS    ADDRESS          PROGRAMMED   AGE
cilium-tls-gateway   cilium   192.168.10.214   True         20m

root@k8s-ctr:~# GATEWAY=$(kubectl get gateway cilium-tls-gateway -o jsonpath='{.status.addresses[0].value}')

root@k8s-ctr:~# echo $GATEWAY
192.168.10.214

root@k8s-ctr:~# kubectl get tlsroutes.gateway.networking.k8s.io -o json | jq '.items[0].status.parents[0]'

{
  "conditions": [
    {
      "lastTransitionTime": "2025-08-23T18:11:12Z",
      "message": "Accepted TLSRoute",
      "observedGeneration": 1,
      "reason": "Accepted",
      "status": "True",
      "type": "Accepted"
    },
    {
      "lastTransitionTime": "2025-08-23T18:11:12Z",
      "message": "Service reference is valid",
      "observedGeneration": 1,
      "reason": "ResolvedRefs",
      "status": "True",
      "type": "ResolvedRefs"
    }
  ],
  "controllerName": "io.cilium/gateway-controller",
  "parentRef": {
    "group": "gateway.networking.k8s.io",
    "kind": "Gateway",
    "name": "cilium-tls-gateway"
  }
}


# Make TLS Requests
root@k8s-ctr:~# curl -v --resolve "nginx.cilium.rocks:443:$GATEWAY" "https://nginx.cilium.rocks:443"
* Added nginx.cilium.rocks:443:192.168.10.214 to DNS cache
* Hostname nginx.cilium.rocks was found in DNS cache
*   Trying 192.168.10.214:443...
* Connected to nginx.cilium.rocks (192.168.10.214) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519 / RSASSA-PSS
* ALPN: server accepted http/1.1
* Server certificate:
*  subject: O=mkcert development certificate; OU=root@k8s-ctr
*  start date: Aug 23 18:27:36 2025 GMT
*  expire date: Nov 23 18:27:36 2027 GMT
*  subjectAltName: host "nginx.cilium.rocks" matched cert's "*.cilium.rocks"
*  issuer: O=mkcert development CA; OU=root@k8s-ctr; CN=mkcert root@k8s-ctr
*  SSL certificate verify ok.
*   Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 1: Public key type RSA (3072/128 Bits/secBits), signed using sha256WithRSAEncryption
* using HTTP/1.x
> GET / HTTP/1.1
> Host: nginx.cilium.rocks
> User-Agent: curl/8.5.0
> Accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/1.1 200 OK
< Server: nginx/1.29.1
< Date: Sat, 23 Aug 2025 18:48:40 GMT
< Content-Type: text/html
< Content-Length: 615
< Last-Modified: Wed, 13 Aug 2025 14:33:41 GMT
< Connection: keep-alive
< ETag: "689ca245-267"
< Accept-Ranges: bytes
<
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
* Connection #0 to host nginx.cilium.rocks left intact

 

'스터디 > Cilium' 카테고리의 다른 글

[Cilium] Cilium Performance  (1) 2025.08.31
[Cilium] K8s Performance with Kube-burner  (1) 2025.08.31
[Cilium] Cilium Ingress  (4) 2025.08.23
[Cilium] Cluster Mesh  (2) 2025.08.17
[Cilium] BGP Control Plane  (5) 2025.08.17