概要
表題の勉強会を行った五日目の内容を記載します。全日の内容は以下のまとめページをご覧ください。
[【まとめ】最小限の構成でdocker-composeからKubernetesにデプロイする勉強会] (https://qiita.com/tamoco/items/5a5ffb448d59b3b03831/)
五日目のできたこと
- Kubernetes
- GitLabでDeployTokenの作成
- secretの作成
五日目の内容
四日目では公開されたイメージを元にKubernetes
で動作させることができました。ただしコンテナイメージを非公開にするとプルに失敗します。これを解決するためsecret
を作成します。
$ kubectl get po
NAME READY STATUS RESTARTS AGE
express-app-7dc6d9dbcd-hqt7f 0/1 ErrImagePull 0 7s
express-app-7dc6d9dbcd-trxsf 0/1 ErrImagePull 0 7s
GitLabでDeployTokenの作成
GitLab
のプロジェクトのページ(ソースが格納されている?)から
Setting > Repository > Deploy Tokens
と辿っていきます。
以下のような設定でトークンを作成します。
表示されたユーザー名
とパスワード
をメモしておきます。
secretの作成
以下のコマンドでsecret
を作成します。
kubectl create secret docker-registry gitlab-secret --docker-server=registry.gitlab.com --docker-username=[ユーザー名] --docker-password=[パスワード]
作成したsecret
をimagePullSecrets
として設定しておきます。
■ deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: express-app
labels:
app: express-app
spec:
replicas: 2
selector:
matchLabels:
app: express-app
strategy:
type: Recreate
template:
metadata:
labels:
app: express-app
spec:
containers:
- image: registry.gitlab.com/tamoco-mocomoco/k8s-test/express
name: express-app
ports:
- containerPort: 3000
name: express-app
imagePullSecrets:
- name: gitlab-secret
imagePullSecrets
を設定したモノをapply
してpod
を確認します。これで非公開なイメージでもデプロイすることができます。
$ kubectl apply -f deployment.yaml
deployment.apps/express-app configured
$ kubectl get po
NAME READY STATUS RESTARTS AGE
express-app-7dc6d9dbcd-dsbw7 1/1 Running 0 37s
express-app-7dc6d9dbcd-wxmfl 1/1 Running 0 7s
五日目を振り返って
Kubernetes
のサンプルアプリを調べると公開されたイメージから動作させるモノがほとんどなので、今回は非公開のイメージから動作させることにしました。一日一時間程度なのでkind
などの説明ができておらず、もう少し理解を深めつつ情報を展開していきたいところです。