初めに¶
外部環境にWebサーバを配置する関係でIngressを実装することになりました.IngressはKubernetesクラスター内のServiceに対するHTTPのアクセスを管理するためにあります.簡単にいうと特定のPortでしかアクセスできないロードバランサだと思ってください.IngressはWebサーバのServiceをclusterIPにしてIngressを使うようにすればセキュリティーを強くできます.外部にWebサーバを公開する場合,攻撃を受ける可能性があるためIngressはとても有効だと思います.
Ingressの利点¶
Ingressの利点として以下の2つが挙げられます. - セキュリティの強化 - ここは河竹さんが書く
実装の概要図¶
実装の概要図は以下に示します.

Kubernetes Clusterはrke2で実装します. この記事に従うと組み立てられます.
クラスタに配置するものは以下です. - Ingress - Nginx Service (Cluster IP) - Nginx Pod
実装¶
rke2で組み立てたKubernetesクラスタ内に実装するもののYAMLファイルをそれぞれ示します.
Step1: testという名前のNameSpaceを作成
$ kubectl create namespace test
作業ディレクトリの作成
$ mkdir nginx
デプロイメントの作成
$ vi nginx/nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
component: nginx
spec:
replicas: 3
selector:
matchLabels:
component: nginx
template:
metadata:
labels:
component: nginx
spec:
containers:
- name: nginx
image: nginx:1.20
$ cd nginx
testのNameSpaceに作成
$ kubectl apply -f nginx-deployment.yaml -n test
次はServiceの作成です.Cluster IPで公開するNginxのServiceは以下です.
$ vi nginx/nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-first-service
spec:
selector:
component: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
移動
$ cd nginx
Serviceの作成
$ kubectl apply -f nginx-service.yaml -n test
$ mkdir ingress
$ cd ingress
ファイルの作成
$ vi ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: test
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-first-service
port:
number: 80
Nginxを作成したNameSpaceにIngressを作成します.
$ kubectl apply -f ingress.yaml -n test
Ingressができているか確認します. ADDRESSに192.168.150.1と192.168.150.2と192.168.150.3のIPアドレスが振られているためできています.
$ kubectl get ingress -n test
NAME CLASS HOSTS ADDRESS PORTS AGE
test-ingress nginx * 192.168.150.1,192.168.150.2,192.168.150.3 80 8h
Step4 アクセスができるかどうかを確認します. ブラウザでhttp://IPアドレス:80 と入力しましょう!以下の画面が出ればOKです!

最後に¶
参考¶
https://kubernetes.io/ja/docs/concepts/services-networking/ingress/