Skip to content

Commit a4bed24

Browse files
committed
add certmanager scenario
1 parent 5fab3a7 commit a4bed24

File tree

4 files changed

+108
-0
lines changed

4 files changed

+108
-0
lines changed

docs/scenarios/9_certmanager.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
AKS で独自ドメインを使った HTTPS の Web アプリケーションをデプロイするための手順です。ここでは、cert-manager を使用して Let's Encrypt から証明書を取得し、Ingress リソースを通じて HTTPS を有効にします。
2+
3+
<!-- @gemini AKS で独自ドメインを使ったHTTPS対応なWebサーバー公開方法を一番シンプルにわかる方法で教えて -->
4+
5+
```shell
6+
# web applicationのデプロイメントを作成
7+
kubectl apply -f k8s/cert-manager/nginx-deployment.yaml
8+
9+
# Ingress Nginx Controllerのデプロイメントを ingress-nginx 名前空間に作成
10+
# https://kubernetes.github.io/ingress-nginx/deploy/#azure
11+
# https://learn.microsoft.com/ja-jp/troubleshoot/azure/azure-kubernetes/load-bal-ingress-c/create-unmanaged-ingress-controller?tabs=azure-cli#create-an-ingress-controller
12+
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.0/deploy/static/provider/cloud/deploy.yaml
13+
14+
# External IPアドレスの確認 (ingress-nginx-controller の LoadBalancer)
15+
kubectl get svc -n ingress-nginx
16+
17+
# cert-manager を cert-manager 名前空間にデプロイ
18+
# https://cert-manager.io/docs/installation/kubectl/
19+
# Install all cert-manager components:
20+
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.18.2/cert-manager.yaml
21+
22+
# ClusterIssuerの作成
23+
# https://cert-manager.io/docs/configuration/acme/
24+
kubectl apply -f k8s/cert-manager/letsencrypt-clusterissuer.yaml
25+
26+
# Ingressリソースの作成
27+
# https://cert-manager.io/docs/usage/ingress/
28+
kubectl apply -f k8s/cert-manager/nginx-ingress.yaml
29+
30+
# Ingressリソースの状態を確認
31+
kubectl get ingress nginx-ingress -w
32+
33+
# 証明書の状態を確認
34+
kubectl get certificaterequest -A
35+
kubectl get certificate -A
36+
kubectl describe certificate your-domain-com-tls
37+
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: ClusterIssuer
3+
metadata:
4+
name: letsencrypt-prod
5+
spec:
6+
acme:
7+
email: [email protected] # あなたのメールアドレス
8+
server: https://acme-v02.api.letsencrypt.org/directory # 本番環境
9+
privateKeySecretRef:
10+
name: letsencrypt-prod-private-key
11+
solvers:
12+
- http01:
13+
ingress:
14+
class: nginx
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: nginx-deployment
5+
spec:
6+
replicas: 2 # 任意のレプリカ数
7+
selector:
8+
matchLabels:
9+
app: nginx
10+
template:
11+
metadata:
12+
labels:
13+
app: nginx
14+
spec:
15+
containers:
16+
- name: nginx
17+
image: nginx:latest # 最新のNginxイメージ
18+
ports:
19+
- containerPort: 80
20+
---
21+
apiVersion: v1
22+
kind: Service
23+
metadata:
24+
name: nginx-service
25+
spec:
26+
selector:
27+
app: nginx
28+
ports:
29+
- protocol: TCP
30+
port: 80 # Serviceのポート
31+
targetPort: 80 # Podのポート
32+
type: ClusterIP # Ingress Controllerがサービスにアクセスするため、ClusterIPで十分
33+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: Ingress
3+
metadata:
4+
name: nginx-ingress
5+
annotations:
6+
kubernetes.io/ingress.class: nginx
7+
cert-manager.io/cluster-issuer: letsencrypt-prod
8+
spec:
9+
rules:
10+
- host: www.ks6088ts.com
11+
http:
12+
paths:
13+
- path: /
14+
pathType: Prefix
15+
backend:
16+
service:
17+
name: nginx-service # ステップ2で作成したService名
18+
port:
19+
number: 80 # Serviceのポート
20+
tls: # HTTPSを有効にするための設定
21+
- hosts:
22+
- www.ks6088ts.com # あなたの独自ドメイン
23+
secretName: your-domain-com-tls # Cert-Managerが証明書を保存するKubernetes Secretの名前 (任意)
24+

0 commit comments

Comments
 (0)