Rancher 2.0をGKEクラスタにデプロイして,そのGKEクラスタ自身を管理する


Rancher 2.0では,既存のKubernetesクラスタをインポートして管理できるようになった.

Rancher server自体をKubernetes上で動かすことも,(以前と同じく)可能.

RancherをGKE上にデプロイする

例えば以下のYAMLのようにできる.

ここではCloud SQLを使ってみたが,MySQLなら何でも良い.

そのうち,helm install できるようになることを期待.

# MySQL needs to be setup as follows:
# - Create a Cloud SQL instance
# - Set up SQL Proxy via Helm ( https://github.com/kubernetes/charts/tree/master/stable/gcloud-sqlproxy  )
# - Create `rancher-secret` secret for `dbuser` and `dbpass` ( https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod )
# - Create "cattle" DB ( https://rancher.com/docs/rancher/v1.6/en/installing-rancher/installing-server/ )

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: rancher
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: rancher
    spec:
      containers:
      - name: rancher
        image: rancher/server:preview
        args: ["--db-host", "sqlproxy-gcloud-sqlproxy"]
        env:
          - name: CATTLE_DB_CATTLE_USERNAME
            valueFrom:
              secretKeyRef:
                name: rancher-secret
                key: dbuser
          - name: CATTLE_DB_CATTLE_PASSWORD
            valueFrom:
              secretKeyRef:
                name: rancher-secret
                key: dbpass
        ports:
        - containerPort: 8080

---

# Note: Rancher Host Registration URL needs to be http://$(kubectl get service rancher-port  -o json | jq -r .spec.clusterIP):8080
apiVersion: v1
kind: Service
metadata:
  name: rancher-port
spec:
  selector:
    app: rancher
  type: NodePort
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
      nodePort: 30000

GKEにデプロイしたRancherでGKEを管理する

http://<任意のminionのIP>:30000 にアクセスするとRancherのUIが表示される.

(もちろん,このポートをそのままインターネットに開放するのは危ないので,適宜 ssh -L 8080:<任意のminionのIP>:30000 <踏み台インスタンス>などする)

Host Registration URLに,http://<rancherのclusterIP>:8080を入力すると,RancherにGKEを登録するためのYAMLが表示される.後はkubectl applyするだけ.