信頼できるCAを Red Hat OpenShift on IBM Cloud
仮想プライベートクラウド 4.19 その後 RHCOSワーカーノード RHELワーカーノード
信頼できる認証局(CA)を Red Hat® OpenShift® on IBM Cloud® クラスタに追加する方法を説明します。 カスタムCAによって署名された証明書を使用するセルフホストレジストリから画像を取得する場合、信頼できるCAを追加する必要があるかもしれません。
クラスタに信頼できるCAを追加する
Red Hat OpenShift on IBM Cloud クラスタに信頼できる CA を追加するには、CA 証明書を含む configmap を作成し、すべてのワーカーノードに証明書をインストールするデーモンセットをデプロイします。
開始する前に、CA証明書ファイルが準備できていることを確認してください。 証明書は PEM 形式にする必要があります。
-
CA証明書を使って
openshift-config-user-ca-bundleconfigmapを作成する。<path-to-your-ca-cert>を CA 証明書ファイルへのパスに置き換える。kubectl create cm openshift-config-user-ca-bundle -n kube-system --from-file=openshift-config-user-ca-bundle.crt=<path-to-your-ca-cert> -
信頼されたCAを各ノードにインストールするスクリプトを作成する。
cat > openshift-config-user-ca-script.sh <<EOF #!/bin/bash set -e # Exit on any error set -x # Enable debug output if ! diff /tmp/openshift-config-user-ca-bundle/openshift-config-user-ca-bundle.crt /host/etc/pki/ca-trust/source/anchors ; then cp /tmp/openshift-config-user-ca-bundle/openshift-config-user-ca-bundle.crt /host/etc/pki/ca-trust/source/anchors chroot /host update-ca-trust extract if chroot /host systemctl is-enabled coreos-update-ca-trust.service; then chroot /host systemctl restart coreos-update-ca-trust.service fi chroot /host systemctl restart crio.service; fi # Keep container running to maintain daemonset pod sleep inf EOF kubectl delete cm -n kube-system openshift-config-user-ca-script --ignore-not-found kubectl create cm -n kube-system --from-file openshift-config-user-ca-script.sh openshift-config-user-ca-script -
全ノードでスクリプトを実行するデーモンセットを作成する。
OCP_REGISTRY_ENDPOINT=$(kubectl get pod -n kube-system -l k8s-app=kube-apiserver-proxy -o json | jq -r '.items[0].spec.containers[0].image | select( . != null )' | awk -F/ '{ print $1 }') if [[ -z "${OCP_REGISTRY_ENDPOINT}" ]]; then OCP_REGISTRY_ENDPOINT=$(kubectl get pod -n kube-system -l app=ibm-master-proxy-static -o json | jq -r '.items[0].spec.containers[0].image | select( . != null )' | awk -F/ '{ print $1 }') fi OCP_VERSION=$(oc version -o json | jq -r .openshiftVersion) kubectl apply -f - <<EOF --- apiVersion: apps/v1 kind: DaemonSet metadata: name: update-openshift-config-user-ca-bundle namespace: kube-system labels: app: update-openshift-config-user-ca-bundle spec: selector: matchLabels: app: update-openshift-config-user-ca-bundle template: metadata: labels: app: update-openshift-config-user-ca-bundle spec: containers: - command: ["/bin/bash", "-c", "/tmp/openshift-config-user-ca-script/openshift-config-user-ca-script.sh"] image: ${OCP_REGISTRY_ENDPOINT}/armada-master/ocp-release-${OCP_VERSION}-x86_64:cli imagePullPolicy: IfNotPresent name: update-openshift-config-user-ca-bundle resources: requests: cpu: 1m memory: 1Mi securityContext: privileged: true volumeMounts: - name: host-volume mountPath: /host - name: openshift-config-user-ca-bundle mountPath: /tmp/openshift-config-user-ca-bundle - name: openshift-config-user-ca-script mountPath: /tmp/openshift-config-user-ca-script hostIPC: true hostNetwork: true hostPID: true tolerations: - operator: Exists volumes: - name: host-volume hostPath: path: / type: Directory - name: openshift-config-user-ca-bundle configMap: name: openshift-config-user-ca-bundle - name: openshift-config-user-ca-script configMap: name: openshift-config-user-ca-script defaultMode: 0755 EOF kubectl rollout status ds -n kube-system update-openshift-config-user-ca-bundle -
デーモンセットのログをチェックして、信頼できるCAがインストールされたことを確認する。
oc logs -n kube-system -l app=update-openshift-config-user-ca-bundle --tail=-1
デーモンセットが完了すると、信頼できるCAがすべてのワーカーノードにインストールされ、クラスタはカスタムCAによって署名された証明書を使用するレジストリからイメージをプルできるようになります。