2016-09-19 7 views
1

Google Container EngineとKubernetesを使用してDjango + MySQLアプリケーションを作成しようとしています。 MySQLのコンテナを作成するための公式のMySQLのドッキングウィンドウの画像とKubernetesのドキュメントからのドキュメントに続いて、私は、ドキュメントによると、環境変数のMYSQL_DATABASEを渡す次のレプリケーションコントローラKubernetes + MySQL:Kubernetesコンテナにカスタムデータベースとユーザを作成する

apiVersion: v1 
kind: ReplicationController 
metadata: 
    labels: 
    name: mysql 
    name: mysql 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     name: mysql 
    spec: 
     containers: 
     - image: mysql:5.6.33 
     name: mysql 
     env: 
      #Root password is compulsory 
     - name: "MYSQL_ROOT_PASSWORD" 
      value: "root_password" 
     - name: "MYSQL_DATABASE" 
      value: "custom_db" 
     - name: "MYSQL_USER" 
      value: "custom_user" 
     - name: "MYSQL_PASSWORD" 
      value: "custom_password" 
     ports: 
     - name: mysql 
      containerPort: 3306 
     volumeMounts: 
      # This name must match the volumes.name below. 
      - name: mysql-persistent-storage 
      mountPath: /var/lib/mysql 
     volumes: 
     - name: mysql-persistent-storage 
      gcePersistentDisk: 
      # This disk must already exist. 
      pdName: mysql-disk 
      fsType: ext4 

を作成しました。 MYSQL_USER、MYSQL_PASSWORD、そのパスワードで新規ユーザーが作成され、新しく作成されたデータベースに権限が割り当てられます。しかし、これは起こりません。そのコンテナにSSHを実行すると、ROOTパスワードが設定されます。しかし、ユーザーもデータベースも作成されません。

私は、そのコンテナにSSHで接続すると、私はローカルで実行されていると、この

docker run -d --name some-mysql \ 
    -e MYSQL_USER="custom_user" \ 
    -e MYSQL_DATABASE="custom_db" \ 
    -e MYSQL_ROOT_PASSWORD="root_password" \ 
    -e MYSQL_PASSWORD="custom_password" \ 
    mysql 

のように同じ環境変数を渡すことで、これをテストして、データベースとユーザーを作成し、すべてが正常に動作しています。

ここで間違っていることはわかりません。誰でも私の間違いを指摘してください。私はこの一日中この間にいました。

EDIT:20 - 9月 - 2016

ディスクが作成された要求 @Julienデュボワ として

。それはクラウドコンソールに表示され、私が説明するコマンドを実行したとき、私はチュートリアルとGoogleのクラウド例の多くと呼ば

Command : gcloud compute disks describe mysql-disk 

Result: 
creationTimestamp: '2016-09-16T01:06:23.380-07:00' 
id: '4673615691045542160' 
kind: compute#disk 
lastAttachTimestamp: '2016-09-19T06:11:23.297-07:00' 
lastDetachTimestamp: '2016-09-19T05:48:14.320-07:00' 
name: mysql-disk 
selfLink: https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me>/disks/mysql-disk 
sizeGb: '20' 
status: READY 
type: https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me>/diskTypes/pd-standard 
users: 
- https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me>/instances/gke-cluster-1-default-pool-e0f09576-zvh5 
zone: https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me> 

次の出力を取得します。ローカルにmysql dockerコンテナを実行するには、私の主な参照はドッカーハブの公式のイメージページでした。 https://hub.docker.com/_/mysql/

これは私のために、ローカルで作成されたコンテナには正しい権限を持つ新しいデータベースとユーザーがいます。 kubernetesについては

、私の主な参照は、私はちょうどDjangoのコンテナを使用して接続しようとしています次

https://cloud.google.com/container-engine/docs/tutorials/persistent-disk/

ました。

+0

GCEでディスクを作成していますか?ログ出力を表示できますか。 –

+0

あなたが参照しているドキュメントにリンクできますか? –

+0

@JulienDuBoisおよびAnirudh Ramanathan。私は要求されたように詳細を編集しました。他に何かが必要な場合は教えてください。現在私はコンテナにSSHし、開発を続けるために必要なユーザとdbを作成しました。プロダクション用にデプロイしたい場合は、このプロセスを自動化する方法がまだ必要です。 – Cognoscis

答えて

0

デプロイメントでmysql-diskを設定しました。ディスクはカスタムディスクです。 pdNameをカスタムディスクに変更してください。

+0

本当にすみません。その私の間違い。パブリックプラットフォームに投稿するときにどれだけの情報を保護する必要があるかわからないので、私はその名前を編集しています。私はそれを変えます。しかし、ディスク名は正しいです。私が質問で述べたように、私はそのコンテナに入り、DBを作成してからDjangoを接続して正常に動作します。しかし、私はポッドを作成するときにデータベースが作成されていません。 – Cognoscis

関連する問題