GNU/Linux >> Linux の 問題 >  >> Linux

KubernetesでNGINXIngressControllerをセットアップする方法

入力 はKubernetesの重要な概念の1つであり、外部ユーザーが FQDNを使用してコンテナ化されたアプリケーションにアクセスできるようにします。 (完全修飾ドメイン名)。 Ingressは有効になっておらず、デフォルトでKubernetesクラスターにインストールされています。 Nginx、Traefik、HAProxy、Istioなどのサードパーティの入力コントローラーを使用して、このコアコンセプトを有効にする必要があります。

このチュートリアルでは、KubernetesクラスターでNGINXIngressコントローラーをセットアップして使用する方法を示します。

上の図のように、外部ユーザーはFQDNを介してNGINX Ingress Controllerを使用してアプリケーションにアクセスしており、内部Ingress Controllerはリクエストをサービスにルーティングしてから、サービスはリクエストをバックエンドエンドポイントまたはポッドにルーティングします。

MinikubeでNGINXIngressControllerを有効にする

MinikubeはシングルノードのKubernetesクラスタであり、「minikubeアドオン」を実行することで、minikubeでnginxingressコントローラーを簡単に有効にできます。 」コマンド。

以下のコマンドを実行して、入力コントローラーのステータスを確認します。

# minikube addons list

次のminikubeコマンドを実行して、入力コントローラーを有効にします。

[[email protected] ~]# minikube addons enable ingress
* The 'ingress' addon is enabled
[[email protected] ~]#

「minikubeaddonslist」コマンドを再実行すると、今度は入力のステータスが有効になっていることを確認する必要があります。

次のkubectlコマンドを実行して、入力コントローラーのポッドが実行されているかどうかを確認します。

[[email protected] ~]# kubectl get pods --all-namespaces | grep -i nginx-controller
kube-system      ingress-nginx-controller-7bb4c67d67-gkjj5    1/1     Running            0          20m
[[email protected] ~]#

上記の出力は、nginx-controllerが有効になっていて、kube-system名前空間でポッドを正常に開始したことを確認しています。

Kubernetesクラスター(ベアメタル)に入力コントローラーをセットアップする

注: Kubernetesクラスターが稼働していると想定しています。

マスターノードまたはコントロールプレーンにログインし、次のkubectlコマンドを実行して入力をインストールします。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml

出力、

Ingressステータスを確認し、kubectlコマンドの下で実行します

[[email protected] ~]$ kubectl get pods -n ingress-nginx
NAME                                    READY     STATUS    RESTARTS   AGE
ingress-nginx-admission-create-4phb2     0/1      Completed   0        8m53s
ingress-nginx-admission-patch-m9t8z      0/1      Completed   2        8m53s
ingress-nginx-controller-f9d6fc8d8-r92jd 1/1      Running     0        8m53s
[[email protected] ~]$

$ kubectl get all -n ingress-nginx

上記の出力は完璧で、Ingressコントローラーが正常にインストールされたことを確認します。

テスト入力コントローラー

Ingressコントローラーをテストするには、最初にhaproxyに次のエントリを追加します。入力コントローラーポッドはworker-node2で実行されているため、NodePortとともにworker-node2について説明しました。

ファイルを保存して閉じてから、haproxyサービスを再起動します。

「myapp」という名前でnginxベースのデプロイを作成します

$ kubectl create deployment myapp --image=nginx
deployment.apps/myapp created
$

タイプ「NodePort」でデプロイメントを公開してサービスを作成します

$ kubectl expose deployment myapp --name=myapp --type=NodePort --port=80
service/myapp exposed
$

展開とサービスのステータスを確認し、実行します

$ kubectl get deployments myapp
$ kubectl get svc myapp

出力、

myappの入力リソースを作成する

次の内容でdemo-ingress.yamlファイルを作成します。このファイルを適用すると、アプリケーションがホスト名を介してkubernetesクラスターの外部からアクセスできるようにする入力リソースが作成されます。したがって、この場合、アプリケーションのホスト名は「myapp.example.com」です

$ vi demo-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-demo
spec:
  ingressClassName: nginx
  rules:
  - host: "myapp.example.com"
  http:
    paths:
    - pathType: Prefix
      path: /
      backend:
        service:
          name: myapp
          port:
            number: 80

ファイルを保存して閉じます。

kubectlコマンドの下で実行して、上記の入力リソースを作成します。

$ kubectl create -f demo-ingress.yaml
ingress.networking.k8s.io/ingress-demo created
$

以下を実行して、上記で作成した入力リソースのステータスを確認します

$ kubectl get ingress ingress-demo 
$kubectl describe ingress ingress-demo

上記の出力は完璧で、入力リソースが正常に作成されたことを確認します。

クラスタの外部からこれらのURLにアクセスする前に、これらにアクセスする予定の場所からシステムのhostsファイルに次のエントリを追加してください。

192.168.1.240                myapp.example.com

次に、WebブラウザからURLにアクセスして、「

」と入力します。

http://myapp.example.com

上記は、Kubernetesにnginxingressコントローラーを正常にデプロイしてセットアップしたことを示しています。貴重なフィードバックやコメントをぜひ共有してください。


Linux
  1. Kubernetesの自己署名証明書を生成する方法

  2. Kubeadmを使用してHAでKubernetes(k8s)クラスターをセットアップする方法

  3. Linux で Samba をプライマリ ドメイン コントローラとしてセットアップする方法

  1. Google Cloud Platform(GCP)でKubernetesクラスタを設定する方法

  2. LinuxでKeepAlivedを使用して高可用性NGINXをセットアップする方法

  3. Kubernetes(k8s)でプライベートDockerレジストリを設定する方法

  1. Cert-Managerとは何ですか?Helmを使用してAWSのKubernetesクラスターでSSL証明書用にCert-Managerをセットアップする方法

  2. Ingress Controllerとは何ですか?Helmを使用してAWSのKubernetesClusterにNginxIngressControllerをデプロイする方法

  3. CentOSでkubeadmを使用してKubernetes1.5をセットアップする方法