<p>I have a Service configured to be accessible via HTTP.</p>
<pre><code>kind: Service
apiVersion: v1
metadata:
  name: myservice
spec:
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP
</code></pre>
<p>And an Ngynx Ingress configured to make that internal service accessible from a specific secure <code>subdomain.domain</code></p>
<pre><code>kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: myservice-ingress
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/myservice-ingress
  annotations:
    certmanager.k8s.io/issuer: letsencrypt-prod
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: HTTP
spec:
  tls:
    - hosts:
        - myservice.mydomain.com
      secretName: myservice-ingress-secret-tls
  rules:
    - host: myservice.mydomain.com
      http:
        paths:
          - path: /
            backend:
              serviceName: myservice
              servicePort: 80
status:
  loadBalancer:
    ingress:
      - {}
</code></pre>
<p>So when I reach <code>https://myservice.mydomain.com</code> I can access to my service through HTTPS.
Is it safe enough or should I configure my service and pods to communicate only through <code>HTTPS</code>?</p>

<p>It's expected behaviour since you've set <code>TLS</code> in your Ingress.</p>
<blockquote>
<p>Note that by default the controller <strong>redirects</strong> (308) to <strong>HTTPS</strong> if TLS <strong>is enabled</strong> for that ingress. If you want to disable this behavior globally, you can use ssl-redirect: &quot;false&quot; in the NGINX <a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#ssl-redirect" rel="nofollow noreferrer">ConfigMap</a>.</p>
</blockquote>
<p>To configure this feature for specific ingress resources, you can use the <code>nginx.ingress.kubernetes.io/ssl-redirect: &quot;false&quot;</code> annotation in the particular resource.</p>
<p>About your question: &quot;Is it safe enough..&quot; - it's opinion based question, so I can answer to use better <code>HTTPS</code>, rather than <code>HTTP</code>, but it's just my opinion. You can always find the difference between <code>HTTP</code> and <code>HTTPS</code></p>
