Kubernetes (minikube)가 Nginx를 배포하고 Hello World를 표시하도록합니다.
5924 단어 추nginxConfigMapkubernetes
개요
이 문서에서는 Ubuntu에서 만든 minikube에 Nginx를 배포합니다. 그런 다음 "Hello World"의 HTML 파일을 배포 한 Nginx에서 볼 수 있도록 ConfigMap을 설정합니다.
전제 조건
우분투에 minikube를 시작하십시오. minikube의 설치 방법에 대해서는 저자가 작성한 아래의 기사를 참고해 주십시오.
Ubuntu20.04.1 LTS에 minikube 설치
1. Nginx YAML 파일 만들기
Nginx YAML 파일을 만듭니다. vi nginx.yaml
에서 Vi 편집기를 시작하여 다음 YAML 파일을 만듭니다.
apiVersion: v1 # 使用するKubernetes APIバージョンを定義
kind: Service # PodのネットワークであるServiceリソースを定義
metadata: # 名前やラベルを指定
labels:
app: nginx-app
name: nginx
name: nginx-service
spec: # spec内にリソースの仕様を記述する
selector: # 同一のラベルを定義しているリソースを参照
app: nginx-app
name: nginx
type: NodePort # Kubenetes外からアクセスできるようにNodePortを指定(ホストOSからNginxの画面が確認できるようにする)
ports:
- name: nginx-port #ポート番号を指定
port: 80
protocol: TCP
targetPort: nginx-port
---
apiVersion: apps/v1
kind: Deployment # Podの自己修復機能を持つDeploymentリソースを定義
metadata:
labels:
app: nginx-app
name: nginx
name: nginx
spec:
replicas: 1 # 作成するPod数を定義
selector:
matchLabels:
app: nginx-app
name: nginx
template:
metadata:
labels:
app: nginx-app
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest # NginxのDockerHubに記載されているDockerImageの名称とバージョンを指定
ports:
- containerPort: 80 # Podから解放するポート番号を定義
name: nginx-port
protocol: TCP
2. Nginx 배포
apiVersion: v1 # 使用するKubernetes APIバージョンを定義
kind: Service # PodのネットワークであるServiceリソースを定義
metadata: # 名前やラベルを指定
labels:
app: nginx-app
name: nginx
name: nginx-service
spec: # spec内にリソースの仕様を記述する
selector: # 同一のラベルを定義しているリソースを参照
app: nginx-app
name: nginx
type: NodePort # Kubenetes外からアクセスできるようにNodePortを指定(ホストOSからNginxの画面が確認できるようにする)
ports:
- name: nginx-port #ポート番号を指定
port: 80
protocol: TCP
targetPort: nginx-port
---
apiVersion: apps/v1
kind: Deployment # Podの自己修復機能を持つDeploymentリソースを定義
metadata:
labels:
app: nginx-app
name: nginx
name: nginx
spec:
replicas: 1 # 作成するPod数を定義
selector:
matchLabels:
app: nginx-app
name: nginx
template:
metadata:
labels:
app: nginx-app
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest # NginxのDockerHubに記載されているDockerImageの名称とバージョンを指定
ports:
- containerPort: 80 # Podから解放するポート番号を定義
name: nginx-port
protocol: TCP
다음 명령을 실행하여 만든 YAML 파일을 배포합니다.
$ kubectl apply -f nginx.yaml
아래 명령을 실행하여 Nginx 포드와 서비스가 생성되었는지 확인합니다.
$ kubectl get pod | grep nginx
nginx-669bffdf57-hnmph 1/1 Running 1 25m
$ kubectl get service | grep nginx
nginx-service NodePort 10.108.1.208 <none> 80:30348/TCP 25m
아래 명령을 실행하여 호스트 OS(Ubuntu)에서 Nginx 화면을 표시할 수 있는 IP 주소를 지불합니다.
$ minikube service nginx-service
|-----------|---------------|---------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|---------------|---------------|---------------------------|
| default | nginx-service | nginx-port/80 | http://192.168.49.2:30348 |
|-----------|---------------|---------------|---------------------------|
* Opening service default/nginx-service in default browser...
3. index.html을 Configmap 리소스에 저장
ConfigMap은 구성 파일을 리소스에 저장하고 저장된 구성 파일을 Pod에 마운트하는 데 사용됩니다.
Kubernetes 공식 ConfigMap 개요
vi nginx-configmap.yaml
에서 Vi 편집기를 시작하고 ConfigMap의 YAML 파일을 만듭니다.apiVersion: v1
kind: ConfigMap # Podに設定ファイルを渡すことができるリソース
metadata:
labels:
app: nginx-app
name: nginx
name: nginx-html
data: # 下記にPodに渡したい設定ファイルを定義
index.html: | # ファイル名を定義
<html> # 設定ファイルの中身を記載
<head>
<title>
Kubernetes Hello World
</title>
<body>
<h1>
Kubernetes Hello World
</h1>
<h2>
Kubernetes Nignx ConfigMap
</h2>
</body>
</html>
YAML 파일을 만든 후
kubectl apply -f nginx-configmap.yaml
를 실행하여 ConfigMap 리소스를 만듭니다. ConfigMap 리소스가 생성되었는지 확인하려면 kubectl get configmap
를 실행합니다.$ kubectl get configmap | grep nginx
nginx-html 1 9m26s
4. Nginx의 Pod에서 index.html을 볼 수 있도록
방금 만든 ConfigMap 리소스를 Pod에 마운트하기 위해 1장에서 만든 nginx.yaml을 수정합니다.
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-app
name: nginx
name: nginx-service
spec:
selector:
app: nginx-app
name: nginx
type: NodePort
ports:
- name: nginx-port
port: 80
protocol: TCP
targetPort: nginx-port
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-app
name: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx-app
name: nginx
template:
metadata:
labels:
app: nginx-app
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
name: nginx-port
protocol: TCP
volumeMounts: # Pod上にマウントするファイルを定義
- name: nginx-html-file # マウントしたいvolumeを指定
mountPath: /usr/share/nginx/html/index.html # 配置するパスを指定(Nginxのデフォルトの公開ディレクトリは/usr/share/nginx/html)
subPath: index.html # マウントするファイル名を指定
readOnly: true
volumes: # マウントしたいリソースを定義
- name: nginx-html-file # Podにマウントするvolumeを定義
configMap:
name: nginx-html # 使用するConfigMapリソースを指定
items: # ConfigMapリソースで定義した、どのファイルを使用するか指定する
- key: "index.html"
path: "index.html"
YAML 파일을 수정한 후
kubectl apply -f nginx.yaml
를 실행하여 수정한 내용을 적용합니다. 그런 다음 브라우저를 검토하여 index.html의 내용이 표시되는지 확인합니다.마지막으로
이 문서에서는 ConfigMap을 사용하여 Nginx에 index.html을 표시 할 수있었습니다. Kubernetes(minikube)내의 ConfigMap과 Nginx를 조합하는 것으로 HTML의 공부나 동작 확인등에 사용할 수 있습니다.
Reference
이 문제에 관하여(Kubernetes (minikube)가 Nginx를 배포하고 Hello World를 표시하도록합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuichi1992_west/items/49470a7a347f5a932e98텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)