k8s に ingress-nginx をデプロイする手順

k8s に ingress-nginx をデプロイする手順

序文

k8sクラスタサービスがデプロイされたら、外部アクセス用のドメイン名を提供する必要があります。このとき、ingress-nginxが必要です。今日は皆さんと共有します

1. Ingressの展開と構成

1. 設定ファイルを取得する

#ファイルはローカルにダウンロードされました https://github.com/kubernetes/ingress-nginx/tree/nginx-0.20.0/deploy

2. 画像を準備する

ingress-nginx-nginx-0.20.0.zip を解凍します。
cd ingress-nginx-nginx-0.20.0/deploy/
vim required.yaml #その他のファイルのコレクション#mandatory.yamlファイルを編集し、defaultbackendイメージアドレスをAlibaba Cloudイメージアドレスに変更します(以下を参照)。
イメージ: registry.cn-hangzhou.aliyuncs.com/allinpay/defaultbackend-amd64:v1.5

ここに画像の説明を挿入

3. インストール

kubectl を適用 -f 必須.yaml 

ここに画像の説明を挿入

#しばらく待ってから、次のコマンドを使用してクエリを実行します。kubectl get namespace
kubectl ポッドを取得 -n ingress-nginx

ここに画像の説明を挿入

4. バックエンドポッドとサービス(pod-B、service-B)を作成する

vim デプロイデモ.yaml
APIバージョン: v1
種類: サービス
メタデータ:
  名前: myapp
  名前空間: デフォルト
仕様:
  セレクタ:
    アプリ: myapp
    リリース: カナリア
  ポート:
  - 名前: http
    ターゲットポート: 80
    ポート: 80
--- 
 APIバージョン: アプリ/v1
種類: デプロイメント
メタデータ:
  名前: myapp-deploy
  名前空間: デフォルト
仕様:
  レプリカ: 3
  セレクタ:
    一致ラベル:
      アプリ: myapp
      リリース: カナリア
  テンプレート:
    メタデータ:
      ラベル:
        アプリ: myapp
        リリース: カナリア
    仕様:
      コンテナ:
      - 名前: myapp
        イメージ: ikubernetes/myapp:v2
        ポート:
        - 名前: http
          コンテナポート: 80

#アプリケーション構成 kubectl apply -f deploy-demo.yaml
#kubectl get pods を表示

ここに画像の説明を挿入

5. サービスAを作成する

vim サービスノードポート.yaml
APIバージョン: v1
種類: サービス
メタデータ:
  名前: ingress-nginx
  名前空間: ingress-nginx
  ラベル:
    app.kubernetes.io/名前: ingress-nginx
    app.kubernetes.io/一部: ingress-nginx
仕様:
  タイプ: NodePort
  ポート:
  - 名前: http
    ポート: 80
    ターゲットポート: 80
    プロトコル: TCP
    ノードポート: 30080
  - 名前: https
    ポート: 443
    ターゲットポート: 443
    プロトコル: TCP
    ノードポート: 30443
  セレクタ:
    app.kubernetes.io/名前: ingress-nginx
app.kubernetes.io/一部: ingress-nginx

#アプリケーション構成 kubectl apply -f service-nodeport.yaml

#kubectl get svc -n ingress-nginx を表示

ここに画像の説明を挿入

外部ブラウザでアクセス: ip:30080

ここに画像の説明を挿入

この時点でエラーが発生する理由は、ingress-controller を service-B に関連付ける ingress ルールが生成されていないためです。

6. イングレスルールを定義する

ingress ルールを定義します。これは、ingress-controller (pod) の nginx.conf に自動的に挿入されます。
Ingress-controller は service-B に直接関連付けられていますが、ingress は途中でさまざまなルールを生成します。

vim イングレス-myapp.yaml
apiバージョン: extensions/v1beta1
種類: イングレス
メタデータ:
  名前: ingress-myapp
  名前空間: デフォルト
  注釈:
    kubernetes.io/ingress.class: "nginx"
仕様:
  ルール:
  - ホスト: myapp.magedu.com
    http:
      パス:
      - パス:
        バックエンド:
          サービス名: myapp
          サービスポート: 80

このとき、ingress-controller の nginx.conf に、アップストリーム構成などを含む nginx 仮想ホストのフィールドであるサーバー セグメント構成が自動的に生成されます。
アップストリームはバックエンド ポッド (pod-B) に自動的にプロキシします。これらはすべて自動的に生成されるため、自動構成生成と自動構成変更が実現されます。
この yaml ファイルを変更するだけです。

#アプリケーション構成 kubectl apply -f ingress-myapp.yaml

ここに画像の説明を挿入

外部ホスト上のホストファイルを構成する

ここに画像の説明を挿入

その後、ブラウザで再度アクセスすると、バックエンドポッドにアクセスできることがわかります。

ここに画像の説明を挿入

2. httpsを使用する

1. k8s 証明書を作成します (バックエンド ポッドと同じ名前空間が使用されることに注意してください)

kubectl -n デフォルトでシークレット tls ingress-test を作成します --key /home/centos/cert/cash432.key --cert /home/centos/cert/cash432.crt

2. イングレスルールを作成する

同じ名前空間に注意してください。そうしないと証明書が有効になりません。

vim ingress-myapp-cash432.yaml
apiバージョン: extensions/v1beta1
種類: イングレス
メタデータ:
  名前: ingress-myapp
  名前空間: デフォルト
  注釈:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/secure-backends: "true"
    kubernetes.io/ssl-passthrough: "true"
仕様:
  TLS: いいえ
  - ホスト:
    - myapp.cash432.xyz
    シークレット名: ingress-test
  ルール:
  - ホスト: myapp.cash432.xyz
    http:
      パス:
      - パス:
        バックエンド:
          サービス名: myapp
          サービスポート: 80

#アプリケーション構成 kubectl apply -f ingress-myapp-cash432.yaml

ブラウザアクセス

ここに画像の説明を挿入

これで、k8s に ingress-nginx をデプロイする手順に関するこの記事は終了です。k8s に ingress-nginx をデプロイする方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Ingress 7層ルーティングメカニズムは、k8sへのドメイン名アクセスを実装します。
  • k8s での Ingress のデプロイとルール作成の詳細な紹介

<<:  jquery-multiselect を使用した IE6 のバグの解決方法

>>:  Element UI をインストールして vue3.0 でベクター グラフィックスを使用する方法

推薦する

js オプション連鎖演算子の使用

序文オプションの連鎖演算子 (?.) を使用すると、チェーン内の各参照が有効であることを明示的に検証...

VueはExcelデータをエクスポートするパブリック関数メソッドをカプセル化します

vue+element UI は Excel データをエクスポートするためのパブリック関数をカプセル...

MySQLカーソルの詳細な紹介

目次1. カーソルとは何ですか? 2. カーソルの使い方1. カーソルを宣言する2.カーソルを開く3...

H5 WeChatパブリックアカウント認証を実装するための簡単な手順

序文昨日、h5 WeChat認証の実装が必要なプロジェクトがありました。したがって、この機能を完了す...

Linux bzip2 コマンドの使用

1. コマンドの紹介bzip2 は、ファイルの圧縮と解凍に使用されます。これは、Linux システム...

デザイン理論: デザインにおける階層

<br />原文: http://andymao.com/andy/post/80.ht...

MySQL 8.0.25 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.25の最新のダウンロードとインストールのチュートリアルは参考になります。具体的な...

MySQL の lru リンク リストの簡単な分析

1. 従来のLRUリンクリストについて簡単に説明するLRU:最も最近使われなかったものLRU リンク...

Tableとdivの簡単な紹介と使い方

ウェブフロントエンド1学生証名前性別年01張三男20 02李思女性21総人数60フォームのコンポーネ...

ウェブデザイナーが知っておくべき効率的なナビゲーションデザインの3つの原則

ウェブサイトのナビゲーションを設計することは、家の基礎を築くようなものです。基礎がしっかりしていなけ...

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...

Docker コンテナ ソース コードのデプロイ httpd ストレージ ボリュームを使用して Web サイトをデプロイする (推奨)

目次Dockerコンテナのソースコードを使用してhttpdをデプロイし、ストレージボリュームを使用し...

非常に詳細な MySQL8.0.22 のインストールと設定のチュートリアル

みなさんこんにちは。今日は、MySQL 8.0.22 のインストールと構成について学習します。注意深...

ネイティブWeChatアプレット開発におけるreduxの使用の詳細な説明

前提複雑なシナリオでは、複数の異なるページ間で大量のデータを使用したり変更したりする必要があります。...

最新の MySQL 5.7.23 のインストールと設定のグラフィックチュートリアル

2018 年の最新 MySQL 5.7 の詳細なインストールと設定は 4 つのステップに分かれており...