Tanzu Service Managerを手っ取り早くインストール

Tanzu Service Managerのインストールは手っ取り早さを優先する場合の手順はシンプルに済みます。

はじめに

Tanzu Application Serviceのマーケットプレースなどのサービスの作成は、今後Tanzu Service Manager(TSMGR)が中心的なコンポーネントになる予定です。 ただし、マニュアルにしたがってインストールしようと思うと、S3ストレージの用意や証明書の用意などハードルが高く感じるかもしれません。

マニュアルではDev Modeと呼ばれる、これをシンプルにインストールする手順が紹介されています。

https://docs.pivotal.io/tanzu-service-manager/1-0/installing-dev.html

今回はこれよりさらにシンプルにインストールできる手順を紹介します。というのものTAS4K8Sがインストールされていれば、前提条件である、KubernetesやIstioの用意が既にすんでいるため、それを流用すればいいためです。 なお、あくまで検証環境でつかうことを目的なので、本番環境では手順を変えてください。

前提

手順

今回は、TSMGRとTAS4K8Sが同居する前提で手順を実施します。こうすることで必要な手順をグッと下げられます。

1. ユーザーの準備

TSMGRがTASと連携するユーザーを作ります。 まず、TAS4K8Sのインストールに使用したディレクトリーに移動し、以下のコマンドを入力します。

1bosh interpolate configuration-values/deployment-values.yml --path /uaa/admin_client_secret

うまくいくと、パスワードが出現します。

1<パスワード>
2
3Succeeded

そして、次に接続ユーザーを作成します。SYSTEMDOMAINは環境に合わせて変更して下さい。

1uaac target uaa.SYSTEMDOMAIN --skip-ssl-validation

adminユーザーでログインします。

1uaac token client get admin -s <先ほど表示したパスワード>

そしてユーザーを作ります。以下このままコピペをすることをお勧めします。

1uaac client add tsmgr -s DevPassword --authorized_grant_types client_credentials,refresh_token --scope cloud_controller.read,cloud_controller.write --authorities cloud_controller.admin

2. Helmの実行

まず、TSMGRのHelmチャートとCLIをダウンロードします。この中の「TSMGR Helm Chart」と「CLI」のみで十分です。

https://network.pivotal.io/products/tanzu-service-manager/

次に以下のようなYamlを用意します。以下の2点は環境に合わせて更新してください。

  • Tanzu Networkのユーザー/パスワード
  • SYSTEMDOMAINはTAS4K8Sで使用しているもの

それ以外はこのままで大丈夫です。values.yamlと保存し、ダウンロードした Helmチャートと同じ場所に配置します。

 1imageCredentialsForTSMGRImages:
 2  registry: registry.pivotal.io
 3  username: <Tanzu Networkのユーザー>
 4  password: <Tanzu Networkのパスワード>
 5
 6broker:
 7  service:
 8    type: ClusterIP
 9  replicaCount: 1
10  password: DevPassword
11
12reconciler:
13  replicaCount: 1
14
15daemon:
16  service:
17    type: ClusterIP
18  replicaCount: 1
19
20chartmuseum:
21  enabled: true
22  env:
23    open:
24      STORAGE_AMAZON_BUCKET: minio-charts
25      STORAGE_AMAZON_ENDPOINT: http://tsmgr-minio:9000
26      STORAGE_AMAZON_REGION: us-east-1
27      BASIC_AUTH_PASS: "chartpass"
28    existingSecret: tsmgr-minio
29    existingSecretMappings:
30      AWS_ACCESS_KEY_ID: access-key
31      AWS_SECRET_ACCESS_KEY: secret-key
32
33minio:
34  internal: true
35  accessKey:
36    password: DevPassword
37  secretKey:
38    password: DevPassword
39
40
41ingress:
42  enabled: true
43  hosts:
44    - name: SYSTEMDOMAIN
45      path: "/*"
46  annotations:
47    kubernetes.io/ingress.class: istio
48
49cf:
50  brokerUrl: http://tsmgr-tsmgr-broker.tsmgr.svc.cluster.local
51  brokerName: tsmgr
52  apiAddress: https://api.SYSTEMDOMAIN
53  client: tsmgr
54  clientSecret: DevPassword
55  skipSslValidation: true

ネームスペースを作成します。

1kubectl create ns tsmgr

そして、helmチャートを実行します。

1helm install tsmgr tsmgr-1.0.11.tgz -n tsmgr -f values.yaml

しばらくしたら、以下を実行します。

1export TSMGR_TARGET=http://daemon.SYSTEMDOMAIN
2export TSMGR_TOKEN=$(kubectl get secret -n tsmgr $(kubectl get serviceaccount -n tsmgr tsmgr-tsmgr-admin-sa -o jsonpath='{@.secrets[0].name}') -o=jsonpath='{@.data.token}' | base64 --decode)

以下のコマンドを実行して、サーバー、クライアント2つのバージョンが表示されれば、いったんは成功です。

1tsgmgr version

3. TSMGR用のサービスアカウントの作成

すこし、面倒ですが、これはマニュアルの通りに設定していきます。 まず、Namespaceを作ります。

1kubectl create ns tsmgr-system

そして、以下のコマンドでサービスアカウントを作ります。プロンプトに直接コピペでOKです

 1kubectl apply -f - <<EOF
 2---
 3apiVersion: v1
 4kind: ServiceAccount
 5metadata:
 6  name: tsmgr-admin
 7  namespace: tsmgr-system
 8---
 9apiVersion: rbac.authorization.k8s.io/v1beta1
10kind: ClusterRoleBinding
11metadata:
12  name: tsmgr-cluster-admin
13roleRef:
14  apiGroup: rbac.authorization.k8s.io
15  kind: ClusterRole
16  name: cluster-admin
17subjects:
18  - kind: ServiceAccount
19    name: tsmgr-admin
20    namespace: tsmgr-system
21EOF

そして以下の一連のコマンドを実行します。これもプロンプトに直接コピペでOKです。

 1cluster=$(kubectl config view -o jsonpath="{.contexts[?(@.name == \"$(kubectl config current-context)\")].context.cluster}")
 2server=$(kubectl config view -o jsonpath="{.clusters[?(@.name == \"$cluster\")].cluster.server}")
 3certificate=$(kubectl config view --raw --flatten -o jsonpath="{.clusters[?(@.name == \"$cluster\")].cluster.certificate-authority-data}")
 4secret_name=$(kubectl get serviceaccount tsmgr-admin --namespace=tsmgr-system -o jsonpath='{.secrets[0].name}')
 5secret_val=$(kubectl --namespace=tsmgr-system get secret $secret_name  -o jsonpath='{.data.token}')
 6secret_val=$(echo ${secret_val} | base64 --decode)
 7cat > cluster-creds.yaml << EOF
 8token: ${secret_val}
 9server: ${server}
10caData: ${certificate}
11EOF

cluster-creds.yamlの中身がちゃんと生成されていればOKです。

4. TSMGRにクラスター登録

ここまで来れば、あとはクラスターの登録のみです。 以下のコマンドを実行します。

1% tsmgr cluster register  tas cluster-creds.yaml
2Cluster [tas] saved
1% tsmgr cluster set-default tas
2Cluster [tas] set as default

以上でTSMGRの登録が完了しました。

おまけ. MySQLのHELMチャートを登録する

この英語ブログを参考に、MYSQLのHelmチャートを登録してみます。

1git clone https://github.com/bitnami/charts.git
2cd ./charts/bitnami/mysql

以下のようなファイルを作ります。bind.yamlとします。

 1template: |
 2  {
 3    hostname: $.services[0].name + "." + $.services[0].metadata.namespace + ".svc.cluster.local",
 4    name: $.services[0].name,
 5    jdbcUrl: "jdbc:mysql://" + self.hostname + "/my_db?user=" + self.username + "&password=" + self.password + "&useSSL=false",
 6    uri: "mysql://" + self.username + ":" + self.password + "@" + self.hostname + ":" + self.port + "/my_db?reconnect=true",
 7    password: $.secrets[0].data['mysql-root-password'],
 8    port: 3306,
 9    username: "root"
10  }

helmのパッケージ化します。

1helm package .

そして、TSMGRに登録します。

1cd ../
2tsmgr offer save ./mysql ./mysql/mysql-6.14.11.tgz

ここまでくれば、cfに登録されていることを確認します。

1% cf service-brokers
2Getting service brokers as admin...
3
4name    url
5tsmgr   http://tsmgr-tsmgr-broker.tsmgr.svc.cluster.local

アクセスを許可します。

1cf enable-service-access mysql

そうすると、apps managerにも以下のようにマーケットプレースにも表示されます。

デプロイの際は以下のようなコマンドでデプロイできます。

1cf create-service mysql default test-mysql

すると以下のように作成がされます。

1mhoshino@mhoshino bitnami % cf services
2Getting services in org demo / space demo as admin...
3
4name         service   plan      bound apps   last operation     broker   upgrade available
5test-mysql   mysql     default                create succeeded   tsmgr    yes

GUIでも確認できます。

まとめ

TSMGRもTAS4K8S環境なら気軽に試せます。