

 **Bantu tingkatkan halaman ini** 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih **Edit halaman ini pada GitHub** tautan yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasikan Ingress Kubernetes untuk node hybrid
<a name="hybrid-nodes-ingress"></a>

Topik ini menjelaskan cara mengonfigurasi Kubernetes Ingress untuk beban kerja yang berjalan di Amazon EKS Hybrid Nodes. [Kubernetes Ingress mengekspos](https://kubernetes.io/docs/concepts/services-networking/ingress/) rute HTTP dan HTTPS dari luar klaster ke layanan di dalam klaster. Untuk memanfaatkan sumber daya Ingress, pengontrol Ingress Kubernetes diperlukan untuk menyiapkan infrastruktur jaringan dan komponen yang melayani lalu lintas jaringan.

 AWS mendukung AWS Application Load Balancer (ALB) dan Cilium for Kubernetes Ingress untuk beban kerja yang berjalan pada EKS Hybrid Nodes. Keputusan untuk menggunakan ALB atau Cilium untuk Ingress didasarkan pada sumber lalu lintas aplikasi. Jika lalu lintas aplikasi berasal dari AWS Region, AWS rekomendasikan untuk menggunakan AWS ALB dan Load AWS Balancer Controller. Jika lalu lintas aplikasi berasal dari lingkungan lokal atau edge lokal, AWS rekomendasikan untuk menggunakan kemampuan Ingress bawaan Cilium, yang dapat digunakan dengan atau tanpa infrastruktur penyeimbang beban di lingkungan Anda.

![\[Masuknya Node Hibrida EKS\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-ingress.png)


## AWS Application Load Balancer
<a name="hybrid-nodes-ingress-alb"></a>

Anda dapat menggunakan [AWS Load Balancer Controller](aws-load-balancer-controller.md) dan Application Load Balancer (ALB) dengan `ip` tipe target untuk beban kerja yang berjalan pada node hybrid. Saat menggunakan tipe target`ip`, ALB meneruskan lalu lintas langsung ke pod, melewati jalur jaringan Layer Service. Agar ALB dapat mencapai target IP pod pada node hibrid, CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal Anda. Selain itu, AWS Load Balancer Controller menggunakan webhook dan memerlukan komunikasi langsung dari bidang kontrol EKS. Untuk informasi selengkapnya, lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md).

### Pertimbangan
<a name="_considerations"></a>
+ Lihat [Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers](alb-ingress.md) dan [Instal AWS Load Balancer Controller dengan Helm](lbc-helm.md) untuk informasi lebih lanjut tentang AWS Application Load Balancer dan Load AWS Balancer Controller.
+ Lihat [Praktik Terbaik untuk Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balacing.html) untuk informasi tentang cara memilih antara AWS Application Load Balancer AWS dan Network Load Balancer.
+ Lihat anotasi [AWS Load Balancer Controller Ingress untuk daftar anotasi](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) yang dapat dikonfigurasi untuk sumber daya Ingress dengan Application Load Balancer. AWS 

### Prasyarat
<a name="_prerequisites"></a>
+ Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)
+ Cilium BGP Control Plane diaktifkan mengikuti instruksi di. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md) Jika Anda tidak ingin menggunakan BGP, Anda harus menggunakan metode alternatif untuk membuat pod lokal CIDRs dapat dirutekan di jaringan lokal Anda. Jika Anda tidak membuat pod lokal Anda CIDRs dapat dirutekan, ALB tidak akan dapat mendaftar atau menghubungi target IP pod Anda.
+ Helm diinstal di lingkungan baris perintah Anda, lihat [petunjuk Setup Helm](helm.md) untuk informasi selengkapnya.
+ eksctl diinstal di lingkungan baris perintah Anda, lihat petunjuk instalasi [eksctl](install-kubectl.md#eksctl-install-update) untuk informasi lebih lanjut.

### Prosedur
<a name="_procedure"></a>

1. Unduh kebijakan IAM untuk AWS Load Balancer Controller yang memungkinkannya melakukan panggilan atas nama AWS APIs Anda.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Buat kebijakan IAM menggunakan kebijakan yang diunduh di langkah sebelumnya.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Ganti nilai untuk nama cluster (`CLUSTER_NAME`), AWS Region (`AWS_REGION`), dan ID AWS akun (`AWS_ACCOUNT_ID`) dengan pengaturan Anda dan jalankan perintah berikut.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Tambahkan repositori bagan Helm eks-charts dan perbarui repositori Helm lokal Anda untuk memastikan bahwa Anda memiliki bagan terbaru.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

   ```
   helm repo update eks
   ```

1. Instal AWS Load Balancer Controller. Ganti nilai untuk nama cluster (`CLUSTER_NAME`), AWS Region (`AWS_REGION`), VPC ID (`VPC_ID`), dan Load AWS Balancer Controller Helm chart version `AWS_LBC_HELM_VERSION` () dengan pengaturan Anda dan jalankan perintah berikut. Jika Anda menjalankan cluster mode campuran dengan node hybrid dan node di AWS Cloud, Anda dapat menjalankan AWS Load Balancer Controller pada node cloud mengikuti instruksi di. [AWS Pengontrol Load Balancer](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc)
   + Anda dapat menemukan bagan Helm versi terbaru dengan menjalankan`helm search repo eks/aws-load-balancer-controller --versions`.

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --version AWS_LBC_HELM_VERSION \
       --set clusterName=CLUSTER_NAME \
       --set region=AWS_REGION \
       --set vpcId=VPC_ID \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller
     ```

1. Verifikasi bahwa AWS Load Balancer Controller berhasil diinstal.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Buat contoh aplikasi. Contoh di bawah ini menggunakan contoh aplikasi [microservices Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Buat file bernama `my-ingress-alb.yaml` dengan isi berikut ini.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       alb.ingress.kubernetes.io/load-balancer-name: "my-ingress-alb"
       alb.ingress.kubernetes.io/target-type: "ip"
       alb.ingress.kubernetes.io/scheme: "internet-facing"
       alb.ingress.kubernetes.io/healthcheck-path: "/details/1"
   spec:
     ingressClassName: alb
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Terapkan konfigurasi Ingress ke cluster Anda.

   ```
   kubectl apply -f my-ingress-alb.yaml
   ```

1. Penyediaan ALB untuk sumber daya Ingress Anda mungkin memakan waktu beberapa menit. Setelah ALB disediakan, sumber daya Ingress Anda akan memiliki alamat yang ditetapkan untuk itu yang sesuai dengan nama DNS dari penerapan ALB. Alamat akan memiliki format`<alb-name>-<random-string>.<region>.elb.amazonaws.com`.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS   HOSTS   ADDRESS                                                     PORTS   AGE
   my-ingress   alb     *       my-ingress-alb-<random-string>.<region>.elb.amazonaws.com   80      23m
   ```

1. Akses Layanan menggunakan alamat ALB.

   ```
   curl -s http//my-ingress-alb-<random-string>.<region>.elb.amazonaws.com:80/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"
     "details": "This is the details page"
   }
   ```

## Ikhtisar Cilium Ingress dan Cilium Gateway
<a name="hybrid-nodes-ingress-cilium"></a>

Kemampuan Ingress Cilium dibangun ke dalam arsitektur Cilium dan dapat dikelola dengan Kubernetes Ingress API atau Gateway API. Jika Anda tidak memiliki sumber daya Ingress yang ada, AWS rekomendasikan untuk memulai dengan Gateway API, karena ini adalah cara yang lebih ekspresif dan fleksibel untuk mendefinisikan dan mengelola sumber daya jaringan Kubernetes. [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/) bertujuan untuk menstandarisasi bagaimana sumber daya jaringan untuk Ingress, Load Balancing, dan Service Mesh didefinisikan dan dikelola dalam klaster Kubernetes.

Saat Anda mengaktifkan fitur Ingress atau Gateway Cilium, operator Cilium merekonsiliasi objek Ingress/Gateway di cluster dan proxy Envoy pada setiap node memproses lalu lintas jaringan Layer 7 (L7). Cilium tidak secara langsung menyediakan infrastruktur Ingress /Gateway seperti load balancer. Jika Anda berencana untuk menggunakan Cilium Ingress /Gateway dengan penyeimbang beban, Anda harus menggunakan perkakas penyeimbang beban, biasanya pengontrol Ingress atau Gateway, untuk menyebarkan dan mengelola infrastruktur penyeimbang beban.

Untuk lalu lintas Ingress /Gateway, Cilium menangani lalu lintas jaringan inti dan penegakan kebijakan L3/L4, dan proxy Utusan terintegrasi memproses lalu lintas jaringan L7. Dengan Cilium Ingress /Gateway, Envoy bertanggung jawab untuk menerapkan aturan routing L7, kebijakan, dan manipulasi permintaan, manajemen lalu lintas tingkat lanjut seperti pemisahan lalu lintas dan pencerminan, dan penghentian dan originasi TLS. Proksi Utusan Cilium digunakan sebagai DaemonSet (`cilium-envoy`) terpisah secara default, yang memungkinkan Utusan dan agen Cilium diperbarui, diskalakan, dan dikelola secara terpisah.

[Untuk informasi lebih lanjut tentang cara kerja Cilium Ingress dan Cilium Gateway, lihat halaman Cilium [Ingress dan Cilium](https://docs.cilium.io/en/stable/network/servicemesh/ingress/) Gateway di dokumentasi Cilium.](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/)

## Perbandingan Cilium Ingress dan Gateway
<a name="hybrid-nodes-ingress-cilium-comparison"></a>

**Tabel di bawah ini merangkum fitur Cilium Ingress dan Cilium Gateway pada versi Cilium 1.17.x.**


| Fitur | Ingress | Gateway | 
| --- | --- | --- | 
|  Jenis layanan LoadBalancer  |  Ya  |  Ya  | 
|  Jenis layanan NodePort  |  Ya  |  Tidak1   | 
|  Jaringan host  |  Ya  |  Ya  | 
|  Penyeimbang beban bersama  |  Ya  |  Ya  | 
|  Penyeimbang beban khusus  |  Ya  |  Tidak 2   | 
|  Kebijakan jaringan  |  Ya  |  Ya  | 
|  Protokol  |  Lapisan 7 (HTTP (S), gRPC)  |  Lapisan 7 (HTTP (S), gRPC) 3   | 
|  Passthrough TLS  |  Ya  |  Ya  | 
|  Manajemen Lalu Lintas  |  Perutean jalur dan Host  |  Perutean jalur dan Host, pengalihan URL dan penulisan ulang, pemisahan lalu lintas, modifikasi header  | 

 1 [Dukungan Cilium Gateway untuk NodePort layanan direncanakan untuk Cilium versi 1.18.x (\$127273)](https://github.com/cilium/cilium/pull/27273)

 2 [Dukungan Cilium Gateway untuk penyeimbang beban khusus (\$125567)](https://github.com/cilium/cilium/issues/25567)

 3 [Dukungan Cilium Gateway untuk TCP/UDP (\$121929)](https://github.com/cilium/cilium/issues/21929)

## Instal Cilium Gateway
<a name="hybrid-nodes-ingress-cilium-gateway-install"></a>

### Pertimbangan
<a name="_considerations_2"></a>
+ Cilium harus dikonfigurasi dengan `nodePort.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini. Jika Anda menggunakan fitur pengganti kube-proxy Cilium, Anda tidak perlu menyetel ke. `nodePort.enabled` `true`
+ Cilium harus dikonfigurasi dengan `envoy.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini.
+ Cilium Gateway dapat digunakan dalam load balancer (default) atau mode jaringan host.
+ Saat menggunakan Cilium Gateway dalam mode penyeimbang beban, `service.beta.kubernetes.io/aws-load-balancer-type: "external"` anotasi harus disetel pada resource Gateway untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk Layanan jenis LoadBalancer yang dibuat Cilium untuk sumber daya Gateway.
+ Saat menggunakan Cilium Gateway dalam mode jaringan host, mode Service of type LoadBalancer dinonaktifkan. Mode jaringan host berguna untuk lingkungan yang tidak memiliki infrastruktur penyeimbang beban, lihat [Jaringan host](#hybrid-nodes-ingress-cilium-host-network) untuk informasi lebih lanjut.

### Prasyarat
<a name="_prerequisites_2"></a>

1. Helm diinstal di lingkungan baris perintah Anda, lihat instruksi [Setup](helm.md) Helm.

1. Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)

### Prosedur
<a name="_procedure_2"></a>

1. Instal Kubernetes Gateway API Custom Resource Definitions (). CRDs

   ```
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gateways.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml
   ```

1. Buat file bernama `cilium-gateway-values.yaml` dengan konten berikut. Contoh di bawah ini mengonfigurasi Cilium Gateway untuk menggunakan mode load balancer default dan menggunakan proxy Envoy terpisah `cilium-envoy` DaemonSet yang dikonfigurasi agar berjalan hanya pada node hybrid.

   ```
   gatewayAPI:
     enabled: true
     # uncomment to use host network mode
     # hostNetwork:
     #   enabled: true
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Terapkan file nilai Helm ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-gateway-values.yaml
   ```

1. Konfirmasikan operator Cilium, agen, dan pod Envoy sedang berjalan.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Konfigurasikan Cilium Gateway
<a name="hybrid-nodes-ingress-cilium-gateway-configure"></a>

Cilium Gateway diaktifkan pada objek Gateway dengan menyetel ke. `gatewayClassName` `cilium` Layanan yang dibuat Cilium untuk sumber daya Gateway dapat dikonfigurasi dengan bidang pada objek Gateway. Anotasi umum yang digunakan oleh pengontrol Gateway untuk mengonfigurasi infrastruktur penyeimbang beban dapat dikonfigurasi dengan bidang objek Gateway. `infrastructure` Saat menggunakan LoadBalancer IPAM Cilium (lihat contoh di[Jenis layanan LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer)), alamat IP yang akan digunakan untuk Layanan tipe LoadBalancer dapat dikonfigurasi pada bidang objek Gateway. `addresses` Untuk informasi selengkapnya tentang konfigurasi Gateway, lihat spesifikasi [Kubernetes Gateway API.](https://gateway-api.sigs.k8s.io/reference/spec/#gateway)

```
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-gateway
spec:
  gatewayClassName: cilium
  infrastructure:
    annotations:
      service.beta.kubernetes.io/...
      service.kuberentes.io/...
  addresses:
  - type: IPAddress
    value: <LoadBalancer IP address>
  listeners:
  ...
```

Spesifikasi Cilium dan Kubernetes Gateway mendukung, Gateway GatewayClass,,, dan sumber daya. HTTPRoute GRPCRoute ReferenceGrant 
+ Lihat [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/HTTPRoute)dan [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/GRPCRoute)spesifikasi untuk daftar bidang yang tersedia.
+ Lihat contoh di [Menyebarkan Gerbang Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy) bagian di bawah ini dan contoh dalam [dokumentasi Cilium](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#examples) untuk cara menggunakan dan mengonfigurasi sumber daya ini.

## Menyebarkan Gerbang Cilium
<a name="hybrid-nodes-ingress-cilium-gateway-deploy"></a>

1. Buat contoh aplikasi. Contoh di bawah ini menggunakan contoh aplikasi [microservices Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Konfirmasikan aplikasi berjalan dengan sukses.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Buat file bernama `my-gateway.yaml` dengan isi berikut ini. Contoh di bawah ini menggunakan `service.beta.kubernetes.io/aws-load-balancer-type: "external"` anotasi untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk LoadBalancer jenis Layanan yang dibuat Cilium untuk resource Gateway.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     infrastructure:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
     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
   ```

1. Terapkan sumber daya Gateway ke cluster Anda.

   ```
   kubectl apply -f my-gateway.yaml
   ```

1. Konfirmasikan sumber daya Gateway dan Layanan terkait telah dibuat. Pada tahap ini, diharapkan bahwa `ADDRESS` bidang sumber daya Gateway tidak diisi dengan alamat IP atau nama host, dan bahwa Layanan tipe LoadBalancer untuk sumber daya Gateway juga tidak memiliki alamat IP atau nama host yang ditetapkan.

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS   PROGRAMMED   AGE
   my-gateway   cilium             True         10s
   ```

   ```
   kubectl get svc cilium-gateway-my-gateway
   ```

   ```
   NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
   cilium-gateway-my-gateway   LoadBalancer   172.16.227.247   <pending>     80:30912/TCP   24s
   ```

1. Lanjutkan [Jenis layanan LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) untuk mengonfigurasi sumber daya Gateway untuk menggunakan alamat IP yang dialokasikan oleh Cilium Load Balancer IPAM, dan [Jenis layanan NodePort](#hybrid-nodes-ingress-cilium-nodeport) atau [Jaringan host](#hybrid-nodes-ingress-cilium-host-network) untuk mengonfigurasi sumber daya Gateway untuk menggunakan atau meng-host alamat jaringan. NodePort 

## Instal Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-install"></a>

### Pertimbangan
<a name="_considerations_3"></a>
+ Cilium harus dikonfigurasi dengan `nodePort.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini. Jika Anda menggunakan fitur pengganti kube-proxy Cilium, Anda tidak perlu menyetel ke. `nodePort.enabled` `true`
+ Cilium harus dikonfigurasi dengan `envoy.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini.
+ Dengan `ingressController.loadbalancerMode` disetel ke`dedicated`, Cilium membuat Layanan khusus untuk setiap sumber daya Ingress. Dengan `ingressController.loadbalancerMode` disetel ke`shared`, Cilium membuat tipe Layanan bersama LoadBalancer untuk semua sumber daya Ingress di cluster. Saat menggunakan mode penyeimbang `shared` beban, pengaturan untuk Layanan bersama seperti`labels`,, `annotations``type`, dan `loadBalancerIP` dikonfigurasi di `ingressController.service` bagian nilai Helm. Lihat [referensi nilai Cilium Helm](https://github.com/cilium/cilium/blob/v1.17.6/install/kubernetes/cilium/values.yaml#L887) untuk informasi lebih lanjut.
+ Dengan `ingressController.default` disetel ke`true`, Cilium dikonfigurasi sebagai pengontrol Ingress default untuk cluster dan akan membuat entri Ingress bahkan ketika tidak `ingressClassName` ditentukan pada sumber daya Ingress.
+ Cilium Ingress dapat digunakan dalam load balancer (default), port node, atau mode jaringan host. Ketika Cilium diinstal dalam mode jaringan host, Layanan tipe LoadBalancer dan Layanan NodePort mode tipe dinonaktifkan. Untuk informasi selengkapnya, lihat [Jaringan host](#hybrid-nodes-ingress-cilium-host-network).
+ [Selalu atur `ingressController.service.annotations` ke `service.beta.kubernetes.io/aws-load-balancer-type: "external"` dalam nilai Helm untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk Layanan `cilium-ingress` default yang dibuat oleh bagan Cilium Helm.](https://github.com/cilium/cilium/blob/main/install/kubernetes/cilium/templates/cilium-ingress-service.yaml)

### Prasyarat
<a name="_prerequisites_3"></a>

1. Helm diinstal di lingkungan baris perintah Anda, lihat instruksi [Setup](helm.md) Helm.

1. Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)

### Prosedur
<a name="_procedure_3"></a>

1. Buat file bernama `cilium-ingress-values.yaml` dengan konten berikut. Contoh di bawah ini mengonfigurasi Cilium Ingress untuk menggunakan `dedicated` mode load balancer default dan menggunakan proxy Envoy terpisah `cilium-envoy` DaemonSet yang dikonfigurasi agar berjalan hanya pada node hybrid.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: dedicated
     service:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Terapkan file nilai Helm ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-ingress-values.yaml
   ```

1. Konfirmasikan operator Cilium, agen, dan pod Envoy sedang berjalan.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Konfigurasikan Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-configure"></a>

Cilium Ingress diaktifkan pada objek Ingress dengan menyetel ke. `ingressClassName` `cilium` Layanan yang dibuat Cilium untuk sumber daya Ingress dapat dikonfigurasi dengan anotasi pada objek Ingress saat menggunakan mode penyeimbang `dedicated` beban dan dalam konfigurasi Cilium/Helm saat menggunakan mode penyeimbang beban. `shared` Anotasi ini biasanya digunakan oleh pengontrol Ingress untuk mengonfigurasi infrastruktur penyeimbang beban, atau atribut lain dari Layanan seperti jenis layanan, mode penyeimbang beban, port, dan passthrough TLS. Anotasi kunci dijelaskan di bawah ini. Untuk daftar lengkap anotasi yang didukung, lihat anotasi [Cilium Ingress](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#supported-ingress-annotations) di dokumentasi Cilium.


| Anotasi | Deskripsi | 
| --- | --- | 
|   `ingress.cilium.io/loadbalancer-mode`   |   `dedicated`: Jenis Layanan Khusus LoadBalancer untuk setiap sumber daya Ingress (default).  `shared`: Jenis Layanan Tunggal LoadBalancer untuk semua sumber daya Ingress.  | 
|   `ingress.cilium.io/service-type`   |   `LoadBalancer`: Layanan akan bertipe LoadBalancer (default)  `NodePort`: Layanan akan bertipe NodePort.  | 
|   `service.beta.kubernetes.io/aws-load-balancer-type`   |   `"external"`: Mencegah penyedia AWS cloud lama dari penyediaan Classic Load Balancer untuk Layanan jenis. LoadBalancer  | 
|   `lbipam.cilium.io/ips`   |  Daftar alamat IP yang akan dialokasikan dari LoadBalancer Cilium IPAM  | 

Spesifikasi Cilium dan Kubernetes Ingress mendukung aturan pencocokan Exact, Prefix, dan spesifik implementasi untuk jalur Ingress. Cilium mendukung regex sebagai aturan pencocokan khusus implementasinya. Untuk informasi selengkapnya, lihat [Ingress path types and precedence](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#ingress-path-types-and-precedence) and [Path types example](https://docs.cilium.io/en/stable/network/servicemesh/path-types/) in the Cilium documentation, dan contoh di bagian halaman ini[Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy).

Contoh objek Cilium Ingress ditunjukkan di bawah ini.

```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    service.beta.kuberentes.io/...
    service.kuberentes.io/...
spec:
  ingressClassName: cilium
  rules:
  ...
```

## Menyebarkan Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-deploy"></a>

1. Buat contoh aplikasi. Contoh di bawah ini menggunakan contoh aplikasi [microservices Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Konfirmasikan aplikasi berjalan dengan sukses.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Buat file bernama `my-ingress.yaml` dengan isi berikut ini. Contoh di bawah ini menggunakan `service.beta.kubernetes.io/aws-load-balancer-type: "external"` anotasi untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk LoadBalancer jenis Layanan yang dibuat Cilium untuk resource Ingress.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Terapkan sumber daya Ingress ke cluster Anda.

   ```
   kubectl apply -f my-ingress.yaml
   ```

1. Konfirmasikan sumber daya Ingress dan Layanan terkait telah dibuat. Pada tahap ini, diharapkan bahwa `ADDRESS` bidang sumber daya Ingress tidak diisi dengan alamat IP atau nama host, dan bahwa Layanan tipe bersama atau khusus LoadBalancer untuk sumber daya Ingress juga tidak memiliki alamat IP atau nama host yang ditetapkan.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS   PORTS   AGE
   my-ingress   cilium   *                 80      8s
   ```

   Untuk mode penyeimbang beban `shared` 

   ```
   kubectl -n kube-system get svc cilium-ingress
   ```

   ```
   NAME             TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress   LoadBalancer   172.16.217.48   <pending>     80:32359/TCP,443:31090/TCP   10m
   ```

   Untuk mode penyeimbang beban `dedicated` 

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   LoadBalancer   172.16.193.15   <pending>     80:32088/TCP,443:30332/TCP   25s
   ```

1. Lanjutkan [Jenis layanan LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) untuk mengonfigurasi sumber daya Ingress untuk menggunakan alamat IP yang dialokasikan oleh Cilium Load Balancer IPAM, [Jenis layanan NodePort](#hybrid-nodes-ingress-cilium-nodeport) dan [Jaringan host](#hybrid-nodes-ingress-cilium-host-network) atau untuk mengonfigurasi sumber daya Ingress untuk menggunakan atau meng-host alamat jaringan. NodePort 

## Jenis layanan LoadBalancer
<a name="hybrid-nodes-ingress-cilium-loadbalancer"></a>

### Infrastruktur penyeimbang beban yang ada
<a name="_existing_load_balancer_infrastructure"></a>

Secara default, untuk Cilium Ingress dan Cilium Gateway, Cilium membuat tipe Layanan Kubernetes untuk resource Ingress/Gateway. LoadBalancer Atribut Layanan yang dibuat Cilium dapat dikonfigurasi melalui sumber daya Ingress dan Gateway. Saat Anda membuat sumber daya Ingress atau Gateway, alamat IP atau nama host yang terbuka secara eksternal untuk Ingress atau Gateway dialokasikan dari infrastruktur penyeimbang beban, yang biasanya disediakan oleh pengontrol Ingress atau Gateway.

Banyak pengontrol Ingress dan Gateway menggunakan anotasi untuk mendeteksi dan mengkonfigurasi infrastruktur penyeimbang beban. Anotasi untuk pengontrol Ingress dan Gateway ini dikonfigurasi pada sumber daya Ingress atau Gateway seperti yang ditunjukkan pada contoh sebelumnya di atas. Referensikan dokumentasi Ingress atau Gateway controller Anda untuk anotasi yang didukungnya dan lihat dokumentasi [Kubernetes Ingress dan dokumentasi Kubernetes](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) Gateway untuk [daftar kontroler populer.](https://gateway-api.sigs.k8s.io/implementations/)

**penting**  
Cilium Ingress dan Gateway tidak dapat digunakan dengan Load Balancer Controller dan AWS Network AWS Load Balancers () dengan EKS Hybrid Nodes. NLBs Mencoba untuk menggunakan ini bersama-sama menghasilkan target yang tidak terdaftar, karena NLB mencoba untuk langsung terhubung ke Pod IPs yang mendukung Service tipe LoadBalancer ketika NLB diatur ke `ip` (persyaratan untuk menggunakan NLB dengan beban `target-type` kerja yang berjalan pada EKS Hybrid Nodes).

### Tidak ada infrastruktur penyeimbang beban
<a name="_no_load_balancer_infrastructure"></a>

Jika Anda tidak memiliki infrastruktur penyeimbang beban dan pengontrol Ingress/Gateway yang sesuai di lingkungan Anda, sumber daya Ingress /Gateway dan jenis Layanan yang sesuai LoadBalancer dapat dikonfigurasi untuk menggunakan alamat IP yang dialokasikan oleh manajemen alamat IP [Load Balancer Cilium (LB IPAM](https://docs.cilium.io/en/stable/network/lb-ipam/)). Cilium LB IPAM dapat dikonfigurasi dengan rentang alamat IP yang diketahui dari lingkungan lokal Anda, dan dapat menggunakan dukungan Border Gateway Protocol (BGP) bawaan Cilium atau pengumuman L2 untuk mengiklankan alamat IP ke jaringan lokal Anda. LoadBalancer 

Contoh di bawah ini menunjukkan cara mengonfigurasi LB IPAM Cilium dengan alamat IP yang akan digunakan untuk sumber daya Ingress/Gateway Anda, dan cara mengonfigurasi Cilium BGP Control Plane untuk mengiklankan alamat IP dengan jaringan lokal. LoadBalancer Fitur LB IPAM Cilium diaktifkan secara default, tetapi tidak diaktifkan sampai sumber daya dibuat. `CiliumLoadBalancerIPPool`

#### Prasyarat
<a name="_prerequisites_4"></a>
+ Cilium Ingress atau Gateway diinstal mengikuti petunjuk di atau. [Instal Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install) [Instal Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-install)
+ Sumber daya Cilium Ingress atau Gateway dengan contoh aplikasi yang digunakan mengikuti instruksi di atau. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy) [Menyebarkan Gerbang Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy)
+ Cilium BGP Control Plane diaktifkan mengikuti instruksi di. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md) Jika Anda tidak ingin menggunakan BGP, Anda dapat melewati prasyarat ini, tetapi Anda tidak akan dapat mengakses sumber daya Ingress atau Gateway hingga alamat LoadBalancer IP yang dialokasikan oleh Cilium LB IPAM dapat dirutekan di jaringan lokal Anda.

#### Prosedur
<a name="_procedure_4"></a>

1. Secara opsional menambal sumber daya Ingress atau Gateway untuk meminta alamat IP tertentu yang akan digunakan untuk jenis Layanan. LoadBalancer Jika Anda tidak meminta alamat IP tertentu, Cilium akan mengalokasikan alamat IP dari rentang alamat IP yang dikonfigurasi dalam `CiliumLoadBalancerIPPool` sumber daya pada langkah berikutnya. Pada perintah di bawah ini, ganti `LB_IP_ADDRESS` dengan alamat IP untuk meminta Layanan tipe LoadBalancer.

    **Gerbang** 

   ```
   kubectl patch gateway -n default my-gateway --type=merge -p '{
     "spec": {
       "addresses": [{"type": "IPAddress", "value": "LB_IP_ADDRESS"}]
     }
   }'
   ```

    **Masuknya** 

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
     "metadata": {"annotations": {"lbipam.cilium.io/ips": "LB_IP_ADDRESS"}}
   }'
   ```

1. Buat file bernama `cilium-lbip-pool-ingress.yaml` dengan `CiliumLoadBalancerIPPool` sumber daya untuk mengonfigurasi rentang alamat IP Load Balancer untuk sumber daya Ingress /Gateway Anda.
   + Jika Anda menggunakan Cilium Ingress, Cilium secara otomatis menerapkan `cilium.io/ingress: "true"` label ke Layanan yang dibuatnya untuk sumber daya Ingress. Anda dapat menggunakan label ini di `serviceSelector` bidang definisi `CiliumLoadBalancerIPPool` sumber daya untuk memilih Layanan yang memenuhi syarat untuk LB IPAM.
   + Jika Anda menggunakan Cilium Gateway, Anda dapat menggunakan `gateway.networking.k8s.io/gateway-name` label di `serviceSelector` bidang definisi `CiliumLoadBalancerIPPool` sumber daya untuk memilih sumber daya Gateway yang memenuhi syarat untuk LB IPAM.
   + Ganti `LB_IP_CIDR` dengan rentang alamat IP yang akan digunakan untuk alamat IP Load Balancer. Untuk memilih satu alamat IP, gunakan `/32` CIDR. Untuk informasi selengkapnya, lihat [Manajemen Alamat LoadBalancer IP](https://docs.cilium.io/en/stable/network/lb-ipam/) di dokumentasi Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: bookinfo-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         # if using Cilium Gateway
         matchExpressions:
           - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
         # if using Cilium Ingress
         matchLabels:
           cilium.io/ingress: "true"
     ```

1. Terapkan `CiliumLoadBalancerIPPool` sumber daya ke cluster Anda.

   ```
   kubectl apply -f cilium-lbip-pool-ingress.yaml
   ```

1. Konfirmasikan alamat IP dialokasikan dari Cilium LB IPAM untuk sumber daya Ingress /Gateway.

    **Gerbang** 

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS        PROGRAMMED   AGE
   my-gateway   cilium   LB_IP_ADDRESS    True         6m41s
   ```

    **Masuknya** 

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS        PORTS   AGE
   my-ingress   cilium   *       LB_IP_ADDRESS   80      10m
   ```

1. Buat file bernama `cilium-bgp-advertisement-ingress.yaml` dengan `CiliumBGPAdvertisement` sumber daya untuk mengiklankan alamat LoadBalancer IP untuk sumber daya Ingress /Gateway. Jika Anda tidak menggunakan Cilium BGP, Anda dapat melewati langkah ini. Alamat LoadBalancer IP yang digunakan untuk sumber daya Ingress /Gateway Anda harus dapat dirutekan di jaringan lokal agar Anda dapat melakukan kueri layanan pada langkah berikutnya.

   ```
   apiVersion: cilium.io/v2alpha1
   kind: CiliumBGPAdvertisement
   metadata:
     name: bgp-advertisement-lb-ip
     labels:
       advertise: bgp
   spec:
     advertisements:
       - advertisementType: "Service"
         service:
           addresses:
             - LoadBalancerIP
         selector:
           # if using Cilium Gateway
           matchExpressions:
             - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
           # if using Cilium Ingress
           matchLabels:
             cilium.io/ingress: "true"
   ```

1. Terapkan `CiliumBGPAdvertisement` sumber daya ke cluster Anda.

   ```
   kubectl apply -f cilium-bgp-advertisement-ingress.yaml
   ```

1. Akses layanan menggunakan alamat IP yang dialokasikan dari Cilium LB IPAM.

   ```
   curl -s http://LB_IP_ADDRESS:80/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"
   }
   ```

## Jenis layanan NodePort
<a name="hybrid-nodes-ingress-cilium-nodeport"></a>

Jika Anda tidak memiliki infrastruktur penyeimbang beban dan pengontrol Ingress yang sesuai di lingkungan Anda, atau jika Anda mengelola sendiri infrastruktur penyeimbang beban atau menggunakan penyeimbang beban berbasis DNS, Anda dapat mengonfigurasi Cilium Ingress untuk membuat Layanan tipe untuk sumber daya Ingress. NodePort Saat menggunakan NodePort dengan Cilium Ingress, Layanan tipe NodePort diekspos pada port pada setiap node dalam rentang port 30000-32767. Dalam mode ini, ketika lalu lintas mencapai node mana pun di cluster NodePort, lalu diteruskan ke pod yang mendukung layanan, yang mungkin berada di node yang sama atau node yang berbeda.

**catatan**  
[Dukungan Cilium Gateway untuk NodePort layanan direncanakan untuk Cilium versi 1.18.x (\$127273)](https://github.com/cilium/cilium/pull/27273)

### Prasyarat
<a name="_prerequisites_5"></a>
+ Cilium Ingress dipasang mengikuti petunjuk di. [Instal Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install)
+ Sumber daya Cilium Ingress dengan aplikasi sampel yang digunakan mengikuti instruksi di. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy)

### Prosedur
<a name="_procedure_5"></a>

1. Menambal sumber daya Ingress yang ada `my-ingress` untuk mengubahnya dari tipe Layanan LoadBalancer menjadi NodePort.

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
       "metadata": {"annotations": {"ingress.cilium.io/service-type": "NodePort"}}
   }'
   ```

   Jika Anda belum membuat sumber daya Ingress, Anda dapat membuatnya dengan menerapkan definisi Ingress berikut ke cluster Anda. Catatan, definisi Ingress di bawah ini menggunakan contoh aplikasi Istio Bookinfo yang dijelaskan dalam. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy)

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
       "ingress.cilium.io/service-type": "NodePort"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Konfirmasikan Layanan untuk sumber daya Ingress telah diperbarui untuk menggunakan jenis NodePort Layanan. Perhatikan Port untuk protokol HTTP di output. Dalam contoh di bawah ini port HTTP ini`32353`, yang akan digunakan dalam langkah berikutnya untuk query Layanan. Manfaat menggunakan Cilium Ingress with Service of type NodePort adalah Anda dapat menerapkan routing berbasis jalur dan host, serta kebijakan jaringan untuk lalu lintas Ingress, yang tidak dapat Anda lakukan untuk jenis Layanan standar tanpa Ingress. NodePort 

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   NodePort   172.16.47.153   <none>        80:32353/TCP,443:30253/TCP   27m
   ```

1. Dapatkan alamat IP node Anda di cluster Anda.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Akses Layanan jenis NodePort menggunakan alamat IP node Anda dan yang NodePort ditangkap di atas. Pada contoh di bawah ini alamat IP node yang digunakan adalah `10.80.146.32` dan NodePort is`32353`. Ganti ini dengan nilai-nilai untuk lingkungan Anda.

   ```
   curl -s http://10.80.146.32:32353/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"
   }
   ```

## Jaringan host
<a name="hybrid-nodes-ingress-cilium-host-network"></a>

Mirip dengan jenis Layanan NodePort, jika Anda tidak memiliki infrastruktur penyeimbang beban dan pengontrol Ingress atau Gateway, atau jika Anda mengelola sendiri penyeimbang beban Anda dengan penyeimbang beban eksternal, Anda dapat mengonfigurasi Cilium Ingress dan Cilium Gateway untuk mengekspos sumber daya Ingress dan Gateway langsung di jaringan host. Ketika mode jaringan host diaktifkan untuk sumber daya Ingress atau Gateway, Layanan jenis LoadBalancer dan NodePort mode dinonaktifkan secara otomatis, mode jaringan host saling eksklusif dengan mode alternatif ini untuk setiap sumber daya Ingress atau Gateway. Dibandingkan dengan mode Service of type, NodePort mode jaringan host menawarkan fleksibilitas tambahan untuk rentang port yang dapat digunakan (tidak terbatas pada NodePort rentang 30000-32767) dan Anda dapat mengonfigurasi subset node tempat proxy Envoy berjalan di jaringan host.

### Prasyarat
<a name="_prerequisites_6"></a>
+ Cilium Ingress atau Gateway diinstal mengikuti petunjuk di atau. [Instal Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install) [Instal Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-install)

### Prosedur
<a name="_procedure_6"></a>

#### Gateway
<a name="_gateway"></a>

1. Buat file dengan nama `cilium-gateway-host-network.yaml` dengan konten berikut ini.

   ```
   gatewayAPI:
     enabled: true
     hostNetwork:
       enabled: true
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: gateway
   ```

1. Terapkan konfigurasi Cilium Gateway jaringan host ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-gateway-host-network.yaml
   ```

   Jika Anda belum membuat sumber daya Gateway, Anda dapat membuatnya dengan menerapkan definisi Gateway berikut ke klaster Anda. Definisi Gateway di bawah ini menggunakan contoh aplikasi Istio Bookinfo yang dijelaskan dalam. [Menyebarkan Gerbang Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy) Pada contoh di bawah ini, resource Gateway dikonfigurasi untuk menggunakan `8111` port untuk pendengar HTTP, yang merupakan port pendengar bersama untuk proxy Envoy yang berjalan di jaringan host. Jika Anda menggunakan port istimewa (lebih rendah dari 1023) untuk sumber daya Gateway, rujuk dokumentasi [Cilium](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#bind-to-privileged-port) untuk instruksi.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     listeners:
     - protocol: HTTP
       port: 8111
       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
   ```

   Anda dapat mengamati Konfigurasi Utusan Cilium yang diterapkan dengan perintah berikut.

   ```
   kubectl get cec cilium-gateway-my-gateway -o yaml
   ```

   Anda bisa mendapatkan port pendengar Utusan untuk `cilium-gateway-my-gateway` Layanan dengan perintah berikut. Dalam contoh ini, port pendengar bersama adalah`8111`.

   ```
   kubectl get cec cilium-gateway-my-gateway -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Dapatkan alamat IP node Anda di cluster Anda.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Akses Layanan menggunakan alamat IP node Anda dan port listener untuk `cilium-gateway-my-gateway` sumber daya. Pada contoh di bawah ini alamat IP node yang digunakan adalah `10.80.146.32` dan port listener adalah`8111`. Ganti ini dengan nilai-nilai untuk lingkungan Anda.

   ```
   curl -s http://10.80.146.32:8111/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"
   }
   ```

#### Ingress
<a name="_ingress"></a>

Karena masalah Cilium hulu ([\$134028](https://github.com/cilium/cilium/issues/34028)), Cilium Ingress dalam mode jaringan host memerlukan penggunaan`loadbalancerMode: shared`, yang membuat satu Layanan tipe ClusterIP untuk semua sumber daya Ingress di cluster. Jika Anda menggunakan port istimewa (lebih rendah dari 1023) untuk sumber daya Ingress, rujuk dokumentasi [Cilium](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#bind-to-privileged-port) untuk instruksi.

1. Buat file dengan nama `cilium-ingress-host-network.yaml` dengan konten berikut ini.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: shared
     # This is a workaround for the upstream Cilium issue
     service:
       externalTrafficPolicy: null
       type: ClusterIP
     hostNetwork:
       enabled: true
       # ensure the port does not conflict with other services on the node
       sharedListenerPort: 8111
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: ingress
   ```

1. Terapkan konfigurasi Cilium Ingress jaringan host ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-ingress-host-network.yaml
   ```

   Jika Anda belum membuat sumber daya Ingress, Anda dapat membuatnya dengan menerapkan definisi Ingress berikut ke cluster Anda. Definisi Ingress di bawah ini menggunakan contoh aplikasi Istio Bookinfo yang dijelaskan dalam. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy)

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

   Anda dapat mengamati Konfigurasi Utusan Cilium yang diterapkan dengan perintah berikut.

   ```
   kubectl get cec -n kube-system cilium-ingress -o yaml
   ```

   Anda bisa mendapatkan port pendengar Utusan untuk `cilium-ingress` Layanan dengan perintah berikut. Dalam contoh ini, port pendengar bersama adalah`8111`.

   ```
   kubectl get cec -n kube-system cilium-ingress -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Dapatkan alamat IP node Anda di cluster Anda.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Akses Layanan menggunakan alamat IP node Anda dan `sharedListenerPort` untuk `cilium-ingress` sumber daya. Pada contoh di bawah ini alamat IP node yang digunakan adalah `10.80.146.32` dan port listener adalah`8111`. Ganti ini dengan nilai-nilai untuk lingkungan Anda.

   ```
   curl -s http://10.80.146.32:8111/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"
   }
   ```