2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud: Secrets Manager内の任意のsecretをKubernetes Services/OpenShift Servicesに連携する

Posted at

1. はじめに

IBM Cloud Kubernetes Services(IKS)/IBM Cloud Red Hat OpenShift Services(ROKS)では、IBM Cloud Secrets Manageで管理されている以下のsecretをIKS/ROKS上のsecretとして連携することが可能である。

  • Arbitrary secrets hold one string value.
  • IAM credentials hold an IAM API key.
  • Username and password secrets hold a username and password as two separate values.
  • Key values hold JSON values.

(参考リンク)

上記IBM Cloud docs上ではCLIでSecrets ManagerのCRNを指定することで連携処理を実施しているが、IBM Cloud Portal上でもUIで同様のことは実施可能なので、本稿ではUIを使って実施してみる。

2. IAMで権限付与

IBM Cloud Red Hat OpenShift ServicesからSecrets Managerを呼び出す必要があるため、IAMにて以下のような認可を事前に構成しておく。

image.png

3. OpenShift projectの作成

今回は、syasudaというproject(namespace)を作成し、そこにSecrets Manager上のsecretを連携することにする。

$ oc new-project syasuda
Now using project "syasuda" on server "https://c115-e.jp-tok.containers.cloud.ibm.com:31149".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app rails-postgresql-example

to build a new example application in Ruby. Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.43 -- /agnhost serve-hostname


$ oc get secrets -n syasuda
NAME                       TYPE                                  DATA   AGE
builder-dockercfg-rvwzp    kubernetes.io/dockercfg               1      53s
builder-token-vb9gm        kubernetes.io/service-account-token   4      53s
default-dockercfg-ks5p4    kubernetes.io/dockercfg               1      53s
default-token-86sdh        kubernetes.io/service-account-token   4      53s
deployer-dockercfg-l6lhj   kubernetes.io/dockercfg               1      53s
deployer-token-g9ksk       kubernetes.io/service-account-token   4      53s

4. secretの作成と、ROKSへの連携

以下の操作に従い、Secrets Managerでsecretを作成する

  1. Add image.png
  2. 今回はSecrets Manager上で管理するusername/passwordをIBM Cloud Red Hat OpenShift Servicesに連携したいので、ここではUser credentailsを選択する。image.png
  3. secretの名前を設定image.png
  4. credential情報を入力。image.png
  5. まとめ image.png

ROKSに上記のsecretを連携する。

  • ROKSの管理画面から、Ingress -> Secretsと移動し、Createを押下。image.png
  • 連携するSecretを指定する。先ほど作成したProject/Namespaceにこのsecretを連携したいので、Namespaceを適切に入力することを忘れないようにする(今回の場合はsyasuda)。image.png
  • 追加された。image.png

以下でROKS上に連携されたことを確認する。

$ oc get secrets -n syasuda
NAME                       TYPE                                  DATA   AGE
builder-dockercfg-rvwzp    kubernetes.io/dockercfg               1      6m52s
builder-token-vb9gm        kubernetes.io/service-account-token   4      6m52s
default-dockercfg-ks5p4    kubernetes.io/dockercfg               1      6m52s
default-token-86sdh        kubernetes.io/service-account-token   4      6m52s
deployer-dockercfg-l6lhj   kubernetes.io/dockercfg               1      6m52s
deployer-token-g9ksk       kubernetes.io/service-account-token   4      6m52s
syasuda-test-secret        Opaque                                2      41s

$ oc get secrets syasuda-test-secret -n syasuda -o yaml
apiVersion: v1
data:
  password: emFxMTJ3c3g=
  username: c3lhc3VkYQ==
kind: Secret
metadata:
  annotations:
    ingress.cloud.ibm.com/cert-source: ibm
  creationTimestamp: "2024-03-05T09:45:00Z"
  name: syasuda-test-secret
  namespace: syasuda
  resourceVersion: "1711335"
  uid: ab9cef53-93e8-4527-87a1-d6453d3a67a9
type: Opaque

$ oc get secrets syasuda-test-secret -n syasuda -o jsonpath='{.data.username}'| base64 -d
syasuda

$ oc get secrets syasuda-test-secret -n syasuda -o jsonpath='{.data.password}'| base64 -d
zaq12wsx

5. Secrets Manager上でのsecretのRotate

  • Secrets Manager上で、先ほど作成したsecretをRotateする。image.png
  • 今回は、もう少し長めのパスワードを設定して、Rotateを押下。image.png
これだけだとROKSにはまだ反映されない
$ oc get secrets syasuda-test-secret -n syasuda -o jsonpath='{.data.password}'| base64 -d
zaq12wsx
更新処理を実施すると反映された。
$ ibmcloud oc ingress secret update --cluster xxxxxxxxx --name syasuda-test-secret --namespace syasuda
OK

$ oc get secrets syasuda-test-secret -n syasuda -o jsonpath='{.data.password}'| base64 -d
zaq12wsxCDE#$RFV
``
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?