Implementing TLS certificates#

ハイブリッドマネージャーポータルのカスタムx.509証明書を設定する#

ハイブリッドマネージャーHMポータルが使用する自己署名x.509証明書を独自に変更できます。

独自の証明書をインポートするには、サーバー証明書とプライベートキーを含むKubernetesシークレットを作成する必要があります。

証明書を生成する#

証明書例my-certificate.crt とプライベートキー例my-certificate.key のbase64エンコード文字列を生成します。

cat my-certificate.crt | base64
cat my-certificate.key | base64

yamlファイルを作成する#

次の内容を含むファイル例my-secret.yaml を作成し、 <base64 encoded string> を前の手順で生成された値に置き換えます。

apiVersion: v1
data:
  tls.crt: <base64 encoded string>
  tls.key: <base64 encoded string>
kind: Secret
metadata:
  name: my-portal-certificate
  namespace: default
  annotations:
    replicator.v1.mittwald.de/replicate-to: istio-system
type: kubernetes.io/tls

Kubernetesクラスターにシークレットを適用する#

kubectl apply -n default -f ./my-secret.yaml

新しい証明書を使用するようにHMを構成する#

HybridControlPlane CRを編集して、spec.globalParameters の下にportal_certificate_secret パラメーターを追加します。

apiVersion: edbpgai.edb.com/v1alpha1
kind: HybridControlPlane
metadata:
  name: edbpgai
spec:
  globalParameters:
    portal_certificate_secret: "my-portal-certificate"
    # ... your other globalParameters

更新されたCRを適用します。

kubectl apply -f hybridmanager.yaml

オペレーターは変更を調整し、ポータルの証明書構成を更新します。

シークレットのフォーマットの詳細については、 Istio documentation を参照してください。

HMポータルのカスタムcert-manager発行者を設定する#

HMポータルの証明書は、HMの内部証明書マネージャーでサポートされているx.509発行者のいずれかを使用して生成および管理することもできます。 Let’s Encrypt証明書のACME発行者。

cert-manager Webサイトから直接選択した発行者のドキュメントに従って、設定できます。

注釈

発行者ではなくクラスター発行者を設定することをお勧めします。発行者を設定する場合は、istio-system名前空間で作成する必要があります。 !!!

ClusterIssuerが構成されたら、その名前をHMに渡します。

注釈

cert-manager発行者の使用と独自の証明書シークレットの提供は相互に排他的です。発行者を構成する場合、CRで`spec.globalParameters.portal_certificate_secret` も設定しないでください。 !!!

HybridControlPlane CRを編集して、spec.globalParameters の下に発行者パラメーターを追加します。

apiVersion: edbpgai.edb.com/v1alpha1
kind: HybridControlPlane
metadata:
  name: edbpgai
spec:
  globalParameters:
    portal_certificate_issuer_kind: "ClusterIssuer"  # Valid values are Issuer and ClusterIssuer
    portal_certificate_issuer_name: "my-issuer"       # Your Issuer name
    # ... your other globalParameters

更新されたCRを適用します。

kubectl apply -f hybridmanager.yaml

オペレーターは変更を調整し、指定された発行者を使用するようにポータルを構成します。

独自のプライベート認証局を使用する#

デフォルトでは、HMが使用するすべての証明書は、cert-managerを使用して内部認証局CAによって署名されます。 CAはインストール時に作成されます。

独自のプライベートCAを使用する場合は、このセクションの手順に従ってください。それ以外の場合、このセクションはスキップできます。

注釈

この方法を正常に使用するには、CAプライベートキーにアクセスする必要があります。 !!!

CAシークレットが存在しない場合は、作成します。

apiVersion: v1
data:
  ca.crt: <base64 encoded string> # real ca crt provided by customers
  tls.crt: <base64 encoded string> # real tls crt provided by customers
  tls.key: <base64 encoded string> # real tls key provided by customers
kind: Secret
metadata:
  name: my-custom-ca
  namespace: default
  annotations:
    replicator.v1.mittwald.de/replicate-to: cert-manager
type: kubernetes.io/tls

警告

my-custom-caは、global-ca-secret を除き、選択した名前に変更できます。 次のコマンドを実行するときは、選択した名前と一致するようにしてください。 !!!

HybridControlPlane CRを編集して、spec.globalParameters の下にca_secret_name パラメーターを追加します。

apiVersion: edbpgai.edb.com/v1alpha1
kind: HybridControlPlane
metadata:
  name: edbpgai
spec:
  globalParameters:
    ca_secret_name: "my-custom-ca"
    # ... your other globalParameters

更新されたCRを適用します。

kubectl apply -f hybridmanager.yaml

オペレーターは変更を調整し、プライベートCAを使用するようにHMを構成します。