ASM ゲートウェイは、HTTPS プロトコルと動的な証明書の読み込みをサポートしています。Knative で構築されたマイクロサービスに安全にアクセスして管理するために、ASM ゲートウェイを使用して HTTPS アクセスを有効にできます。これにより、サービスエンドポイントへのトラフィックが暗号化され、サービス間の通信が保護され、アーキテクチャのセキュリティと信頼性が向上します。
前提条件
-
Knative on ASM で Knative サービスを作成済みであること。詳細については、「ASMでKnativeを使用したサーバーレスアプリケーションのデプロイ」をご参照ください。
-
Knative on ASM でカスタムドメイン名 aliyun.com を使用済みであること。詳細については、「Knative on ASMでのカスタムドメイン名の使用」をご参照ください。
証明書と秘密鍵の作成
ドメイン名を使用する前に、そのドメイン名の ICP (Internet Content Provider) 届出を取得する必要があります。この例では、ドメイン名 aliyun.com を使用して証明書と秘密鍵を生成し、それらを Secret として保存します。
aliyun.com の有効な証明書と秘密鍵をすでにお持ちの場合は、証明書ファイルをaliyun.com.crt、秘密鍵ファイルをaliyun.com.keyという名前にしてください。
aliyun.com の証明書と秘密鍵をお持ちでない場合は、OpenSSL を使用して次の手順で生成できます。
-
次のコマンドを実行して、ルート証明書と秘密鍵を作成します。
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt -
次のコマンドを実行して、aliyun.com サーバーの証明書と秘密鍵を生成します。
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
証明書と秘密鍵の準備ができたら、イングレスゲートウェイ Pod が存在するクラスターの KubeConfig コンテキストで次のコマンドを実行します。このコマンドにより、istio-system Namespace に証明書と秘密鍵を含む Secret が作成されます。Secret 名を記録しておいてください。
kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt
HTTPS アクセスの有効化
-
次の内容を
default.yamlとして保存します。apiVersion: istio.alibabacloud.com/v1beta1 kind: ASMKnativeConfig metadata: name: default spec: enabled: true useExisting: true tag: 1.4.0 domainConfig: domainName: aliyun.com # 実際のドメイン名に置き換えてください。 credentialName: myexample-credential # 実際のSecret名に置き換えてください。 -
kubectl を使用して Service Mesh に接続し、次のコマンドを実行します。
kubectl apply -f default.yaml
HTTPS でのサービスへのアクセス
-
hosts ファイルを更新して、新しいドメイン名のマッピングを追加します。
例:
説明xx.xx.xxx.xxを実際のゲートウェイ IP アドレスに置き換えてください。ゲートウェイ IP アドレスの取得方法については、「イングレスゲートウェイのIPアドレスの取得」をご参照ください。xx.xx.xxx.xx helloworld-go.default.aliyun.com -
HTTPS でサービスにアクセスします。
-
コマンドラインからのアクセス
ルート証明書を使用して HTTPS でサービスにアクセスするには、次のコマンドを実行します。
curl --cacert aliyun.root.crt https://helloworld-go.default.aliyun.com # 期待される出力 Hello Knative! -
ブラウザからのアクセス
ブラウザのアドレスバーに
https://helloworld-go.default.aliyun.comを入力します。Hello Knative!説明自己署名証明書を使用しているため、サービスにアクセスする際にブラウザでセキュリティ警告が表示される場合があります。そのまま続行して問題ありません。
-
関連操作
-
Knative on ASM は、トラフィックベースのカナリアリリース機能を提供します。Knative サービスを作成すると、Knative は自動的にサービスの最初の Revision を作成します。サービス設定が変更されるたびに、Knative は新しい Revision を作成します。異なる Revision にルーティングされるトラフィックの割合を変更することで、カナリアリリースを実装できます。詳細については、「Knative on ASMでのKnativeサービスのトラフィックベースのカナリアリリースの実行」をご参照ください。
-
Knative Serving は、各 Pod に queue-proxy コンテナを挿入します。このコンテナは、アプリケーションコンテナの同時実行数メトリクスを Autoscaler に報告します。これらのメトリクスを受信した後、Autoscaler は同時リクエスト数とスケーリングアルゴリズムに基づいて Deployment 内の Pod 数を調整することで、オートスケーリングを有効にします。詳細については、「同時リクエスト数に基づくサービスのオートスケーリング」をご参照ください。