Docker for Macをインストールする。
kind、kubectlをインストールする。
kind はKubernetesをローカルでテストしたりすることができるツール。
kubectl はKubernetesのコマンドラインツール。
brew install kind
brew install kubectlkind version
kubectl version --shortkind create cluster --image docker.io/kindest/node:v1.26.0kubectl get node
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready control-plane 22m v1.26.0nginxコンテナを作成したクラスタにデプロイしていきます。
Kubernetesでコンテナをデプロイするにはマニフェストファイルを作成する必要がある。
myapp.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- image: docker.io/nginx:1.23
name: nginx
env:
- name: MY_ENV
valueFrom:
secretKeyRef:
name: myapp-secret
key: MY_ENV
volumeMounts:
- name: myapp-config
mountPath: /etc/nginx/templates
volumes:
- name: myapp-config
configMap:
name: myapp-configKubernetesで設定情報を扱うにはConfigMapリソースを使う
myapp-config.yaml
kind: ConfigMap
metadata:
name: myapp-config
data:
default.conf.template: |
server {
location / {
return 200 'Hello $MY_ENV';
add_header Content-Type text/plain;
}
}docker.io/nginxイメージには/etc/nginx/templatesに*.templateの名前で設定ファイルのテンプレートを
配置すると、テンプレートに含まれる環境変数をその値で変換し、/etc/nginx/conf.dに配置する。
ConfigMapを/etc/nginx/templatesにマウントするように変更している。
Kubernetesで秘匿情報を扱う場合はSecretリソースを使う。
Secretリソースのdataフィールドに値をBase64エンコードして設定する。
myapp-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: myapp-secret
data:
MY_ENV: a3ViZXJuZXRlcw==以下のコマンドでクラスタにPodの作成、変更ができる。
kubectl apply -f myapp-config.yaml -f myapp.yaml -f myapp-secret.yamlkubectl get deploymentskubectl get podskubectl logs [Pod Name]kubectl port-forward [Pod Name] 8080:80別ターミナルを開いて確認すると、
Hello kubernetes が出力される。
curl -s http://127.0.0.1:8080/
Hello kuberneteskind delete cluster