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 でベクター グラフィックスを使用する方法

推薦する

JavaScriptの擬似配列と配列の使い方と違い

擬似配列と配列JavaScript では、5 つのプリミティブ データ型を除き、関数を含め、その他す...

クラウド サーバーを使用して CentOS システムに .NET 6.0 をインストールする

.NET SDK ダウンロード リンクhttps://dotnet.microsoft.com/do...

Mac ノードの削除と再インストールのケーススタディ

Macノードの削除と再インストール消去 ノード -v sudo npm アンインストール npm -...

Linux で mysql-8.0.20 をインストールするための詳細なチュートリアル

** Linuxにmysql-8.0.20をインストールする**環境の紹介オペレーティングシステム:...

Linux システムで TCP 接続を作成するプロセスの紹介

目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

MySQLデータベースでスロークエリログを有効にする方法の詳細な説明

データベースはスロークエリログを有効にします設定ファイルを変更する設定ファイルmy.iniに次の2つ...

CSS 水平方向の中央揃えと最大幅の制限

CSS レイアウトとスタイルに関する質問: 水平方向の中央揃えと最大幅の制限のバランスをとる方法最近...

Linux 上での MySQL データベースのインストールと Java プロジェクトの構成に関する詳細なグラフィック説明

1. MySQLデータベースをインストールする① ダウンロードして解凍し、/opt/softディレク...

JavaScript で配列の変更を監視する方法

序文以前、defineProperty を紹介したとき、オブジェクトの変更のみを監視でき、配列の変更...

momentJs を使用してカウントダウン コンポーネントを作成する (サンプル コード)

今日はvueとmomentで作ったカウントダウンを紹介したいと思います。具体的な内容は以下のとおりで...

Docker で MySQL をインストールし、リモート接続を実装するチュートリアル

画像をプルする docker プル mysql完成した画像を見る Docker イメージイメージを介...

Linux の操作とメンテナンスの基本的なスワップ パーティションと LVM 管理のチュートリアル

目次1. スワップパーティション SWAP 1.1 スワップファイルを作成する1.2 スワップパーテ...

CSS3 で作成した本のページめくり効果

結果:実装コード: html <!-- よろしければハートを付けてください! --> &...

W3C チュートリアル (7): W3C XSL アクティビティ

スタイル シートは、ドキュメントの表示方法、発音方法、または入力方法を記述します。XSL 言語は、X...