K8S集群下通过nginx实现服务https的转发

5 篇文章 0 订阅
4 篇文章 0 订阅

K8S集群下实现服务https的转发

实现服务通过https进行转发

1、首先生成证书文件

新建cert目录并进入该目录

mkdir cert
cd cert

生成私钥

openssl genrsa -out nginx.key 2048

生成自签证书

openssl req -new -x509 -key nginx.key -days 10000 -out nginx.crt -subj /C=CN/ST=Shanghai/L=Shanghai/O=DevOps/CN=ingressnginx.com

会生成nginx.crt nginx.key2个文件

2、配置实现https转发的nginxs.yaml文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-https-configmap
  namespace: pie-engine-uavjk
data:
  nginx.conf: |
    server {
         listen 443;
         server_name pxpen.shuzipeixian.com;
        ssl on;
         root html;
         index index.html index.htm index.nginx-debian.html;
         ssl_certificate /cert/nginx.crt; #将 domain name.pem 替换成您证书的文件名。
         ssl_certificate_key /cert/nginx.key; #将domain name.key替换成您证书的密钥文件名。
         ssl_session_timeout 5m;
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
         ssl_prefer_server_ciphers on;

         location / {
                   proxy_pass  http://IP:30011;  #代理到你的业务服务端口
               # proxy_cookie_domain domino.server nginx.server;
         }

    }

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-nginx-https
  namespace: pie-engine-uavjk
spec:
  replicas: 1
  selector:
    matchLabels:
      name: web-nginx-https
  template:
    metadata:
      labels:
        name: web-nginx-https
    spec:
      #nodeName: master
      nodeSelector:
        engine.node.uavsupervise: "true"
      containers: 
      - name: web-nginx-https
        image: nginx:1.20.1
        imagePullPolicy: Always
        ports: 
    - containerPort: 443
        volumeMounts:
        - name: configmap-volume
          mountPath: /etc/nginx/conf.d/nginx.conf
          subPath: nginx.conf
        - name: sslcert
          mountPath: /cert
      volumes:
      - name: configmap-volume
        configMap:
          name: nginx-https-configmap
          items:
            - key: nginx.conf
              path: nginx.conf
      - name: sslcert
        hostPath:
          path: /home/uav-jk/ssl/cert
---
apiVersion: v1
kind: Service
metadata:
  name: web-nginx-https
  namespace: pie-engine-uavjk
  labels:
    name: web-nginx-https
spec:
  type: NodePort
  selector:
    name: web-nginx-https
  ports:
    - port: 8081
      targetPort: 443
      nodePort: 30015

注意一定要读取到第一步里面生成的证书文件
ssl_certificate /cert/nginx.crt; #替换成您证书的文件名。
ssl_certificate_key /cert/nginx.key; #替换成您证书的密钥文件名。

3、搭建服务并访问

kubectl create -f nginxs.yaml

https://…:30015 #注意反向代理的服务端口不能错

Kubernetes (k8s) 集群中部署 Nginx 并限制对特定域名的访问,通常涉及到创建Nginx服务和配置Ingress资源。以下是一个简化的步骤: 1. **创建Nginx部署**: - 创建一个名为`nginx-deployment.yaml`的文件,定义Nginx的Pod模板。例如: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 ``` 运行`kubectl apply -f nginx-deployment.yaml`。 2. **创建Nginx服务**: 如果你想让Nginx对外部可见,需要创建一个服务如`nginx-service.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: LoadBalancer selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 ``` 再次运行`kubectl apply -f nginx-service.yaml`。 3. **配置Ingress(可选)**: 使用Ingress控制器(如NGINX Ingress Controller),可以限制特定域名访问。创建一个`ingress.yaml`: ```yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: nginx-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: "example.com" http: paths: - path: / backend: serviceName: nginx-service servicePort: 80 ``` `example.com`是限制访问的域名。运行`kubectl apply -f ingress.yaml`。 现在,只有域名为`example.com`的请求会被Nginx处理。如果还有其他问题或需要更详细的配置说明,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值