LoginSignup
1
2

ARO の Ingress として Nginx Ingress Controller を使用してみる。

Posted at

はじめに

ARO(Azure Red Hat OpenShift) には、標準の Ingress Controller が存在していますが、標準の Ingress の代わりに NginxIngress Operator を使用して、NginxIngress Controller を使用してみます。

ARO(Azure Red Hat OpenShift) とは?

ARO は、Red Hat OpenShiftAzure 上で提供されているマネージド・サービスです。名前のフォーマットは違いますが、簡単に言うと、AKSEKSGKERed Hat 版です。

Red Hat の Kubernetes Districution である OpenShift が使われています。

記事の内容は、以前書いた ROSA で Nginx Ingress Operator を使ってみる とほぼ同じなのですが、Azure 側の仕様でLoad Balancer の名前が IPアドレスになっていたり、若干違う所がありました。前の記事に書き込むと読み分けが大変だと思ったので、その部分だけ変更して別記事にしました。

OpenShift 側のインストール手順は全く同じですが、こちらの記事はインストールに特化して細かい考察は省いています。

参考資料

以下の Git Hub のレポを参考にしました。ROSAと手順自体は同じです。

Nginx Ingress Operator のインストール

Operator Hub より Ingress Operator をインストールします。

image.png

ここは特に何の設定もせず、デフォルのままインストールボタンをクリックします。
image.png

インストール完了です。
image.png

Nginx Ingress Controller の作成

Nginx Ingress Controller を作成していきます。NginxIngress リソースを作成する事で、Nginx Ingress Controller の Pod が生成されます。

SCC の作成

Ingress Controller の作成前に、OpenShift では、以下のリンク先の yaml にある SCC(Security Context Cosntrain) が必要になります。

kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-ingress-helm-operator/main/resources/scc.yaml

NginxIngess リソース (Ingress Controller) の作成

「Nginx Ingress Controller」というタブをクリックして、「Create NginxIngess」をクリックします。
image.png

殺風景ですが、とりあえずデフォルトのままNginxIngress というカスタムリソースを作ります。
image.png

Namespace nginx-ingress 内に nginxingress-sample という名前の NginxIngress リソースが作成されました。
image.png

上の行の Pod は、Operator の本体です。nginxingress-sample-nginx-ingress-controller-79f4b97478-hkdjf という Pod (下の行)が名前からもわかるように、NginxIngressリソースに対応して作られた Nginx Ingress Controller です。

$ oc get pods
NAME                                                            READY   STATUS    RESTARTS   AGE
nginx-ingress-operator-controller-manager-5c8fcfd66b-w7l6d      2/2     Running   0          42m
nginxingress-sample-nginx-ingress-controller-79f4b97478-hkdjf   1/1     Running   0          9m55s
$  

また Serivce も確認してみます。Type=LoadbalancerServiceリソースが作成されています。

$ oc get svc
NAME                                                        TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                      AGE
nginx-ingress-operator-controller-manager-metrics-service   ClusterIP      172.30.119.163   <none>         8443/TCP                     45m
nginxingress-sample-nginx-ingress-controller                LoadBalancer   172.30.242.187   20.22.71.185   80:31599/TCP,443:31697/TCP   13m
$ 

サンプルのアプリケーションのデプロイ

アプリケーションをデプロイするための 新しいプロジェクト (namespace)、 hello-openshift を作成します。

oc new-project hello-openshift

アプリケーションをデプロイします。

oc new-app --image=docker.io/openshift/hello-openshift  --labels=test=app

Service リソースも作成されている事を確認します。

 oc get svc
NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
hello-openshift   ClusterIP   172.30.184.252   <none>        8080/TCP,8888/TCP   13m
$ 

Ingress リソースを使ったサンプル・アプリの公開

アプリケーションのプロジェクト(namespace)、hello-openshift 内に Ingress リソースを作成します。

宛先は、先ほど作成された hello-openshift という Service リソースです。

OpenShift は、標準で Ingress リソースRoute リソースも処理できるようになっています。

Nginx Ingress Controller に作成した Ingress リソースを処理させるためには、以下の annotation が必要になるようです。

  annotations:
    kubernetes.io/ingress.class: "nginx"

以下の ingress リソースを作成します。

ingress.yaml
cat << EOF > ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  defaultBackend:
    service:
      name: hello-openshift
      port:
        number: 8080
  rules:
  - host: test.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: hello-openshift
            port:
              number: 8080
EOF

ingress リソースが作成されているのを確認します。ROSA(AWS) の時と違い、LoadBalancer が FQDNではなく、IPアドレスとして表示されているのが特徴的です。

$  oc get ingress
NAME           CLASS    HOSTS              ADDRESS        PORTS   AGE
test-ingress   <none>   test.example.com   20.22.71.185   80      13m
$ 

-H で Host ヘッダーを test.example.com に偽装してアクセスしてみます。

$ LB=20.22.71.185
$ curl -H 'Host:test.example.com' $LB
Hello OpenShift!
$ 

無事アクセスできました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2