Refrensi :
TransportServer resource memungkinkan untuk conifgurasi TCP, UDP dan TLS Passtrough melalui nginx-upstream. Fitur ini berfungsi jika installasi dengan CRD.
Persyaratan
- Untuk tcp dan udp, perlu membuat globalresources terlebih dahulu. Refrensi
- Untuk TLS Passtrough, perlu menambahkan
-enable-tls-passthroughdi command line argument ingress-controller
Simple Testing, Access ssh to pod using tcp passtrough port 22
Untuk mencoba saya membuat pod openssh-server. Nantinya akan expose port 22 dari container, dan coba akses mengggukana ip dari ingress-nginx.
Refrensi dari percobaan : https://stackoverflow.com/questions/68046576/exposing-tcp-service-using-nginx-ingress-controller-operator-on-openshift
- Create deployment + service openssh-server, expose port 22.
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: ssh-server
name: ssh-server
spec:
replicas: 1
selector:
matchLabels:
app: ssh-server
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: ssh-server
spec:
containers:
- image: linuxserver/openssh-server
name: openssh-server
ports:
- name: ssh-port
containerPort: 2222
---
apiVersion: v1
kind: Service
metadata:
labels:
app: ssh-server
name: ssh-server
spec:
ports:
- name: ssh-port
port: 22
protocol: TCP
targetPort: 2222
selector:
app: ssh-server
type: ClusterIP
Hit port 2222. (Default container)

Hit port 22 pakai clusterIP

- Buat
GlobalConfiguration
GlobalConfiguration berfungsi untuk membuat listen port 2250 di ingress-controler. Nantinya port 2250 berfungsi untuk meneruskan port 22 dari deployment ssh-test
apiVersion: k8s.nginx.org/v1alpha1
kind: GlobalConfiguration
metadata:
name: nginx-ingress-config
namespace: nginx-ingress
spec:
listeners:
- name: ssh-tcp
port: 2250 # port yang akan di expose
protocol: TCP

Setelah apply global-config, edit deployment nginx-ingress, tambahkan -global-configuration=<namespace>/name di command section.
kubectl edit deployments.apps -n nginx-ingress nginx-ingress-controller
---
spec:
containers:
- args:
- -global-configuration=nginx-ingress/nginx-ingress-config
- Buat TransportServer
```yaml
apiVersion: k8s.nginx.org/v1alpha1
kind: TransportServer
metadata:
name: ssh-tcp
spec:
listener:
name: ssh-tcp
protocol: TCP
upstreams:
- name: ssh-app
service: ssh-server
port: 22
action:
pass: ssh-app
Verifikasi
Pastikan transportserver sudah valid

Coba hit port 2250 sesuai dari port listeners yang dibuat. Dicoba terlebih dahulu dengan IP Port ingress-controller

Coba hit dengan ClusterIP nginx-controller

Hal tersebut tidak bisa, karena belum mapping port 2250 ke service dari nginx-ingress. Selanjutnya dicoba menambahkan port 2250
kubectl edit svc -n nginx-ingress nginx-ingress-controller
---
spec:
ports:
- name: http
nodePort: 32551
port: 80
protocol: TCP
targetPort: 80
- name: https
nodePort: 31435
port: 443
protocol: TCP
targetPort: 443
- name: ssh-port
port: 2250 # tambahkan port 2250
protocol: TCP
targetPort: 2250
Setelah diedit, bisa di hit menggunakan ClusterIP maupun IPLoadbalancer

Read more
Provisioning AWS Lambda dengan Terraform
Lanjutan belajar AWS: mengenal Lambda dan provisioning Lambda function di AWS menggunakan Terraform.
Provisioning EC2 dan RDS di AWS dengan Terraform
Catatan provisioning infrastruktur AWS pakai Terraform untuk EC2 dan RDS, mulai dari konfigurasi sampai hasil apply-nya.
AWS IAM Role, EC2 Instance Profile, dan Multi-Tier VPC
Bikin IAM role dan attach ke EC2 lewat instance profile, uji akses ke S3 dan SSM Parameter Store, lalu provisioning multi-tier VPC pakai OpenTofu.
AWS IAM Least-Privilege Policy dan VPC Networking Deep Dive
Menyusun IAM policy least-privilege dan IAM role di AWS, lalu lanjut ke networking VPC: subnet publik-privat sampai NAT Gateway.